Overview
楕円曲線暗号(ECC:Elliptic Curve Cryptography)とは、楕円曲線上の離散対数問題(ECDLP)の計算困難性を安全性の根拠とする公開鍵暗号方式です。1985年にNeal KoblitzとVictor S. Millerによってそれぞれ独立に提案され、従来のRSA暗号と比較して、はるかに短い鍵長で同等の安全性を実現できることが最大の特徴です。
例えば、RSA暗号で3072ビットの鍵が提供する安全性を、ECCではわずか256ビットの鍵で実現できます。この鍵長の短さは、計算速度の向上、メモリ使用量の削減、通信帯域の節約につながり、IoTデバイスやスマートカード、モバイル端末など、リソースが制限された環境で特に大きな利点を発揮します。
現在、ECCはTLS 1.3、Bitcoin・Ethereumなどの暗号通貨、SSH、電子署名、スマートカード認証など、現代の情報セキュリティ基盤の中核技術として広く採用されています。NISTやドイツBSI、日本のCRYPTRECなど、世界各国の標準化機関がECCベースのアルゴリズムを推奨しています。
Details
楕円曲線の数学的原理
ECCで使用される楕円曲線は、一般にy² = x³ + ax + b(ワイエルシュトラス形式)で表される方程式を、有限体(ガロア体)上で定義したものです。この曲線上の点には加法演算が定義でき、2つの点P、Qを「加算」して新しい点Rを求めることができます。特に、同じ点Pをn回加算する操作(スカラー倍算 Q = nP)は効率的に計算できますが、QとPが与えられたときにnを求める逆問題(楕円曲線離散対数問題:ECDLP)は、現在知られているアルゴリズムでは計算量的に困難です。
この一方向性(計算は容易だが逆算は困難)が、ECCの暗号学的安全性の基盤となっています。RSAが大きな数の素因数分解の困難性に依存するのに対し、ECCはECDLPの困難性に依存しており、同等の安全性をより短い鍵長で実現できます。
RSAとの鍵長比較
ECCの最大の利点は、RSAと比較して格段に短い鍵長で同等のセキュリティレベルを達成できることです。NISTが推奨する鍵長の対応関係は以下の通りです:
- ECC 256ビット ≒ RSA 3072ビット(セキュリティ強度128ビット)
- ECC 384ビット ≒ RSA 7680ビット(セキュリティ強度192ビット)
- ECC 521ビット ≒ RSA 15360ビット(セキュリティ強度256ビット)
鍵長が短いことにより、鍵生成・署名生成・署名検証の処理速度が向上し、証明書や署名データのサイズも小さくなるため、ネットワーク帯域やストレージの節約にもつながります。
主要なECCアルゴリズム
ECCを基盤とした暗号アルゴリズムは、用途に応じて複数のバリエーションが存在します:
- ECDSA(Elliptic Curve Digital Signature Algorithm):DSAを楕円曲線上に拡張した電子署名アルゴリズム。TLS証明書やBitcoinのトランザクション署名で広く使用されています。署名生成時に毎回異なるランダムな値(ノンス k)を使用する必要があり、このノンスの生成に不備があると秘密鍵が漏洩する重大なリスクがあります。
- ECDH(Elliptic Curve Diffie-Hellman):Diffie-Hellman鍵交換を楕円曲線上で実装したプロトコル。TLSハンドシェイクにおいて共有秘密の確立に使用されます。一時的な鍵ペアを用いるECDHE(Ephemeral)バージョンがPerfect Forward Secrecy(PFS)を提供するため推奨されています。
- EdDSA(Edwards-curve Digital Signature Algorithm):ツイステッドエドワーズ曲線を使用する署名アルゴリズム。ECDSAの設計上の問題点(ノンス生成の脆弱性)を解消するため、決定論的な署名生成を採用しています。Ed25519(Curve25519ベース)が代表的な実装で、高速かつ安全であることから、SSH、Signal、WireGuardなどで採用が進んでいます。
標準曲線の種類
ECCで使用される楕円曲線は、安全性と効率性が検証された標準曲線を使用することが推奨されています:
- P-256(secp256r1 / prime256v1):NISTが標準化した256ビット曲線。TLS証明書やWebPKIで最も広く使用されています。パラメータの生成過程が不透明との批判もありますが、現時点で安全性に問題は確認されていません。
- P-384(secp384r1):NISTの384ビット曲線。米国政府の機密情報保護(Suite B / CNSA)で要求されるセキュリティレベルを満たします。
- Curve25519:Daniel J. Bernsteinが設計した曲線。パラメータ選択の透明性が高く、サイドチャネル攻撃に対する耐性も考慮された設計が特徴です。ECDH鍵交換(X25519)に使用されます。
- Ed25519:Curve25519と関連するツイステッドエドワーズ曲線。EdDSA署名に使用され、高速で安全な署名・検証を実現します。
- secp256k1:Bitcoinで採用されている曲線。Koblitz曲線の一種で、効率的な演算が可能です。
ECCの利用場面
TLS 1.3では、鍵交換にECDHE(X25519またはP-256)が必須となり、従来のRSA鍵交換は廃止されました。これにより、すべてのTLS 1.3接続でPerfect Forward Secrecyが保証されています。サーバー証明書の署名にもECDSAが広く使用されるようになり、RSA証明書からの移行が進んでいます。
Bitcoinでは、secp256k1曲線上のECDSAを使用してトランザクションの署名・検証を行います。ユーザーの秘密鍵からECDSA公開鍵を生成し、そこからBitcoinアドレスが導出されます。2021年のTaprootアップグレードでは、Schnorr署名(ECCベース)のサポートも追加されました。
SSHでは、Ed25519鍵が推奨される認証方式となっています。従来のRSA鍵やDSA鍵と比較して、鍵サイズが小さく(256ビット)、署名・検証が高速で、決定論的署名によりノンス関連の脆弱性がありません。OpenSSH 6.5以降でサポートされています。
Security Measures
- 01標準曲線の使用:NIST P-256、P-384、Curve25519、Ed25519など、広く検証された標準曲線を使用してください。独自の曲線パラメータを設計・使用することは、未知の脆弱性を含むリスクが極めて高いため、絶対に避けるべきです。曲線のパラメータ選択には高度な数学的知識が必要であり、不適切なパラメータは暗号の安全性を根底から崩壊させます。
- 02EdDSA(Ed25519)の優先採用:新規実装においては、ECDSAよりもEdDSA(Ed25519)を優先的に採用することを推奨します。Ed25519は決定論的な署名生成を行うため、ECDSAにおけるノンス(k値)の生成不備による秘密鍵漏洩のリスクがありません。また、実装がシンプルで、サイドチャネル攻撃への耐性も高く設計されています。
- 03ECDSAのノンス生成の厳格管理:ECDSAを使用する場合、署名ごとに暗号論的に安全な乱数(ノンス k)を生成することが絶対に必要です。同一のノンスを2回使用すると秘密鍵が数学的に復元可能となり、致命的なセキュリティ侵害につながります。RFC 6979に基づく決定論的ノンス生成の実装を強く推奨します。
- 04サイドチャネル攻撃への対策:ECC実装においては、タイミング攻撃、電力解析攻撃、電磁波解析攻撃などのサイドチャネル攻撃に対する耐性が不可欠です。定時間(constant-time)演算の実装、モンゴメリラダーの使用、ブラインディング技法の適用など、実装レベルでの対策を講じてください。特にスマートカードやIoTデバイスなど、攻撃者が物理的にアクセスできる環境では重要です。
- 05鍵検証の実施:受信した公開鍵が正当な楕円曲線上の点であることを必ず検証してください。無効な曲線上の点を受け入れると、Invalid Curve Attack(無効曲線攻撃)により秘密鍵が漏洩する可能性があります。入力点の座標が曲線方程式を満たすこと、無限遠点でないこと、正しい位数の部分群に属することを確認します。
- 06耐量子暗号への移行計画:量子コンピュータが実用化されると、ShorのアルゴリズムによりすべてのECCアルゴリズムが破られるとされています。現時点では直近の脅威ではありませんが、長期的なデータ保護が必要なシステムでは、NIST標準のポスト量子暗号(ML-KEM、ML-DSAなど)との併用(ハイブリッド方式)を検討してください。
Incidents
📋 Sony PlayStation 3 ECDSA実装不備事件(2010年)
2010年12月、ハッカーグループ「fail0verflow」がSony PlayStation 3のソフトウェア署名システムにおけるECDSA実装の致命的な欠陥を発見しました。Sonyの実装では、ECDSAの署名生成に必要なランダムノンス(k値)として、毎回同一の固定値を使用していました。ECDSAでは、同じノンスで2つの異なるメッセージに署名すると、数学的に秘密鍵を復元できてしまいます。
この欠陥により、Sonyのマスター署名鍵が完全に復元され、任意のソフトウェア(海賊版ゲームやHomebrewアプリケーション)にSonyの正規署名を付与することが可能になりました。PS3のセキュリティモデルは根本から崩壊し、Sonyはハードウェアリコールでは対応できず、法的措置に頼らざるを得ませんでした。この事件は、ECDSA実装におけるノンス生成の重要性を世界に知らしめた象徴的な事例です。
📋 Dual_EC_DRBG NSAバックドア疑惑(2013年)
2013年、Edward Snowdenの内部告発により、NISTが2006年に標準化した乱数生成器Dual_EC_DRBGにNSA(米国国家安全保障局)がバックドアを仕込んだ疑惑が浮上しました。Dual_EC_DRBGは楕円曲線上の2つの点P、Qを使用しますが、PとQの関係(離散対数 e:Q = eP)を知っている者は、生成される乱数列を予測できる構造になっていました。
NSAはRSA Security社に対して1000万ドルを支払い、同社の暗号ライブラリBSAFEでDual_EC_DRBGをデフォルトの乱数生成器として採用させていたことも報道されました。この事件を受けてNISTは2014年にDual_EC_DRBGを標準から撤回し、暗号アルゴリズムの標準化プロセスにおける透明性と独立性の重要性が改めて認識されました。
📋 Minervaタイミング攻撃によるスマートカード秘密鍵漏洩(2019年)
2019年、チェコ共和国マサリク大学の研究チームが「Minerva」と名付けたタイミング攻撃を発表しました。この攻撃は、ECDSAのスカラー倍算処理における微小な実行時間の差異を統計的に分析することで、秘密鍵を復元するものです。攻撃対象となったのは、Athena IDProtect、Infineon JTOP、Feitian JavaCOSなどの商用スマートカードでした。
研究チームは約1万個の署名の処理時間を測定するだけで、256ビットのECDSA秘密鍵を完全に復元することに成功しました。根本原因は、スカラー倍算の実装が定時間処理(constant-time)になっておらず、秘密鍵のビット値に依存して処理時間が変動していたことでした。この事件は、暗号アルゴリズム自体の数学的安全性だけでなく、実装レベルのサイドチャネル耐性が極めて重要であることを実証しました。