流れ7の1語目 / 10

パスワードとハッシュ

セキュリティ

全社のセキュリティ研修を受けた翌日。社内ツールの担当チームに入り、ユーザー一覧を見せてもらうと、パスワードの欄に長い英数字の列が並んでいます

「パスワードはそのまま保存しないで、ハッシュで保存してるんだよ」
「パスワードとハッシュ」って、何のことだろう…?

ハッシュは、文字を「元に戻せない別の値」に変える計算です。

パスワードはこの値にして保存するので、保存してある値から計算で元のパスワードに戻すことはできません。ただし、よくあるパスワードや短いパスワードは、候補を次々にハッシュにして比べる方法で当てられてしまうことがあります。

このページで分かること読む 約3分・問題 3問
  • パスワードを、入力されたままの文字(平文)で保存してはいけない
  • ハッシュは「元に戻せない計算」
  • ソルトは、人ごとに違うランダムな値
  • 利用する側の守り方は、長いパスワードにする・使い回さない・多要素認証を使う

身近な例えで理解する

同じ果物を同じ分量でミキサーにかければ、同じスムージーができます。でも、スムージーから元の果物の形には戻せません。

  • 入れる果物パスワード
  • できたスムージーハッシュ値
  • 果物の形に戻せないハッシュ値から計算で元のパスワードには戻せない
  • 同じ材料なら同じスムージー同じパスワードなら同じハッシュ値(だからログインのときに比べられる)

合わない部分:スムージーは似た材料なら似た味になりますが、ハッシュは1文字違うだけでまったく別の値になります。

ちょっと確認

Q14択

ハッシュの説明として正しいものは?

例えを外して、実際のしくみ

ここからは実際のしくみ
平文で保存すると何が危ないか

データベースの中身が漏れたとき、パスワードがそのまま読めてしまいます。同じパスワードを別のサービスでも使っている人は、そちらにも入られます(→69 総当たり攻撃)

ログインのしくみ

サーバーは、入力されたパスワードを登録のときと同じ方法でハッシュにして、保存してある値と同じかどうかだけを比べます。元のパスワードを知らなくても、本人かどうかが分かります

ソルト

人ごとに違うランダムな値を、パスワードに足してからハッシュにします。同じパスワードの人がいても保存される値が違うので、「よくあるパスワードのハッシュ値の一覧」と照らし合わせる方法が効かなくなります

パスワード用には「わざと遅い」ハッシュ

パスワードの保存には、計算にわざと時間がかかるように作られたハッシュの方法を使います(Argon2id、bcrypt などの名前があります。覚えなくてかまいません)。1回のログインでは気にならない遅さでも、候補を何億回も試そうとする側には大きな壁になります

このページのまとめ

平文(ひらぶん)
入力されたままの、読める状態の文字
ハッシュ
元に戻せない別の値に変える計算
ハッシュ値
ハッシュで計算した結果の値。パスワードの代わりに保存します
ソルト
人ごとに違うランダムな値。パスワードに足してからハッシュにします

先輩のひとことの意味

先輩「パスワードはそのまま保存しないで、ハッシュで保存してるんだよ」

ユーザー一覧に並んでいた長い文字の列は、パスワードをハッシュで計算した値です。「パスワードそのものは保存していないから、この表を見ても、元のパスワードはすぐには分からないようにしてある」という意味です。それでも漏れてよいわけではなく、短いパスワードは当てられてしまうことがあります。

練習問題で確かめる

Q2先輩のひとこと
先輩「パスワードを忘れたって問い合わせが来た。今のパスワード、教えてあげられる?」

正しい答えは?

Q3対応づけ

左の言葉に合う説明を選びましょう。

左から1つ選び、次に右から合うものを選んでください。

左
右

参考資料

ご意見・「これで例えて!」を募集しています

ご意見・ご感想・質問・間違いのご指摘など、何でもお気軽にお寄せください。「この言葉も例えで説明してほしい」「こんな例えなら分かりやすい」という声をもとに、新しいページや例えを作ります。

  • 説明してほしいITの言葉
  • 例えてほしい場面(部活・アルバイト・家事など)
  • 分かりにくかったところ・間違いのご指摘

意見箱は準備中です。

解説・例え・練習問題はすべてオリジナルです。参考にしているのは公式ドキュメントのみです。ご意見・ご感想・間違いのご指摘など、何でもお寄せください。確認してすぐに直します。

LinuCはLPI-Japanの登録商標です。当サイトはLPI-Japanおよび他の企業・団体とは関係ありません。

運営:core