RIPEMD-160の概要
ブロックチェーンにおいてはハッシュと呼ばれる関数が様々な場面で使用されます。
ハッシュ関数に関して、詳しくはこちらをご覧下さい。
ブロックチェーンに必要不可欠な機能「ハッシュ」
そのハッシュ関数の一つに、RIPEMD-160という関数があります。RIPEMD-160は「ライプエムディー160」と読みます。
RIPEMDとは「RACE Integrity Primitives Evaluation Message Digest」の略であり、1996年にルーヴェン・カトリック大学のHans Dobbertinらによって開発された暗号学的ハッシュ関数です。
RIPEMDは1992年にヨーロッパのRIPE (Race Integrity Primitive Evaluation)プロジェクトの成果の一つとして提案され、ハッシュ関数の一種であるMD4の設計原理に基づいたものであり、他の暗号学的ハッシュ関数であるSHA-1と同程度のパフォーマンスを有しています。
SHA-1やSHA-2がNSA(米国標準技術局)によって開発されたのとは対照的に、RIPEMDはオープンな学術コミュニティによって開発されているので、特許による制限を受けないのが特徴的です。
RIPEMD-160は、オリジナルのRIPEMDでは128ビット長であるハッシュ値を、160ビットにしたうえで改良を加えたものです。従って、有名なハッシュ関数の一種であるSHA-256(256ビット長のハッシュ値を得る)に比べて、より短いハッシュ値を出力することが出来ます。
RIPEMD-160が使われているサービス
ビットコイン
ビットコインで使用されるハッシュ関数はSHA-256とRIPEMD-160です。これらのハッシュはGPUや計算専用のハードウェアであるASICで計算するのに向いています。
ビットコインでは様々な場面で、ハッシュ関数を重ねて使うダブルハッシュが使用されています。そしてそのほとんど全てで、SHA-256を二回適用したハッシュが使われます。しかし、例えばビットコインアドレスといった、短いハッシュ値が必要な場合は、一回SHA-256を適用した物に、さらにもう一回RIPEMD-160を適用したハッシュ値が用いられます。
OpenSSL
OpenSSLと呼ばれる暗号化ライブラリも、RIPEMD-160に対応しています。
OpenSSLとは、インターネット上でhttpsなどで標準的に利用される暗号通信プロトコルであるSSL(Secure Sockets Layer)およびTLS(Transport Layer Security)を利用するために必要な機能を提供する、オープンソースの暗号化ライブラリです。オープンソースソフトウェアとして公開されているため、誰でも自由に入手・利用したり開発したプログラムと共に再配布されています。様々なプログラミング言語やOSに対してライブラリが使えるようになっており、プログラムに暗号通信機能を組み込む手段として様々な分野で幅広く利用されています。よって、事実上の業界標準となっています。
また、OpenSSLは様々なハッシュ方式に対応しています。 MD4, MD5, SHA-1, SHA-2, RIPEMD-160といったハッシュ関数を用いてハッシュ値を求めることができます。
RIPEMD-160は短いハッシュ値を必要とする時に使われています。強固にハッシュ化するSHA-256RIPEMD-160を重ねることにより、強固さと利便性を兼ね備えることができます。SHA-256とRIPEMD-160は、まさに相性のよい組み合わせと言えるでしょう。こういった工夫に注目してみると、またブロックチェーンが面白くなるかもしれません。ぜひ、注目してみてください。