Cointime

Download App
iOS & Android

ビットコインとイーサリアムに対する市松模様のハーフハーフ攻撃を解析する

Validated Project

著者: シルヴァン・ペリシエ編集: Cointime.com 237

パブリック ブロックチェーンには、ECDSA 署名に対する攻撃の長い歴史があります。すべてのトランザクションは公開されるため、暗号化攻撃の完璧な実験場となります。 「A Curious Case of Half-Bitcoin ECDSA Random Numbers」と呼ばれるラティス攻撃が最近公開され、ビットコインで実験されました。半分ずつのフォンデュを愛するスイスのチームとして、私たちはこの攻撃を調査する必要がありました。以前の攻撃である「多項式乱数」も、この方法で ECDSA 乱数を生成できることがわかりました。この論文では、その方法を説明し、論文で得られた結果とどのように比較するかを示します。

前の攻撃

メッセージに署名するために、ECDSA は nonce と呼ばれる値を使用します。 nonce はランダムに生成される必要があり、署名されるメッセージごとに一意である必要があります。ビットコインとイーサリアムの secp256k1 曲線の場合、典型的なノンス値は次のとおりです。

ECDSA のよく知られ、よく研究されている落とし穴は、ノンスの再利用です。名前が示すように、ノンスが別の署名で再利用される場合、それらの署名から秘密鍵を復元できます。明らかに、ブロックチェーンに適用される最初の攻撃はノンス再利用攻撃です。 2 つの異なるメッセージが同じ nonce で署名されるとすぐに、秘密鍵が危険にさらされます。この問題は通常、RFC 6979 に従って決定論的な乱数を生成することで解決されます。

ただし、ECDSA ノンスは非常に重要であるため、生成に偏りがあると秘密キーの回復につながる可能性があります。したがって、より巧妙な格子ベースの攻撃が後にパブリック ブロックチェーンに適用されました。これらの攻撃では、64、110、128、および 160 ビットの長さの予想よりも短いノンスが回復される可能性があります。たとえば、次のように生成された乱数は、格子ベースの攻撃に対して脆弱です。

ノンスが小さいほど、攻撃に使用される格子の次元が小さくなり、攻撃の成功に必要な署名の数が少なくなります。 Biased Random Numbers の論文によると、2 つの 128 ビット乱数と 3 次元格子により、成功 (秘密キーの回復) の確率は 75% になります。 3 つの 170 ビット乱数と 4 次元格子を使用すると、95% の成功確率が得られます。この攻撃の変種は、共有のプレフィックスとサフィックスを持つノンスを検出するためにも適用できます。たとえば、次のように生成された乱数は、前述の攻撃や一般的なサフィックス構造に対して同様に脆弱です。

ポリノンス

ECDSA を攻撃するもう 1 つの方法は、乱数間の代数的関係を仮定することです。私たちのチームは、未知の係数 a_i 間に次の形式の多項式関係があると仮定する Polynonce 攻撃を提案しました。

k_{n+1} = a_1 k_n + a_0

また

k_{n+1} = a_2 k_n^2 + a_1 k_n + a_0

Polynonce 攻撃は、成功の確率 100% で代数的に秘密キーを回復できますが、線形の場合は 4 つの署名、二次の場合は 5 つの署名など​​が必要になります。この攻撃は主に多項式を解くことに依存しているため、格子ベースの攻撃と比較して非常に高速です。詳細については、この攻撃については今後開催される DEFCON カンファレンスで発表される予定です。

単一の署名

これまでのすべての攻撃では、同じ秘密キーからの少なくとも 2 つの異なる署名が必要でした。ただし、Ledger のようなウォレットは、単一の秘密キーを使用してトランザクションに署名し、その後秘密キーを変更します。これは、多くのビットコインのパブリック アドレスが現在 1 回しか使用されない理由を説明します。以下は、P2PKH トランザクションに限定された対数スケールでプロットされたビットコイン送金データ (2022 年 9 月 5 日時点、ブロック 752759) のグラフです。

これは、P2PKH トランザクションに使用される公開キーの 92% が 1 回のみ使用されていることを示しています。この機能は主にプライバシーを目的としていますが、間接的に以前の攻撃からも保護します。イーサリアムの場合は状況が少し異なります。 151429561 個の一意のキーから 1759432087 個の署名を分析し、線形スケール プロットを作成しました。

