暗号学的ハッシュ関数。カリフォルニア大学バークレー校 ビットコインと仮想通貨の無料講義超訳|Week3-1

前回までの記事はこちら

ーーーーーーーーーー

こんにちは!クレメア(@cremea_tw)です。

前回に引き続き、カリフォルニア大学バークレー校の無料講義、
「ビットコインと仮想通貨のオンライン講座」で学んだ内容をシェアしていきます。

講義そのものにおいて、

読者対象:ビットコインや仮想通貨について詳しく知りたい全ての人
前提知識:不要

という感じなので、
講義内容を読むだけでもかなり理解が深まるのではないかと思います。

 

文章のスタイルとしては、
翻訳ではなく、個人的解釈バリバリの超訳をしてきます。

荒削りですがスピード重視で、
クレメア的な解釈も交えてお伝えするので、
間違いや意見などあればコメントいただければと思います。

 

また、太字や文字色などの文章の装飾は極力していません。

学びの本質はそこではない、時間がもったいない、あとでできる、
ということで、今回は泣く泣くカットしました。

見辛いかもしれませんが、予めご了承ください。

 

ということで、
講義の内容に沿って進めます。

今回の記事は、
暗号学的ハッシュ関数についてお伝えします。

それでは、本題に入っていきましょう。

第3週目にようこそ

この講義では、
ビットコインがどのように機能するのか、
その詳細について解説していきます。

 

最初に、
暗号学的ハッシュ関数について説明します。

暗号学的ハッシュ関数が何であるか、
ビットコインでどのように使用されるかを説明します。

 

次に、暗号学的ハッシュ関数を使用して、
改ざんのないデータベースである、
ブロックチェーンを作成する方法を見ていきます。

そして、デジタル署名、楕円曲線デジタル署名アルゴリズム、
私たちが実際に秘密鍵、公開鍵、アドレスを生成して使用する方法、
これらについて説明します。

 

最後に、ビットコインのスクリプトとその機能、
およびビットコインをより柔軟にする役割について紹介します。

 

イントロ: モチベーションと定義

ビットコインについて、
「誰も信頼しない」という仮定を思い出してください。

これまでは、コンセンサスの観点から信頼を考えましたが、
ネットワークを移動する情報についてはどうでしょうか?

 

例えば、誰かがネットワーク内で、
私のトランザクションが入っているブロックを見た場合、
何が、そのブロックを変更したり、置き換えることを止めるのでしょう。

以前は、Proof-of-Workを通じて、
ブロックチェーンの更新に関するコンセンサスを得る方法を示しました。

 

私たちは改ざん防止用システムを設計することによって、
全ての人が同じ更新をすることを確実にする方法を示します。

改ざん防止用とは、
情報が改ざんされる可能性はあるものの、
何かしらの情報操作があった際に、それが明らかになることです。

改ざん防止用データベースを設計するには、
まず標準化されたランダム性のあるソースが必要であることがわかります。

このために、暗号化ハッシュ関数を使用します。

 

モチベーションと定義: 情報の統合

暗号学的ハッシュ関数

これを行う簡単な方法は、
指紋システムです。

指紋はどのように適用されますか?

人間の指紋を考えてみましょう。

人間の指紋はそれぞれユニークで、
偽造することが難しく、予測も不可能に近いです。

他の国に入国するとき、
彼らはよくあなたの指紋をあなたの一意の識別子として尋ねます。

あなたが他の誰かであれば、
あなたの指紋は変わります。

 

ビットコインも同様です。

人間や親指ではなく、
意味のある情報とランダムなデータがあります。

意味のあるデータの指紋を生成する方法を設計できれば、
情報の完全性を保証することができます。

この指紋システムでは、
情報が変更された場合、指紋も変更されます。

 

ここで、指紋に関する魅力的なことがあります。
指紋は標準化されたランダム性を持つのです。

誰かの指紋を見るだけで、
どのようなものに見えてくるか予測することができません。

同様に、デジタル指紋を生成したデータを、
予測することもできません。

しかし、私たちは皆指紋を生成する方法にどのように同意しますか?

標準化されたランダム性が必要です。

 

ハッシュ関数とは何か

暗号学的ハッシュ関数は、ある入力を取り、
擬似乱数の出力を生成する一方向性関数です。

擬似乱数は、私たちにはランダムに見えますが、
実際には、入力によっては常に同じ出力になるため、
擬似乱数と呼ばれます。

言い換えれば、「Hello World!」のハッシュを一度とると、
もう一度やっても同じことになります。

これは全当事者間の標準化に必要です。

暗号学的ハッシュ関数は、
常に一定の大きさのメッセージを出力します。

1つの注意点は、
出力を像と呼び、入力を原像と呼びます。

暗号学的ハッシュ関数は、セキュリティのために構築されている点で、
通常のハッシュ関数とは異なりますが、
ここではハッシュ関数として暗号学的ハッシュ関数を参照します。

 

暗号学的ハッシュ関数の基本性質

暗号学的ハッシュ関数

#暗号学

ハッシュ関数の性質はなんですか?

