RIPEMD

RIPEMD (RACE Integrity Primitives Evaluation Message Digest) は、1996年にルーヴェン・カトリック大学のHans Dobbertin、Antoon Bosselaers、Bart Preneelによって開発された暗号学的ハッシュ関数である。RIPEMDはMD4の設計原理に基づいたものであり、SHA-1と同程度のパフォーマンスを有している。

SHA-1やSHA-2がNSAによって開発されたのと対照的に、RIPEMDはオープンな学術コミュニティによって開発され、特許による制限を受けない。RIPEMD-160は、オリジナルのRIPEMDでは128ビットであるハッシュ長を160ビットにしたうえで改良を加えたものであり、RIPEMDのファミリーの中で最も広く用いられているが、SHA-1ほどは用いられていない。

160ビットだけでなく128、256、320ビットの変種もあり、それぞれRIPEMD-128、RIPEMD-256、RIPEMD-320と呼ばれている。128ビットであるRIPEMD-128は、同じく128ビットでありセキュリティ面での問題点が発見されていたオリジナルのRIPEMDを置き換えることのみを意図したものである。256および320ビットであるRIPEMD-256、RIPEMD-320はハッシュの衝突の可能性を小さくするのみであり、原像攻撃への耐性といったセキュリティレベルはRIPEMD-128やRIPEMD-160と同程度である。

2004年8月に、オリジナルのRIPEMDについてハッシュの衝突が報告された。これはRIPEMD-160などには影響を及ぼさない。

 RIPEMD-160 のハッシュ値 
RIPEMD-160によるハッシュ値は、十六進法で40桁となる。以下は、43バイトのASCII文字列を入力とした時のRIPEMD-160によるハッシュ値である。

  RIPEMD-160("The quick brown fox jumps over the lazy dog") =
  37f332f68db77bd9d7edd4969571ad671cf9dd3b</tt>

入力メッセージのわずかな違いも、出力されるハッシュ値には大きな違いをもたらす。d を c に変えた場合には以下のようになる。

  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 specification and reference implementation)
 RIPEMD-160 Ecrypt page
 RIPEMD-160 (Rosetta Code 各言語での RIPEMD-160 の書き方)