本文へ移動
上級者用語を調べる

ECDSAとは

執筆
CRYPTO PORT 編集部
公開日
更新日
読了目安
6 分

結論

ECDSAは楕円曲線を使った電子署名方式で、ビットコインとイーサリアムの標準的な署名アルゴリズムです。鍵の長さが短いわりに強度が高い一方、署名のたびに使う乱数が偏ると秘密鍵が復元されるという固有の弱点があります。過去の事故の多くは、方式の欠陥ではなく実装の乱数生成に原因がありました。

要点

  • ビットコインとイーサリアムが採用する署名方式
  • 使う曲線はsecp256k1、鍵は256ビット
  • 署名ごとの乱数を使い回すと秘密鍵が漏れる
  • ビットコインはTaproot以降Schnorr署名も使える

定義

Elliptic Curve Digital Signature Algorithm の略。楕円曲線上の離散対数問題の困難さを安全性の根拠とする電子署名方式。

ビットコインもイーサリアムも secp256k1 という同じ曲線を使います。秘密鍵は256ビットの整数、公開鍵はその整数だけ基準点を足し合わせた曲線上の座標です。この計算は簡単ですが、逆に座標から元の整数を求めるのは現実的な時間では解けません。これが安全性の根拠です。

ECDSAは署名のたびに新しい乱数(ノンス)を必要とします。同じノンスで別々の取引に2回署名すると、2本の署名を連立方程式として解くだけで秘密鍵が求まります。2010年のPlayStation 3や、2013年のAndroid製ウォレットの資産流出は、いずれもこの乱数の使い回しが原因でした。現在の実装はRFC6979に従い、鍵とメッセージからノンスを決定的に導出してこの事故を防いでいます。

ビットコインは2021年のTaprootアップグレードでSchnorr署名(BIP340)も利用できるようになりました。Schnorrは複数人の署名を1本に集約できるため、マルチシグでも見た目が通常の送金と変わらず、手数料も抑えられます。ECDSAが廃止されたわけではなく、両方が並行して使われています。

注意点

  • · 自作の署名実装や出所不明のライブラリは、乱数生成の欠陥で鍵を漏らす危険がある
  • · 同じ秘密鍵を複数のウォレット実装で使い回すと、片方の実装の欠陥が全体に波及する
  • · 署名方式の強度は、鍵の保管が甘ければ何の意味も持たない

関連通貨

次に読む

仮想通貨診断

いくつかの質問に答えるだけ。結果はその場で表示されます。

診断をはじめる