重要なポイント

  • ハッシングは、数学的関数を使用して任意の入力を固定サイズの出力に変換するプロセスであり、暗号通貨とブロックチェーン技術の基礎です。

  • 暗号ハッシュ関数は、衝突抵抗、プリイメージ抵抗、セカンドプリイメージ抵抗という三つのコアプロパティを満たさなければなりません。

  • ビットコインはマイニング、トランザクション検証、およびアドレス生成のためにSHA-256を使用し、イーサリアムは状態管理およびスマートコントラクト操作のためにKeccak-256を使用します。

  • SHA-256やSHA-3のような現代のハッシュ関数は、既知の量子コンピュータの脅威に対して安全であり、まったく新しいアルゴリズムではなく、より大きな出力サイズのみを必要とします。

Binance Academy courses banner

イントロダクション

ハッシングとは、可変サイズの入力から固定サイズの出力を生成するプロセスを指します。これはハッシュ関数として知られる数学的公式を通じて行われ、ハッシングアルゴリズムとして実装されています。

すべてのハッシュ関数が暗号化を含むわけではありませんが、暗号ハッシュ関数はブロックチェーン技術と現代のサイバーセキュリティの核心にあります。これのおかげで、ブロックチェーンや他の分散システムは高いレベルのデータ整合性とセキュリティを達成できます。ハッシングがどのように機能するかを理解することは、暗号通貨がどのように機能するかに興味がある人にとって有益です。

ハッシュ関数の仕組み

異なるハッシュ関数は異なるサイズの出力を生成しますが、各アルゴリズムは入力サイズに関係なく常に固定長の出力を生成します。たとえば、SHA-256は常に256ビット(64文字の16進数)の出力を生成し、SHA-1は160ビットのダイジェストを生成します。

ハッシングは暗号化とは異なることに注意することが重要です。暗号化は、データを暗号化し、その後対応するキーを使用して元の形式に復号化できる二方向プロセスです。ハッシングは一方向関数です:入力からハッシュを生成できますが、ハッシュから元の入力を実質的に逆転させることはできません。

例えば、「Binance」と「binance」という言葉をSHA-256で処理すると、全く異なる出力が生成されます:

  • "Binance"は次のように生成されます:f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

  • "binance"は次のように生成されます:59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2

小さな変更(最初の文字の大文字化)は全く異なるハッシュ値をもたらします。この特性はアバランチ効果と呼ばれ、セキュリティの基礎です。さらに、アルゴリズムを通じて単語を何度処理しても、両方の出力は常に同じままであり、ハッシュ関数の決定論的性質を示しています。

SHAファミリーのアルゴリズム(セキュアハッシュアルゴリズム)にはいくつかの世代があります。SHA-0およびSHA-1は衝突が見つかったため、もはや安全とは見なされません。現在、安全と見なされているのは、SHA-2ファミリー(SHA-256およびSHA-512を含む)とSHA-3ファミリー(Keccakアルゴリズムに基づく)だけです。

暗号ハッシュ関数

暗号ハッシュ関数は、デジタル署名、データ整合性検証、ブロックチェーンコンセンサスなどのアプリケーションに適するように追加のセキュリティ要件を満たすハッシュ関数です。そのような関数を破るには膨大な数のブルートフォース試行が必要です。

暗号ハッシュ関数が安全と見なされるためには、衝突抵抗、プリイメージ抵抗、セカンドプリイメージ抵抗という三つの重要な特性を満たさなければなりません。

衝突抵抗

衝突は、二つの異なる入力が同じハッシュ出力を生成するときに発生します。ハッシュ関数は、そのような衝突を見つけることが計算上不可能であるときに衝突抵抗があると見なされますが、数学的には衝突が存在しなければなりません(可能な入力の集合は無限であり、出力は固定長だからです)。

実際には、衝突抵抗は、同じハッシュを生成する二つの入力を見つけるのに何百万年もの計算が必要であることを意味します。SHA-256は衝突を見つけるのに約2の128乗の操作が必要です(誕生日の境界)、これは現在の計算能力をはるかに超えています。

プリイメージ抵抗

プリイメージ抵抗とは、ハッシュ出力が与えられたときに、その出力を生成する任意の入力を見つけることが計算上不可能であることを意味します。これがハッシュ関数を「一方向」にする理由です。ハッシュを見た攻撃者は、どのデータがそれを生成したかを判断することができません。

この特性は、パスワードストレージのようなアプリケーションにとって重要です:サービスはパスワード自体ではなく、パスワードのハッシュを保存でき、たとえハッシュデータベースが露出しても元のパスワードは保護されたままです。

セカンドプリイメージ抵抗

