【PKI 基礎】ハッシュ アルゴリズムとは

ハッシュアルゴリズムとは

ハッシュ アルゴリズムとはデータの改ざん検知に使われる技術で、任意の長さのデータから固定長のデータを生成するアルゴリズムです。

ハッシュ アルゴリズムで生成された値を、ハッシュ値と呼びます。(その他、データダイジェストなどの表現もあります。)

ハッシュ アルゴリズムは不可逆関数となり、ハッシュ値から元のデータを算出することはできません。

同じデータを使ってハッシュアルゴリズムでハッシュ値を算出すると、必ず同じハッシュ値が算出されますが、元データが 1 bit 分でも変わると全く違うハッシュ値が算出されます。

また、ハッシュ値は固定長となりますので、ハッシュ アルゴリズムに入力する文字列が “A” の一文字だろうが、数万行にわたる文字列だろうが、同じハッシュアルゴリズムであれば、生成されるハッシュ値は同じデータ サイズ(長さ)となります。

ハッシュアルゴリズムは同じデータの場合に必ず同じハッシュ値が生成されるという特性をもつことから、データの改ざん検知に利用されます。

“PKI って何だろうのセクションで説明した通り、インターネット上の脅威の一つに改ざんがありますが、インターネット上でデータを送信するときに、送信するデータとハッシュ値を一緒に送信すれば、受信者はデータが途中で改ざんされていないことに気づくことができます。

代表的なハッシュ アルゴリズムには、以下のようなものがあります。

ハッシュアルゴリズム

ハッシュ値の長さ

MD5

128 bit

SHA-1

160 bit

SHA-2

224256384512 bit

 

ハッシュ アルゴリズムの脆弱性

ハッシュアルゴリズムに入力されるデータが違うにも関わらず、同じハッシュ値が算出されてしまうことを衝突と呼びます。

ハッシュ関数は、ハッシュ値が同じ=元データが同じであることが大前提であるため、衝突が起きてしまうのはハッシュ アルゴリズムとして脆弱なものとして扱われます。

先ほど、代表的なハッシュアルゴリズムの例として紹介した MD5 SHA1 は、任意のハッシュ値が算出されるデータ(“衝突したデータ)を計算する手法が見つかっているため、脆弱なハッシュ アルゴリズムとして認識されています。

現在は、SHA2 のハッシュ アルゴリズム(ハッシュ値は 256 bit 以上) の利用が推奨されています。

SHA-2 のハッシュ アルゴリズムは、算出されるハッシュ値の長さごとに SHA-224SHA-256SHA-384SHA-512 の4種類がありますが、すべて SHA-2 と総称されています。

ハッシュ値のデータサイズが大きい程、衝突は発生しにくいです。