この記事は本からの抜粋です レイマンのビットコインガイド Logan Brutsche 著者の許可を得てここに再発行されます.
暗号化は、データのセキュリティを保証するために数学関数をデータに適用する科学です。.
多くの人気のあるフィクションは、十分なハッカーがいる限り、どのシステムもハッキングされる可能性があることを意味します。この「ハリウッドハッキング」は、現実の世界の仕組みではありません。ハッカーは、ロックされていないサーバールーム、推測しやすいパスワード、保護されていないネットワークポート、「バックドア」など、悪用するシステムの脆弱性を見つける必要があります。後で不正アクセスを取得するために内部ジョブとしてインストールされます.
特定のシステムに脆弱性がないことを保証することはできませんが、結局のところ、システムは不完全な人間によって作成されています。「何でもハッキングされる可能性がある」という感情は誤りです。 90年代初頭以来、ハッキングの影響をまったく受けない暗号化技術にアクセスできました。時には悪用の余地を残す可能性があるのは、そのような技術の適用です.
暗号化と数学の両方が誤って使用される可能性はありますが、数学をハッキングして2 + 2 = 5にすることができないのと同様に、暗号化自体をハッキングして偽造された暗号化署名(まもなく定義)を生成することはできません。. 暗号化を使用するシステムに障害が発生した場合、それは設計者が暗号化を誤って適用したことが原因です. これは、暗号化が機能しなかったため、または誰かが暗号化を「ハッキング」したためではありません。銀行がアカウントを誤って処理した場合の数学のせいでも、お母さんが見慣れない添付ファイルをダウンロードしてコンピュータウイルスに感染した場合のメールのせいでもありません。 。ビットコインは確立された暗号化の直接のアプリケーションであるため、これは重要な違いです.
暗号化は、テストされていない新しいテクノロジーではありません. ビットコインで使用されるすべての暗号化技術は、インターネットの開始以来使用されており、毎日使用される多くの一般的なインターネットプロトコルに不可欠です。. 暗号化の科学は、ロケット科学がNASAによって信頼性があり不可欠であると見なされるのと同じように、コンピューター科学者によって信頼性があり不可欠であると見なされます。.
キーペア:暗号化の基礎
キーペアは、ブロックチェーンで使用される暗号化の基礎です. キーペアには、秘密鍵と公開鍵の2つの部分があります。これらのキーは、実際には、パスワードとユーザー名の代わりに使用される、特定の数学的関係を持つ非常に大きな数字にすぎません。.
名やユーザー名などの公開鍵を処理します。ほとんどの場合、公開鍵を尋ねる人と共有し、公開鍵を持っている人はそれを使用して参照または連絡することができます。それはあなたの評判(またはビットコインの場合はあなたの取引履歴)に関係しているので、さまざまな目的に使用するいくつかの公開鍵(したがっていくつかの鍵ペア)があるかもしれません。公開鍵を使用してアカウントを参照または表示することはできますが、それ自体でそのアカウントに対するアクションを承認することはできません。.
秘密鍵はパスワードのように扱う必要があります。誰とも共有しないでください。また、BTCの送信などの特定のアクションを認証するために使用されます。.
ただし、秘密鍵とパスワードには重要な違いがあります。パスワードを使用するには、パスワードを個人またはサーバーに送信して、記録と照合できるようにする必要があります。パスワードは、送信後に責任を持って処理されることを信頼する必要があります。対照的に、秘密鍵を使用すると、どこにも送信せずに自分自身を認証できます。これまでに保存または直接使用された場所は、ローカルデバイスのみです.
シークレットをどこにも送信せずに自分自身を認証できれば、セキュリティを完全に制御でき続けることができるため、これは重要です。他のシステムのセキュリティの失効に対して脆弱ではありません。これは、ビットコインをハッキングできないようにするための重要な部分です。攻撃者が侵害するためにビットコイン自体に保存されているパスワードや秘密鍵はありませんが、ユーザーは引き続きトランザクションを認証できます.
しかし、秘密鍵をどこにも送信したことがない場合、どのようにして秘密鍵を使用してトランザクションを認証できますか?答えは、秘密鍵と公開鍵の間の数学的関係、つまり暗号署名と関係があります。.
暗号署名
暗号署名を生成および検証するためのいくつかの異なる手法があり、それらが機能することを可能にする数学的定理は、この記事の範囲をはるかに超えています。暗号化に慣れていない人にとっては、ここで説明するプロセスは最初はまったく不可能に聞こえるかもしれません。 4年前にビットコインの研究を始めたとき、この印象を持ったことをはっきりと覚えています。.
今のところ、これらのテクノロジーは多くの一般的なインターネットプロトコルで使用されており、情報科学の確立された部分であることにもう一度注意します。.
すでに公開鍵を直接取引している2人のアリスとボブを想像してみてください。アリスはボブにメッセージを送信したいと思っていますが、ボブは非常に疑わしい人物であり、疑いの余地なく数学的に証明できない限り、メッセージが実際にアリスから送信されたものであるとは信じません。この証明を容易にするために、彼らは暗号署名を使用することに同意します.
署名を生成するために、アリスはコンピューターの署名生成アルゴリズムを使用します。このアルゴリズムは、秘密鍵と完全なメッセージを入力として受け取り、暗号化署名を生成します。次に、彼女はボブにこのメッセージ/署名の組み合わせを送信しますが、決定的に, 彼女の秘密鍵を送信しません.
ボブがメッセージと署名を受信すると、彼は採用する補完的な署名検証アルゴリズムを持っています。このアルゴリズムは、メッセージと署名を入力として受け取り、 公衆 アリスが署名を生成するために使用したキーペアのキー。ボブは、アルゴリズムがアリスの公開鍵を出力するのを見ると、アリスの鍵ペアの秘密の半分を知らず、計算できない場合でも、署名がアリスの鍵ペアで生成されたに違いないことを数学的に証明しました。.
もっと簡潔に, この暗号署名プロセスにより、ボブは、メッセージが第三者によって作成または変更されたものではなく、アリスの秘密鍵を知らなくても(または知ることができなくても)アリスの秘密鍵で生成されたものでなければならないことを確認できます。彼に必要なのは、メッセージと署名の組み合わせと彼女の公開鍵だけです。.
直感的には、これは不可能に思えます。何かを誤解しているように感じるかもしれません。アリスの秘密鍵と公開鍵が非常に密接に関連していて、アリスが彼女の秘密鍵を使用してボブが受け取る署名を生成した場合、彼はどのようにして公開鍵を取得できても秘密鍵を見つけることができませんか?これに対する答えは、ほとんどの人が持っているよりもはるかに深い数学の理解を必要とし、この本の範囲をはるかに超えています.
それでも、この手法は毎日信頼されて使用されており、暗号化コミュニティ内では堅実であると見なされています。 Webサイトにアクセスし、そのアドレスがhttpsで始まる場合、「s」は、サイトが暗号化署名で自身を検証したことを示します。コンピューターは、上記の例でボブが行ったように、署名検証アルゴリズムを使用して、Webサイトが実際に正しいキーペアからのものであることを確認しました。この暗号化署名は、ユーザーとWebサイト間のそれ以上のやり取りが暗号化されて本物であることを保証するために使用されます。このテストが失敗した場合、最新のブラウザは警告を表示し、Webサイトに危険なフラグを付けます.
十分に巨大な数
先ほど、秘密鍵と公開鍵はユーザー名やパスワードのように機能することを簡単に説明しましたが、実際には、特別な数学的関係を持つ非常に大きな数にすぎません。それを考えると、私はよく次の質問をされます。
「誰かがコンピュータにたくさんの数字を推測させたり、数えたりして、秘密鍵として試すことはできませんか?最終的に、ターゲットとなるキーペアの秘密キーに遭遇し、それによってそのIDを制御できるようになるのではないでしょうか。」確かに、ビットコインの場合、これは攻撃者がいくつかのキーペアによって保持されているお金を盗むことを可能にします.
それは良い質問ですが、それでも起こりません。前に述べたように、数百万ドル相当のBTCを備えたビットコインアドレスがいくつかありますが、それを盗むために必要なのは適切な秘密鍵、つまり適切な膨大な数です。それらのアドレスの秘密鍵を推測できれば、お金はどこにでも送ることができます。パスワードとは異なり、自分のマシンでローカルに秘密鍵を確認できます。また、秘密鍵を試す回数や速度を制限するサーバーはありません。.
では、なぜ誰もこれらの資金をまだ盗んでいないのでしょうか。答えは、秘密鍵として使用される数字のほとんどばかげたサイズにあります。彼らです 十分に巨大.
簡単な思考実験から始めましょう。秘密鍵が十分に大きいため、世界中のすべてのコンピューターが連携しているとすると、ブルートフォースが推測するのに24時間かかると想像してみてください。秘密鍵にさらに1桁追加すると、コンピューターが通過する順列が10倍になるため、1桁ではなく10日かかります。さらに6桁で27、000年になります.
いずれの場合も、秘密鍵の生成(乱数を作成する機能のみが必要)は簡単です。秘密鍵を使用して署名を生成すること、およびこれらの署名を公開鍵と照合することも、計算が簡単なままです。しかし、秘密鍵を推測するために必要な作業は、余分な桁ごとに指数関数的に増加します。秘密鍵をブルートフォース推測に対して「耐性」にするために必要なのは、十分な桁数を追加することだけです。十分に大きくするだけで済みます。.
だからどれだけ巨大なのか? ビットコインで使用される秘密鍵は256ビットの整数であり、これは76桁の長さの数値になります。. この数の大きさの力は信じられないほどです。次の図は、ブルースシュナイアーの本から大きく派生しています。 応用暗号化, 十分に膨大な数の説得力のあるデモンストレーションです.
まず、熱力学の第2法則の特定の結果は、情報の1つのバイナリビットを変更する(1を0に変更する、またはその逆)ために必要な最小エネルギーがあることを認識します。つまり、使用するハードウェアに関係なく、計算プロセスを実行するには最小限のエネルギーが必要です。.
ここで、太陽のエネルギー出力全体を利用して、キーペア(BTCを制御する可能性がある)の秘密鍵を見つけることを期待して、秘密鍵をカウントまたは推測する特別に設計されたコンピューターに電力を供給することができたとします。.
少しの数学と熱力学を使用すると、太陽の年間エネルギー出力全体を考えると、完全に効率的なコンピューターが2178の値を数えることができることがわかります。この値を可能な秘密鍵の数2256で割ると、この架空のコンピューターは、太陽の年間エネルギー出力全体を考えると、可能な秘密鍵の総数の0.0000000000000000000003%までしか推測またはカウントできないことがわかります。.
さらに、これは単なるカウントであり、各秘密鍵を実際にチェックして、それが正しい公開鍵に対応しているかどうかを確認するという、はるかに複雑なタスクは含まれていません。したがって、0.0000000000000000000003%の確率で、このコンピューターが1年の終わりまでに正しい秘密鍵で発生したとしても、それを実現することすらできません。.
これらの数値は、デバイスのテクノロジーとは何の関係もありません。これらは、1930年代から確立された熱力学の法則に従って可能な最大値です。そして彼らは、コンピューターが物質以外のものから構築され、空間以外のものを占有するまで、256ビットキー(ビットコインが使用する)に対するブルートフォース攻撃は実行不可能であることを強く示唆しています.
これは十分に膨大な数の力です. ハッカーがどれほど優れているかは関係ありません。彼が1年間で300億の太陽、または300億年間で1つの太陽の力を利用できない限り、彼のコンピューターは カウント すべての秘密鍵を介して-テストまたはその他の方法でそれらを使用することは言うまでもありません.
ビットコインと暗号化の詳細については、LoganBrutscheの本をご覧ください。, レイマンのビットコインガイド.