これは、P2PKH トランザクションに使用される公開キーの 92% が 1 回のみ使用されていることを示しています。この機能は主にプライバシーを目的としていますが、間接的に以前の攻撃からも保護します。イーサリアムの場合は状況が少し異なります。 151429561 個の一意のキーから 1759432087 個の署名を分析し、線形スケール プロットを作成しました。

これはまったく異なる状況です。公開鍵の 42% は 1 つの署名のみに使用され、22% は 2 つの署名に、13% は 3 つの署名に使用されます。したがって、イーサリアムではプライバシー保護手法はあまり適用されないか、まったく適用されないようです。

半分半分の乱数

最近、メッセージ ハッシュの上半分を使用して、ノンスが秘密キーの上半分と連結されるときに、いくつかの問題を引き起こす新しい攻撃方法が出現しました。つまり、乱数 k は次のように表すことができます。

k = h_{msb} || d_{msb}

この攻撃の新規性は、単一の署名から秘密鍵 d を回復できることです。以前の格子ベースの攻撃と同様に、乱数 k の式が ECDSA 式に挿入され、再配置されて隠れ数問題のインスタンスが形成されます。次に、BKZ アルゴリズムを使用してインスタンスが解決されます。この手法は、一度だけ使用される秘密キーを使用して発行されたトランザクションを攻撃するために必要な署名が 1 つだけであるため、非常に強力です。最適化されたバージョンの攻撃では、99.99% の成功率で 0.48 秒で秘密キーを回復できました。これは非常に強力ですが、作者がビットコイン ブロックチェーンへの攻撃を実行するのに 49 CPU 年かかりました。

Polynonce をハーフハーフ乱数に適用する

ハーフハーフ攻撃について読んでいると、Polynonce はハーフハーフ乱数を使用して秘密キーを回復するためにも使用できることがわかりました。 ECDSA 署名 (r, s)、メッセージ ハッシュ h、および秘密鍵 d については、ノンスに関連して次の関係があります。

k = s^{-1}(h + rd) mod q

前述の半々式を使用して生成された 2 つの乱数 k_0 と k_1 がある場合、それらの差は次のようになります。

k_0 - k_1 = s_0^{-1}h_0 - s_1^{-1}h_1 + (s_0^{-1}h_0 - s_1^{-1}h_1)d = h_{0,msb} - h_{1, msb}

他のすべての値が既知である d の線形方程式を見つけました。これにより、方程式を解いて秘密鍵 d を回復するための非常に高速な方法が提供されます。ただし、Polynonce を使用するには、同じ秘密キーからの 2 つの nonce と 2 つの署名が必要です。私たちはこれまでの攻撃に比べて大きなアドバンテージを失ってしまいました。それにもかかわらず、この攻撃の亜種は非常に高速であるため、最初に複数の署名を持つ公開鍵に対してこの攻撃を使用し、次に残りの署名に対してラティスベースの攻撃を使用することが可能です。

方程式の乱数の差は h_{0,msb} - h_{1,msb} のみに依存するため、これにより、式 k_i = h_{i,msb} || c の使用に戻ることができます (c は(シークレット) 定数) 生成されたすべての乱数。これはより一般的ですが、ビットコインの場合は少し複雑です。 ECDSA 署名 (r、s) から始まり、同じメッセージの別の署名 (r、-s) も有効です。ビットコインは署名の偽造を避けるために s の最大値を持つ署名を拒否するため、-k と k の両方を計算する必要があることを意味します。したがって、攻撃では、各ノンスの符号を推測する必要があります。

この構造は、共有サフィックスに対するラティス攻撃に関する以前の研究でも発見されているはずですが、成功率はわずか 75% でした。

結果

前回の分析で使用したビットコイン ブロックチェーン ダンプ ファイル (2022 年 9 月 5 日時点のブロック 752,759) に対して分析を実行しました。私たちは少なくとも 2 つの署名を持つ 3,400 万個の公開鍵を分析しました。 2.7 GHz クロックの 16 コア AMD プロセッサでは、10 分 23 秒かかりました。

