ハッシュとは、可変サイズの入力から固定サイズの出力を生成するプロセスです。このプロセスは、「ハッシュ関数」と呼ばれる数式 (ハッシュ アルゴリズムとして実装) によって実行されます。
すべてのハッシュ関数に暗号化の使用が含まれるわけではありませんが、「暗号化ハッシュ関数」は暗号通貨の中心です。暗号化ハッシュ関数のおかげで、ブロックチェーンやその他の分散システムで高レベルのデータ整合性とセキュリティを実現できます。
従来のハッシュ関数と暗号化ハッシュ関数はどちらも決定論的です。決定論とは、入力が変化しない限り、ハッシュ アルゴリズムが常に同じ出力 (「ダイジェスト」または「ハッシュ値」とも呼ばれます) を生成するという事実を指します。
通常、暗号通貨ハッシュ アルゴリズムは一方向関数として設計されており、大量の計算時間とリソースがなければ簡単に復元することはできません。つまり、入力から出力を生み出すことは極めて簡単ですが、その逆に出力から入力を生み出すことは比較的難しいということです。一般に、入力を見つけるのが難しいほど、ハッシュ アルゴリズムの安全性は高くなります。
ハッシュ関数はどのように機能するのでしょうか?
異なるハッシュ関数は異なるサイズの出力を生成しますが、各ハッシュ アルゴリズムの出力サイズは常に同じです。たとえば、SHA-256 アルゴリズムは 256 ビットの出力のみを生成できますが、SHA-1 は常に 160 ビットのダイジェストを生成します。
これを説明するために、SHA-256 ハッシュ アルゴリズム (ビットコインで使用されるアルゴリズム) を通じて「Binance」と「binance」という単語を実行しました。
最初の文字の大文字と小文字を少し変更すると、まったく異なるハッシュ値が生成されることに注意してください。入力値の長さに関係なく、SHA-256 を使用した出力は常に 256 ビット (または 64 文字) の固定長です。さらに、アルゴリズムがこれら 2 つの単語を何回実行しても、両方の出力は同じままです。
逆に、SHA-1 ハッシュ アルゴリズムを通じて同じ入力を実行すると、次の結果が得られます。
「SHA」は Secure Hash Algorithms の頭字語であることに注意してください。このアルゴリズムは、SHA-0 および SHA-1 アルゴリズムに加え、SHA-2 および SHA-3 セットを含む暗号化ハッシュ関数のセットを指します。 SHA-256 は、SHA-512 および他のバリアントとともに、SHA-2 グループの一部です。現在、SHA-2 グループと SHA-3 グループのみが安全であると考えられています。
ハッシュ関数の重要性は何ですか?
従来のハッシュ関数には、データベース検索、大規模ファイル分析、データ管理など、さまざまな使用例があります。暗号化ハッシュ関数は、メッセージ認証やデジタル指紋採取などの情報セキュリティ アプリケーションで広く使用されています。ビットコインの場合、暗号化ハッシュ関数はマイニング プロセスに不可欠な部分であり、新しいアドレスとキーの生成の両方に影響を与えます。
ハッシュ操作は、大量の情報を処理する場合に非常に強力です。たとえば、ハッシュ関数を通じて大きなファイルまたはデータ セットを実行し、その出力を使用してデータの正確性と完全性を迅速に検証します。ハッシュ関数は決定論的であるため機能します。つまり、入力は常に圧縮され単純化された出力 (つまり、ハッシュ値) を生成します。このテクノロジーにより、大量のデータを保存して「記憶」する必要がなくなります。
ハッシュ操作は、ブロックチェーン技術の分野で特に役立ちます。ビットコイン ブロックチェーンにはハッシュ操作を含む多くの操作があり、そのほとんどはマイニング プロセスの一部です。実際、ほぼすべての暗号通貨プロトコルはハッシュに依存してトランザクションのグループを接続し、ブロックに圧縮すると同時に、ブロック間に暗号リンクを生成して、効果的にブロックチェーンを作成します。
暗号ハッシュ関数
同様に、暗号化技術を導入したハッシュ関数は、暗号化ハッシュ関数として定義できます。一般に、暗号化ハッシュ関数を解読するには、無数のブルート フォース試行が必要です。暗号化ハッシュ関数を「復元」するには、対応する出力が生成されるまで試行錯誤して入力を推測します。ただし、異なる入力がまったく同じ出力を生成する可能性もあるため、「競合」が発生します。
技術的に言えば、暗号化ハッシュ関数がセキュリティを確保する上で効果的であるとみなされるには、3 つの特性を備えている必要があります。 3 つの主要な属性は、衝突防止、プリイメージ防止、およびセカンド プリイメージ防止です。
各属性を個別に説明する前に、各属性のロジックを簡単にまとめてみましょう。
衝突耐性: 2 つの異なる入力が同じハッシュ値出力を生成することは不可能です。
アンチイメージ化性: ハッシュ関数を「復元」することは不可能です (つまり、指定された出力から入力を見つけることができません)。
2 番目のプリイメージ抵抗: 特定の入力と競合する別の入力を見つけることは不可能です。
紛争への抵抗
前述したように、異なる入力がまったく同じハッシュ値を生成すると、衝突が発生します。したがって、誰も衝突を検出しない限り、ハッシュ関数は衝突耐性があるとみなされます。可能な入力は無限であり、可能な出力は有限であるため、ハッシュ関数との衝突が常に発生することに注意してください。
衝突が見つかる確率が数百万年程度と低いと仮定すると、ハッシュ関数は衝突耐性があると言えます。したがって、実際には衝突のないハッシュ関数はありませんが、十分に強力である限り、一部のハッシュ関数 (SHA-256 など) は衝突耐性があると見なされます。
さまざまな SHA アルゴリズムの中で、SHA-0 グループと SHA-1 グループには競合があるため、安全ではなくなりました。現在、SHA-2 セットと SHA-3 セットは衝突耐性があると考えられています。
アンチイメージ
反象徴的な性質は、一方向性関数の概念に関連しています。ハッシュ関数は、特定の出力を生成する入力が見つかる確率が非常に低いと仮定するため、イメージに反すると言われます。
攻撃者は特定の出力を見て入力を推測するため、このプロパティは衝突耐性とは異なることに注意してください。さらに、同じ出力を生成する 2 つの異なる入力は競合しますが、どちらの入力が使用されるかは問題ではありません。
イメージ化防止プロパティは、メッセージの単純なハッシュで情報を開示せずにその信頼性を証明できるため、データを保護するのに役立ちます。実際には、多くのサービス プロバイダーや Web アプリケーションは、パスワードを平文で保存するのではなく、パスワードから生成されたハッシュを保存して使用します。
2 番目のプリイメージに対する耐性
つまり、2 番目のプリイメージに対する耐性は、上記の 2 つの特性の間のどこかにあります。 2 番目のプリイメージ攻撃は、別の既知の入力と同じ出力を生成する特定の入力を誰かが見つけた場合に発生します。
言い換えれば、2 番目のプリイメージ攻撃は競合の発見に関連していますが、同じハッシュ値を生成する 2 つのランダムな入力を検索するのではなく、特定の入力に対して同じハッシュ値を生成する別の入力を検索します。
2 回目のプリイメージ攻撃は通常、競合があることを意味します。したがって、衝突耐性のあるハッシュ関数は、2 回目のプリイメージ攻撃にも耐性があります。ただし、衝突耐性があるということは、単一の出力から単一の入力を見つけることができることを意味するため、攻撃者は衝突耐性のある関数に対してプリイメージ攻撃を開始することができます。
暗号通貨マイニング
ハッシュ関数は、残高の確認、トランザクションの入力と出力の連結、同じブロック内のトランザクションをハッシュしてマークル ツリーを形成するなど、ビットコイン マイニングのいくつかのステップで使用されます。ただし、ビットコイン ブロックチェーンが安全である主な理由の 1 つは、マイナーが次のブロックの有効なソリューションを最終的に見つけるまでに無数のハッシュ操作を実行する必要があることです。
具体的には、マイナーは候補ブロック ハッシュを作成するときに、いくつかの異なる入力を試行する必要があります。基本的に、マイナーは、生成された出力ハッシュが一定数のゼロで始まる場合にのみブロックを検証できます。ゼロの数によってマイニングの難易度が決まり、ネットワーク専用のハッシュ レートによって変化します。
この場合、ハッシュ レートはビットコインのマイニングに投入された計算能力の量を表します。ネットワークのハッシュ レートが増加すると、ビットコイン プロトコルはブロックの生成に必要な平均時間が 10 分近くになるようにマイニングの難易度を自動的に調整します。逆に、多くのマイナーがマイニングの停止を決定し、ハッシュレートが大幅に低下した場合、平均ブロック時間が 10 分に戻るまでマイニングの難易度は低下します。
マイナーは有効な出力として複数のハッシュ (特定の数のゼロで始まる) を生成できるため、衝突を探す必要がないことに注意してください。ブロックに対して考えられる解決策は複数ありますが、マイニング難易度のしきい値に応じて、マイナーは解決策の 1 つを見つけるだけで済みます。
ビットコインのマイニングは高コストの作業であり、マイナーがシステムを不正行為する必要はありません。不正行為を行うと、代わりに重大な経済的損失が発生します。ブロックチェーンに参加するマイナーが増えるほど、ブロックチェーンは大きくなり、より強力になります。
要約する
ハッシュ関数がコンピュータ サイエンスにおいて不可欠なツールであることは疑いの余地がなく、特に大量のデータを処理する能力は優れています。ハッシュ アルゴリズムを暗号化と組み合わせると、さまざまな方法でセキュリティと認証を提供するために使用できます。ほぼすべての暗号通貨ネットワークにとって、暗号化ハッシュ関数は重要です。したがって、ブロックチェーン技術に興味がある場合、暗号ハッシュ関数の特性と動作メカニズムを理解することは非常に有益です。

