ブロックチェーンで使われるハッシュやデジタル署名とは何か?

暗号学について説明として、基礎となる概念2つ、ハッシュとデジタル署名について説明します。

ハッシュとは、任意のデータをインプットしたときに、いくつかのアルゴリズムを通し、outputととして出てきた固定の値をハッシュと呼びます。

 

f:id:CoffeeTimes:20171123124809p:plain

 

このinputは、どのような大きな値も可能です。理論的には無限のbit数のデータを入れ込めます。そしてハッシュアルゴリズムは、数ある中からニーズに合ったものを選ぶことができます。

ここで重要なことは、ハッシュアルゴリズムは無限の大きさの2進数のinputにとっても、計算をし、有限の(固定の)値のoutputを出します。(例えば256bitなどのアウトプットなど)

 

 

一般的にハッシュは何に使われるか

一般的な使い方は、ファイルの証明(フィンガープリント)に使われます。チェックゾーンとかとも言われますね。つまり、ファイルが操作や変更がされていなくオリジナルなものだ!と確認するために使われるのです。

もし私が、何か記事を書きファイルにして、MD5 というハッシュ関数を使って固定の値をつくったとしましょう。

そして、このファイルをダウンロードした人が、そのファイルをMD5ハッシュ関数

で固定の値を出してみたとします。もしこのハッシュ値同士がマッチしなければ、ダウンロードされたファイルは何かしらの変更が加えられた、ということが分かります。

f:id:CoffeeTimes:20171123125322p:plain

 

 

ブロックチェーンは何にハッシュを使うのか

ハッシュは、ブロックチェーンの現在の状態を示すために使われます。inputはブロックチェーンの状態すべてであり(どのアカウントがいくら持っていて、過去にどんな取引をしてなどの情報)、そしてそのハッシュ関数を通じて出されたハッシュ値は、現在の状態を表します。そしてすべてのノードが、「今のブロックチェーンはこれだよね」と同意できることになります。

具体的に、どのような計算が行われているでしょうか。

まず一番はじめのブロック(ジェネシスブロックとも言われます)のために、そのブロック内のトランザクションを使って一番はじめのハッシュ値が計算されます。

このあとにできていくブロックに関しては、前回のブロックのハッシュ値が、「次のブロックのハッシュ値を求めるためのinput」ととして使われます。

このように、それぞれの新しくできるブロックは、その前のブロックをinputにとったハッシュ値で、できていき、ブロックの連なり(ブロックチェーン)が形成されていきます。

このハッシュによる仕組みで、どのトランザクションも改ざんされていない、ということが保証されます。なぜなら上で述べた…



via : https://coffeetimes.hatenadiary.jp/entry/2017/11/23/125859