私たちは 110 個の一意の秘密キーを見つけて回復することに成功しました。たとえば、住所

18zg6FG5pu8Bpq73L54AYvB8phTw3qCCR7

取引

私たちは 110 個の一意の秘密キーを見つけて回復することに成功しました。たとえば、住所

18zg6FG5pu8Bpq73L54AYvB8phTw3qCCR7

取引

f3151fc1b29c117f1e4b67045b2d2901e7c289f596c242d7de123243fb623981

f7bf1edf9d9cefa8421322c53bb00ecf118f99489171da72a9c11cf8d02b65f8

ハーフアンドハーフ方式を使用して乱数を生成します。私たちのスクリプトは、このアドレスの秘密キーを回復できます。

このようなトランザクションの nonce を再計算すると、次のようになります。

nonce の最下位半分が秘密キーの最上位半分に等しいことが明確にわかります。ただし、上で述べたように、他の興味深いケースを復元することができました。同じアドレスに対して 2 つのノンスが見つかりました。

この場合、実際には別の未知の定数が見つかったため、秘密キーは関係しません。また、このような乱数を使用する一部のキーは小さいキーであるという以前の調査結果も確認できました: d = {1, 2, 4, 7, 11, 24, 75, 77, 87, 128, 144, 549, 897 }。したがって、これらのキーは、Web サイト https://privatekeys.pw で行われる作業と同様に、ブルート フォース手法によって簡単に回復できます。残高がゼロ以外のアカウントは見つかりませんでした。ボットによって監視されており、残高が変化すると空になると考えられます。

この攻撃は非常に高速であるため、半乱数生成の他の亜種に対しても同じ攻撃を実行しました: k = h_{lsb} || d_{msb}, k = d_{msb} || h_{msb} および k = d_{msb} || h_{lsb} ですが、追加の結果は見つかりませんでした。

また、前回の攻撃中に収集されたイーサリアム データセットに対しても同じ攻撃を実行しました。同じマシンでの攻撃には 49 分 11 秒かかりました。この攻撃では秘密鍵は回復されませんでした。

これまでのさまざまな創造的な乱数生成構造は非常に興味深いもので、他にもエキゾチックな構造があるのではないかと考えました。これらの新たな攻撃では新しい秘密鍵は回復されませんが、他の弱い乱数生成アルゴリズムが以前のトランザクションで使用されなかったことを意味するものではなく、同様の方法で回復が達成できることを意味するものでもありません。このような問題が発見された場合、資金を保護する最善の方法は、これまで取引に使用されていない新しいアドレスに資金を移動し、脆弱なアドレスを空のままにすることです。私たちの攻撃スクリプトと得られた結果は、Polynonce 攻撃の Github リポジトリで入手できます。

コメント

全てのコメント

