ハッシュとは、非固定サイズの文字の入力を変換して固定サイズの出力を生成するプロセスです。この処理は、ハッシュ関数(ハッシュアルゴリズムとして実装)などの数式を使用して実行されます。 

すべてのハッシュ関数が暗号を使用するわけではありませんが、いわゆる暗号ハッシュ関数が暗号通貨の中核です。これらのおかげで、ブロックチェーンやその他の分散システムは、高レベルのデータ整合性とセキュリティを実現できます。

従来のハッシュ関数と暗号ハッシュ関数はどちらも決定論的です。決定論とは、入力が同じである限り、ハッシュ アルゴリズムが常に同じ出力 (表現またはハッシュとも呼ばれる) を生成することを意味します。

通常、暗号通貨のハッシュ アルゴリズムは一方向ハッシュ関数として設計されているため、多くの計算時間とリソースを費やさずに簡単に元に戻すことはできません。つまり、入力データから出力を生成するのは簡単ですが、その逆方向の変換(出力のみから入力データを見つける)はできません。一般的に、入力データを見つけるのが困難であればあるほど、ハッシュ アルゴリズムは安全になります。


ハッシュ関数はどのように機能しますか?

ハッシュ関数によって生成される出力のサイズは異なりますが、可能な出力のサイズは常に固定され、一定です。たとえば、SHA-256 アルゴリズムは 256 ビットのサイズの出力しか生成できませんが、SHA-1 アルゴリズムは常に 160 ビットの表現を生成します。

説明のために、「Binance」と「binance」という単語を SHA-256 ハッシュ アルゴリズム (ビットコインで使用されるアルゴリズム) にかけてみましょう。

SHA-256

入力

入力(256ビット)

バイナンス

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

バイナンス

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


小さな変更(最初の文字を大文字にする)によって、ハッシュ値がまったく異なることがわかります。ただし、SHA-256 を使用しているため、入力データのサイズに関係なく、出力は常に 256 ビット (または 64 文字) の固定サイズになります。これら 2 つの単語をこのアルゴリズムで何度実行しても、これら 2 つの出力は同じままです。

逆に、これらの入力を SHA-1 ハッシュ アルゴリズムに実行すると、次の結果が得られます。

SHA-1

入力

出力(160ビット)

バイナンス

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

バイナンス

e58605c14a76ff98679322cca0eae7b3c4e08936


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 つの異なる入力が同じハッシュを生成することはできません。

  • 画像の改ざん防止: ハッシュを「復元」することはできません (出力に基づいて入力データを特定することはできません)。

  • 第二イメージの矛盾: 与えられた入力と矛盾する第二の入力を見つけることができません。


反紛争

説明したように、異なる入力が同じハッシュを生成すると衝突が発生します。したがって、ハッシュ関数は、誰かが衝突を発見するまでは衝突耐性があると考えられます。入力データは無限ですが、可能な出力は有限であるため、どのハッシュ関数でも衝突は常に存在することに注意してください。

言い換えれば、衝突が見つかる確率が非常に低く、衝突を見つけるのに数百万年の計算時間を要する場合、ハッシュ関数は衝突耐性があると見なされます。したがって、完全に衝突防止のハッシュ関数はありませんが、衝突耐性があるとみなされるほど強力なハッシュ関数もあります (例: 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 つを見つけるだけで済みます。 

ビットコインのマイニングはコストのかかる作業であるため、マイナーがシステムを不正に操作すると大きな経済的損失が生じるため、不正行為をする理由はありません。ブロックチェーンに参加するマイナーが増えるほど、そのブロックチェーンは強力になります。


結論する

ハッシュ関数は、特に膨大な量のデータを扱う場合には、コンピューター サイエンスにおいて不可欠なツールであると言っても過言ではありません。暗号化と組み合わせると、ハッシュ アルゴリズムを柔軟に使用でき、さまざまな方法でセキュリティと認証を提供できます。このように、暗号ハッシュ関数はほとんどの暗号通貨ネットワークで重要な役割を果たしているため、その特性と仕組みを理解することは、ブロックチェーン技術に関心のある人にとって間違いなく有益です。