RSA暗号・楕円曲線暗号・耐量子計算機暗号の違い:鍵の大きさ・速さ・量子コンピュータへの耐性・移行を比較
どれも公開鍵暗号で、鍵の共有(鍵交換・鍵カプセル化)やデジタル署名に使われます。RSA暗号は大きな数の素因数分解の難しさに、楕円曲線暗号は楕円曲線上の離散対数問題の難しさに安全性の根拠を置きます。楕円曲線暗号は、同じ安全性ならRSA暗号よりずっと短い鍵で済みます。しかしどちらも、大規模な誤り耐性量子コンピュータが実現すると、ショアのアルゴリズムで破られます。耐量子計算機暗号は、量子コンピュータでも効率よく解けないと考えられている格子の問題などに根拠を置く方式で、米国のNISTが2024年8月に鍵カプセル化のML-KEM(FIPS 203)と署名のML-DSA(FIPS 204)などを標準として公表しました。鍵や署名が大きいことが主な課題です。
| 項目 | RSA暗号 | 楕円曲線暗号 | 耐量子計算機暗号(ML-KEM・ML-DSA) |
|---|---|---|---|
| 安全性の根拠 | 大きな数の素因数分解の難しさ | 楕円曲線上の離散対数問題の難しさ | ML-KEMとML-DSAは、格子の問題(小さな誤りを加えた連立一次方程式から秘密を求めるModule-LWE問題など)の難しさ。ハッシュ関数だけに基づく署名のSLH-DSA(FIPS 205)もある |
| 鍵の大きさ(目安) | NIST SP 800-57の表で、128ビット相当の安全性の目安はnが3072ビット(384バイト)。2048ビットは112ビット相当 | 同じ表で、128ビット相当の目安は256ビット。鍵交換のX25519では、送る公開値は32バイト | ML-KEM-768の公開鍵(カプセル化鍵)は1,184バイトで、X25519の32バイトよりずっと大きい |
| 暗号文・署名の大きさ | 暗号文も署名も、nと同じ長さ(3072ビットなら384バイト) | ECDSA(P-256)の署名は、rとsの2つの256ビットの値で64バイト(符号化の形式によって少し大きくなる) | ML-KEM-768の暗号文は1,088バイト、ML-DSA-65の署名は3,309バイト |
| 計算の速さ | 公開指数を小さく(65537など)できるので、暗号化と署名の検証は速い。復号・署名と鍵の生成は重い | 同じ安全性のRSA暗号より、鍵の生成と署名がずっと速い。署名の検証はRSA暗号より遅いことが多い | ML-KEMの計算は軽く、楕円曲線の鍵交換と比べても遅くないとされる。計算の重さより、送るデータの大きさが課題になりやすい |
| 量子コンピュータへの耐性 | なし。大規模な誤り耐性量子コンピュータがあれば、ショアのアルゴリズムで破られる | なし。ショアのアルゴリズムで離散対数問題も解けるので、RSA暗号と同じく破られる | 量子コンピュータでも効率よく解けないと考えられている(そう証明されたわけではない) |
| 標準化 | 1977年に考案された。実際には、暗号化ではOAEP、署名ではPSSのような乱数を含むパディングと組み合わせて使う | P-256などの曲線や、Curve25519を使うX25519・Ed25519が広く使われる | NISTが2024年8月に、FIPS 203(ML-KEM)、FIPS 204(ML-DSA)、FIPS 205(SLH-DSA)として公表した |
| 現在の主な用途 | 2020年代半ばの時点で、主に証明書やソフトウェアの署名。TLS 1.3では、RSA暗号で鍵の材料を送る鍵交換は廃止された | 2020年代半ばの時点で、TLSの鍵交換(ECDHE)の中心。署名のECDSA・EdDSA、ICカードや組込み機器などの資源の少ない機器でも使われる | 2025年時点で、X25519と組み合わせたハイブリッド鍵交換(X25519MLKEM768など)がTLS 1.3で使われ始めている。署名の移行は、鍵交換より後から進められている |
| 移行 | 耐量子計算機暗号への移行の対象。証明書やコード署名など、署名の置き換えが課題になる | 耐量子計算機暗号への移行の対象。移行の途中では、ML-KEMと組み合わせたハイブリッド鍵交換の片方として、古典のコンピュータに対する安全性を支える | 当面は従来の暗号と組み合わせたハイブリッド方式で段階的に移行する。暗号を後から入れ替えやすい設計(クリプトアジリティ)が重視される |
| 実装の注意 | パディングなしの教科書どおりのRSA暗号は使わない。鍵の生成には良質な乱数が必要 | 署名ごとに使う乱数(ナンス)を再利用したり偏らせたりすると、秘密鍵が求められてしまう。受け取った点が正しい曲線の上にあるかも確かめる | 鍵や署名が大きいので、パケットの大きさやメモリの少ない機器への影響を確かめる。新しい実装の誤りや、サイドチャネル攻撃への対策にも注意する |
数値は代表的な目安で、世代や製品によって異なります。