ポスト量子暗号 - 暗号化全般

暗号化全般 | IT用語集

ポスト量子暗号とは

ポスト量子暗号(Post-Quantum Cryptography, PQC)は、大規模かつ誤り訂正機能を備えた量子コンピュータが実用化された後の世界でも安全性を維持できるように設計された、公開鍵暗号アルゴリズムの総称です。「耐量子暗号」「量子耐性暗号」とも呼ばれます。現在インターネットの安全性を支えているRSAや楕円曲線暗号(ECDSA、ECDH)は、量子コンピュータ上で動作するShorのアルゴリズムによって効率的に解読される可能性があることが理論的に示されており、その代替として研究・標準化が進められてきました。

ここで重要なのは、PQCは「量子力学の性質を利用して暗号を作る技術」ではなく、「量子コンピュータによる攻撃にも耐えられるよう選ばれた、従来型(古典)のコンピュータ上で計算する数学的に困難な問題」に基づいている点です。この点で、光子の量子状態を利用して鍵を配送する量子鍵配送(QKD)とは根本的に異なる技術であり、両者はしばしば混同されます(違いは後述します)。

2024年8月、米国NIST(National Institute of Standards and Technology)は、長年の公募・評価プロセスを経て、以下の3つのアルゴリズムを連邦情報処理標準(FIPS)として正式に発行しました。

  • FIPS 203(ML-KEM、旧称CRYSTALS-Kyber):鍵カプセル化メカニズム(鍵交換用)
  • FIPS 204(ML-DSA、旧称CRYSTALS-Dilithium):デジタル署名の第一標準
  • FIPS 205(SLH-DSA、旧称SPHINCS+):ハッシュ関数のみに安全性の根拠を置くデジタル署名

さらに2025年には、ML-KEMの代替(バックアップ)となる鍵カプセル化方式としてHQC(Hamming Quasi-Cyclic)がNISTにより選定され、標準化作業が進められています。格子問題とは異なる数学的問題(符号理論)に基盤を置くアルゴリズムをあらかじめ用意することで、万一ML-KEMの基盤となる格子問題に弱点が発見された場合の「保険」としています。

量子コンピュータの脅威

Shorのアルゴリズム

1994年にPeter Shorが発表したこのアルゴリズムは、大きな整数の素因数分解と離散対数問題を、量子コンピュータ上で多項式時間で解くことができます。RSAは素因数分解の困難性に、ECDH・ECDSAは楕円曲線上の離散対数問題の困難性に安全性の根拠を置いているため、十分な規模の誤り耐性型量子コンピュータが実現すれば、理論上はどちらも効率的に解読されてしまいます。

Groverのアルゴリズム

対称鍵暗号(AESなど)やハッシュ関数(SHA-256など)に対しては、Groverのアルゴリズムにより総当たり探索の計算量が平方根に短縮され、実効的な鍵強度がおおむね半分になります。たとえばAES-256はAES-128相当の強度になると見積もられますが、AES-128自体は現在も実用上安全とされる強度を持つため、鍵長を256bit以上にしておけば対称鍵暗号は当面PQCへの置き換え自体は不要というのが一般的な見解です(詳細はFAQを参照してください)。

実用化までの見通し

2026年時点で、GoogleやIBM、IonQなどが数百量子ビット規模の量子プロセッサを発表していますが、RSA-2048を実用的な時間で解読するには、誤り訂正を考慮した論理量子ビットとして数千〜数百万規模の物理量子ビットに相当する規模が必要になると試算されており、現時点でそのレベルの誤り耐性型量子コンピュータは存在しません。ただし暗号移行には数年〜十数年単位の準備期間を要するため、「実現してから対応する」のでは手遅れになる、というのがNISTや各国政府機関がPQC移行を前倒しで推奨している理由です。

仕組み・詳細解説

格子ベース暗号(Lattice-based Cryptography)

