ブロックチェーンのコア技術「ハッシュと暗号化アルゴリズム」を公開

ブロックチェーンのコア技術「ハッシュと暗号化アルゴリズム」を公開

[[285099]]

ご存知のとおり、ブロックチェーンの主要な技術コンポーネントは、主に P2P ネットワーク プロトコル、コンセンサス メカニズム、暗号化技術、アカウントおよびストレージ モデルです。これらの技術の中で、暗号化とコンセンサスメカニズムが最も重要です。そこで今日は暗号化について詳しく説明し、暗号化技術がブロックチェーンにどのように適用されているかを見ていきます。

まず、ブロックチェーンでどのような暗号化アルゴリズムが使用されているかを知る必要があります。実際には、2 つの主要なカテゴリがあります。

  • ハッシュアルゴリズム
  • 非対称暗号化アルゴリズム

1. ブロックチェーンのハッシュアルゴリズム

ハッシュ アルゴリズムは、ブロックチェーンで最も一般的に使用されるアルゴリズムです。ブロックの構築やトランザクションの整合性の確認に広く使用されています。

これはハッシュ アルゴリズムとも呼ばれる数学関数アルゴリズムの一種であり、次の 3 つの基本特性を備えている必要があります。

  1. 入力は任意の長さの文字列です
  2. 固定サイズの出力を生成します
  3. 効率的な計算が可能であり、つまり、妥当な時間内に出力値を計算できる。

ハッシュ アルゴリズムが暗号的に安全であることが求められる場合、次の 3 つの追加機能も必要になります。

1. 衝突耐性:

つまり、2 つの異なる入力に対して、2 つの異なる出力を生成する必要があるということです。 2 つの異なる入力に対して同じ出力が生成された場合、衝突耐性は存在しないか、または衝突耐性は弱いことになります。

2. 機密保持:

不可逆性とも呼ばれ、y = HASH(x) において、出力値 y は入力値 x によって計算できますが、y の値から逆計算して x の値を計算することはできません。不可逆性を保証するためには、x の値は非常に広い範囲から取得する必要があり、計算によって x の値を推測することは困難になります。

3. パズルに優しい:

この特徴は、パズルが公平で友好的であるという意味です。たとえば、アルゴリズムでは、y = HASH(x) です。y の値がわかっていて、x の値を取得したい場合は、総当たり列挙と継続的な試行を使用して取得する必要があります。これより良い方法や近道はありません。

ハッシュアルゴリズムは多数ありますが、ビットコインで使用される主なハッシュアルゴリズムは SHA-256 アルゴリズムです。

さらに、MD5、SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)、SHA-3 などの他の一般的なハッシュ アルゴリズムもあります。これらのうち、MD5 と SHA-1 は強力な衝突耐性が欠けており、十分に安全ではないことが証明されているため、市場での使用は推奨されなくなりました。

ハッシュ アルゴリズムの具体的な応用例を見るために、ビットコインを例に挙げてみましょう。

ビットコインでは、ハッシュ アルゴリズムを使用してトランザクションのデータ サマリーを生成します。現在のブロックには前のブロックのハッシュ値が含まれ、次のブロックには現在のブロックのハッシュ値が含まれます。これらは 1 つずつ接続され、以下に示すようにハッシュ ポインター リンク リストを形成します。

上記は単なる概略図です。では実際のビットコインシステムでは、各ブロックには何が含まれているのでしょうか?

上の写真の次の点に注目してください。

  • 前のブロック: ブロックのハッシュアドレスを記録します。32バイト
  • マークルルート:現在のブロック内のすべてのトランザクション情報を記録するデータ要約ハッシュ値、32バイト
  • ナンス: 特定の条件を満たすハッシュ値を見つけるために必要なランダムな値(マイニング)、4バイト

上記では、いくつかの重要なフィールドについてのみ説明しました。他のフィールドは、文字通りの意味から簡単に理解できるはずなので、1つずつ説明することはしません。

これらすべてのフィールドが一緒になってブロック ヘッダーを構成し、ブロック ヘッダーは 2 回ハッシュされる必要があり、計算された値が現在の Bitcoin ブロックのハッシュ値になります。ビットコインシステムでは、計算されたハッシュ値が特定の条件(特定の値未満)を満たす必要があるため、要件を満たす新しいハッシュ値を計算するために、ノンス値を継続的に走査する必要があります。要件を満たすハッシュ値が見つかった場合にのみ、これは合法的なブロックになります(この一連のアクションはマイニングとも呼ばれます)。

