RIPEMD(RACE Integrity Primitives Evaluation Message Digest)は、1996年にベルギーの
ルーヴェン・カトリック大学COSICに所属するHans Dobbertin、Antoon Bosselaers、Bart Preneelによって開発された
暗号学的ハッシュ関数です。この関数は、
MD4の設計原理をベースにしており、
SHA-1と同程度のパフォーマンスを実現しています。特筆すべきは、
SHA-1やSHA-2が
アメリカ国家安全保障局(NSA)によって開発されたのに対し、RIPEMDはオープンな学術コミュニティによって開発され、特許による制約を受けない点です。
RIPEMDには複数のバリエーションが存在しますが、その中でもRIPEMD-160が最も広く利用されています。RIPEMD-160は、オリジナルのRIPEMDのハッシュ長である128ビットを160ビットに拡張し、改良を加えたものです。しかし、
SHA-1ほど広く普及しているわけではありません。
RIPEMDの他のバリエーションとしては、128ビットのRIPEMD-128、256ビットのRIPEMD-256、そして320ビットのRIPEMD-320があります。RIPEMD-128は、オリジナルのRIPEMDの代替として開発されたものであり、セキュリティ上の問題点が指摘されていたオリジナルのRIPEMDを置き換えることを目的としています。一方で、RIPEMD-256およびRIPEMD-320は、ハッシュの衝突の可能性を低減することを目的としており、原像攻撃への耐性といったセキュリティレベルは、RIPEMD-128やRIPEMD-160と同程度です。
2004年8月には、オリジナルのRIPEMDにおいてハッシュの衝突が発見されました。しかし、この発見はRIPEMD-160などの他のバリエーションには影響を及ぼしていません。
RIPEMD-160のハッシュ値
RIPEMD-160によるハッシュ値は、16進数で40桁となります。以下に、43バイトの
ASCII文字列を入力とした際のRIPEMD-160によるハッシュ値の例を示します。
RIPEMD-160("The quick brown fox jumps over the lazy dog") =
37f332f68db77bd9d7edd4969571ad671cf9dd3b
また、入力メッセージにわずかな違いがあるだけで、出力されるハッシュ値は大きく変化します。例えば、上記の例で「dog」を「cog」に変えると、以下のようになります。
RIPEMD-160("The quick brown fox jumps over the lazy cog") =
132072df690933835eb8b6ad0b77e7b6f14acad7
さらに、空の入力に対するハッシュ値は以下の通りです。
RIPEMD-160("") =
9c1185a5c5e9fc54612808977ee8f548b2258d31
実装ライブラリ
RIPEMDをサポートしているライブラリは以下の通りです。
Botan
Bouncy Castle
Cryptlib
Crypto++
Libgcrypt
Mbed TLS
Nettle
OpenSSL
wolfSSL
関連項目
暗号学的ハッシュ関数
脚注
外部リンク
RIPEMD-160: A Strengthened Version of RIPEMD (RIPEMD-160の仕様と参照実装)
RIPEMD-160 Ecrypt page