ML-KEM・ML-DSAが基盤とするのは「格子問題」と呼ばれる数学的問題です。多次元空間に規則的に並んだ格子点の集合において、ある点に最も近い格子点を求める最近ベクトル問題(CVP)や、格子中の最短ベクトルを求める最短ベクトル問題(SVP)は、次元数が大きくなると量子コンピュータを含むどのようなアルゴリズムでも効率的に解く方法が知られていません。ML-KEM・ML-DSAは、この中でも構造を持たせて効率化した「Module-LWE(Learning With Errors)」と呼ばれる問題を利用しており、連立方程式にノイズを加えて解きにくくする仕組みを安全性の根拠としています。格子暗号は計算コストが比較的軽く、鍵や暗号文のサイズも他方式に比べ扱いやすいため、TLSやSSHなど広く使われるプロトコルへの統合が最も進んでいます。

符号ベース暗号(Code-based Cryptography)

誤り訂正符号の復号問題の困難さを利用する方式で、1978年に提案されたMcEliece暗号がルーツです。NISTのバックアップKEMに選ばれたHQCや、長年研究されてきたClassic McElieceがこの系統に属します。数学的な安全性の裏付けが長く、格子暗号とは異なる問題に依存するため「複数の暗号基盤を並存させる」ことでリスクを分散する狙いがあります。ただし公開鍵サイズが数十KB〜1MB超と非常に大きくなる方式(Classic McEliece)もあり、通信プロトコルへの組み込みには工夫が必要です。

ハッシュベース署名(Hash-based Signatures)

SLH-DSA(SPHINCS+)は、ハッシュ関数の一方向性という、最も枯れた・保守的な安全性の根拠のみに依存する署名方式です。格子問題のような比較的新しい数学的仮定に依存しないため「最後の保険」的な位置づけで標準化されました。同じ系統にLMS・XMSSという「ステートフル(内部状態の管理が必要)」なハッシュベース署名があり、NISTはSP 800-208でこれらをファームウェア署名など限定用途向けにすでに承認しています。SLH-DSAはステートレスで扱いやすい反面、署名サイズが数KB〜数十KBと大きく、署名生成の計算コストも比較的重いという特徴があります。

鍵カプセル化メカニズム(KEM)とデジタル署名の仕組みの違い

PQCを理解するうえで、KEM(鍵カプセル化メカニズム)とデジタル署名は役割が異なる点に注意が必要です。KEM(ML-KEM等)はTLSのハンドシェイクのように「通信の両者が同じ共通鍵(セッション鍵)を安全に共有する」ために使われ、従来のDiffie-Hellman鍵交換の代替に位置づけられます。一方デジタル署名(ML-DSA、SLH-DSA)は「データの改ざん検知」「送信者の認証」のために使われ、TLS証明書やコード署名、ソフトウェアのアップデート検証などRSA署名・ECDSA署名の代替として使われます。両者は数学的な構成も用途もまったく異なるため、移行計画を立てる際は「鍵交換の置き換え」と「署名の置き換え」を別々のタスクとして管理する必要があります。

NIST標準化アルゴリズム

FIPS 203〜205で標準化されたアルゴリズムには、それぞれセキュリティレベルに応じた複数のパラメータセットが定義されています。おおよその鍵長・サイズ感は以下の通りです(各標準文書に基づくおおよその値です)。

パラメータセット相当するセキュリティ強度公開鍵サイズ目安暗号文/署名サイズ目安
ML-KEM-512AES-128相当約800バイト約768バイト
ML-KEM-768AES-192相当約1,184バイト約1,088バイト
ML-KEM-1024AES-256相当約1,568バイト約1,568バイト
ML-DSA-65AES-192相当約1,952バイト約3,300バイト程度
SLH-DSA-128sAES-128相当数十バイト数KB〜十数KB程度

比較として、RSA-2048の公開鍵は約270バイト、ECDSA(P-256)の公開鍵は約65バイトと非常にコンパクトです。ML-KEM・ML-DSAへの移行では、鍵や署名のサイズが数倍〜十数倍に増える点が、TLSハンドシェイクのパケット数増加やIoT機器のメモリ制約など、実務上の設計に影響します(詳細は後述のトラブル事例を参照)。

実装例と実務上のポイント