セカンドプリイメージ抵抗とは、特定の入力とそのハッシュが与えられたとき、同じハッシュを生成する異なる入力を見つけることが不可能であることを意味します。これは衝突抵抗に関連していますが、この特性はよりターゲットを絞った攻撃シナリオに対処します。

衝突抵抗のあるハッシュ関数は、セカンドプリイメージ抵抗も持っています。なぜなら、セカンドプリイメージを見つけることは、衝突を見つけることを意味するからです。しかし、ある関数は衝突抵抗がなくてもプリイメージ抵抗を持つことができます。

ブロックチェーンにおけるハッシング

ハッシュ関数はブロックチェーンシステムで広く使用されています。ビットコインでは、SHA-256がプルーフ・オブ・ワークを通じてネットワークを保護し、マイナーは特定のターゲット値以下のハッシュ出力を見つけなければなりません。このプロセスは膨大な計算努力を必要としますが、検証は簡単で、非対称のセキュリティモデルを作り出します。

ハッシングはマークルツリーを構築するためにも使用されます。これは、トランザクションがペアごとにハッシュ化され、単一のルートハッシュがトランザクションの全体のブロックを要約するデータ構造です。これにより、軽量クライアントは特定のトランザクションがブロックに含まれているかを確認することができ、すべてのトランザクションデータをダウンロードする必要がありません。

ビットコインはアドレス生成のためにもハッシングを使用しています。公開鍵はSHA-256を通じて処理され、その後RIPEMD-160を適用して、短くて扱いやすいアドレス形式を生成します。このアプローチはセキュリティの追加層を加え、トランザクションに必要なデータサイズを減少させます。

イーサリアムは、状態管理、スマートコントラクト関数セレクタ、イベントログ、アドレス導出のために、SHA-3標準に密接に関連するKeccak-256というバリアントを使用します。各ブロックチェーンプラットフォームは、特定のセキュリティモデルとパフォーマンス要件に基づいてハッシュ関数を選択します。

マイニングとハッシュレート

ビットコインマイニングでは、SHA-256ハッシュをターゲットしきい値以下に生成する入力を見つけることが主な課題です。ターゲットは毎2,016ブロックごとに調整され、ネットワークの計算能力に関わらず平均ブロック時間を10分に維持します。これがブロックチェーンを安全に保つ理由です。

ハッシュレートはマイニングに捧げられた総計算能力を表します。2026年初頭の時点で、ビットコインネットワークは約800から900エクサハッシュ毎秒(EH/s)で運営されており、マイナーは毎秒数百京のハッシュ計算を行っています。

マイナーは衝突を見つける必要はありません。現在の難易度ターゲット以下のハッシュを生成する任意の入力を見つける必要があります。有効な出力が多く存在するため、作業はSHA-256自体の弱点を利用するのではなく、計算スループットに関するものです。

マイニングは計算コストが高いため、マイナーにはネットワークを攻撃するよりもルールに従う強い経済的インセンティブがあります。マイナーが多く参加すればするほど、ブロックチェーンはより安全になります。

ポスト量子時代のハッシング

量子コンピュータがブロックチェーンで使用されるハッシュ関数を破ることができるかどうかは一般的な懸念です。短い答えは、ハッシュ関数は公開鍵暗号よりも量子攻撃に対してはるかに耐性があるということです。

グローバーのアルゴリズムは、ハッシュ関数に対する最も関連性の高い量子攻撃であり、二次的なスピードアップしか提供しません。これは、256ビットのハッシュ関数が量子敵に対して約128ビットのセキュリティを提供することを意味し、これは依然として計算上実行不可能と見なされています。比較のために、ブロックチェーンで使用される公開鍵アルゴリズム(ECDSA、EdDSA)は、十分に強力な量子コンピュータ上でショアのアルゴリズムによって完全に破られます。

2024年8月、NISTはSPHINCS+から派生したハッシュベースのデジタル署名標準FIPS 205(SLH-DSA)を発表しました。このスキームは、ハッシュ関数の強度に基づいて完全にそのセキュリティを構築しており、SHA-2とSHA-3がポスト量子世界で信頼できるままであることを示す強力な制度的支持を表しています。

2025年時点でのNIST、EU、その他の標準機関の合意は明確です:「ポスト量子ハッシュ」アルゴリズムは新たに必要ありません。SHA-256およびSHA-3は、256ビット以上の出力で、今後の見通しにおいても安全であると期待されています。緊急のポスト量子移行努力は、ハッシュ関数ではなく、公開鍵暗号を置き換えることに焦点を当てています。

パスワードハッシングと鍵導出

SHA-256やSHA-3は優れた汎用暗号ハッシュ関数ですが、パスワードストレージには適していません。その理由は速度です:これらの関数は速く設計されているため、漏洩したパスワードデータベースにアクセスできる攻撃者が、GPUや専用ハードウェアを使用して毎秒数十億のパスワード推測をテストできるからです。

