ハッシュ化とは
ハッシュ化とは、ハッシュ関数と呼ばれる特殊な計算方法によって、一見ランダムに見える別の値(ハッシュ値)にデータを変換する方法です。ハッシュ値は復号できないため、パスワードを保管する際などに活用されています。
同じデータから得られるハッシュ値は常に同じです。この特徴から、ハッシュ値を比較すれば元のデータが同一か否かを判断できます。
例えば、正しいログインパスワードのハッシュ値と、入力されたパスワードのハッシュ値が同一であれば、入力パスワードが正しいものと判断可能。その結果、元のID情報を直接やり取りすることがない、秘匿性の高いログイン処理が実現します。
ソルト処理を行うのが一般的
ソルト処理とは、元のデータにランダムな文字列を付加してからハッシュ化することです。付加する文字列をソルトと呼びます。ソルト処理により、ハッシュ値から元のデータを推測されるリスクを軽減できます。
ハッシュ値から元のデータを直接復号することは不可能です。しかし、あるハッシュ値の元データが何であるか、第三者が知っている可能性があります。
ログイン認証を例にすれば、同じハッシュ値を持つ者同士は、お互いに使っているパスワードが同一であると分かってしまうでしょう。この問題を解決するために行われるのがソルト処理です。
元のデータに異なるソルトを加えてハッシュ化すれば、得られるハッシュ値はそれぞれ別のものになります。複雑なソルトを付加すれば、第三者と同一のハッシュ値が生成される可能性は極めて低くなります。
ハッシュ化と暗号化の違い
ハッシュ化も仕組みだけ聞くと暗号化と大差がないように感じますが、これらの大きな違いは、復号を前提としているかどうかです。
暗号化は復号する前提で行われます。正しい方法をとれば暗号文から元のデータを得ることは簡単です。したがって、データの送受信方法として使われますが、第三者による複号リスクもあるのが難点です。
一方、ハッシュ化は復号を前提としていません。そのため、第三者がハッシュ値から元のデータを割り出すことは極めて困難です。さらに、ハッシュ値を受け取った人だけでなく作業をした当人ですら復号はできないため、ハッシュ化は不可逆性を持つ点が大きな特徴といえます。
あらかじめ双方が持っている情報が同一か確認するなど、復号が不要な場面で使われます。
ハッシュ化が使われるシーン
続いて、ハッシュ化が使われる場面を2つ紹介します。
HMACによるメッセージ認証
HMACは「Keyed-Hashing for Message Authentication code」の略で、メッセージ証明コードの1つです。1997年2月にIBM社によって発表されました。
参考:RFC 2104 - HMAC|Keyed-Hashing for Message Authentication
そもそもMACとは、データの認証や改ざん検知に使われるアルゴリズムです。MACにはさまざまなアルゴリズムがあり、HMACはそのうちハッシュ化技術を利用したものです。
元のデータと事後データから得たハッシュ値を比較し、両者が同じ値が確認できれば、データが改ざんされていないことが分かります。
具体的には、共通鍵とデータをまとめてハッシュ化し、そのハッシュ値と元のデータを送信します。受信者は受け取ったデータと自身が持つ共通鍵をまとめてハッシュ化し、得られた値が受信したハッシュ値と同一か確認します。このようにして、受信データの改ざんの有無がわかるのです。
文書の電子署名
電子署名とは、データ送信者が自身が正規の送信者であることを証明する技術です。ハッシュ化技術は公開鍵暗号と組みあわせて電子署名にも利用されています。具体的な手順は以下のとおりです。
- 1.データ送信者は以下の3つを送信する。
- ■元のデータ
- ■ハッシュ値を自身の秘密鍵で暗号化したもの
- ■秘密鍵とペアになる公開鍵
- 2.受信者は受信した公開鍵で暗号文を復号する。
- 3.受信者は受信した元のデータをハッシュ化し、手順2で得たハッシュ値と比較する。
手順2で復号が成功すれば、データ送信者が正規であると証明されます。なぜなら、受信者が持つ公開鍵で復号できるのは、それが正規の送信者だけが持つ秘密鍵によって暗号化されたことの証拠だからです。
そして、手順3で比較した2つのハッシュ値が同一であれば、データが改ざんされていないことが分かります。
ハッシュ化と暗号化の違いを理解し、セキュリティを向上!
ハッシュ化とは、秘匿性を高める目的でデータを一定のアルゴリズムに従って変換することです。ソルトを加えて元のデータを推測されにくくするのが一般的です。
ハッシュ化は復号を前提としない点で暗号化と異なります。新規の情報は伝えられませんが、2つの情報が同一と確認できればよい電子署名やメッセージ認証で使われています。
以上を踏まえてハッシュ化を適切に利用し、自社のセキュリティ対策に活かしましょう。