実装検証では、liboqs(Open Quantum Safe プロジェクト)のPythonバインディングを使うと、ML-KEM(Kyber)による鍵カプセル化の流れを短いコードで確認できます。長期保存が必要な機密データの暗号化においては、「Harvest Now, Decrypt Later」攻撃(現在の暗号化通信を収集し、将来の量子コンピュータで解読する攻撃)を念頭に、早期の検証・移行準備が定石とされています。

# liboqs-python を使用したKyberの例
from oqs import KeyEncapsulation

# Kyber-768(ML-KEM-768相当)を使用
kem = KeyEncapsulation("Kyber768")

# 鍵ペアの生成
public_key = kem.generate_keypair()

# 暗号化(送信者側):公開鍵から暗号文と共有鍵を生成
ciphertext, shared_secret_enc = kem.encap_secret(public_key)

# 復号化(受信者側):秘密鍵と暗号文から同じ共有鍵を導出
shared_secret_dec = kem.decap_secret(ciphertext)

assert shared_secret_enc == shared_secret_dec

実務でPQCを扱う際に定石となる注意点は次の通りです。

  • ハイブリッド方式を基本とする:PQCアルゴリズムは比較的新しく、暗号解析の蓄積が従来方式より少ないため、当面は「従来の鍵交換(X25519やECDHなど)+PQC(ML-KEM)」を組み合わせるハイブリッド方式が推奨されます。片方が万一破られてももう片方が安全性を担保する設計です。
  • ライブラリのバージョンを固定・追跡する:liboqs、OpenSSL 3.2以降のOQSプロバイダーなどは仕様変更が続いているため、本番採用前に対象バージョンのFIPS適合状況を必ず確認します。
  • 鍵・署名サイズ増大の影響を事前に検証する:MTUを超えるTLSハンドシェイクパケットの断片化、証明書チェーンの肥大化によるハンドシェイク遅延を、本番投入前に負荷試験で確認しておきます。
  • IETF標準も参照する:IKEv2向けには複数鍵交換方式の併用を定めたRFC 9370が2023年に発行されており、TLS向けにもハイブリッド鍵交換に関する標準化がIETFで進んでいます。ベンダー独自拡張だけに頼らず、標準化文書を都度確認します。

メリット・デメリット

メリット

  • 量子コンピュータに対する長期的な安全性:Shorのアルゴリズムが有効なRSA・ECCと異なり、格子問題や符号理論に基づく問題は、現時点で知られている量子アルゴリズムでは効率的に解けないと考えられています。
  • 「Harvest Now, Decrypt Later」攻撃への対策:現在の通信を暗号化していても将来解読される懸念があるデータ(医療記録、国家機密、知的財産など長期の機密性が必要なもの)を、先んじて保護できます。
  • ML-KEM・ML-DSAは計算・通信コストが比較的軽量:同じくPQC候補だった符号ベース方式(Classic McEliece等)と比べて鍵サイズが小さく、既存プロトコルへの統合が容易です。

デメリット・注意点

  • 鍵・署名サイズの増大:前述の通り、RSA/ECCに比べて公開鍵や署名のサイズが数倍〜数十倍になり、帯域・ストレージ・メモリの制約があるIoT機器や組み込み機器では設計変更が必要になる場合があります。
  • 暗号解析の歴史が浅い:RSA・ECCは数十年にわたり世界中の暗号研究者による解析に耐えてきましたが、PQCアルゴリズムは研究の蓄積が相対的に浅く、標準化後に弱点が見つかるリスクがゼロではありません。実際、NISTの第4ラウンド候補だったSIKE(Supersingular Isogeny Key Encapsulation)は、2022年に古典コンピュータ上の数学的攻撃であっさり解読され、標準化対象から除外された事例があります。
  • エコシステムの未成熟:ハードウェアセキュリティモジュール(HSM)、スマートカード、各種ミドルウェアのPQC対応はまだ発展途上で、対応状況はベンダーごとに大きく差があります。
  • 移行コスト:暗号アルゴリズムをハードコードしている既存システムでは、暗号資産の棚卸し(インベントリ化)、アルゴリズムの抽象化(暗号の敏捷性)、相互運用性テストなど、移行には相応の工数がかかります。

混同されやすい用語・類似技術との違い

