「パスワードはハッシュ化して保存してください」
この言い回し、最初は暗号化の仲間っぽく聞こえますよね。私も昔は「とりあえず難しくして隠すやつかな」と思っていました。半分だけ合っていますが、大事な違いがあります。
結論から言うと、ハッシュ化は、元のデータをそのまま取り出さない前提で、照合用の値に変えることです。
ハッシュ化とは? 一言でいうと「照合用の指紋を作ること」
一言でいうと、ハッシュ化は照合用の指紋を作ることです。
人の指紋を見ると、本人確認には使えますが、指紋だけから元の顔をそのまま再現することはしませんよね。ハッシュ化もそれに近く、元の文字列から特徴的な値を作り、同じデータかどうかの確認に使います。
たとえば、同じパスワードを入れれば同じハッシュ値になります。違うパスワードなら、別のハッシュ値になります。だから、サービス側は元のパスワードを保存しなくても、入力された値が正しいかを照合できます。
ハッシュ化が使われる場面
ハッシュ化は、主に次のような場面で使われます。
- パスワードをそのまま保存したくないとき
- ファイルが改ざんされていないか確認したいとき
- 同じデータかどうかを効率よく比べたいとき
ここで大切なのは、あとで元のデータを読むための技術ではないことです。
ビジネスの現場でハッシュ化という言葉が出る場面
1. 「パスワードは平文ではなくハッシュ化して保存します」
意味: パスワードをそのまま読める形では持たず、漏えい時の被害を抑えたい、という設計です。
相手が伝えたいこと: 管理者ですら、利用者の元のパスワードをそのまま見られないようにしたい、ということです。
2. 「このファイルのハッシュ値を確認してください」
意味: 受け取ったファイルが途中で書き換えられていないか確認したい、という話です。
相手が伝えたいこと: 配布した元ファイルと同じ内容かどうかを照合したい、ということです。
3. 「暗号化とハッシュ化は用途が違います」
意味: どちらもセキュリティ用語ですが、使いどころを混同しないでほしい、という説明です。
相手が伝えたいこと: 読めなくしたいのか、照合したいのかで選ぶ技術が変わる、ということです。
ハッシュ化と暗号化の違い
| 比較ポイント | ハッシュ化 | 暗号化 |
|---|---|---|
| 元に戻せるか | 元に戻す前提ではない | 鍵があれば戻せる |
| 主な目的 | 照合、改ざん確認、パスワード保存 | 内容を守ったまま送る、保存する |
| たとえ話 | 指紋を取る | 鍵付きの箱に入れる |
| よく使う場面 | ログイン認証、ファイル確認 | 通信、添付ファイル、端末保護 |
暗号化は「中身を隠して、あとで読む」ためのものです。ハッシュ化は「同じかどうかを確かめる」ためのものです。
よくある質問
ハッシュ化したら、なぜログイン確認ができるのですか?
入力されたパスワードをその場で同じ方法でハッシュ化し、保存済みのハッシュ値と一致するかを見れば確認できます。元の文字列を取り出す必要はありません。
ハッシュ化すれば絶対に安全ですか?
絶対ではありません。アルゴリズムや運用、ソルトの有無なども重要です。ただし、平文保存よりは大きく安全性を上げやすいです。
暗号化して保存するのではだめですか?
用途によります。あとで元の内容を読む必要があるなら暗号化が向いています。パスワードのように、読めなくてよいものはハッシュ化が向いています。
関連記事
まとめ
- ハッシュ化は、元のデータをそのまま取り出さない前提で照合用の値を作ることです。
- パスワード保存や改ざん確認でよく使われます。
- 暗号化と違って、あとで内容を読むための技術ではありません。
明日からできる第一歩は、「隠したいのか、照合したいのか」を意識して用語を聞くことです。そこが分かると、暗号化とハッシュ化の混同がかなり減ります。