この記事を読むために必要な時間は約3分(1120文字)です。

ディジタル署名や認証などいろいろなところで使われています ~ ハッシュ関数、ハッシュ値について ~

今回は、ディジタル署名や暗号化、認証など、いろいろな用途で用いられているハッシュ関数についてお話をします。
今回はハッシュ関数の特性のお話をして、次回、使われ方の例のお話をします。

ハッシュ関数の特性

ハッシュ関数の特性は次のとおりです。

  1. 長さが一定
  2. 改ざんチェック機能が強い
  3. 不可逆関数である
それぞれについてお話をします。

長さが一定

ハッシュ関数の計算結果をハッシュ値といいます。
このハッシュ値は、一定の長さになる性質があります。

入れるデータの量には関係なく、多くても少なくても、同じ長さになります。
1文字であろうが1万文字であろうが、ハッシュ値は同じ長さになるのです。

一定の長さについては、関数の種類によって異なります。
代表的な関数の種類としては、MD4、MD5やSHA-1,SHA-2,SHA-3などです。

改ざんチェック機能が強い

基本的に、どのような文字を入れても、同じハッシュ値にならないようになっています。
厳密な言い方をすると、関数によって決められた範囲のデータの種類や量であれば、同じハッシュ値にはなりません。

この意味は、物理的には、関数によって定められた一定の長さを元にした種類しか区別できません。
区別できなくなるデータ量だと、違うデータを入れているにもかかわらず、同じハッシュ値になります。
ハッシュ関数の計算結果である以上、データを入れれば結果として何かのハッシュ値が出てきます。
いくら違うハッシュ値にしたくても、一定の長さの結果しか出せない以上、同じハッシュ値になるのは仕方がありません。

この同じ値のハッシュ値を計算する現象を衝突シノニム)と呼びます。

衝突(シノニム)が起こらないよう、使い方によって、関数の種類を変えるなどの考慮をすることが必要となります。

同じ値が生成されない特性を利用して、次のようにすると、改ざんが発見できます。

  1. 送信者と受信者で、事前に、使用するハッシュ関数を決めておく
  2. 送信者は、元データからハッシュ値を計算する
  3. 送信者が元データハッシュ値を受信者に送信する
  4. 受信者は、受信したデータからハッシュ値を計算する
  5. 受信者が計算したハッシュ値と受信したハッシュ値を比較する
  6. 同じであれば、改ざんされていないと確認できる

不可逆関数である

ハッシュ値から元の入れたデータを復元することはできません

原理的に、ハッシュ関数に入れるデータを総当たりで試して、ハッシュ値と一致するデータを探していけば、復元することができます。
しかし、ハッシュ値をいくら計算しても、元のデータを復元することはできません。

次回は、ハッシュ値の使われ方についてお話をします。

タグ:, ,


広告枠・・・広告やリンク先の保証はしません

参考記事(一部広告含む)


このページの記事についてちょっと質問!