ハッシュは、任意のサイズのデータを固定長の文字列に変換するプロセスです。この手順は、アルゴリズムとして実装されたハッシュ関数と呼ばれる数学的な公式を用いて行われます。すべてのハッシュ関数が暗号学を含むわけではありませんが、暗号学的ハッシュ関数と呼ばれるものは、暗号通貨の世界では不可欠です。それらのおかげで、ブロックチェーンやその他の分散型システムは、高いデータの完全性とセキュリティを実現しています。ハッシュ関数は、従来のものも暗号学的なものも決定論的です。つまり、入力が変わらなければ、アルゴリズムは常に同じ出力を生成します ( また、これはダイジェストまたはハッシュ)とも呼ばれます。一般的に、暗号通貨におけるハッシュアルゴリズムは単方向関数として設計されており、これは、かなりの時間と計算リソースなしには簡単に逆転できないことを意味します。言い換えれば、入力から出力を生成するのは比較的簡単ですが、その逆を行うのは極めて複雑です。一般的に、元の入力を見つけるのが難しいほど、そのハッシュアルゴリズムは安全であると考えられます。## ハッシュ関数の動作異なるハッシュ関数は異なるサイズの結果を生成しますが、各ハッシュアルゴリズムの出力サイズは常に一定です。例えば、SHA-256アルゴリズムは256ビットの結果しか生成できず、SHA-1は常に160ビットのダイジェストを生成します。例として、「Gate」と「Gate」をBitcoinで使用されるSHA-256ハッシュアルゴリズム(に通してみましょう。SHA-256のエントラ出発)256 bits(ゲートE3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855ゲートb94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9最初の文字の大文字を)変更しただけで、まったく異なるハッシュ値が得られることに注意してください。しかし、SHA-256を使用すると、出力は常に固定サイズの256ビット(または64文字)になります。入力サイズに関係なく、アルゴリズムを介して2つの単語を何度実行しても、2つの出力は一定のままです。対照的に、SHA-1ハッシュアルゴリズムを通じて同じ入力を実行すると、次の結果が得られます:SHA-1 (英語)エントリー出発(160 bits)ゲート3A7BD3E2360A3D29EEA436FCFB7E44C735D117C4ゲート5df9954f1ca26eabf18c663cc9258ba7f7712c45SHAはSecure Hash Algorithmsを意味することを言及することが重要です。これは、SHA-0およびSHA-1アルゴリズムとSHA-2およびSHA-3グループを含む一連の暗号ハッシュ関数を指します。SHA-256はSHA-2グループの一部であり、SHA-512および他のバリアントと共に存在します。現在、安全と見なされているのはSHA-2およびSHA-3グループのみです。## ハッシュの重要性従来のハッシュ関数は、データベースの検索、大きなファイルの分析、データ管理など、幅広い用途があります。一方、暗号学的ハッシュ関数は、メッセージの認証やデジタルフィンガープリンティングなどの情報セキュリティアプリケーションで広く使用されています。ビットコインの文脈では、暗号学的ハッシュ関数はマイニングプロセスの重要な部分であり、新しいアドレスやキーの生成にも重要な役割を果たしています。ハッシュの真の力は、膨大な量の情報を扱うときに現れます。たとえば、大きなファイルやデータセットをハッシュ関数に通し、その出力を使用してデータの正確性と完全性を迅速に検証することができます。これは、ハッシュ関数の決定論的な性質により可能です:入力は常に簡略化され、凝縮された出力を生成します(ハッシュ)。この技術により、大量のデータを保存し「記憶する」必要がなくなります。ハッシュは特にブロックチェーン技術の文脈で役立ちます。ビットコインのブロックチェーンには、ハッシュを含むさまざまな操作があり、そのほとんどはマイニングプロセスの中で行われます。実際、ほぼすべての暗号通貨プロトコルは、トランザクションのグループをブロックにリンクさせて凝縮するためにハッシュに依存し、また各ブロック間に暗号リンクを生成するためにも使用され、結果的にブロックチェーンが作成されます。## クリプトグラフィックハッシュ関数暗号技術を実装するハッシュ関数は、暗号ハッシュ関数として定義できます。一般的に、暗号ハッシュ関数を破るには、無数のブルートフォース試行が必要です。誰かが暗号ハッシュ関数を「逆転」させるには、出力が得られるまで試行錯誤で入力を推測しなければなりません。ただし、異なる入力が全く同じ結果を生成する可能性もあり、その場合は「衝突」が発生します。技術的には、暗号ハッシュ関数は、効果的に安全であると見なされるために、3つの特性を満たさなければなりません。それらを衝突耐性、前画像耐性、第二前画像耐性として説明できます。各プロパティを分析する前に、その論理を3つの短い文で要約しましょう:- 衝突耐性:同じハッシュを出力として生成する異なる2つの入力を見つけることは現実的ではありません。- 画像への以前の抵抗: ハッシュ関数 ( を "逆転" することは実現不可能であり、特定の出力の入力を見つけることはできません ).- セカンドプリイメージに対する抵抗: 特定の入力と衝突するセカンド入力を見つけることは不可能です。(衝突抵抗衝突は、異なる入力がまったく同じハッシュを生成する場合に発生します。したがって、ハッシュ関数は誰かが衝突を見つけるまで衝突耐性があると見なされます。ハッシュ関数には常に衝突が存在することに注意することが重要です。なぜなら、可能な入力は無限であるのに対し、可能な出力は有限だからです。別の言い方をすれば、ハッシュ関数は衝突に対して抵抗性があるのは、衝突を見つける可能性が非常に低く、何百万年もの計算が必要になる場合です。したがって、衝突のないハッシュ関数は存在しませんが、その中には十分に堅牢であり、抵抗性があると見なされるものもあります。)例えば、SHA-256###。SHAアルゴリズムの中で、SHA-0およびSHA-1グループは衝突が発見されたため、もはや安全とは見なされていません。現在、SHA-2およびSHA-3グループは衝突耐性があると見なされています。( 画像への前の抵抗逆像抵抗性の特性は、一方向関数の概念に関連しています。ハッシュ関数は、特定の出力を生成した入力を誰かが見つける可能性が非常に低い場合、逆像抵抗性があると見なされます。このプロパティは、特定の出力を観察することで攻撃者がどの入力だったかを推測しようとするため、前のものとは異なることに注意することが重要です。一方、コリジョンは、異なる2つの入力が同じ出力を生成することを誰かが見つけるときに発生しますが、どの入力が使用されたかは重要ではありません。プレイメージ耐性の特性は、データを保護するために貴重です。なぜなら、メッセージの単純なハッシュがその認証を証明できるからであり、情報を開示する必要がないからです。実際、多くのサービスプロバイダーやウェブアプリケーションは、生のパスワードの代わりにパスワードから生成されたハッシュを保存および使用しています。) セカンドプリイメージ耐性簡単に言うと、第二前画像の抵抗性は他の二つの特性の間の中間点にあると言えます。第二前画像攻撃は、誰かが既知の入力と同じ出力を生成する特定の入力を見つけることができるときに発生します。言い換えれば、第二前画像攻撃は衝突を見つけることを含みますが、同じハッシュを生成する2つのランダムな入力を探すのではなく、特定の他の入力によって生成された同じハッシュを生成する入力を探します。したがって、衝突耐性のあるハッシュ関数は、第二前画像攻撃にも耐性があることになります。これは、後者が常に衝突を伴うためです。しかし、衝突耐性のある関数に対して前画像攻撃を実行することはまだ可能であり、それは単一の出力から単一の入力を見つけることを含みます。## マイニングとハッシュビットコインのマイニングプロセスには、残高の検証、トランザクションの入力と出力のリンク、そしてブロック内のトランザクションのハッシュ化など、多くのハッシュ操作が含まれます。しかし、ビットコインのブロックチェーンが安全である主な理由の1つは、マイナーが次のブロックの有効なソリューションを見つけるために大量のハッシュ操作を実行する必要があるという事実です。具体的に言うと、マイナーは候補ブロックのハッシュ値を作成する際に、さまざまな異なる入力を試す必要があります。本質的に、特定の数のゼロで始まる出力ハッシュを生成しない限り、彼らはブロックを検証することができません。ゼロの数はマイニングの難易度を決定し、ネットワークに割り当てられたハッシュレートによって変わります。この文脈では、ハッシュレートはビットコインのマイニングに投入される計算能力の量を示します。ネットワークのハッシュレートが増加すると、ビットコインプロトコルは、ブロックを掘るのに必要な平均時間が約10分に保たれるように、採掘の難易度を自動的に調整します。逆に、多くのマイナーがマイニングをやめることを決定し、ハッシュレートが著しく低下すると、マイニングの難易度が調整され、###を掘るのが容易になります。その結果、ブロックの平均時間が再び10分に戻るまで###。マイナーが衝突を見つける必要がないことを強調することが重要です。なぜなら、特定の数のゼロで始まる(のような有効な出力を生成できる複数のハッシュがあるからです。したがって、特定のブロックに対して複数の解決策があり、マイナーはマイニングの難易度によって決定された閾値に従って、それらのうちの1つを見つける必要があるだけです。ビットコインのマイニングはコストがかかる作業であるため、マイナーはシステムを騙す理由がありません。なぜなら、それは重要な財務的損失を引き起こすからです。ブロックチェーンに参加するマイナーが増えれば増えるほど、より大きく、より強力になります。## 最終的な感想間違いなく、ハッシュ関数はコンピュータ科学において基本的なツールであり、特に大量のデータを扱う際に重要です。暗号技術と組み合わせることで、ハッシュアルゴリズムは非常に多様であり、さまざまな方法でセキュリティと認証を提供します。そのため、暗号ハッシュ関数はほぼすべての暗号通貨ネットワークにとって不可欠であり、その特性や機能メカニズムを理解することは、ブロックチェーン技術に興味のある人にとって間違いなく役立ちます。
ハッシュ: 暗号学とブロックチェーンの基本概念
ハッシュは、任意のサイズのデータを固定長の文字列に変換するプロセスです。この手順は、アルゴリズムとして実装されたハッシュ関数と呼ばれる数学的な公式を用いて行われます。
すべてのハッシュ関数が暗号学を含むわけではありませんが、暗号学的ハッシュ関数と呼ばれるものは、暗号通貨の世界では不可欠です。それらのおかげで、ブロックチェーンやその他の分散型システムは、高いデータの完全性とセキュリティを実現しています。
ハッシュ関数は、従来のものも暗号学的なものも決定論的です。つまり、入力が変わらなければ、アルゴリズムは常に同じ出力を生成します ( また、これはダイジェストまたはハッシュ)とも呼ばれます。
一般的に、暗号通貨におけるハッシュアルゴリズムは単方向関数として設計されており、これは、かなりの時間と計算リソースなしには簡単に逆転できないことを意味します。言い換えれば、入力から出力を生成するのは比較的簡単ですが、その逆を行うのは極めて複雑です。一般的に、元の入力を見つけるのが難しいほど、そのハッシュアルゴリズムは安全であると考えられます。
ハッシュ関数の動作
異なるハッシュ関数は異なるサイズの結果を生成しますが、各ハッシュアルゴリズムの出力サイズは常に一定です。例えば、SHA-256アルゴリズムは256ビットの結果しか生成できず、SHA-1は常に160ビットのダイジェストを生成します。
例として、「Gate」と「Gate」をBitcoinで使用されるSHA-256ハッシュアルゴリズム(に通してみましょう。
SHA-256の
エントラ
出発)256 bits(
ゲート
E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855
ゲート
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
最初の文字の大文字を)変更しただけで、まったく異なるハッシュ値が得られることに注意してください。しかし、SHA-256を使用すると、出力は常に固定サイズの256ビット(または64文字)になります。入力サイズに関係なく、アルゴリズムを介して2つの単語を何度実行しても、2つの出力は一定のままです。
対照的に、SHA-1ハッシュアルゴリズムを通じて同じ入力を実行すると、次の結果が得られます:
SHA-1 (英語)
エントリー
出発(160 bits)
ゲート
3A7BD3E2360A3D29EEA436FCFB7E44C735D117C4
ゲート
5df9954f1ca26eabf18c663cc9258ba7f7712c45
SHAはSecure Hash Algorithmsを意味することを言及することが重要です。これは、SHA-0およびSHA-1アルゴリズムとSHA-2およびSHA-3グループを含む一連の暗号ハッシュ関数を指します。SHA-256はSHA-2グループの一部であり、SHA-512および他のバリアントと共に存在します。現在、安全と見なされているのはSHA-2およびSHA-3グループのみです。
ハッシュの重要性
従来のハッシュ関数は、データベースの検索、大きなファイルの分析、データ管理など、幅広い用途があります。一方、暗号学的ハッシュ関数は、メッセージの認証やデジタルフィンガープリンティングなどの情報セキュリティアプリケーションで広く使用されています。ビットコインの文脈では、暗号学的ハッシュ関数はマイニングプロセスの重要な部分であり、新しいアドレスやキーの生成にも重要な役割を果たしています。
ハッシュの真の力は、膨大な量の情報を扱うときに現れます。たとえば、大きなファイルやデータセットをハッシュ関数に通し、その出力を使用してデータの正確性と完全性を迅速に検証することができます。これは、ハッシュ関数の決定論的な性質により可能です:入力は常に簡略化され、凝縮された出力を生成します(ハッシュ)。この技術により、大量のデータを保存し「記憶する」必要がなくなります。
ハッシュは特にブロックチェーン技術の文脈で役立ちます。ビットコインのブロックチェーンには、ハッシュを含むさまざまな操作があり、そのほとんどはマイニングプロセスの中で行われます。実際、ほぼすべての暗号通貨プロトコルは、トランザクションのグループをブロックにリンクさせて凝縮するためにハッシュに依存し、また各ブロック間に暗号リンクを生成するためにも使用され、結果的にブロックチェーンが作成されます。
クリプトグラフィックハッシュ関数
暗号技術を実装するハッシュ関数は、暗号ハッシュ関数として定義できます。一般的に、暗号ハッシュ関数を破るには、無数のブルートフォース試行が必要です。誰かが暗号ハッシュ関数を「逆転」させるには、出力が得られるまで試行錯誤で入力を推測しなければなりません。ただし、異なる入力が全く同じ結果を生成する可能性もあり、その場合は「衝突」が発生します。
技術的には、暗号ハッシュ関数は、効果的に安全であると見なされるために、3つの特性を満たさなければなりません。それらを衝突耐性、前画像耐性、第二前画像耐性として説明できます。
各プロパティを分析する前に、その論理を3つの短い文で要約しましょう:
衝突耐性:同じハッシュを出力として生成する異なる2つの入力を見つけることは現実的ではありません。
画像への以前の抵抗: ハッシュ関数 ( を "逆転" することは実現不可能であり、特定の出力の入力を見つけることはできません ).
セカンドプリイメージに対する抵抗: 特定の入力と衝突するセカンド入力を見つけることは不可能です。
(衝突抵抗
衝突は、異なる入力がまったく同じハッシュを生成する場合に発生します。したがって、ハッシュ関数は誰かが衝突を見つけるまで衝突耐性があると見なされます。ハッシュ関数には常に衝突が存在することに注意することが重要です。なぜなら、可能な入力は無限であるのに対し、可能な出力は有限だからです。
別の言い方をすれば、ハッシュ関数は衝突に対して抵抗性があるのは、衝突を見つける可能性が非常に低く、何百万年もの計算が必要になる場合です。したがって、衝突のないハッシュ関数は存在しませんが、その中には十分に堅牢であり、抵抗性があると見なされるものもあります。)例えば、SHA-256###。
SHAアルゴリズムの中で、SHA-0およびSHA-1グループは衝突が発見されたため、もはや安全とは見なされていません。現在、SHA-2およびSHA-3グループは衝突耐性があると見なされています。
( 画像への前の抵抗
逆像抵抗性の特性は、一方向関数の概念に関連しています。ハッシュ関数は、特定の出力を生成した入力を誰かが見つける可能性が非常に低い場合、逆像抵抗性があると見なされます。
このプロパティは、特定の出力を観察することで攻撃者がどの入力だったかを推測しようとするため、前のものとは異なることに注意することが重要です。一方、コリジョンは、異なる2つの入力が同じ出力を生成することを誰かが見つけるときに発生しますが、どの入力が使用されたかは重要ではありません。
プレイメージ耐性の特性は、データを保護するために貴重です。なぜなら、メッセージの単純なハッシュがその認証を証明できるからであり、情報を開示する必要がないからです。実際、多くのサービスプロバイダーやウェブアプリケーションは、生のパスワードの代わりにパスワードから生成されたハッシュを保存および使用しています。
) セカンドプリイメージ耐性
簡単に言うと、第二前画像の抵抗性は他の二つの特性の間の中間点にあると言えます。第二前画像攻撃は、誰かが既知の入力と同じ出力を生成する特定の入力を見つけることができるときに発生します。
言い換えれば、第二前画像攻撃は衝突を見つけることを含みますが、同じハッシュを生成する2つのランダムな入力を探すのではなく、特定の他の入力によって生成された同じハッシュを生成する入力を探します。
したがって、衝突耐性のあるハッシュ関数は、第二前画像攻撃にも耐性があることになります。これは、後者が常に衝突を伴うためです。しかし、衝突耐性のある関数に対して前画像攻撃を実行することはまだ可能であり、それは単一の出力から単一の入力を見つけることを含みます。
マイニングとハッシュ
ビットコインのマイニングプロセスには、残高の検証、トランザクションの入力と出力のリンク、そしてブロック内のトランザクションのハッシュ化など、多くのハッシュ操作が含まれます。しかし、ビットコインのブロックチェーンが安全である主な理由の1つは、マイナーが次のブロックの有効なソリューションを見つけるために大量のハッシュ操作を実行する必要があるという事実です。
具体的に言うと、マイナーは候補ブロックのハッシュ値を作成する際に、さまざまな異なる入力を試す必要があります。本質的に、特定の数のゼロで始まる出力ハッシュを生成しない限り、彼らはブロックを検証することができません。ゼロの数はマイニングの難易度を決定し、ネットワークに割り当てられたハッシュレートによって変わります。
この文脈では、ハッシュレートはビットコインのマイニングに投入される計算能力の量を示します。ネットワークのハッシュレートが増加すると、ビットコインプロトコルは、ブロックを掘るのに必要な平均時間が約10分に保たれるように、採掘の難易度を自動的に調整します。逆に、多くのマイナーがマイニングをやめることを決定し、ハッシュレートが著しく低下すると、マイニングの難易度が調整され、###を掘るのが容易になります。その結果、ブロックの平均時間が再び10分に戻るまで###。
マイナーが衝突を見つける必要がないことを強調することが重要です。なぜなら、特定の数のゼロで始まる(のような有効な出力を生成できる複数のハッシュがあるからです。したがって、特定のブロックに対して複数の解決策があり、マイナーはマイニングの難易度によって決定された閾値に従って、それらのうちの1つを見つける必要があるだけです。
ビットコインのマイニングはコストがかかる作業であるため、マイナーはシステムを騙す理由がありません。なぜなら、それは重要な財務的損失を引き起こすからです。ブロックチェーンに参加するマイナーが増えれば増えるほど、より大きく、より強力になります。
最終的な感想
間違いなく、ハッシュ関数はコンピュータ科学において基本的なツールであり、特に大量のデータを扱う際に重要です。暗号技術と組み合わせることで、ハッシュアルゴリズムは非常に多様であり、さまざまな方法でセキュリティと認証を提供します。そのため、暗号ハッシュ関数はほぼすべての暗号通貨ネットワークにとって不可欠であり、その特性や機能メカニズムを理解することは、ブロックチェーン技術に興味のある人にとって間違いなく役立ちます。