1. ブロックチェーン技術と応用 - 暗号化の原理

暗号化の原則:

ハッシュ:

        暗号通貨 (暗号通貨)

        暗号化に使用されるハッシュ関数を暗号ハッシュ関数といいます。

これには 2 つの重要な特性があります。
        

1. 衝突耐性(ハッシュ衝突)

        x\neq y\quad H(x) = H(y)  2 つの異なる入力ハッシュ関数が同じ結果を生成する

入力空間は出力空間よりもはるかに大きいため、ハッシュの衝突は避けられません。

        入力は任意のテキストまたは数値スペースで可能であり、任意の数の入力が可能です。

        ただし、ハッシュ値は 256 ビットの 2 進数であるため、出力空間の可能性は2^{256}1 つ

        したがって、2 つの入力が同じ出力にマッピングされる状況が必然的に発生します。

        実際には、ブルートフォースとも呼ばれるブルートフォースによってこのようなハッシュの衝突を見つけることはほとんど不可能です。

テキスト m があるとすると、このテキストのハッシュ値 H(m) を m のダイジェストと呼び、このテキストの改ざんを検出します。

先ほど述べたハッシュ衝突は、英語では hash resistance とも呼ばれ、このような状況が起こることは予期されておらず、実際に起こることはほとんど不可能であることを意味します。

H( ) = H(m) はほとんど見つからないん{}ため、ハッシュ値ダイジェストでテキストの信頼性を検証できます。

例:

        重要なテキスト情報をテンセントのクラウドサーバーに置きたいのですが、置く前にテキストのハッシュ値を生成してパソコンに記録しましたが、テキスト情報ファイルを取得したいとき、ハッシュ値を計算すれば再度、ハッシュ値が最初に記録したハッシュ値と同じであることが判明した場合、テキストは Tencent Cloud サーバー上にあったときに変更されていないと判断できます。

注 ⚠️: この世界では、数学者も暗号学者も、ハッシュ 256 の衝突を人為的に作成する方法を見つけることはできませんが、人為的な作成が不可能であることを数学を使用して証明することも不可能です。この理論は知覚経験に基づいています。

ハッシュ関数にもさまざまな形式があり、かつては MD5 という有名なハッシュ関数がありましたが、当初このハッシュ関数は製造されていないとされていましたが、2004 年に中国の暗号専門家である王暁雲氏によって最終的に解読されました。

2.非表示(hidden属性)

        x\マップスト H(x)   x が与えられると、ハッシュ値 H(x) を計算できますが、H(x) を x から推定することはできません。          

この H(x) は入力に関する情報を漏洩しないことも理解できます。

もちろん、総当たりで解決することもできますが、非表示の前提として、入力スペースが十分に大きく、値の範囲が比較的分散している必要があります。 

したがって、2 つのプロパティは合わせてデジタル コミットメント (密封された封筒に相当するデジタル) を形成します。

ここでこの英語を解釈してみます

        質問:密封された封筒は密封された封筒ですが、その中に明日の株価を予測する情報を追加しましたが、なぜ密封する必要があるのですか?

なぜなら、予測が事前に公表されると、明日の株価の騰落に影響を与えるからです。例えば、権威ある専門家として、「明日はこの株が上がるかもしれない」と予測すると、その結果、みんながその通りになるとすぐに買います。傾向です。1 日の制限は予測されたものに干渉するため、封印する必要があります。すると、デジタルを追加するということは、このエンベロープの予測された内容をハッシュ値に変換することを意味します。なぜなら、隠し属性の結果の前に私の予測された内容を推測できる人は誰もいないからです。と発表されていますが、結果が出た後に内容を公開して再度変換します最初のハッシュが衝突するため、予測前のハッシュ値と比較しますハッシュ値が同じであれば、それが証明されます結果の前後で発表した予想の内容は一貫しています。

ただし、入力スペースを十分に大きくするために、エンベロープの内容に乱数ノンスを追加します。

H(x || ノンス)

ビットコイン

 暗号化の 2 つの属性に加えて、ビットコインには次の属性も必要です。

パズルに優しい

ビットコインで使用されるハッシュ関数はSHA-256と呼ばれます

SHA-256 (Secure Hash Algorithm-256) は 256 ビットを 16 進数に変換し、4 で割った結果は 64 ビットです

これらの 64 ビットの最初の 10 桁の 16 進数がすべて 0 になるようなハッシュ値を取得するとします。 

そして、パズルフレンドリーな属性とは、入力範囲を狭める近道がなく、総当たりで 1 つずつ試すしかないことを意味します。

ここでビットコインマイニングについて話始めます。

        マイニングでは実際にこのような乱数ノンスを探しており、この乱数ノンスを入力としてブロック内の他の情報と組み合わせてハッシュ値を取得します。

H(ブロックヘッダ) \レクスラント ターゲット

ブロックヘッダーは、ノンスとその他の情報を含むブロックヘッダーになります。操作および変更できるのはノンスのみです。実際にはマイニングでは常にノンスとその他の情報の組み合わせが試行され、得られるハッシュ値は以下の範囲内に収まります。ターゲットよりも。