専用のパスワードハッシング関数は、意図的に遅く、メモリを多く消費することでこの問題を解決します。現在推奨されている標準は、2015年のパスワードハッシングコンペティションで優勝したArgon2idです。他に広く使用されているオプションにはbcryptやscryptがあります。

これらの関数は各パスワードに対してユニークなランダム「ソルト」を使用し、攻撃者が事前計算されたルックアップテーブル(レインボーテーブル)を使用するのを防ぎます。計算コスト、メモリ要件、およびソルティングの組み合わせにより、ハッシュデータベースが侵害されてもブルートフォース攻撃は経済的に実行不可能になります。

FAQ

ハッシングと暗号化の違いは何ですか?

ハッシングは固定サイズの出力を生成する一方向関数であり、逆にすることはできません。暗号化は、データをキーを使用して変換し、対応するキーを使用して元の形式に復号化できる二方向プロセスです。ハッシングは整合性検証と認証に使用され、暗号化は機密性に使用されます。

二つの異なる入力が同じハッシュを生成することはできますか?

はい、これは理論的に可能であり、衝突と呼ばれます。しかし、SHA-256のような安全なハッシュ関数において、そのような衝突を見つけるには約2の128乗の操作を必要とし(誕生日の境界)、現在または予見可能な技術では計算上実行不可能です。衝突が実際に示されたハッシュ関数、たとえばMD5やSHA-1は、破損したと見なされており、安全目的で使用すべきではありません。

なぜビットコインは特にSHA-256を使用するのですか?

SHA-256は、強い衝突抵抗を提供し、暗号コミュニティによって十分に分析されており、プルーフ・オブ・ワークの難易度調整に適したサイズの出力を生成し、ビットコインが2009年にローンチされたときにすでに広く展開されていたため、ビットコインに選ばれました。現在も安全であり、それに対する実行可能な攻撃は知られていません。

量子コンピュータはブロックチェーンのハッシングを破ることができますか?

量子コンピュータはハッシュ関数に対して最小限のリスクをもたらします。グローバーのアルゴリズムはブルートフォースハッシュ検索を加速できますが、平方根の因子によるものです。256ビットのハッシュは、量子セキュリティとして128ビットを提供し、安全と見なされます。ブロックチェーンに対する本当の量子の脅威は、公開鍵署名方式(ECDSA)に対してであり、ハッシュ関数にはありません。

イーサリアムはどのハッシュ関数を使用していますか?

イーサリアムはKeccak-256を使用しています。これはNIST SHA-3標準に密接に関連していますが、若干異なるパディングを使用しています。これは、アドレス導出、状態トライキー生成、スマートコントラクト関数セレクタ、およびイベントトピックのハッシングに使用されます。SHA-256と同様に、Keccak-256には既知の実行可能な攻撃がなく、暗号的に安全と見なされています。

結論

ハッシュ関数は現代のコンピュータサイエンスとサイバーセキュリティの基本的な構成要素です。衝突抵抗やプリイメージ抵抗のような暗号的特性と組み合わせることで、ブロックチェーンネットワークを可能にするセキュリティ保証を実現します。

ビットコインのマイニングからイーサリアムのスマートコントラクト、ポスト量子署名スキームまで、ハッシングは基盤技術として残ります。ハッシュ関数がどのように機能するか、そのコアセキュリティ特性、および実際のアプリケーションを理解することは、ブロックチェーン技術に興味を持つ誰にとっても、これらのシステムがなぜ安全と見なされるのかを把握するのに役立ちます。

さらなる読み物

  • ブロックチェーンコンセンサスアルゴリズムとは?

  • ビットコインとは何か、そしてどのように機能するか?

  • プルーフ・オブ・ワーク(PoW)対プルーフ・オブ・ステーク(PoS)

  • 一般的なセキュリティ原則

  • ビットコインスクリプトの紹介

免責事項:このコンテンツは一般情報および教育目的で提供されており、いかなる種類の表明や保証もなく「現状のまま」で提供されます。これは金融、法的、またはその他の専門的なアドバイスとして解釈されるべきではなく、特定の製品やサービスの購入を推奨するものでもありません。適切な専門家からのアドバイスを求めるべきです。第三者によって提供されたコンテンツに関しては、その意見は第三者のものであり、Binance Academyの意見を必ずしも反映するものではありません。デジタル資産の価格は変動する可能性があります。あなたの投資の価値は上がるかもしれませんし、下がるかもしれません。投資した金額を取り戻せない可能性もあります。あなたは投資決定に対して唯一の責任を負い、Binance Academyはあなたが被るかもしれない損失に対して責任を負いません。詳細については、利用規約、リスク警告、Binance Academyの利用規約をご覧ください。