私たちが議論すべき重要な特性は3つ、
原像計算困難性、第2原像計算困難性、衝突困難性です。

これらの用語の意味を明確にするために、
定義を見てみましょう。

「原像」は「入力」と同義です。

「困難性」は「難易度」と同義です。

例えば、「原像計算困難性」は、
ある出力を与えれた入力を見つけることの難しさを示します。

もっと詳しく見ていきましょう。

 

原像計算困難性

まず、誰も指紋を、
リバースエンジニアリングできないようにしたいと考えています。

さもなければ、
明らかにしたくない情報を公開するなど、
特定の問題が発生します。

これが起こらないようにするためには、
原像計算困難性と呼ばれるものが必要です。

技術的な定義は以下の通りです。
あるハッシュ関数Hと、xの関数Hの出力があると、
xを見つけるのは計算上困難である。

言い換えると、
出力を生成した入力を簡単に見つけることはできません。

 

第2原像計算困難性

次に誰も指紋を盗むことができないようにします。

誰かが別の入力で自分の指紋を生成することができれば、
誰がもともと指紋を作ったのか誰にも知らせることはできません。

これが起こらないようにするためには、
第2原像計算困難性と呼ばれるものが必要です。

技術的な定義は以下の通りです。
ハッシュ関数Hとxの出力Hがある場合、
xのHがx’のHに等しくなるように、
異なる入力x’を見つけることは計算上困難である。

 

衝突困難性

第2原像計算困難性の概念を拡大すると、
同じ出力にマッピングされる2つの任意の入力が悪いことであることは、
一般的に認識されます。

これを防ぐには、衝突困難性が必要です。

技術的な定義は以下の通りです。
いくつかのハッシュ関数Hを仮定すると、
xのHがyのHに等しくなるように、
2つの異なる入力xとyを見つけることは計算上困難である。

 

雪崩効果

これらの特性の結果は、雪崩効果として知られています。

これは、入力が変化すると、
出力が擬似ランダムに変化することを意味します。

これは、入力に基づいて出力を推測しようとする、
入力を伴うホットゲームまたはコールドゲームを防止します。

I am Satoshi Nakamoto 1
I am Satoshi Nakamoto 2
I am Satoshi Nakamoto 3

という文字列をハッシュ化すると、
結果は擬似ランダムになります。

それぞれの結果は擬似ランダムです。
入力が似ているにもかかわらず、ハッシュの間には何の関係もありません。

 

 SHA-256

ビットコインが多くのシナリオで使用する特定のハッシュ関数は、
SHA-256と呼ばれています。

SHA-256は、NSAによって設計された暗号学的ハッシュ関数です。

SHA-256は、SHA-2ファミリーの暗号学的ハッシュ関数のメンバーで、
SHAはSecure Hash Algorithmの略です。

SHA-256は、2 ^ 64ビット未満の入力を取り込み、
256ビット固定サイズの出力を生成します。

実際には、
入力サイズの2 ^ 64ビットの上限は非常に大きいので、
通常、それは任意の量の情報を取り込むと言います。

Bitcoinは、多くの場合、
SHA-256が2回連続して使用されることを意味するSHA-256 squared、
またはSHA256dを使用します。

ハッシュしたい元のメッセージと、
この最初のハッシュの出力をもう一度表示します。

 

Quick Check 1

SHAは何を表しますか?

  • Standard Hash Algorithm
  • Secure Hash Algorithm
  • Super Hash Algorithm
  • Supply-chain Hashing ASIC
  • Sloppy Hamburger Andouille
  • Someone Hacked Android

 

あとがき

ということで、
いかがでしたでしょうか?

暗号理論を知らない人にとっては、
かなり理解が難しい内容だったのではないでしょうか?

専門用語がかなり出てきましたからね。

 

今回の内容が難しかった方は、
こちらの記事などを参考にすると理解が深まるかと思います。

ブロックチェーンで活用されるハッシュ関数とは?ビットコインでの利用についても紹介!

 

日本語でわからないものは、英語で聞いてもわかりませんから、
まずは日本語で理解して、そのあと英語で理解する。

これくらいがちょうどいいのかなと思います。

 

図解解説などは、
時間があるときに追加しようと思います。

 

ということで、

今回はこの辺で失礼します。

このブログを書く僕の目的は、
「ファンを作ること・仲間を増やすこと」です。

趣味が合う、気が合う、考え方が合う。
なんかええなーと思ったら、気軽にメッセージください。喜びます。

終わり。

 

次の記事はこちら。
ブロックチェーンの仕組み。カリフォルニア大学バークレー校 ビットコインと仮想通貨の無料講義超訳|Week3-2

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ABOUTこの記事をかいた人

物語の引き金を引く男 / 「てめえの人生に火をつける」 / プロ火付け役 / 腐れニートからの再始動 / 見知らぬ人にMacBook Proを買った人 / 32日で100記事達成 / ただの足跡を伝説に変えていく男 / Youtubeで #クレメアラジオ 不定期配信 / サロン「裏世界」オーナー 参加希望者はDMまで