Recommended for you

  • CONX、SEI、MOVなどのトークンは来週大規模なロック解除が行われ、CONXの価値は約1,560万ドルになる見込みです。

    Token Unlocksのデータによると、CONX、SEI、MOVなどのトークンは来週、大規模なアンロックが行われる予定です。具体的には、Connex(CONX)は2月15日に約132万トークン(約1,560万ドル相当)をアンロックします。Avalanche(AVAX)は2月11日に約167万トークン(約1,520万ドル相当)をアンロックします。Aptos(APT)は2月10日に約1,131万トークン(約1,230万ドル相当)をアンロックします。Starknet(STRK)は2月15日に約1億2,700万トークン(約630万ドル相当)をアンロックします。Sei(SEI)は2月15日に約5,556万トークン(約420万ドル相当)をアンロックします。Movement(MOVE)は2月9日に約1億6,400万トークン(約380万ドル相当)をアンロックします。

  • Yi Lihua:市場サイクルは依然として有効であり、当社は業界における次の強気相場の機会について楽観的な見方を維持しています。

    Liquid Capitalの創設者である易立華氏は、ある記事の中で、まず第一に市場サイクルは依然として有効であることを認めていると述べています。米国株の好調なパフォーマンスとDAT/ETFの新たな局面により、仮想通貨コミュニティ内のコンセンサスは依然として健在ですが、市場は操作されやすい状況にあります。しかし一方で、仮想通貨市場が弱気相場に突入したことは、前回の弱気相場で利益を上げたのと同様に、戦略的なポジショニングを行う絶好の機会でもあります。未来は明るく、彼は業界の次の強気相場の機会について楽観的であり、引き続き尽力していくつもりです。彼は悲観論者が正しく、楽観論者が勝利すると信じています。

  • ITA 2026:第1回RWAグローバルサミットまであと1日

    2月8日ニュース:RWA(リアルワールドアセット)の最先端動向を探り、政府、経済、産業界、学界、研究機関を巻き込んだハイレベルの交流・協力プラットフォームを構築するため、Bauhinia MagazineはRWAエコシステム国際連盟、Triangle Technology(Hong Kong)Limited、WebX Global Digital Holdings Group、Coin Foundなどの企業と共同で、2月9日に香港で「ITA 2026 第一回RWAグローバルサミット」を開催します。カウントダウンは1日です。

  • トレンドリサーチは過去20分間でさらに20,770 ETHを売却した。これは約4,357万ドルに相当する。

    Lookonchainのモニタリングによると、Trend Researchは過去20分間にさらに20,770 ETH(約4,357万ドル)を売却し、10,303 ETH(約2,150万ドル)のみ残った。

  • Bitmine によって作成されたと疑われるウォレットが Kraken から 20,000 ETH を受け取った。これは約 4,167 万ドルに相当する。

    Onchain Lensのモニタリングによると、新たに作成されたウォレットにKrakenから20,000 ETH(約4,167万ドル相当)が送金されたようです。このウォレットはBitmineのものと思われます。

  • イーサリアムのレベル2 TVLは317億ドルに減少し、7日間で10.6%減少した。

    L2BEATのデータによると、イーサリアムレイヤー2の総ロック額(TVL)は317億ドルに減少し、過去7日間で10.6%の減少となりました。TVL上位5つの暗号通貨は以下のとおりです。

  • BTCが69,000ドルを突破

    市場データによると、BTCは69,000ドルを突破し、現在69,039ドルで取引されており、24時間で3.96%上昇しています。市場は大きなボラティリティを経験しているため、リスク管理にはご注意ください。

  • 「BTC OGインサイダーホエール」は、Yi Lihuaに関連するBinance入金アドレスにさらに6,908万USDTを入金しました。

    オンチェーンアナリストのAi Yi氏(@ai_9684xtpa)によると、「BTC OGインサイダーホエール」は、Yi Lihua氏に関連付けられたBinanceの入金アドレスに、さらに6,908万USDTを入金したとのことです。過去11時間で、合計1万ETHと6,908万USDTが送金され、その総額は8,947万ドルに達しました。以前の報道によると、Yi Lihua氏と「BTC OGインサイダーホエール」は同じBinanceの入金アドレスを使用していました。先日、Trend Researchのアドレスは0xcdFで始まるアドレスに798万9,000USDTを送金し、その後、0x28Cで始まるBinanceのホットウォレットアドレスに送金しました。2時間前には、「BTC OGインサイダーホエール」は0xcdFで始まるアドレスに1万ETHを送金し、その後、0x28Cで始まるBinanceのホットウォレットアドレスに送金しました。

  • 「1011 インサイダーホエール」は、BTC の売却による収益として、Binance から 5,500 万 USDC を引き出しました。

    オンチェーンアナリストのAi氏によると、「1011 Insider Whale」は5分前にBinanceから5,500万USDCを出金した。彼は過去6時間で5,000BTC(3億5,000万ドル相当)をBinanceに入金しており、売却が完了したことを示唆している。

  • CoinList: AC の新しいプロジェクト、Flying Tulip は、取引量が約 1,000 万ドルに達してトークン販売を完了しました。

    CoinListはXプラットフォーム上で、新ACプロジェクトであるFlying Tulipトークンセールが終了し、取引額が1,000万ドルに迫ったことを発表しました。参加者はFT NFT(トークン+完全な償還権)を受け取っており、それぞれの非管理型外部ウォレットに配信されています。ユーザーは保有、償還(FTはいつでも破棄して額面価格で元の資産と引き換えることができ、償還されたFTは破棄されます)、またはアンロックして取引(償還権は放棄されますが、FTは自由に取引可能)を選択できます。