ブロックチェーン

ビットコインに使われるハッシュ関数SHA-256、RIPEMD-160とは?ハッシュ関数の概要を解説

ビットコインを含む仮想通貨の仕組みを理解するために知っておきたいハッシュ関数について解説していきます。

この記事を読むと次のことを理解できるようになると思います。

  • 暗号学的ハッシュ関数について
  • ハッシュ関数SHA-256
  • ハッシュ関数RIPEMD-160

ハッシュ関数のSHA-256とRIPEMD-160とはビットコインで利用されているものです。このハッシュ関数を用いたアドレス生成方法は以下の記事を参考にしてください。

ハッシュ関数とは

ハッシュ関数とは、暗号方式のひとつで、ある入力(インプット)に対して、全く別の値を出力(アウトプット)として返すのが大きな特徴です。入力には数字でも文字列でも関係なく使用できます。

ハッシュ化されたデータの事をハッシュ値と呼び、ウェブサービスでは基本的にパスワードがハッシュ化されています。

ハッシュ関数の特徴

同じ入力には同じ出力

同じ値に対して、同じ値が出力されます。入力が一文字でも異なれば出力が大きく異なります。

出力が固定長

入力はどんな長さになろうとも出力は固定長で返されます。例えば、ハッシュ関数SHA-256では256ビットのハッシュ値が返されます。

入力によって計算時間があまり変わらない

入力の長さによって出力が返されるまでの時間はあまり変わりません。

暗号学的ハッシュ関数とは

暗号学的ハッシュ関数は、ハッシュ関数のなかで、暗号など情報セキュリティの用途に適する暗号数理的性質を持つもののことを言います。

ここでは暗号学的ハッシュ関数の安全基準3つを確認していきます。

一方向性(原像計算困難性)

安全基準1は出力から入力を特定しがたいことです。ハッシュ値H(a)がわかっているとき、そこから入力のメッセージをさがすことが困難でなければなりません。

第二原像計算困難性(弱衝突耐性)

安全基準2は同じ出力になる入力を特定しがたいことです。入力aからハッシュ値H(a)が与えられているとき、この出力H(a)と衝突するような別の入力を見つけることが困難でなければなりません。

衝突困難性(強衝突耐性)

安全基準3は衝突が困難であることです。安全基準2と近いですが、H(a)=H(b)となるような2つの異なる入力aとbを探し出すことが困難でなければなりません。

ハッシュ関数の種類

SHA-256

SHA-256とは、NIST(アメリカ標準技術局)によって定義されて規格で、「Secure Hash Algorithm 256 bit」の略です。

SHA-256を通すことで、入力に対して256ビット(32バイト)のハッシュ値を得られます。

SHA-256はビットコインアドレスを生成する際に使われます。

入力値

「だっちー」

出力値(ハッシュ値)

「aa06f78029070471592d00b4a1e8f529cb9c8d10d683ee5f68a47acf549f004b」

RIPEMD-160

RIPEMDは「RACE Integrity Primitives Evaluation Message Digest」の略です。長さが160ビット(20バイト)のハッシュ値です。

ビットコインでは公開鍵をSHA-256でハッシュ化し、再度RIPEMD-160でハッシュ化しています。

入力値

「だっちー」

出力値(ハッシュ値)

「7d0388b7dd9290188a38142527f07577f68196ed」

まとめ

今回はハッシュ関数の概要を解説しました。まとめると、ハッシュ関数は次の特徴があります。

  • 一方向性でハッシュ値から元データを探すのは困難
  • 出力がぶつからない衝突耐性があること

このハッシュ関数を繰り返してビットコインのアドレスが生成されているわけですね。ビットコインアドレスのもとになっている公開鍵や秘密鍵などについては以下の記事を参考にしてください。

ブロックチェーンエンジニアになるならTech Academy

スマートコントラクトを開発できる!

自分でオリジナルのサービスを作れる!

 

ビットコイン取引は購入手数料がマイナスのZaifがおすすめ

僕もやっている仮想通貨積立はZaifだけ

Zaif公式サイトを見てみる

Zaifの登録・積立方法はこちら

 

 

手数料無料で取引するならbitbank.cc

 

金融庁の仮想通貨交換業登録した安心取引所

bitbank公式サイトを見てみる

bitbank.ccの登録方法はこちら

 

 

bitFlyerは取り扱い通貨豊富で初心者にもおすすめ

bitFlyer ビットコインを始めるなら安心・安全な取引所で

 

世界に進出した国内大手取引所

bitFlyer公式サイトを見てみる

bitFlyerの登録方法はこちら