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暗号は使わない。鍵の生成には良質な乱数が必要署名ごとに使う乱数(ナンス)を再利用したり偏らせたりすると、秘密鍵が求められてしまう。受け取った点が正しい曲線の上にあるかも確かめる鍵や署名が大きいので、パケットの大きさやメモリの少ない機器への影響を確かめる。新しい実装の誤りや、サイドチャネル攻撃への対策にも注意する

数値は代表的な目安で、世代や製品によって異なります。

どんなときに使うか

RSA暗号
既存の証明書やシステムとの互換性が必要なとき。署名の検証が速いので、検証する側が多い用途にも向きますが、耐量子計算機暗号への移行の計画が必要です。
楕円曲線暗号
現在の新しいシステムで、鍵交換や署名を短い鍵と小さなデータで行いたいとき。ICカードや組込み機器にも向きます。量子コンピュータに備えて、ハイブリッド方式への移行を考えます。
耐量子計算機暗号(ML-KEM・ML-DSA)
長いあいだ秘密にしておく必要のあるデータを守るとき。今記録された暗号文が将来解読される「ハーベスト・ナウ、ディクリプト・レイター」に備えて、まず鍵交換からハイブリッド方式で取り入れます。

よくある質問

楕円曲線暗号は、なぜRSA暗号より短い鍵で済むのですか?

知られている最良の攻撃の手間が違うからです。素因数分解には、総当たりよりずっと速い解き方があるため、RSA暗号では鍵をかなり長くする必要があります。楕円曲線上の離散対数問題では、知られている最良の攻撃でも鍵長の半分のビット数程度の手間がかかるので、鍵長は安全性のビット数の約2倍で済みます。NIST SP 800-57の表では、128ビット相当の目安がRSA暗号の3072ビットに対し、楕円曲線暗号は256ビットです。

量子コンピュータはまだないのに、なぜ今から移行するのですか?

今盗聴して保存した暗号文を、将来の量子コンピュータで解読されるおそれがあるからです(ハーベスト・ナウ、ディクリプト・レイター)。さらに、暗号の入れ替えには、ソフトウェア、機器、証明書の仕組みなどを含めて長い年月がかかります。そのため、長く秘密にしたいデータを運ぶ鍵交換から、先に移行が進められています。

AESのような共通鍵暗号も、量子コンピュータで破られますか?

ショアのアルゴリズムの対象ではありません。グローバーのアルゴリズムで鍵の探索が2乗の速さになるという単純な目安では、安全性のビット数が半分になるので、長期の安全性が必要な用途ではAES-256を選ぶことで対応できます。置き換えが必要なのは、主にRSA暗号や楕円曲線暗号などの公開鍵暗号です。

ハイブリッド方式とは何ですか?

従来の方式と耐量子計算機暗号を同時に使い、両方の結果を組み合わせる方式です。鍵交換では、X25519とML-KEMの共有の秘密を両方とも鍵の導出に入れるので、どちらか一方が安全である限り、できる鍵は守られます。耐量子計算機暗号は新しく、実装の誤りや新しい攻撃が見つかるおそれを十分には否定できないため、移行の途中の保険として使われます。

理解度チェック

NIST SP 800-57 の表で、128ビットの共通鍵暗号(AES-128)と同程度の安全性の目安とされる、RSA暗号の鍵長(n のビット数)と楕円曲線暗号の鍵長の組み合わせはどれか。

  1. ARSA暗号は約128ビット、楕円曲線暗号は約128ビット
  2. BRSA暗号は約2048ビット、楕円曲線暗号は約128ビット
  3. CRSA暗号は約3072ビット、楕円曲線暗号は約256ビット
答えと解説を見る

正解:C. RSA暗号は約3072ビット、楕円曲線暗号は約256ビット

公開鍵暗号は、同じ安全性を得るのに、共通鍵暗号より長い鍵が必要です。NIST SP 800-57 Part 1 の表では、128ビット相当の安全性の目安として、RSA暗号は3072ビット、楕円曲線暗号は256〜383ビットとされています。楕円曲線暗号では、知られている最良の攻撃に鍵長の半分のビット数程度の手間がかかるので、鍵長は安全性のビット数の約2倍で済み、RSA暗号よりずっと短い鍵で同じ安全性が得られます。RSA暗号の2048ビットは、112ビット相当の目安です。

