暗号通貨とブロックチェーン研究所

暗号通貨とブロックチェーンに関する技術やトレンド情報を解説していきます。

ブロックチェーンに使われる暗号技術とProof of Work、改ざんが極めて困難な理由

ブロックチェーン技術の大きな特徴として、第三者を介さないオープンなネットワークでありながら改ざんが極めて困難なことが挙げられます。なぜ誰にも管理されない非中央集権(decentralized)なネットワークながら信頼性を担保できているのかその仕組みを解説していきます。

基本の暗号技術①「ハッシュ関数

まずはじめに基本的な暗号技術であるハッシュ関数の仕組みを説明します。
ハッシュ関数とは入力した値に対して全く違う値が出力される暗号方式のことで出力される値をハッシュ値といいます。

ハッシュ関数の特徴

①同じ値が出力される
同じ値を入力した場合、同じ値が出力されます。入力値が少しでも異なれば違う値が出力されます。

②不可逆性(一方向性)がある
ハッシュ値から元の値を複合することは計算量的に極めて困難であり、不可逆性があります。

③固定長出力
出力値は入力値に関わらず固定長が出力されます。例えば出力値が32バイトであるハッシュ関数を利用する場合、入力値が1バイトでも、100バイトでも、32バイトの出力になります。

ハッシュ関数の種類

ハッシュ関数には様々な種類がありますが、ビットコインではSHA-256とRIPEMD-160が使われており、公開鍵をSHA-256でハッシュ化し、さらにRIPEMD-160でハッシュ化することでSHA-256よりも短いビット長のアドレスを得ています。

基本の暗号技術②「公開鍵暗号

公開鍵暗号は公開鍵と秘密鍵と呼ばれるキーペアにより成り立ち、暗号化の鍵を公開鍵として公開し、復号する鍵(秘密鍵)をもつ人のみが復号できる暗号方式です。公開鍵はビットコインを受け取るために使われ、秘密鍵ビットコインを支払う際のトランザクションに使われます。

公開鍵で暗号化されたものは秘密鍵でしか復号できません。そのため秘密鍵を失くした場合は、二度と復号することができないので注意が必要です。また秘密鍵は自分以外の人に教えてはいけません。なぜなら、秘密鍵を教えることは暗号化によって守られているビットコインの安全性を危険に晒すからです。

基本の暗号技術③デジタル署名(電子署名

デジタル署名は公開鍵暗号を応用し、送られたデータの送信者が本人で間違いないか、伝送経路上でデータが改ざんされていないかを確認するための技術です。

送信者
①送信するデータをハッシュ関数でハッシュ化する。
②出力されたハッシュ値を送信者の秘密鍵で暗号化し、署名を作成する。
③データと署名をセットにして受信者に送信する。

受信者
①受信したデータを送信者と同じハッシュ関数でハッシュ化してハッシュ値を得る。
②受け取った署名を送信者の公開鍵で複合する。
③①で得たハッシュ値と②で復号したハッシュ値を比較して一致していることを確かめる。

この流れでわかること

  • 送られてきたデータの送信元が正しいか

送信者の公開鍵で復号できデータのハッシュ値が一致した場合、受信者は保持している公開鍵のペアである秘密鍵を持つものから送信されたことがわかります。

  • 伝送経路上でデータが改ざんされていないか

ハッシュ値が一致していることからデータが改ざんされていないことがわかります。なぜなら、ハッシュ関数の特性上、同じ値を入力した場合、同じ値が出力されるからです。

Proof of Work(PoW)とは?

Proof of Work(PoW)とは、計算量の多い問題を解くことでブロックチェーン への書き込みと新たなブロックの生成を参加者に合意させることです。

計算量の多い問題を解くとはNonce(ナンス or ノンス)を見つけることで、約10分間かけて計算を行い一番最初にNonceを見つけたマイナーがブロックチェーンにブロックを追加することができます。

マイナーがPoWの解であるNonceを見つけブロックを生成すると他のノードに伝搬し、受け取ったノードは有効なブロックか検証を行います。そしてそのブロックが有効であった場合のみ別ノードに伝播します。

tomoyaishida.hatenablog.com

改ざんが極めて困難な理由

ブロックチェーンが改ざんできない理由を説明するためには、ブロックチェーン を形成するブロックの構造を理解する必要があります。

ブロックチェーンを形成する一つのブロックは「ハッシュ値 + ブロックの取引情報 + Nonce 」という構造を持っています。

例えば、ブロック1の取引情報をハッシュ関数に通すとハッシュ1が生成されます。そして、次のブロック2を生成する際に、「ハッシュ1 + ブロック情報2 + Nonce」をハッシュ関数に通すとハッシュ2が生成され、次のブロック3を生成する際には、「ハッシュ2 + ブロック情報3 + Nonce」をハッシュ関数に通しハッシュ3を生成します。ここで生成されたハッシュ1~3の繋がりをハッシュチェーンと呼びます。

このハッシュ値を繋げたハッシュチェーンの仕組みが改ざんに対して、強力な効果を発揮しているのです。

過去のブロックのトランザクション(取引情報)を改ざんする場合、再度Nonceを見つけなければならない上に、ブロックは親のハッシュを持っているため改ざんしたブロックの子ブロックのハッシュも変更してNonceの再計算が必要になります。

ハッシュ関数の特性上、入力値が異なると出力値が変更されてしまいます。つまり、ハッシュ1の値を変更すると、ブロックに2に含まれるハッシュ1の値も変更しなければならず、それによりハッシュ2の値が変更され、同様にブロック3内のハッシュ2の値も変更しなければなりません。つまり、トランザクションを改ざんするとその先に続く全てのハッシュ値を再計算しなければならないのです。

当然、再計算を行なっている間もマイナーは新しいブロックの生成を続けるため、改ざんしたブロックチェーンの長さが、本物のブロックチェーンの長さに追いつくことは基本的にありません。
ブロックチェーンは一番長いブロックが本物とみなされるので、これらの理由から改ざんが極めて困難だといわれているのです。

最後までお読みいただきありがとうございました。暗号通貨・ブロックチェーンを勉強し始めたばかりの初心者ですので、間違いなどがあれば教えていただきたいです。

よろしければTwitterのフォローもよろしくお願いします!

twitter.com