データが改ざんされていないかを確認したり、パスワードを安全に保存したりするためなどに使われる重要な技術としてハッシュにについて説明をします。
ハッシュ関数の概要
ハッシュは元データから特定のアルゴリズムによって不規則な文字列「ハッシュ値」を生成できます。
元データからハッシュ値に変換する計算を「ハッシュ化」や「ハッシュ関数」といいます。
なお、元データはメッセージでもファイルでも扱えます。

2つの元データが同じであれば、ハッシュ値も同じになります。

ハッシュ値は「メッセージダイジェスト」や「ダイジェスト」という場合もあります。

ハッシュ関数の特徴
特徴1:元データの桁数に関わらずハッシュ値の桁数は固定

特徴2:元データが1文字変わるだけで全く違うハッシュ値となる

ハッシュ関数3つの困難性
①原像計算困難性
ハッシュ値から元データを求めることが困難なこと。

②衝突発見困難性
同じハッシュ値になる(衝突する)元データを求めようとしても、計算量が大きいために困難であることをいいます。

③第2原像計算困難性
ある既知の元データとそれに対するハッシュ値が与えられた時に、ハッシュ値が一致する別の元データを見つけることは困難なこと。
この「別の元データ」を第2現像と言います。

ハッシュ関数の規格
ハッシュ関数の規格はいくつかあります。
古い規格のハッシュ関数で現在では非推奨になっているものもありますので注意が必要です。
名称 | 説明 |
---|---|
SHA-2 | NISTが開発したハッシュ関数で、現在最も利用されている。 SHA-2は、以下の種類があります。 ・SHA-256・・・ハッシュ値が256bit ・SHA-384・・・ハッシュ値が384bit ・SHA-512・・・ハッシュ値が512bit |
SHA-3 | NISTが開発したSHA-2の後継として決められたハッシュ関数です。 |
MD5 | 128bitのハッシュ値を出力するハッシュ関数です。 衝突発見困難性を実現できなくなっているので、現在では非推奨となっています。 |
ハッシュ関数の用途
改ざんの検知
ファイル公開サイトや、メッセージ送信者がファイルやメッセージをハッシュ関数を使ってハッシュ値を用意しておき、受け取った側で同じハッシュを再計算して比較することで、途中で内容が改ざんされていないかを確認できます。

パスワードの保存
WEBサイトの会員パスワードなど、パスワードをそのまま保存せず、ハッシュ化して保存することで、万が一データベースが流出してもパスワードの漏洩リスクを低減できます。

パスワード認証する場合は、ユーザが入力したパスワードをハッシュ化して、パスワード管理テーブルのハッシュ化している値と一致するかどうかで認証をします。

まとめ
- ハッシュ関数は元データから一定長のハッシュ値(メッセージダイジェスト)を生成する仕組み
- 入力が同じなら出力も同じ、1文字違うだけで全く異なる値になる
- 特徴は「固定長出力」「原像計算困難性」「衝突発見困難性」「第2原像計算困難性」
- 主な規格は SHA-2(推奨)、SHA-3(新しい標準)、MD5(非推奨)
- 用途は改ざん検知やパスワード保存・認証などに利用される
コメント