セキュリティ

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

ハッシュ関数

ハッシュ関数とは

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

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

ハッシュ関数

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

例えば、膨大なサイズのファイルが2つあるとします。この2つのファイルが同一の内容であるか比較するとき、端から順にすべてのデータを比較していると時間がかかります。

そこで、ハッシュ関数を用いてハッシュ値に変換し比較することで、データの比較処理を高速化できます。

スポンサーリンク

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

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

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

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

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

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

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

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

ハッシュ関数の種類

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

名称説明
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日に正式版が公表された最新のハッシュ関数。

helpful