はじめに
量子コンピュータの進歩により、現在広く使われている暗号アルゴリズム(RSA・ECCなど)は将来的に破られる可能性が指摘されています。
この問題は Post-Quantum Cryptography(PQC:耐量子暗号)
と呼ばれる新しい暗号方式への移行を促しています。
しかし現実のシステムでは次のような問題があります。
- どこで暗号が使われているのか
- RSAやECDSAがどこに存在するのか
- PQC移行対象がどれだけあるのか
大規模なコードベースでは、これを把握するだけでもかなり大変です。
そこで今回、ソースコードやミドルウェアの設定ファイルなどを解析してPQC移行対象となる暗号利用箇所を検出するツール pqc-scan をOSSとして公開しました。
GitHubリポジトリ
https://github.com/wakaken/pqc-scan
PQC移行の背景
量子コンピュータが実用化すると、現在の公開鍵暗号の多くはショアのアルゴリズムにより理論上破られると言われています。
特に次のアルゴリズムは量子耐性がありません。
- RSA
- ECDSA
- ECDH
- Diffie-Hellman
そのため現在、世界中で Post-Quantum Cryptography (PQC) への移行が始まっています。
例えばNISTは次のPQCアルゴリズムを標準化しています。
- ML-KEM(旧Kyber)
- ML-DSA(旧Dilithium)
- SLH-DSA
しかし既存システムでは依然として
- RSA証明書
- JWT署名
- SSH鍵
- TLS設定
など、量子耐性のない暗号が大量に残っています。
そのため 最初のステップは暗号の棚卸し(Crypto Inventory) になります。
pqc-scanとは
pqc-scan は ソースコードをスキャンして量子耐性のない暗号を検出するツール です。
Rustで実装されたCLIツールとして提供されています。
主な特徴
1. ソースコードから暗号利用箇所を検出
例えば以下のような暗号利用を検出できます。
RS256
RSA
ECDSA
対象例
- JWT署名
- TLS設定
- SSH鍵
- crypto API
2. 多言語コードをスキャン
pqc-scan は以下の言語を対象に設計されています。
- Java
- Python
- Go
- JavaScript / TypeScript
- Ruby
- Rust
OSSプロジェクトの暗号利用状況を簡単に確認できます。
3. PQC移行リスクの可視化
検出結果は
- quantum-vulnerable
- quantum-uncertain
- quantum-safe
といった形で分類されます。
4. レポート生成
pqc-scan は以下の形式で結果を出力できます。
- HTML
- JSON
- Markdown
- SARIF
SARIF形式を使うことで GitHub Code Scanningと統合することも可能です。
インストール
Rust環境があれば簡単にビルドできます。
git clone https://github.com/wakaken/pqc-scan
cd pqc-scan
cargo install --path crates/pqc_scan_cli
使い方
基本的な使い方はシンプルです。
pqc-scan scan ./target-project --format all --out-dir ./pqc-report --rules-dir /path/to/pqc-scan/rules
出力形式を指定することもできます。例えば、--formatにhtmlを指定するとhtml形式のレポートのみが出力されます。
pqc-scan scan ./project \
--format html \
--out-dir ./pqc-report
OSSをスキャンしてみる
例えば Keycloak のソースコードをスキャンする場合は次のようになります。
git clone https://github.com/keycloak/keycloak
pqc-scan scan ./keycloak \
--format all \
--out-dir ./pqc-report-keycloak
これにより
- RSA使用箇所
- JWT署名
- TLS関連設定
などが検出されます。
PQC移行の第一歩は「暗号の棚卸し」
PQC移行の議論ではよく「ML-KEMを導入するべきか」のような話になります。
しかし実際の移行プロセスは
- Crypto Inventory
- PQC Migration Plan
- Hybrid Cryptography
- PQC Only
という段階を踏みます。
pqc-scanはその 最初のステップである暗号の棚卸しを支援するツール です。
まとめ
pqc-scan は
- ソースコードや設定ファイルから暗号利用箇所を検出
- PQC移行対象を可視化
- OSSプロジェクトの暗号利用状況を分析
するためのツールです。
量子時代に向けたセキュリティ対策として 「まず暗号の棚卸しを行う」 という観点で活用できます。
GitHub
ぜひ試してみてください。