注目

研究・分析 / POST-QUANTUM / PYTHON ECOSYSTEM

Pythonの定番暗号ライブラリにNIST標準の耐量子暗号 — ML-KEM/ML-DSAが「pip install」で利用可能に(Trail of Bits実装)

米Trail of Bitsは2026年6月30日、ドイツ連邦政府のSovereign Tech Agencyの資金提供を受け、Pythonの定番暗号ライブラリ「pyca/cryptography」にNIST標準の耐量子暗号プリミティブML-KEM(FIPS 203)とML-DSA(FIPS 204)を実装したと発表した。cryptography 48以降を「pip install」するだけで、Pythonエコシステム全体で耐量子暗号が利用できる。

米Trail of Bitsは2026年6月30日、Pythonの定番暗号ライブラリ「pyca/cryptography」に、NIST(米国立標準技術研究所)標準の耐量子暗号プリミティブを実装したと発表した。対象は鍵共有の**ML-KEM(FIPS 203)とデジタル署名のML-DSA(FIPS 204)**だ。ドイツ連邦政府の機関であるSovereign Tech Agencyの資金提供を受けた取り組みで、cryptography 48以降を「pip install」するだけで利用できるようになった。

セキュリティ研究者のブルース・シュナイアー氏も2026年8月10日、自身のブログで「ポスト量子暗号が、Pythonエコシステム全体でpip install一つで手に入るようになった」と紹介し、「今やる理由は、緊急事態になる前に、システムを暗号の付け替えが利く(crypto agile)状態にしておくことだ」と指摘している。

なぜ今なのか

耐量子暗号への移行は、量子コンピュータが実用化してからでは遅い。**「今収集して、将来解読する」(Harvest Now, Decrypt Later)**という攻撃があるためだ。攻撃者は現在の暗号化通信を保存しておき、将来の量子コンピュータで解読する。暗号化したまま長期間保存されるデータは、いまからでも耐量子暗号で保護する必要がある。

米政府も移行を加速している。2026年6月22日、ホワイトハウスは大統領令「Securing the Nation Against Advanced Cryptographic Attacks」(EO 14412)を発出し、高価値・高影響の連邦システムについて、耐量子暗号による鍵共有を2030年12月31日までに、耐量子署名を2031年12月31日までに導入するよう義務付けた。政府調達の契約者(FARの対象となる企業)にも、2030年12月31日までのNIST FIPS準拠が求められる。

pyca/cryptographyの存在感

移行は政策だけでは進まない。実際のソフトウェアが耐量子暗号を呼び出せなければ、システムは移行できない。その点で、pyca/cryptographyの今回の対応は大きい。

pyca/cryptographyはPyPIで11番目にダウンロードされているパッケージで、直近1か月で約12億ダウンロードを記録している。Ansible(構成管理ツール)、Certbot(Let’s Encryptのクライアント)、Apache Airflow(ワークフロー管理)、paramiko(Python製SSHクライアント)など、多くのプロジェクトの暗号処理の土台になっている。Trail of Bitsは「pyca/cryptographyが耐量子プリミティブを提供しなければ、Pythonエコシステムは移行を始められない」と説明する。

pyca/cryptography公式ドキュメントのML-KEM(鍵カプセル化)APIページ(出典: cryptography.io)
pyca/cryptography公式ドキュメントのML-KEM APIページ。MLKEM768PrivateKeyなどが公開されている。原典(cryptography.io)

ML-KEMとML-DSAの特徴

ML-KEMは鍵カプセル化メカニズム(KEM)だ。従来のDiffie-Hellman(DH)鍵交換とは仕組みが異なり、送信側が共有秘密を「カプセル化」して受信側の公開鍵で包み、受信側が自分の秘密鍵で「開封(デカプセル化)」する。ML-DSAは格子(ラティス)理論に基づく署名方式で、RSAやECDSA、Ed25519の置き換えを想定している。

