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

