ブロックチェーンのセキュリティについて、たくさんの人が十分に理解できていないことに今気づきました。ノンスは、多くの人が考えている以上に、はるかに大きな働きをしています。セキュリティ文脈におけるノンスとは何かを分解して説明します。正直に言うと、ビットコインのマイニングがなぜあのような形で動くのかを理解するうえで、これは根本的な概念です。



つまりこうです。ノンス (一度だけ使われる) というのは、ただのランダムな数字を、マイナーがブロックに投げ込むだけのものではありません。これは、プルーフ・オブ・ワークのパズル全体の鍵です。マイナーは基本的に、さまざまなノンス値をひたすら試し、それぞれを SHA-256 でハッシュ化して、先頭に適切な数のゼロが並ぶハッシュを生み出す“魔法の組み合わせ”を見つけようとします。この試行錯誤の積み重ねこそがネットワーク全体を守っています。しかもそれは、設計として計算コストが高くなるようになっているのです。

では、なぜこれがセキュリティ上重要なのでしょうか?それは、過去のブロック内の取引を誰かが改ざんしようとした瞬間に、ノンスが無効になるからです。再計算を最初からやり直さなければならない。つまり、あの膨大な計算作業を丸ごとやり直すことになります。そしてネットワークがすでに先へ進んで、その上にさらにブロックを追加しているなら?もう無理です。だからこそ、ブロックチェーンは実質的に不変になっていきます。ノンスが、攻撃者にとって法外に高価な作業を強制するからです。

ビットコインの場合、そのプロセスはかなりシンプルです。マイナーは保留中の取引をブロックにまとめ、ヘッダーにノンスを追加し、そしてそれを何度もハッシュ化します。難易度ターゲットに到達するまで、ノンスをインクリメントし続けます。難易度ターゲット自体はネットワークのハッシュパワーに応じて調整されます。ネットワークにもっと多くのマイナー (より多いハッシュパワー) が加わると、難易度は上がります。マイナーが減ると下がります。これにより、ブロック生成時間は約 10 分に保たれます。

興味深いのは、セキュリティにおけるノンスの概念が、マイニングの範囲を超えていることです。いくつかの種類が存在します。暗号学的ノンスは、各取引に固有の値を割り当てることでリプレイ攻撃を防ぎます。ハッシュ関数ノンスは、入力を変更して出力を変える役割を果たします。そしてプログラム的ノンスは、データの一意性を保証するだけです。それぞれが、特定のセキュリティ目的を担っています。

ただし脆弱性は確かに存在します。ノンス再利用攻撃は、誰かが暗号操作の中で同じノンスを使い回してしまうことで起こります。これは秘密鍵をさらけ出してしまう可能性があるのでよくありません。予測可能なノンスも別の問題です。攻撃者がパターンを推測できるなら、操作を仕掛けられます。さらに、古い(以前は有効だった)ノンスが悪用されるステールノンス攻撃もあります。

防御策は?プロトコルには、ノンスを本当に予測不能で、かつ二度と使い回せないものにするための適切な乱数生成が必要です。システムは再利用されたノンスを拒否すべきです。そして正直なところ、暗号実装を継続的に監視し、ライブラリを定期的に更新することで、新たに出てくる攻撃手法の芽を摘めます。これは一度設定して終わりではありません。ノンスに関するセキュリティには、継続的な注意が必要です。

本当の要点はここです。セキュリティにおけるノンスは、単なる技術用語ではありません。ブロックチェーン攻撃を十分に高コストにして、実行できないほどにする仕組みそのものです。その計算コストが、システムを正直に保っています。考えてみれば、かなり見事な設計だと言えます。
BTC0.03%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • コメント
  • リポスト
  • 共有
コメント
コメントを追加
コメントを追加
コメントなし
  • ピン