量子鍵配送(QKD)との違い

PQCと最も混同されやすいのが量子鍵配送(Quantum Key Distribution, QKD)です。QKDは光子の量子状態(重ね合わせ・観測による状態変化)という物理現象そのものを利用して鍵を共有する技術で、専用の光ファイバーや量子中継器などの特殊なハードウェアが必要です。盗聴があれば量子状態の変化として検知できる一方、既存のインターネットインフラ(ルーター、スイッチ、TCP/IP)にそのまま乗せることができず、長距離化・多拠点接続にはコストと技術的制約が大きいという課題があります。対してPQCは、通常のCPU・既存のネットワークインフラ上で動作する「ソフトウェアだけで完結する」アルゴリズムであり、TLSやSSHのアップデートだけで導入できる点が実務上の大きな違いです。NISTやNSAも、公共インフラのスケーラブルな保護にはQKDではなくPQCを推奨しています。

「量子暗号」という言葉との違い

「量子暗号」という言葉は、QKDを含む「量子力学の原理を積極的に利用する暗号技術」全般を指すことが多く、しばしばポスト量子暗号と混同されます。ポスト量子暗号(PQC)は名称に反して「量子技術を使う暗号」ではなく、「量子コンピュータに対して安全な、従来型コンピュータ向けの暗号」である点を区別して理解する必要があります。

対称鍵暗号(AES等)への影響との違い

PQCの議論はRSA・ECCなど公開鍵暗号を主な対象としています。AESやChaCha20などの対称鍵暗号、SHA-256などのハッシュ関数は、Groverのアルゴリズムによる強度低下(前述の通り実効強度がおおむね半分)はあるものの、鍵長・出力長を十分に長く(AES-256、SHA-384以上を目安に)取っておけば、アルゴリズム自体を置き換える必要は基本的にないというのが専門家の一般的な見解です。「PQC対応」と聞いて対称鍵暗号まで総入れ替えする必要があると誤解されがちなので注意が必要です。

トラブル事例と対策

⚠️ 暗号の敏捷性(Crypto Agility)不足

課題:既存システムが特定の暗号アルゴリズムを設定ファイルやコードにハードコードしており、アルゴリズムの差し替えに大規模な改修が必要になる。

対策:暗号アルゴリズムをプラグイン化・設定可能にし、TLSライブラリのバージョンアップやOpenSSLの設定変更だけでアルゴリズムを切り替えられる設計(暗号の敏捷性)を平時から採用しておく。

⚠️ TLSハンドシェイクのパケット断片化

課題:ハイブリッドPQC(ECDH+ML-KEM)を有効にするとClientHello/ServerHelloのサイズが大きくなり、UDPベースのQUIC通信やMTUの小さいネットワーク経路でパケット断片化・再送が発生し、接続確立が遅延・失敗する事例が報告されている。

対策:本番投入前に実際のネットワーク経路(モバイル回線、社内プロキシ、CDN経由など)でハンドシェイクの成功率とレイテンシを計測し、必要に応じてMTU設定やロードバランサーのタイムアウト値を見直す。

⚠️ ライブラリ・相互運用性の未成熟

課題:liboqsやOpenSSLのOQSプロバイダーはまだ実験的な位置づけのバージョンが多く、クライアントとサーバーで対応アルゴリズムの識別子(Codepoint)や実装バージョンが食い違うとハンドシェイクが失敗する。

対策:本番導入前に相互運用性テストスイートで組み合わせを網羅的に検証し、ベンダーごとの対応ロードマップ(ブラウザ・CDN・クラウドの対応状況)を継続的に確認する。

最新動向(2026年)

TLSへの統合

Cloudflare、Google、AWSなどの主要クラウド・CDN事業者は、TLS 1.3のハイブリッド鍵交換(X25519+ML-KEM、コードポイント名は「X25519MLKEM768」など)の実運用投入を進めています。主要ブラウザ(Chrome、Firefox)も既定でこの方式を有効化する動きが広がっており、ユーザーが意識しないままPQCによる保護を受けられるTLS接続が増加しています。

移行計画の策定