Python の例: SHA-256 (SHA-256 (ブロック ヘッダー)

上記のもう 1 つの重要なフィールドである Merkle ツリー フィールドを見てみましょう。

マークルツリーはマークルツリーとも呼ばれ、ハッシュアルゴリズムの重要な応用でもあります。

これは実際にはハッシュ ポインターを使用して構築されたバイナリ ツリーまたはマルチ ツリーです。

マークルツリーは次のように表示されます。

ツリーの最上部は、Merkle Root と呼ばれます。Merkle Root もハッシュ値です。どのように計算されるのでしょうか?

ビットコインでは、トランザクションごとにハッシュ計算を行い、2つのトランザクションごとにハッシュをマージしてハッシュを作成します。たとえば、図のトランザクションAのハッシュ値はH(A)、トランザクションBのハッシュ値はH(B)です。この2つのトランザクションのハッシュをマージすると、H(hA|hb)になります。計算は上に向かって続けられ、最終的なルートがマークルルートです。

マークルツリー構造はビットコインとイーサリアムの両方で使用されていますが、イーサリアムにはより複雑な機能を実現するために 3 つのマークルツリーがあります。

ここまで、ブロックチェーンにおけるハッシュアルゴリズムの応用について紹介してきました。次に、非対称暗号化アルゴリズムについて見ていきましょう。

2. ブロックチェーンにおける非対称暗号化アルゴリズム

ブロックチェーンの重要なポイントの1つはアカウントの問題ですが、ビットコインにはアカウントの概念がないので、人々はどうやってお金を送金するのでしょうか?

ここではまずブロックチェーンの非対称暗号化技術を紹介する必要があります。

非対称暗号化技術には、RSA、ECC、ECDSA など多くの種類があります。ビットコインでは ECDSA アルゴリズムが使用されています。

ECDSA は米国政府の標準であり、楕円曲線を使用するアップグレード版です。このアルゴリズムは長年にわたる綿密な暗号解析を経ており、安全で信頼できると広く考えられています。

いわゆる非対称暗号化とは、データを暗号化および復号化するときに 2 つの異なるキーを使用する必要があることを意味します。たとえば、キー A を使用してデータを暗号化し、キー B を使用して復号化することができます。逆に、キー B を使用して暗号化し、キー A を使用して復号化することもできます。したがって、誰かにメッセージを送りたい場合、まず A で暗号化し、その暗号文をその人に送信します。相手が暗号文を受け取ったら、手元にある鍵 B を使用してそのメッセージを復号化できます。これら 2 つのキーのうち、1 つは公開キーと呼ばれ、もう 1 つは秘密キーと呼ばれます。

ビットコインでは、各ユーザーは鍵のペア(公開鍵と秘密鍵)を持ち、ユーザーの公開鍵はビットコイン システム内の取引アカウントとして使用されます。

次の図を見てみましょう。

図からわかるように、最初のトランザクション レコードでは、トランザクションを開始するのはユーザー U0 です。ユーザー U1 に支払われるトークンはどのようにして実現されるのでしょうか。

  1. まず、ユーザーU0は取引情報を書き込みます: データ(プレーンテキスト、例: ユーザーU0がユーザーU1に100元を送金)
  2. ユーザー U0 はハッシュ アルゴリズムを使用してトランザクション情報を計算し、H = hash(data) を取得してから、自分の秘密鍵を使用して H、つまり S(H) に署名します。この手順は、実際にはトランザクション情報が改ざんされるのを防ぐためのものです。
  3. そして、ブロックチェーンネットワークに基づいて、署名S(H)と取引情報データがユーザーU1に渡される。
  4. ユーザーU1はユーザーU0の公開鍵を使用してS(H)を復号化し、取引情報のハッシュ値Hを取得します。
  5. 同時に、ユーザーU1もハッシュアルゴリズムを使用してトランザクション情報データを計算し、H2 = hash(data)を取得します。
  6. 上記の 2 つのハッシュ値を比較すると、H1==H2 の場合、トランザクションは合法です。これは、ユーザー U0 がトランザクションを開始するときに実際の秘密鍵を所有しており、自分のアカウントでトランザクションを開始する権利を持っていることを意味します。
  7. ネットワーク内のすべてのノードが上記の検証手順に参加できます。

この例は、ビットコインのトランザクションの署名プロセスであり、ビットコイン トランザクションのデジタル署名用のハッシュ アルゴリズムと非対称アルゴリズムを組み合わせています。

さらに、ビットコインでは、公開鍵と秘密鍵、ビットコイン アドレスの生成も非対称暗号化アルゴリズムによって保証されています。

上記は、ブロックチェーンシステムのコア技術であるハッシュアルゴリズムと暗号化アルゴリズムの応用です。ぜひご連絡ください。

<<:  Facebookはライブ動画でユーザーを見えなくする匿名化システムを開発した

>>:  Hubo Technologyが「2019年グローバルフィンテックイノベーションTOP50」に選出されました

ブログ    

推薦する

...

人工知能が銀行業界の変革を加速します!ビッグデータにより各ユーザーの信用格付けが提供されます!

[[221188]]将来、人工知能が 380 万人以上の銀行員の仕事を全て置き換える日が来るのでし...

Nvidia、世界最速のAIスーパーコンピュータがイタリアにやってくると発表

エヌビディアは木曜日、同社の高速コンピューティングプラットフォームを使用して、世界最速のAIスーパー...

...

ブロックチェーンとAIを最大限に活用する方法

急速に進化する今日のテクノロジー環境において、成功を目指す企業にとって、常に時代の先を行くことが重要...

...

...

MITが組み立てロボットを開発:将来的には宇宙コロニーを建設できる

2 台のプロトタイプ組み立てロボットが稼働しており、ボクセルと呼ばれる一連の小さなユニットを組み立...

ディープラーニング プラットフォームとして、TPU、GPU、CPU のどれが優れているでしょうか?誰かがベンチマーク調査を行った

GPU、TPU、CPU はすべてディープラーニング モデルのトレーニングに使用できますが、これらの各...

美容業界に参入しよう! AIはフェイスリフト手術も可能

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

...

AI顔認識:スマート監視を開発する方法

顔認識技術は継続的に発展しており、スマート監視システムの開発に貢献しています。これらのシステムにより...

興奮はテレビシリーズに匹敵、マスク氏とウルトラマン、そしてOpenAIとの「愛憎関係」

最近、マスク氏がOpenAIを訴えたというニュースがテクノロジー界に再び波紋を巻き起こしている。 1...

自然言語処理: 人工知能の重要な要素

自然言語処理 (NLP) により、コンピューターは人間の言語のニュアンスを理解できるようになります。...