下位160ビットの秘密鍵ラグ構造
任意の有効な公開鍵ビット長から有効な秘密鍵[影の鍵]を奪取

ブロックチェーンの一部ではハッシュ関数によって生成された下位160ビット(20バイト)がそのままアドレスとして利用される構造が採用されています。そして、こちらの性質からこれも秘密鍵ラグ構造に匹敵します。

下位160ビットの構造は上位96ビットを切り捨てるため公開鍵を160ビットへと短縮することで本来存在しないはずの「複数の有効な秘密鍵が生成されうる探索空間」が発生します。

  • 元の公開鍵が256ビット以上(実際には64バイトで512ビット)であったとしてもアドレス化の段階で下位160ビットのみが取り出される。
  • その結果、異なる公開鍵(つまり秘密鍵)が同じ下位160ビット値(=アドレス)を生成する可能性が生まれる。
  • つまり、同じアドレスを生成できる秘密鍵(影の鍵)が複数存在する余地が出てきてしまう。

本物の秘密鍵を使っていなくても署名が検証を通過するならば「正当」と見なされてしまいます。資産を盗むことを目的とするハッカーにとってわざわざ本物の秘密鍵など必要ありません。署名が検証を通過する秘密鍵なら、何でもいいのです。

この秘密鍵ラグ構造も量子コンピュータを待たずともAI向けの大規模GPUクラスタや分散並列処理環境において現実的なリスクとして進行しつつあります。

特に、下位160ビットという圧縮空間はSHA-1と同様の強度とされてきましたが実際には正式な安全評価が存在していないのが現実です。

このSHA-1ですら現代のGPUクラスタで破られた(2017年)ことを踏まえればこの秘密鍵ラグ構造も再評価が必要です。

  • 下位160ビットの採用は、省スペースのための妥協案だった。
  • その結果、「正規の秘密鍵とは異なる影の鍵」で署名を通過させる余地が生まれている。