ハッシュとは、可変サイズの入力から固定サイズの出力を作成するプロセスを指します。これは、ハッシュ関数として知られる数式 (ハッシュ アルゴリズムとして実装) を使用して行われます。
すべてのハッシュ関数が暗号を使用しているわけではありませんが、いわゆる暗号ハッシュ関数がデジタル通貨の中核です。それらのおかげで、ブロックチェーンやその他の分散システムは、データの整合性とセキュリティをかなりのレベルに達することができます。
従来のハッシュ関数と暗号化ハッシュ関数はどちらも決定論的です。決定的であるという意味は、入力が変更されない限り、ハッシュ アルゴリズムは常に同じ出力 (ダイジェストまたはハッシュとも呼ばれます) を生成するということです。
暗号通貨のハッシュ アルゴリズムは通常、一方向関数として設計されており、大量の時間と計算リソースがなければ簡単に元に戻すことはできません。言い換えれば、入力から出力を取得することは非常に簡単ですが、その逆 (出力からのみ入力を取得する) を行うことは比較的困難です。一般に、入力を見つけるのが難しくなるほど、ハッシュ アルゴリズムの安全性は高くなります。
ハッシュ関数はどのように機能するのでしょうか?
異なるハッシュ関数は異なるサイズの出力を生成しますが、各ハッシュ アルゴリズムで可能な出力サイズは常に固定されています。たとえば、SHA-256 は 256 ビットの出力のみを生成できますが、SHA-1 は常に 160 ビットのダイジェストを生成します。
説明のために、「Binance」という単語と「binance」を SHA-256 ハッシュ アルゴリズム (ビットコインで使用されている) で実行してみましょう。
小さな変更 (最初の文字の形式) により、完全に異なるハッシュ値が得られることに注意してください。ただし、SHA-256 を使用しているため、入力のサイズに関係なく、出力は常に 256 ビット (または 64 文字) の固定サイズになります。また、2 つの出力は一定のままであるため、アルゴリズムで 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 つのプロパティに従う必要があります。これらのプロパティは、衝突耐性、プリイメージ耐性、および第 2 プリイメージ耐性として説明できます。
各プロパティについて説明する前に、その理由を 3 つの短い文にまとめてみましょう。
衝突耐性: 出力と同じハッシュを生成する 2 つの異なる入力を見つけることはできません。
プリイメージ耐性: ハッシュ関数を「反転」することはできません (指定された出力から入力を見つける)。
2 番目のプリイメージ抵抗: 別の指定された入力と衝突する 2 番目の入力が見つかりません。
衝突耐性
前述したように、異なる入力がまったく同じハッシュを生成すると、衝突が発生します。したがって、誰かが衝突を発見する瞬間まで、ハッシュ関数は衝突耐性があります。可能な入力は無限であるのに対し、可能な出力は有限であるため、どのハッシュ関数でも衝突が常に存在することに注意してください。
言い換えれば、ハッシュ関数は、衝突が見つかる確率が非常に低く、数百万年の計算が必要な場合に衝突耐性があります。したがって、衝突のないハッシュ関数はありませんが、耐性があるとみなされるほど強力なものもあります (例: SHA-256)。
さまざまな SHA アルゴリズムのうち、SHA-0 と SHA-1 の組み合わせは衝突のため安全ではなくなりました。 SHA-2 ブロックと SHA-3 ブロックは現在、衝突耐性があると考えられています。
原像抵抗
プリイメージ耐性特性は、一方向性関数の概念に関連しています。誰かが特定の出力を生成する入力を見つける可能性が非常に低い場合、ハッシュ関数はプリイメージ耐性があるとみなされます。
攻撃者は特定の出力を見て入力が何であるかを推測しようとするため、この機能は以前の機能とは異なることに注意してください。一方、衝突は、誰かが同じ出力を生成する異なる入力を見つけたときに発生しますが、どの入力が使用されたかは問題ではありません。
プリイメージ耐性は、情報を明らかにすることなくメッセージの単純なハッシュでその信頼性を証明できるため、データ保護において貴重です。実際には、多くのサービス プロバイダーや Web アプリケーションは、プレーンテキストのパスワードではなく、パスワードから生成されたハッシュを保存し、使用しています。
第二原像抵抗
簡単にするために、第 2 プリイメージ耐性は、以前の他のプロパティの中間に位置すると言えます。セカンドプリイメージ攻撃は、誰かがすでに知っている別の入力と同じ出力を生成する特定の入力を見つけたときに発生します。
言い換えれば、2 番目のプリイメージ攻撃には衝突の発見が含まれますが、出力と同じハッシュを生成する 2 つのランダムな入力を探すのではなく、別の特定の入力によって生成されたのと同じハッシュを生成する入力を探します。
したがって、衝突耐性のあるハッシュ関数は、2 番目のプリイメージ攻撃に対しても耐性があります。これは、後者が常に衝突を意味するためです。ただし、攻撃者は、1 つの出力から 1 つの入力を見つける必要があるため、耐衝突機能に対して早期の攻撃を実行する可能性があります。
マイニング
ビットコイン マイニング プロセスには、残高の検証、入力と出力のトランザクションへのリンク、ブロック内のトランザクションのハッシュ化によるマークル ツリーの形成などのハッシュ関数を含むいくつかのステップがあります。しかし、ビットコイン ブロックチェーンが安全である主な理由の 1 つは、マイナーが次のブロックの有効な解決策を見つけるために無数のハッシュが必要であるという事実です。
具体的には、マイナーは候補ブロックのハッシュ値を生成するときに、いくつかの異なる入力を試行する必要があります。本質的に、特定の数のゼロで始まる結果のハッシュを生成する場合にのみ、ブロックを検証できます。ゼロの数によってマイニングの難易度が決まり、ネットワークに割り当てられたハッシュ レートによって異なります。
この場合、ハッシュ レートは、ビットコインのマイニングに投資された計算能力の量を表します。ネットワーク ハッシュ レートが増加すると、ビットコイン プロトコルはブロックのマイニングにかかる平均時間が 10 分近くになるようにマイニングの難易度を自動的に調整します。一方、多くのマイナーがマイニングの停止を決定し、ハッシュレートの大幅な低下につながる場合は、マイニングの難易度が調整され、マイニングプロセスが容易になります(平均ブロックマイニング時間が10分に戻るまで)。
マイナーが有効な出力として生成できるハッシュ (特定の数のゼロから始まる) が限られているため、マイナーは衝突を見つける必要がないことに注意してください。したがって、特定のブロックには多くの可能な解決策があり、マイナーはマイニングの難易度によって決定される開始に従ってそれらの 1 つを見つける必要はありません。
ビットコインのマイニングは非常に高価であるため、マイナーがシステムを不正行為する理由はほとんどありません。これは重大な経済的損失につながるからです。ブロックチェーンに参加するマイナーが増えるほど、ブロックチェーンはより強力になります。
まとめ
ハッシュ関数がコンピューター サイエンスにおいて、特に大量のデータを扱う場合に不可欠なツールであることは疑いの余地がありません。ハッシュ アルゴリズムは、暗号化と組み合わせると多用途になり、さまざまな方法でセキュリティと認証を提供します。そのため、暗号化ハッシュ関数は、ほぼすべての暗号通貨ネットワークにとって非常に重要です。したがって、その特性と動作メカニズムを理解することは、ブロックチェーン技術に興味がある人にとって間違いなく役立ちます。
