関数

プログラム

ハッシュ関数の仕組みを図解で分かりやすく解説

ハッシュ関数とは

ハッシュ関数とは、入力データを一定の手順で計算を行い、入力値のデータの長さに関わらず、決まった長さの文字列を出力する関数のことです。

ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。

ハッシュ関数

ハッシュ関数は、主に検索の高速化データ比較処理の高速化、さらには改ざんの検出に使用されます。またパスワードの管理などにも利用されています。

例えば、膨大なサイズのファイルの内容が同一であるかを比較する際に、端から順にすべてのデータを比較すると時間が掛かるが、それぞれハッシュ関数を用いてハッシュ値に変換して比較することで一致するかどうかは一瞬で判別することができます。

暗号学的ハッシュ関数 (一方向性ハッシュ関数)

ハッシュ関数は、入力データが同じであれば、必ず同じハッシュ値が出力されます。

同じデータは同じハッシュ値になる

しかし、入力データと出力されるハッシュ値の間には規則性がなく、入力データが少しでも異なればまったく異なるハッシュ値が出力されます。

そのため、ある特定のハッシュ値が得られるような入力データを推測するのは困難であり(弱衝突耐性)、同じハッシュ値となる別の入力データも容易には見つけられない(強衝突耐性)という特性を持ちます。

入力データが違うと違うハッシュ値が出力される

この特性によりハッシュ値から入力データを推測するのは非常に困難といわれています。

ハッシュ関数は、ハッシュ値への変換は簡単に計算できるが、元に戻すことは非常に困難である「一方向性関数」です。

ハッシュ関数の種類

ハッシュ関数には主に次のような種類があります。

名称 説明
MD5(Message Digest 5 ) 1991年に考案された128ビットの値を生成するハッシュ関数。現在ではセキュリティ用途でMD5を使用するのは安全ではないと言われている。
SHA-1(Secure Hash Algorithm 1) 1995年に登場したハッシュ関数。2005年頃から効率的に攻撃する手法がいくつか発見されているため、現在ではセキュリティ用途でSHA-1を使用するのは安全ではないと言われている。
SHA-2(Secure Hash Algorighm 2) 2001年に登場したハッシュ関数。SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256の6つのバリエーションを持ち、SHA-512が最も安全性が高く、一般的にはSHA-256が最もよく利用されている。
SHA-3(Secure Hash Algorighm 3) 2015年8月5日に正式版が公表された最新のハッシュ関数。

いいね!フォローをお願いします /

© 2020 ITを分かりやすく解説