楕円曲線暗号(ECC)
楕円曲線上の離散対数問題(ECDLP)の数学的困難性を安全性の根拠とする公開鍵暗号システム。RSAと同等のセキュリティを著しく小さい鍵サイズで実現します。
後量子移行: NISTはECDHとECDSAの後継としてML-KEM(Kyber)とML-DSA(Dilithium)を標準化。TLS 1.3はハイブリッド鍵交換(X25519+Kyber)を導入。
graph LR
Center["楕円曲線暗号(ECC)"]:::main
Pre_cryptography["cryptography"]:::pre --> Center
click Pre_cryptography "/terms/cryptography"
Pre_asymmetric_encryption["asymmetric-encryption"]:::pre --> Center
click Pre_asymmetric_encryption "/terms/asymmetric-encryption"
Rel_private_key["private-key"]:::related -.-> Center
click Rel_private_key "/terms/private-key"
Rel_public_key["public-key"]:::related -.-> Center
click Rel_public_key "/terms/public-key"
Rel_public_key_cryptography["public-key-cryptography"]:::related -.-> Center
click Rel_public_key_cryptography "/terms/public-key-cryptography"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 5歳でもわかるように説明
一方向には簡単だが逆方向には不可能な魔法の掛け算を想像してください。曲線上の特別な点に秘密の数(秘密鍵)を掛け算して公開点(公開鍵)を素早く得られます。しかし公開点と元の点だけを知っている人が、あなたの秘密の数を逆算しようとすれば、スーパーコンピュータを使っても宇宙の年齢より長くかかります。この一方向の数学がECCを非常に強力にしているのです。
🤓 Expert Deep Dive
楕円曲線の群構造: y² ≡ x³ + ax + b (mod p)。secp256k1パラメータ: a=0, b=7, p = 2²⁵⁶ - 2³² - 977。鍵サイズ等価性(NIST SP 800-57): 256ビットECC = 3072ビットRSA(128ビットセキュリティレベル)。Curve25519: ダニエル・バーンスタインが定数時間実装のために設計。秘密データへの分岐なし — タイミングサイドチャネル攻撃に本質的に耐性。TLS 1.3でX25519は必須。Dual_EC_DRBG バックドア(2013年): スノーデン文書がECC定数を使ったNISTの乱数生成器にNSAのバックドアがあったと示唆。NISTは標準を撤回。
❓ よくある質問
Why is ECC more efficient than RSA?
ECC achieves the same security level as RSA with much smaller key sizes (256-bit ECC ≈ 3072-bit RSA). Smaller keys mean faster signature generation/verification, less bandwidth for certificate transmission, and lower computational overhead — critical for constrained devices like hardware wallets and IoT sensors.
What is the difference between ECC and ECDSA?
ECC is the mathematical framework (the geometry of elliptic curves over finite fields). ECDSA is a specific digital signature algorithm that uses ECC mathematics. Similarly, ECDH is a key agreement protocol built on ECC. ECC is the foundation; ECDSA and ECDH are applications built on top of it.
Why do Bitcoin and Ethereum use secp256k1 instead of the more common P-256 (NIST) curve?
Satoshi Nakamoto chose secp256k1 — a less common curve at the time — partly because P-256 was designed with NSA-selected constants of unclear provenance. secp256k1 parameters are derived transparently from the simple equation y² = x³ + 7, with no arbitrary constants that could hide a backdoor.