トランザクション、ハッシュ関数等への理解度を深めることがブロックチェーン・仕組みへのさらなる理解の手助けになるかもしれません。そこで、まず最初にブロックチェーンにおける技術基盤の一つであるハッシュ関数について述べてみます。
【ハッシュ関数】任意の長さであるビットの列から全く規則性がない固定の長さのビットの列へと生成していく関数とそのプロセスのことをいいます。つまりは、全く任意の長さであるメッセージをハッシュ値やメッセージダイジェスト等に変換して出力する一連のプロセスを辿ることを関数化したものをハッシュ関数といわれるものです。私たちの周囲にはこうした様々な処理がコンピュータによって実行されてもたされています。例えば、ストックされている銀行口座に対して、ATMに向かっていくら引き出せよというメッセージを入力します。そうすると直ちに入力された数字と口座にある数字とをチェックしてOKであれば、入力した数字のお金がATMに出てきます。まさにこれに類した処理工程と同じといえます。ATM世界では現物であるため、目に見えた形で様々なことが瞬時に分かります。しかし、仮想通貨の世界ではそうはいきません。その理由はデジタルで暗号通貨であるがゆえに、こうしたハッシュ関数は全くの一方向の関数であるため、出力したデータからは入力データを推定することは非常な困難さを伴います。仮想通貨の世界、あるいはブロックチェーンの世界では非常に重要な役割を果たすのが一方向性ハッシュ関数なのです。
<一方向性ハッシュ関数における理想の姿>
★ハッシュ値から元のメッセージを推定することができない
★メッセージからハッシュ値に変換する計算が高速であること
★メッセージから創出されたハッシュ値によって、同じハッシュ値をもつ他のメッセージを見つけ出すことは容易ではないこと → 弱衝突耐性
★同じハッシュ値を持つメッセージを2つ見つけ出すことが極めて困難を伴うこと → 強衝突耐性
同じメッセージである場合は、常に同じハッシュ値が創出されるという特定のハッシュ関数を使用するケースがありますが。ところが、メッセージはいくつかのビットの集まりで構成されているがため、わずか1ビットでも変わってしまうと、ハッシュ値は同じにならなく全く異なるハッシュ値になってしまいます。この性質を利用することで、ブロック内にストアされているデータの改竄、あるいはパスワード漏えいを防止する機能を発揮しています。
ハッシュ関数は、メッセージの指紋を取ることに極めて類似しています! |
<一方向性ハッシュ関数の主な特長>
★メッセージを構成しているビットが1ビットで異なればハッシュ値は異なる
★創出されたハッシュ値からはメッセージを逆算することは不可能である
★メッセージが変換されたハッシュ値は常に固定長である
コメント