ブロックチェーン技術に貢献したイノベーションはさまざまですが、その中でも最も重要なのがハッシュ化です。 しかし、ブロックチェーンにおけるハッシュとは何でしょうか? それがなければ、ブロックチェーンは安全でなく、まったく使えないでしょう。 これにより、暗号通貨を安全で信頼性の高いものにします。
コンピュータサイエンスの学位を取得したくないし、この暗号プリミティブの詳細を知りたい場合は、そのままにしておくとよいでしょう。 ハッシュ化の理解はそれほど難しくないことがわかるでしょう。
暗号という言葉は、ギリシャ語の「隠された」を意味する「kryptos」に由来します。 それは、敵対的な活動に直面した際の安全なコミュニケーションのための方法の研究と適用です。 本質的には、メッセージをエンコードする行為です。 現代の暗号はコンピュータ中心ですが、その歴史は古代にまでさかのぼります。
エジプトの象形文字は、暗号学の好例です。古代エジプトは、初心者がさまざまなミステリースクールの秘密を学ぶのを防ぐために、一連の無秩序な象形文字として最初の暗号化されたメッセージを開発しました。 この暗号化方法は非常に単純で、単純置換と呼ばれる手法に依存していました。
ローマ皇帝ユリウス・シーザーは、使者を疑って、 将軍たちに暗号化されたメッセージを送った 。 死後、ジュリアス・シーザーと名付けられ、シーザー・サイファーを普及させました。 シーザーサイファーも単純な置換手法です。
ハッシュは暗号化の一種です。 ハッシュ関数は、任意のサイズのデータを固定サイズの値にマップできる関数です。 ハッシュ関数によって返される値は、ハッシュ値、ハッシュコード、ダイジェスト、または単にハッシュと呼ばれます。
たとえば、"Hello World" というプレーンテキストを考えてみましょう。 イーサリアムのハッシュ関数であるKeccak-256のハッシュ関数を使って、平文をハッシュ「592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba」に変換します。これに対応して、出力はイーサリアムアドレスに似ています。
人々は日常生活の中で無意識のうちにハッシュに遭遇します。 パスワードを使用して日常的にハッシュに遭遇する可能性があります。 アプリケーションでアカウントを作成すると、プロバイダーはパスワードを保存しない可能性が高くなります。彼らはあなたのパスワードのハッシュを保存します。 アカウントにサインインすると、アプリは入力したパスワードをハッシュ化し、このハッシュをファイルに保存したハッシュと比較します。
簡単に言えば、すべての関数が同じように作成されているわけではありません。 ハッシュ関数が正しく機能するためには、特定の要件を満たす必要があります。 次のプロパティが必要です。
コンピューターはハッシュをすばやく返すことができなければなりません。ほとんどの場合、ハッシュ関数をほんの一瞬で処理できます。
たとえば、 Keccak-256 ハッシュ関数を使用して、メッセージ "Hello World" を "hello World" に変更します。 これにより、値 "079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1" が返されます。 ご覧のとおり、ハッシュ関数では大文字と小文字が区別され、返されるハッシュの結果が大幅に変更されます。
正確なハッシュ値は、特定の入力値に対して毎回生成する必要があります。 ハッシュはメッセージを安全に送信する方法であることを覚えておく必要があります。 そうでない場合は、受信者に気付かれないように入力をハッシュに変更できます。
プリイメージ攻撃は、ハッシュの出力が既知であり、タスクが何らかの入力を見つけることである場合に発生します。 暗号化ハッシュ関数に対するプリイメージ攻撃は、特定のハッシュ値を持つメッセージを探します。 暗号化ハッシュ関数は、プリイメージ攻撃(可能な入力のセット)に対して耐性がある必要があります。
更新前イメージ (つまり、 plaintext) をパスワードとして使用します (この例では "Hello World")。 平文の「Hello World」は非常にシンプルで確認しやすいです。 SHA-256のような安全なハッシュ関数に対しても、既知の入力の記録を保持するデータベースがあります。
既知のメッセージダイジェストの 2 番目のプリイメージを見つけることが計算上不可能である暗号化ハッシュ関数の予期されるプロパティ。
同じ出力を生成する 2 つの入力を見つけることは非常に困難であるか、不可能に違いありません。 入力値は任意の長さと任意の文字にすることができるため、この値の可能性は無限大です。 出力には固定長があり、そのため、可能性は固定されています。
そのため、複数の入力値で同じ出力が生成される可能性があります。 衝突耐性が十分でない場合は、「バースデーアタック」で衝突が見つかる可能性があります。 お気づきかもしれませんが、第 2 のプリイメージ抵抗と衝突抵抗は非常によく似ています。 それらは別々であり、かなり単純ですのでご安心ください。
2 番目のプリイメージ耐性では、入力が既知であり、攻撃者は同じ値にハッシュする 2 番目の入力を見つけることができます。 衝突耐性では、両方の入力が不明であり、攻撃者は同じ値にハッシュする両方の入力を見つけることができます。 衝突抵抗は、プリイメージ耐性を意味します。
これは、確率論の背後にある数学を悪用する攻撃です。 誕生日の例を聞いたことがあるでしょう。27人の部屋がある場合、可能性は低いようですが、実際には50%の確率で2人が同じ誕生日を迎えます。
それはなぜか。 1人の人が「正しい」誕生日を迎える確率は1/365です。 同じ誕生日の2人目の確率も1/365です。 両方が同じ誕生日である確率を見つけるには、それらの確率を掛ける必要があります。 したがって、スケールアップすると、365の異なる誕生日があり、したがって365の可能性がある場合、50%の確率で一致する23人のランダムに選ばれた365の平方根が必要です。
この理論をハッシュに適用すると、技術的にそれが実現します。衝突のないハッシュ関数はありませんが、衝突が発生するまでに長い時間がかかるはずです。
ビットコイン 合計ハッシュレート: Blockchain.com
ビットコインはブロックチェーン上で動作し、ハッシュアルゴリズム「SHA-256」(セキュアハッシュアルゴリズム256)を使用します。 ビットコインの場合、ハッシュ関数は3つのメイン関数に使用されます。
鉱夫はパズルを解くために競争します。各マイナーは、すでに知っているブロックから情報を取得し、ハッシュ化して、それらからブロックを構築します。 アルゴリズムからの出力がターゲット数よりも小さい場合、その出力は有効と見なされ、ネットワークの残りの部分で受け入れられます。 その後、次のブロックを作成する権利が与えられます。
セキュリティを強化するため。ブロックチェーン上の各ブロックは、前のブロックにリンクされています。これは、ハッシュポインタ(別の変数のアドレスを格納する変数)で実現されます。 基本的に、各ブロックにはブロックチェーン上の前のブロックのハッシュ結果が含まれています。 これにより、ブロックチェーンの履歴を簡単に追跡でき、悪意のあるブロックが追加される可能性が排除されます。
暗号通貨を送受信するには、秘密鍵と公開鍵が必要です。 これら 2 つのキーは、ハッシュ関数を介して相互に接続されています。 これは、誰もあなたの公開鍵に基づいてあなたの秘密鍵を解読できないようにするために不可欠なコンポーネントです。
ハッシュ関数は、暗号通貨に高レベルのセキュリティを提供します。 ただし、理論的には、オンライン上のものは何もハッキングの影響を受けません。ハッシュ関数は、現在利用可能な最大難易度を提供します。
ブロックチェーン技術に貢献したイノベーションはさまざまですが、その中でも最も重要なのがハッシュ化です。 しかし、ブロックチェーンにおけるハッシュとは何でしょうか? それがなければ、ブロックチェーンは安全でなく、まったく使えないでしょう。 これにより、暗号通貨を安全で信頼性の高いものにします。
コンピュータサイエンスの学位を取得したくないし、この暗号プリミティブの詳細を知りたい場合は、そのままにしておくとよいでしょう。 ハッシュ化の理解はそれほど難しくないことがわかるでしょう。
暗号という言葉は、ギリシャ語の「隠された」を意味する「kryptos」に由来します。 それは、敵対的な活動に直面した際の安全なコミュニケーションのための方法の研究と適用です。 本質的には、メッセージをエンコードする行為です。 現代の暗号はコンピュータ中心ですが、その歴史は古代にまでさかのぼります。
エジプトの象形文字は、暗号学の好例です。古代エジプトは、初心者がさまざまなミステリースクールの秘密を学ぶのを防ぐために、一連の無秩序な象形文字として最初の暗号化されたメッセージを開発しました。 この暗号化方法は非常に単純で、単純置換と呼ばれる手法に依存していました。
ローマ皇帝ユリウス・シーザーは、使者を疑って、 将軍たちに暗号化されたメッセージを送った 。 死後、ジュリアス・シーザーと名付けられ、シーザー・サイファーを普及させました。 シーザーサイファーも単純な置換手法です。
ハッシュは暗号化の一種です。 ハッシュ関数は、任意のサイズのデータを固定サイズの値にマップできる関数です。 ハッシュ関数によって返される値は、ハッシュ値、ハッシュコード、ダイジェスト、または単にハッシュと呼ばれます。
たとえば、"Hello World" というプレーンテキストを考えてみましょう。 イーサリアムのハッシュ関数であるKeccak-256のハッシュ関数を使って、平文をハッシュ「592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba」に変換します。これに対応して、出力はイーサリアムアドレスに似ています。
人々は日常生活の中で無意識のうちにハッシュに遭遇します。 パスワードを使用して日常的にハッシュに遭遇する可能性があります。 アプリケーションでアカウントを作成すると、プロバイダーはパスワードを保存しない可能性が高くなります。彼らはあなたのパスワードのハッシュを保存します。 アカウントにサインインすると、アプリは入力したパスワードをハッシュ化し、このハッシュをファイルに保存したハッシュと比較します。
簡単に言えば、すべての関数が同じように作成されているわけではありません。 ハッシュ関数が正しく機能するためには、特定の要件を満たす必要があります。 次のプロパティが必要です。
コンピューターはハッシュをすばやく返すことができなければなりません。ほとんどの場合、ハッシュ関数をほんの一瞬で処理できます。
たとえば、 Keccak-256 ハッシュ関数を使用して、メッセージ "Hello World" を "hello World" に変更します。 これにより、値 "079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1" が返されます。 ご覧のとおり、ハッシュ関数では大文字と小文字が区別され、返されるハッシュの結果が大幅に変更されます。
正確なハッシュ値は、特定の入力値に対して毎回生成する必要があります。 ハッシュはメッセージを安全に送信する方法であることを覚えておく必要があります。 そうでない場合は、受信者に気付かれないように入力をハッシュに変更できます。
プリイメージ攻撃は、ハッシュの出力が既知であり、タスクが何らかの入力を見つけることである場合に発生します。 暗号化ハッシュ関数に対するプリイメージ攻撃は、特定のハッシュ値を持つメッセージを探します。 暗号化ハッシュ関数は、プリイメージ攻撃(可能な入力のセット)に対して耐性がある必要があります。
更新前イメージ (つまり、 plaintext) をパスワードとして使用します (この例では "Hello World")。 平文の「Hello World」は非常にシンプルで確認しやすいです。 SHA-256のような安全なハッシュ関数に対しても、既知の入力の記録を保持するデータベースがあります。
既知のメッセージダイジェストの 2 番目のプリイメージを見つけることが計算上不可能である暗号化ハッシュ関数の予期されるプロパティ。
同じ出力を生成する 2 つの入力を見つけることは非常に困難であるか、不可能に違いありません。 入力値は任意の長さと任意の文字にすることができるため、この値の可能性は無限大です。 出力には固定長があり、そのため、可能性は固定されています。
そのため、複数の入力値で同じ出力が生成される可能性があります。 衝突耐性が十分でない場合は、「バースデーアタック」で衝突が見つかる可能性があります。 お気づきかもしれませんが、第 2 のプリイメージ抵抗と衝突抵抗は非常によく似ています。 それらは別々であり、かなり単純ですのでご安心ください。
2 番目のプリイメージ耐性では、入力が既知であり、攻撃者は同じ値にハッシュする 2 番目の入力を見つけることができます。 衝突耐性では、両方の入力が不明であり、攻撃者は同じ値にハッシュする両方の入力を見つけることができます。 衝突抵抗は、プリイメージ耐性を意味します。
これは、確率論の背後にある数学を悪用する攻撃です。 誕生日の例を聞いたことがあるでしょう。27人の部屋がある場合、可能性は低いようですが、実際には50%の確率で2人が同じ誕生日を迎えます。
それはなぜか。 1人の人が「正しい」誕生日を迎える確率は1/365です。 同じ誕生日の2人目の確率も1/365です。 両方が同じ誕生日である確率を見つけるには、それらの確率を掛ける必要があります。 したがって、スケールアップすると、365の異なる誕生日があり、したがって365の可能性がある場合、50%の確率で一致する23人のランダムに選ばれた365の平方根が必要です。
この理論をハッシュに適用すると、技術的にそれが実現します。衝突のないハッシュ関数はありませんが、衝突が発生するまでに長い時間がかかるはずです。
ビットコイン 合計ハッシュレート: Blockchain.com
ビットコインはブロックチェーン上で動作し、ハッシュアルゴリズム「SHA-256」(セキュアハッシュアルゴリズム256)を使用します。 ビットコインの場合、ハッシュ関数は3つのメイン関数に使用されます。
鉱夫はパズルを解くために競争します。各マイナーは、すでに知っているブロックから情報を取得し、ハッシュ化して、それらからブロックを構築します。 アルゴリズムからの出力がターゲット数よりも小さい場合、その出力は有効と見なされ、ネットワークの残りの部分で受け入れられます。 その後、次のブロックを作成する権利が与えられます。
セキュリティを強化するため。ブロックチェーン上の各ブロックは、前のブロックにリンクされています。これは、ハッシュポインタ(別の変数のアドレスを格納する変数)で実現されます。 基本的に、各ブロックにはブロックチェーン上の前のブロックのハッシュ結果が含まれています。 これにより、ブロックチェーンの履歴を簡単に追跡でき、悪意のあるブロックが追加される可能性が排除されます。
暗号通貨を送受信するには、秘密鍵と公開鍵が必要です。 これら 2 つのキーは、ハッシュ関数を介して相互に接続されています。 これは、誰もあなたの公開鍵に基づいてあなたの秘密鍵を解読できないようにするために不可欠なコンポーネントです。
ハッシュ関数は、暗号通貨に高レベルのセキュリティを提供します。 ただし、理論的には、オンライン上のものは何もハッキングの影響を受けません。ハッシュ関数は、現在利用可能な最大難易度を提供します。