米国のNISTが2024年8月に公表した耐量子計算機暗号の標準と、その種類の組み合わせとして正しいものはどれか。

  1. AFIPS 203のML-KEMは格子に基づく署名方式、FIPS 204のML-DSAはハッシュ関数に基づく鍵カプセル化メカニズム、FIPS 205のSLH-DSAは共通鍵暗号
  2. BFIPS 203のML-KEM、FIPS 204のML-DSA、FIPS 205のSLH-DSAは、いずれも楕円曲線の上の問題に基づく、鍵の短い署名方式
  3. CFIPS 203のML-KEMは格子に基づく鍵カプセル化メカニズム、FIPS 204のML-DSAは格子に基づく署名方式、FIPS 205のSLH-DSAはハッシュ関数に基づく署名方式
答えと解説を見る

正解:C. FIPS 203のML-KEMは格子に基づく鍵カプセル化メカニズム、FIPS 204のML-DSAは格子に基づく署名方式、FIPS 205のSLH-DSAはハッシュ関数に基づく署名方式

NISTは2024年8月13日に、耐量子計算機暗号の最初の標準として3つのFIPSを公表しました。FIPS 203のML-KEM(もとの名前はCRYSTALS-Kyber)は鍵を共有するための鍵カプセル化メカニズムで、FIPS 204のML-DSA(CRYSTALS-Dilithium)とFIPS 205のSLH-DSA(SPHINCS+)はデジタル署名の方式です。ML-KEMとML-DSAは、格子に関する問題(小さな誤りを加えた連立一次方程式から秘密を求めるModule-LWE問題など)の難しさに基づきます。SLH-DSAはハッシュ関数の安全性だけに基づくので、署名は大きく遅くなりますが、格子の問題に弱点が見つかった場合の備えになります。

耐量子計算機暗号への移行の途中で使われる、X25519(楕円曲線を使うディフィー・ヘルマン鍵交換)とML-KEMを組み合わせたハイブリッド鍵交換の考え方として、正しいものはどれか。

  1. A2つの方式で得た共有の秘密を両方とも鍵の導出に入れ、どちらか一方が安全である限り、できる鍵が安全であるようにする
  2. B2つの方式のうち、ハンドシェイクで先に終わった方の共有の秘密だけを使い、もう一方は捨てる
  3. CML-KEMは量子コンピュータが実現するまでは使わず、実現したときに自動で切り替わるように、両方を用意しておく
答えと解説を見る

正解:A. 2つの方式で得た共有の秘密を両方とも鍵の導出に入れ、どちらか一方が安全である限り、できる鍵が安全であるようにする

ML-KEMは新しい方式で、実装の誤りや新しい攻撃が見つかるおそれを、まだ十分には否定できません。一方、X25519は量子コンピュータには弱いものの、古典のコンピュータに対する安全性には長い実績があります。ハイブリッド鍵交換では、両方の共有の秘密をつなげて鍵導出関数に入れるので、攻撃者は両方を破らないと鍵を得られず、今記録された通信を将来の量子コンピュータで解読されることも防げます。2025年時点で、この組み合わせ(X25519MLKEM768など)がTLS 1.3で使われ始めています。

  1. 大規模な誤り耐性量子コンピュータが実現したとき、ショアのアルゴリズムによって安全性が大きく損なわれると考えられている暗号はどれか。
  2. 大規模な量子コンピュータがまだ実現していない段階から、耐量子計算機暗号への移行を急ぐ理由として、最も適切なものはどれか。
  3. 教科書どおりのRSA暗号(平文 m をそのまま c = m^e mod n とする方式)を、パディングを付けずに実際の通信に使うことの問題点として、正しいものはどれか。

暗号技術の基礎と応用の練習問題へ

関連する用語の解説

