ハッシュ関数
Hash function
ハッシュ関数とは、不定長の入力から固定長のデータを出力するもので、出力から入力のデータを推測できないこと、同じ出力を持つ入力データを容易に作成できないこと、同じ出力データとなる可能性が非常に低いことが要件となっています。
ハッシュ関数の利用目的はデータの同一性の検証の高速化にあります。例えば1Mバイトのデータが二つあり、これが同じかどうかを検証するときでも、お互いが十分信頼できるハッシュ関数によるハッシュ値を持っていれば、そのたかだか数十バイトを比較するだけで同一性を検証することが可能になります。
これを応用したのが電子署名です。電子署名に使用される公開鍵暗号方式は非常に低速なので、署名対象ドキュメントを全部暗号化していたのでは遅いうえにサイズも大きくて実用になりません。そこで、ハッシュ関数でハッシュ値を生成し、これを暗号化することでドキュメントの署名としているわけです。
- SHA-1 (Secure Hash Algorithm 1)
NSAで考案されたハッシュ関数。160bitのハッシュ値を生成します。
米国人は「シャー・ワン」と発音するようです。今後のハッシュ関数の標準となっていくと考えられます。
- MD2、MD4、MD5 (Message Digest 2,4,5)
Ronald L. Rivest氏が考案したハッシュ関数。MD5はMD4の改良版で広く使われています。MD2は簡素版。128bitのハッシュ値を生成します。
MD5は近頃特定のIV(初期化ベクタ)を使用した場合、メッセージが1bit変化しても同一のダイジェストが得られることがあると報告されました。しかし、これはかなり特殊な条件下ということができ、RSA社も大きな動きはないようです。ただし、MD5は暗号学の世界では既に破られたハッシュ関数となっており、SHA-1またはRIPEMD-160などに道を譲ることになるでしょう。
- RIPEMD
RPEMDには長さにいろいろな種類があります。RIPEMD-80、RIPEMD-128、RIPEMD-160とあり、それぞれ80bit、128bit、160bitのハッシュ値を生成します。
- N-Hash
NTTが開発したハッシュ関数。E-SIGNで使用されています。破られたという報告があります。
- Snefru / Haval
こんなものもあるらしいですが、使われているという話は聞いたことがありません。
| Copyright (C) Keiichiro Oguma / All rights reserved. |

|