NISTはRSA-2048・ECDSA P-256などの従来アルゴリズムについて、2030年頃を目安に非推奨化、2035年頃を目安に使用禁止とする移行スケジュールの目安を示しています。企業においては、まず暗号資産(証明書、鍵、ライブラリ、プロトコルバージョン)のインベントリを作成し、優先度の高いシステム(長期保存データ、コード署名基盤、ルート証明書など)から段階的にハイブリッド方式へ移行する計画が推奨されています。

NISTの第5の候補:HQC

2025年3月、NISTはML-KEMのバックアップとなる鍵カプセル化方式として、符号理論ベースのHQC(Hamming Quasi-Cyclic)を選定したと発表しました。格子問題に依存するML-KEMとは異なる数学的基盤を持つため、仮にML-KEMの安全性に将来問題が見つかった場合の代替として、標準化ドラフトの策定が進められています。

各国政府機関の対応

米国NSAは「CNSA 2.0(Commercial National Security Algorithm Suite 2.0)」において、国家安全保障システムに関わるソフトウェア・ファームウェア署名を早期に、その他の用途も段階的に2033年までにPQCへ完全移行することを求めています。日本国内では、暗号技術の評価を行うCRYPTRECがPQCの動向調査・情報発信を継続しており、政府情報システムでの検討が進められています。

関連用語

外部リンク・参考資料

📝 関連ブログ記事

【2026年最新】OpenSSLの深刻な問題とは?

よくある質問(FAQ)

Q. ポスト量子暗号(PQC)とは何ですか?

ポスト量子暗号(Post-Quantum Cryptography、PQC)は、量子コンピュータによるShorのアルゴリズムによるRSA・ECC解読攻撃に耐える暗号アルゴリズムです。格子問題・コード理論・多変数多項式・ハッシュベースなど、量子コンピュータでも解読が困難な数学的問題に基づいています。

Q. NISTが標準化したPQCアルゴリズムは何ですか?

NISTは2024年にFIPS 203(CRYSTALS-Kyber/ML-KEM、鍵交換用)、FIPS 204(CRYSTALS-Dilithium/ML-DSA、デジタル署名用)、FIPS 205(SPHINCS+/SLH-DSA、ハッシュベース署名)の3つを正式標準化しました。これらが今後のTLS・SSH・コード署名の移行先となります。

Q. 今すぐPQCに移行する必要がありますか?

実用的な量子コンピュータはまだ存在しませんが、「Harvest Now, Decrypt Later」攻撃(現在の暗号通信を収集し将来解読)のリスクがあります。機密性が10年以上必要なデータ(政府・医療・金融)は今すぐ対策が必要です。一般的なWebサービスは2027〜2030年頃までにTLS等のPQC移行を計画することが推奨されています。

Q. TLSでのPQC対応はどう進んでいますか?

Cloudflare・Google・Appleは既にTLS 1.3でのハイブリッドPQC(従来のECDH + CRYSTALS-Kyber)の試験実装を実施しています。ChromeはKyberのサポートを追加済みで、実験的に使用できます。OpenSSL 3.2+ではOQSプロバイダーを使ったPQCの実験的サポートが可能です。

Q. ポスト量子暗号と量子鍵配送(QKD)はどう違いますか?

ポスト量子暗号(PQC)は量子コンピュータでも解読困難な数学的問題を使い、通常のコンピュータとネットワーク上でソフトウェアとして動作します。一方、量子鍵配送(QKD)は光子の量子状態そのものを利用して鍵を共有する物理的な技術で、専用のハードウェア(光ファイバー、量子中継器等)が必要です。既存インフラへの導入のしやすさから、公共インフラの保護にはPQCが推奨されています。

Q. AESなど対称鍵暗号もポスト量子暗号に置き換える必要がありますか?

基本的には不要とされています。対称鍵暗号はGroverのアルゴリズムにより実効的な強度がおおむね半分になりますが、AES-256のように十分な鍵長を採用していれば、量子コンピュータに対しても実用上安全な強度を維持できると考えられています。PQCへの置き換えが主に必要なのはRSA・ECCなどの公開鍵暗号(鍵交換・署名)です。

暗号移行のご相談