RSA暗号
1977年にリベスト、シャミア、エーデルマンが考案した公開鍵暗号。大きな2つの素数 p、q の積 n と公開指数 e を公開鍵とし、e × d ≡ 1 (mod (p − 1)(q − 1)) を満たす d を秘密鍵とする。暗号化は c = m^e mod n、復号は m = c^d mod n で行う。n の素因数分解が難しいことが安全性の根拠で、暗号化と署名の両方に使える。実際には、OAEPやPSSのような乱数を含むパディングと組み合わせて使う。
楕円曲線暗号
有限体の上の楕円曲線の点の演算を使う公開鍵暗号の総称。曲線上の点Gを秘密の整数k倍した点 kG から k を求める問題(楕円曲線上の離散対数問題)の難しさに安全性の根拠を置く。同じ安全性ならRSA暗号よりずっと短い鍵で済み、256ビットの鍵で、RSA暗号の3072ビットと同程度(128ビット相当)の安全性の目安とされる。鍵交換のECDH・ECDHEや、署名のECDSA・EdDSAに使われ、曲線にはP-256やCurve25519などが広く使われる。ショアのアルゴリズムで破られるため、耐量子計算機暗号への移行の対象になる。
耐量子計算機暗号
量子コンピュータでも効率よく解けないと考えられている数学の問題(格子の問題、ハッシュ関数など)に安全性の根拠を置く暗号。従来のコンピュータで動作し、ショアのアルゴリズムで破られる RSA暗号や楕円曲線暗号を置き換えるために使われる。
ML-KEM
米国のNISTが2024年8月にFIPS 203として標準化した、格子に基づく鍵カプセル化メカニズム(KEM)。Module-Lattice-Based Key-Encapsulation Mechanism の略で、CRYSTALS-Kyberをもとにしている。小さな誤りを加えた連立一次方程式から秘密を求めるModule-LWE問題の難しさに安全性の根拠を置き、量子コンピュータでも効率よく解けないと考えられている。ML-KEM-512、ML-KEM-768、ML-KEM-1024の3つのパラメータセットがある。TLSなどで、ECDHEの鍵交換を置き換えたり、組み合わせたりするために使われる。
ショアのアルゴリズム
大きな整数の素因数分解や離散対数問題を、量子フーリエ変換で周期を求めることによって多項式時間で解く量子アルゴリズム。1994年にピーター・ショアが発表した。RSA暗号や楕円曲線暗号を破れるが、実行には大規模な誤り耐性量子コンピュータが必要になる。
ディフィー・ヘルマン鍵交換
公開された通信路だけを使って、2者が共有の秘密を作る方法。1976年にディフィーとヘルマンが発表した。素数 p と生成元 g を公開し、AさんとBさんが秘密の値 a、b から g^a mod p、g^b mod p を作って送り合い、それぞれ相手の値を自分の秘密の値で累乗して、同じ g^(ab) mod p を得る。安全性は離散対数問題の難しさに基づく。楕円曲線の上で行うものをECDH、接続ごとに使い捨ての値を使うものをDHE・ECDHEと呼び、後者では前方秘匿性が得られる。相手を確かめる機能はないので、署名や証明書と組み合わせて中間者攻撃を防ぐ。
クリプトアジリティ
暗号のアルゴリズムや鍵長が安全でなくなったときに、システムを大きく作り直さずに別の方式へ入れ替えられる性質。どこでどの暗号を使っているかの一覧(インベントリ)を持ち、アルゴリズムを設定やプロトコルの交渉で選べるようにし、データの形式にアルゴリズムの識別子を含めることで高める。MD5やSHA-1、短い鍵のRSA暗号からの移行や、耐量子計算機暗号への移行で重視されている。
公開鍵暗号
暗号化と復号に、対になる別々の鍵(公開鍵と秘密鍵)を使う暗号方式。公開鍵は誰に知られてもよく、秘密鍵は本人だけが持つ。鍵の配送が楽になる一方、計算が重いので、データ本体の暗号化には共通鍵暗号と組み合わせて使う。RSAや楕円曲線暗号が代表的。

関連する比較