質問:目標よりも小さいのはなぜですか? 最初の 10 桁がゼロである 16 進数のハッシュを探しているとします。ターゲットは 0000000000FFFFFFFFFF...

        つまり、ゼロ 10 個と F 54 個が目標で、それ以下であればこの範囲に収まります (コンピューター基礎のある友人なら理解しやすいはずです)

そして、パズルフレンドリーの属性は近道がないことを示しているため、適切な乱数ノンスの検索は次のように使用できます。

仕事の証明

あなたは鉱山を手に入れました(適切なノンスを見つけました)それはあなたがたくさんの仕事をしたからに違いありません、なぜなら近道はないからです

人 (マイナー) がそのような nonce を見つけると、その結果をネットワーク全体にブロードキャストします。

他の人は、彼のナンスを取得して他の情報と組み合わせてハッシュ値を取得し、そのハッシュ値が本当にターゲット以下であるかどうかを確認するだけで、彼が正しいかどうかを検証できます。

注⚠️: 世界中のマイナーがナンス乱数を必死で探していますが、ナンスと組み合わされた「その他の情報」は誰にとっても全く同じです。

要約: nonce を見つけるのは非常に難しいですが、検証は非常に簡単です。ハッシュ値を 1 回計算するだけです。

このプロパティは次のように呼ばれます。

解決は難しいが検証は簡単

デジタル通貨としてのビットコインの核となる考え方は分散化であり、これは簿記の監視を支援する銀行システムが必要ないことを意味します

質問:質問がある場合は、どのようにアカウントを開設すればよいですか? 答えは、各ユーザーが誰の承認も得ずにアカウントを開設することを決定するということです。アカウント開設のプロセスは非常に簡単で、公開鍵と秘密鍵のペア (公開鍵、秘密鍵) を作成するだけです。

公開キーと秘密キーは以下から派生します。

非対称暗号アルゴリズム 非対称暗号システム

非対称暗号化システムを説明する前に、対称暗号化システムについて理解しましょう。

        インターネット上で親友のシャオホンに送信したい情報があるとします。しかし、その内容を誰にも知られたくないので、暗号化キー (暗号化キー) を使用して暗号化することを選択し、暗号化キーを入力します。これをオンラインで親友のシャオホンに送信し、同じ暗号化キーを使用して復号化するよう依頼します。これは一種の対称性です。 

ただし、暗号化キーの使用は依然として安全ではなく、他の人がこのキーを使用して、私が送信したファイル情報を復号化することもできます。

そこで今回、非ペアワイズ暗号化システムが導入されました。

        非対称暗号化システムでは、公開キーが暗号化に使用され、秘密キーが復号化に使用されます。たとえば、私は今でも友人の小紅に機密ファイルを渡しますが、今回は暗号化するときに小紅の公開キーを使用して暗号化します。オブジェクト指向と同じように公開キー ファイル内の公開権限には誰でもアクセスでき、暗号化されたファイルを受け取った後、Xiaohong はオブジェクト指向の秘密キーと同じように、秘密キーを使用して秘密キーのロックを解除できます。そして彼女自身以外は誰もそれにアクセスできません。 

注 ⚠️: 暗号化と復号化には同じ人の公開鍵と秘密鍵が使用され、受信者の公開鍵と秘密鍵が使用されます。

ビットコイン アカウントの生成では、ローカル コンピューター上で公開キーと秘密キーを生成します。公開キーは銀行口座のようなものです。誰かがあなたに送金する場合、送金するために知っている必要があるのは公開キーだけです。秘密キーはアカウントのパスワードに相当し、秘密キーを使用してアカウント内の資金を送金できます。

ビットコインでは、取引の請求書が公開されていることは誰もが知っていますが、なぜ暗号化が必要なのでしょうか? 続いて「サイン」が届きました

サイン:

質問:公的な請求書に私が開始した取引記録がある場合、この取引が本当に私によって開始されたことを他の人はどうやって知ることができるのでしょうか? 誰かが私になりすまして、この虚偽の取引記録を送信しようとする可能性はありますか?

したがって、私が開始したこの取引記録では、まだ私の秘密鍵で署名する必要があります。他の人が私によってブロードキャストされた取引記録を受信するとき、彼らは私の公開鍵を使用して、署名が同じ人の秘密鍵であることを確認する必要があります"me". キーと公開キー

質問:ここで質問があります。各人が生成した公開鍵と秘密鍵が独立していることを確認するにはどうすればよいですか?

誰かが何もせずに公開鍵と秘密鍵を毎日作成し続けて、他人のアカウントにログインしてお金を盗もうとした場合、本当に実現可能でしょうか?

理論的には答えは完全に実現可能ですが、現在のコンピュータの計算能力と 256 ビットのハッシュ関数では、同じ公開鍵と秘密鍵を取得する確率は地球が爆発する確率よりも低いため、無視できます

述べる:

        この記事では主に、理論に基づいたビットコインのハッシュと署名の 2 つの主要なモジュールについて説明し、後続の記事では、具体的なデータ構造とアルゴリズムの実装について説明します。

おすすめ

転載: blog.csdn.net/weixin_43754049/article/details/125769691