耐量子暗号は安全性の強度は同じでも、鍵・署名・暗号文のサイズが従来より1〜2桁大きい。Trail of Bitsが示した比較は次の通りだ。

アルゴリズム 公開鍵 秘密鍵 出力
Ed25519(従来) 32バイト 32バイト 64バイトの署名
ML-DSA-65(耐量子) 1,952バイト 32バイト 3,309バイトの署名
X25519(従来) 32バイト 32バイト 32バイトの共有秘密
ML-KEM-768(耐量子) 1,184バイト 64バイト 1,088バイトの暗号文

処理は従来より複雑でやや遅いが、現代のハードウェアでは通常の利用で体感できる差はなく、今後は高速化も見込まれる。一方で、Ed25519サイズの署名やX25519サイズの公開鍵を前提に固定したプロトコルや通信フォーマットは、単純な置き換えでは済まない。長さフィールドやチャンキング(分割)の前提を拡張する必要がある。

利用は既存のAPIと同様の形だ。ML-DSAの例は次の通り。

from cryptography.hazmat.primitives.asymmetric import mldsa

private_key = mldsa.MLDSA65PrivateKey.generate()
public_key = private_key.public_key()
signature = private_key.sign(b"message")
public_key.verify(signature, b"message")  # 失敗時はInvalidSignature

残る課題

  • SLH-DSA(FIPS 205)は未対応 — NISTの3つ目の標準であるハッシュベース署名は、cryptography 48には含まれておらず、開発が始まった段階
  • プロトコル統合はこれから — プリミティブが使えても、TLSや証明書などのプロトコルが対応して初めて、CertbotやAnsibleのような実アプリケーションで耐量子暗号が使われる。Trail of Bitsはプロトコルへの統合支援を進めている
  • 移行は「部品交換」ではない — ワイヤフォーマットの変更や、証明書・鍵のライフサイクル管理の見直しまで含めた計画が必要になる

日本企業への示唆

日本でも、政府機関等の耐量子暗号(PQC)移行の検討が進んでいる。内閣官房の「政府機関等における耐量子計算機暗号(PQC)利用に関する関係府省庁連絡会議」は2025年11月、移行の方向性を整理した中間とりまとめを公表した。民間企業も、政府調達の相手方となる場合は米国の規制(FAR)の影響を受け得る。

今、企業ができる準備は次の通りだ。

  1. 暗号資産を棚卸しする — 自社のTLS通信、コード署名、文書署名、鍵管理システムで使っている暗号アルゴリズムを洗い出す
  2. ライブラリ更新を「移行の練習」にする — ML-KEM/ML-DSAの対応は既存の暗号APIを置き換えるものではなく、新しいモジュールとして追加されている。既存コードを壊さずに耐量子APIを試せるので、まず開発環境で利用感を確かめる
  3. 長期保存データを分類する — 何年も保存するデータは「Harvest Now, Decrypt Later」のリスクがある。重要度に応じた保護方針を決める
  4. 暗号の付け替えやすさ(crypto agility)を設計に組み込む — アルゴリズムをハードコードせず、設定で切り替えられる構造を標準にする

耐量子暗号移行の本質は、量子耐性そのものより「暗号をいつでも付け替えられる状態」を作ることにある。緊急事態になる前に、小さく試して、慣れておく。それが今回のpyca/cryptographyの対応が示す現実的な進め方だ。

出典: Trail of Bits — Shipping post-quantum cryptography to Python(2026年6月30日) / pyca/cryptography CHANGELOG(GitHub) / White House — Executive Order 14412(2026年6月22日) / Schneier on Security(2026年8月10日) / pyca/cryptography — ML-KEM APIドキュメント / 内閣官房 — 政府機関等におけるPQC利用に関する関係府省庁連絡会議 中間とりまとめ(2025年11月)

この記事は、公開情報と編集部の調査・知見をもとに構成しています。内容は公開時点の情報に基づく解説であり、個別の環境への診断・対応を保証するものではありません。重要な判断では、記事内の出典や各提供元の最新情報もご確認ください。