github編集

耐量子暗号 (QRC)

将来の量子コンピュータによる脅威に備えた、API通信を保護するハイブリッド型の耐量子暗号化への対応

概要

QRCは、従来の楕円曲線暗号 (ECDH-P256)と、NISTで標準化された耐量子暗号ML-KEM-1024 (モジュール格子ベース鍵カプセル化方式) を組み合わせることで、KeeperのAPIセキュリティを強化します。このハイブリッド方式により、現在の安全性と将来の量子耐性の両立を実現します。

QRCを有効にすると、コマンダーから送信されるすべてのAPIリクエストで二重構成の暗号化が使用され、いずれか一方の暗号方式が将来破られた場合でも、データ保護が維持されます。

要件

要件
詳細

Pythonバージョン

3.11以降

パッケージ

keeper-mlkem (自動的にインストールされます)

要件を満たしている場合、QRCは自動的に有効になります。追加の設定は不要です。

仕組み

QRCが有効な状態でコマンダーがAPIリクエストを送信する際の処理は、以下のとおりです。

  1. ECDHによる鍵交換 コマンダーが一時的な楕円曲線鍵ペアを生成し、サーバーの公開鍵を用いてECDHを実行

  2. ML-KEMによるカプセル化 サーバーのML-KEM-1024公開鍵を使用し、共有シークレットをカプセル化

  3. 鍵導出 2つのシークレットをHKDF-SHA256で結合し、AES-256鍵を生成

  4. 暗号化 生成された鍵を使用し、AES-GCMで通信鍵を暗号化

代替動作

以下の場合、コマンダーは自動的に従来の楕円曲線暗号方式に切り替わります。

  • Pythonのバージョンが3.11未満の場合

  • keeper-mlkem パッケージがインストールされていない場合

  • 暗号化処理中にQRC関連のエラーが発生した場合

いずれの場合もユーザー側での操作は不要で、接続は中断されずに継続されます。

QRCの有効状態の確認

QRCが有効かどうかは、デバッグログを有効にすることで確認できます。

QRCが有効な場合、次のようなログが表示されます。

セキュリティ上の利点

特性
説明

量子耐性

ML-KEM-1024により、Shorのアルゴリズムを用いた将来の量子コンピュータ攻撃への耐性を確保

ハイブリッド防御

将来、ML-KEMまたはECDHのいずれかが破られた場合でも、もう一方の暗号方式によるデータ保護を維持

NIST標準

ML-KEMはNIST FIPS 203に準拠し、厳格な安全性検証を通過

定数時間処理

C拡張による実装により、タイミング攻撃などのサイドチャネル攻撃を回避

AES-256-GCM暗号化

認証付き暗号により、機密性と完全性の両立を実現

最終更新