
コードベースから量子脆弱な暗号をスキャンするCLIツール
手遅れになる前に、コードベースの量子脆弱性のある暗号技術をスキャンしましょう。
クイックスタート • なぜ量子対応が必要か • 使い方 • リスクレベル • CI/CD • 概要
Crypto Scanner は、コードベース内の暗号アルゴリズムをスキャンし、量子脆弱性のリスク評価を生成する CLI ツールです。ソースコード、設定ファイル、X.509 証明書を解析し、量子コンピュータによって破られる暗号技術を特定します。
Quantum Shield Labs によって開発 — 組織のポスト量子時代への準備を支援します。
RSA や ECC を破れる暗号学的に関連する量子コンピュータ(CRQC)は、2033年 までに登場すると予測されています。これは SF ではなく、主要な政府や企業が積極的に準備を進めているタイムラインです。
攻撃者は既に今日の暗号化データを収集し、量子コンピュータが利用可能になった時点で解読する意図を持っています。もしデータに長期的な価値(医療記録、金融データ、営業秘密、政府通信)があれば、すでにリスクにさらされています。
| 課題 | 現実 |
|---|---|
| 移行の複雑さ | 大規模なコードベースの移行には 3~5 年以上かかる |
| サプライチェーンの深さ | 依存関係に脆弱な暗号が含まれているが、目には見えない |
| コンプライアンス要件 |
十分に強力な量子コンピュータ上で動作するショアのアルゴリズムは、大きな整数の素因数分解や離散対数の計算を効率的に行えます。これにより以下が破られます:
持っていることがわからないものは移行できません。Crypto Scanner は、量子対応プログラムにおける最初の必須ステップである暗号資産の棚卸しを提供します。
📘 詳細を見る:包括的な移行ガイダンスについては Quantum Shield Labs Playbook をお読みください。
60 秒以内に最初の量子脆弱性スキャンを実行:
# PyPI からインストール
pip install crypto-scanner
# プロジェクトをスキャン
crypto-scanner scan .
# エグゼクティブ向け HTML レポートを生成
crypto-scanner scan . --html --output quantum-risk-report.html
以上です。これでコードベースの完全な暗号資産棚卸しが完了しました。
pip install crypto-scanner
git clone https://github.com/mbennett-labs/crypto-scanner.git
cd crypto-scanner
pip install -e .
# ディレクトリをスキャン(JSON 出力を標準出力へ)
crypto-scanner scan <directory>
# サポートされているファイルタイプとリスク分類を表示
crypto-scanner info
# バージョンを表示
crypto-scanner --version
# 詳細出力でスキャン
crypto-scanner scan ./src --verbose
# JSON レポートをファイルに保存
crypto-scanner scan . --output crypto-audit.json
# 関係者向けのブランド付き HTML レポートを生成
crypto-scanner scan . --html --output quantum-assessment.html
# 特定のディレクトリを除外
crypto-scanner scan . --exclude vendor --exclude legacy
# ファイルパターンを除外
crypto-scanner scan . --exclude "*.test.js" --exclude "*.spec.ts"
# オプションの組み合わせ
crypto-scanner scan ./backend -v --exclude node_modules -o report.json
依存関係のスキャンを避けるために、以下は自動的に除外されます:
.git, .svn, .hg # バージョン管理
node_modules, vendor # パッケージ依存関係
__pycache__, .pytest_cache, .mypy_cache
.venv, venv, env # 仮想環境
dist, build, out # ビルド出力
.idea, .vscode # IDE ディレクトリ
site-packages, third_party
ショアのアルゴリズムによって完全に破られるアルゴリズム:
既知の従来型の脆弱性があるアルゴリズム:
現在は安全だが監視が必要なアルゴリズム:
適切な保護を提供するアルゴリズム:
| 拡張子 | 形式 |
|---|---|
.pem | PEM エンコード |
.crt, .cer, .cert | 証明書 |
.der | DER エンコード |
デフォルトの出力形式。自動化や CI/CD パイプラインに最適:
{
"scan_directory": "/path/to/project",
"scan_timestamp": "2026-02-06T10:30:00",
"scanner_version": "0.1.0",
"summary": {
"total_files_scanned": 150,
"total_findings": 23,
"critical_count": 5,
"high_count": 8,
"medium_count": 7,
"low_count": 3
},
"excluded_patterns": [".git", "node_modules", "..."],
"findings": [
{
"file_path": "/path/to/auth.py",
"line_number": 42,
"algorithm": "RSA",
"key_size": 2048,
"risk_level": "critical",
"description": "RSA key generation detected",
"recommendation": "Plan migration to post-quantum algorithms (ML-KEM, ML-DSA)",
"context": "key = rsa.generate_private_key(public_exponent=65537, key_size=2048)"
}
]
}
Quantum Shield Labs のブランディングが入った、プロフェッショナルな自己完結型レポート:
生成方法:
crypto-scanner scan . --html --output report.html
name: Crypto Vulnerability Scan
on: [push, pull_request]
jobs:
crypto-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Crypto Scanner
run: pip install crypto-scanner
- name: Run Crypto Scan
run: crypto-scanner scan ./src --output crypto-report.json
- name: Check for Critical Findings
run: |
CRITICAL=$(jq '.summary.critical_count' crypto-report.json)
if [ "$CRITICAL" -gt 0 ]; then
echo "::error::Found $CRITICAL critical quantum-vulnerable algorithms!"
jq '.findings[] | select(.risk_level == "critical")' crypto-report.json
exit 1
fi
- name: Upload Report
uses: actions/upload-artifact@v4
if: always()
with:
name: crypto-vulnerability-report
path: crypto-report.json
crypto-scan:
stage: security
image: python:3.12
script:
- pip install crypto-scanner
- crypto-scanner scan . --output crypto-report.json
- |
CRITICAL=$(jq '.summary.critical_count' crypto-report.json)
if [ "$CRITICAL" -gt 0 ]; then
echo "Critical quantum-vulnerable cryptography detected!"
exit 1
fi
artifacts:
reports:
dotenv: crypto-report.json
paths:
- crypto-report.json
when: always
.pre-commit-config.yaml に追加:
repos:
- repo: local
hooks:
- id: crypto-scanner
name: Crypto Scanner
entry: bash -c 'crypto-scanner scan . --output /tmp/crypto-scan.json && CRITICAL=$(jq ".summary.critical_count" /tmp/crypto-scan.json) && [ "$CRITICAL" -eq 0 ]'
language: system
pass_filenames: false
always_run: true
#!/bin/bash
# crypto-check.sh - クリティカルな脆弱性が見つかったら失敗
set -e
crypto-scanner scan . --output /tmp/crypto-report.json
CRITICAL=$(jq '.summary.critical_count' /tmp/crypto-report.json)
HIGH=$(jq '.summary.high_count' /tmp/crypto-report.json)
echo "Scan complete: $CRITICAL critical, $HIGH high risk findings"
if [ "$CRITICAL" -gt 0 ]; then
echo "FAILED: Critical quantum-vulnerable cryptography detected!"
exit 1
fi
crypto-scanner/
├── src/crypto_scanner/
│ ├── cli.py # Typer CLI インターフェース
│ ├── scanner.py # コアオーケストレーションロジック
│ ├── models.py # Pydantic データモデル
│ ├── patterns.py # 50以上の正規表現検出パターン
│ ├── analyzers/ # ファイルタイプアナライザ
│ │ ├── base.py # 抽象基底クラス
│ │ ├── source.py # ソースコードアナライザ(14言語)
│ │ ├── config.py # 設定ファイルアナライザ
│ │ └── certificate.py # X.509 証明書アナライザ
│ └── reporters/ # 出力生成器
│ ├── json_reporter.py
│ └── html_reporter.py
└── tests/ # 包括的なテストスイート
SourceCodeAnalyzer — 14のプログラミング言語にわたるパターンマッチングConfigAnalyzer — YAML/JSON の解析と設定ファイルのパターンマッチングCertificateAnalyzer — X.509 の解析による鍵アルゴリズムとサイズの抽出コントリビューションを歓迎します!始め方:
git clone https://github.com/mbennett-labs/crypto-scanner.git
cd crypto-scanner
pip install -e ".[dev]"
# すべてのテストを実行
pytest tests/ -v
# カバレッジ付きで実行
pytest tests/ -v --cov=crypto_scanner --cov-report=html
暗号パターンは src/crypto_scanner/patterns.py で定義されています。各パターンには以下が含まれます:
git checkout -b feature/new-pattern)pytest tests/ -v)MIT ライセンス — 詳細は LICENSE をご覧ください。
Quantum Shield Labs は、組織のポスト量子時代への準備を以下で支援します:
Quantum Shield Labs が心を込めて開発
| NIST PQC 標準(ML-KEM、ML-DSA)が正式決定 |
| CNSA 2.0 の期限 | NSA は 2033 年までに量子耐性アルゴリズムを要求 |
| オプション | 短縮形 | 説明 |
|---|
--html | JSON ではなく HTML レポートを生成 | |
--output | -o | レポートをファイルに保存(標準出力の代わり) |
--verbose | -v | スキャンの進行状況を詳細表示 |
--exclude | -e | 追加の除外パターン(繰り返し可能) |
--version | -V | バージョンを表示して終了 |
| アルゴリズム | 鍵長 | 量子の影響 | 推奨される対応 |
|---|
| RSA | すべて(1024-4096+) | 完全に破られる | ML-KEM + ML-DSA に移行 |
| ECDSA/ECC | すべての曲線 | 完全に破られる | ML-DSA に移行 |
| DH/ECDH | すべて | 鍵交換が破られる | ML-KEM に移行 |
| DSA | すべて | 完全に破られる | ML-DSA に移行 |
| アルゴリズム | 問題 | 推奨される対応 |
|---|
| MD5 | 衝突攻撃、完全に破られている | SHA-3 または SHA-256 に置き換え |
| SHA-1 | 衝突攻撃が実証済み | SHA-256 以上に置き換え |
| DES | 56ビット鍵、簡単に破られる | AES-256 に置き換え |
| 3DES | 中間一致攻撃 | AES-256 に置き換え |
| AES-128 | グローバーのアルゴリズムにより安全性低下 | AES-256 にアップグレード |
| アルゴリズム | 状態 | 推奨される対応 |
|---|
| SHA-256 | 安全、グローバーにより 128ビット相当に低下 | SHA-3 への移行を計画 |
| SHA-384 | 安全 | 動向を監視 |
| SHA-512 | 良好な量子耐性 | 動向を監視 |
| TLS 1.2 | 安全だが老朽化 | TLS 1.3 を推奨 |
| アルゴリズム | 状態 | 備考 |
|---|
| AES-256 | 量子耐性 | ポスト量子安全性 128ビット |
| ChaCha20 | 現代的、安全 | AES の良好な代替 |
| SHA-3 | 最新の NIST 標準 | 新規プロジェクトに推奨 |
| ML-KEM | ポスト量子(Kyber) | NIST 2024年標準化 |
| ML-DSA | ポスト量子(Dilithium) | NIST 2024年標準化 |
| 拡張子 | 言語 |
|---|
.py, .pyw | Python |
.js, .mjs, .cjs | JavaScript |
.ts, .tsx | TypeScript |
.java | Java |
.go | Go |
.rs | Rust |
.c, .h, .cpp, .hpp | C/C++ |
.cs | C# |
.rb | Ruby |
.php | PHP |
.swift | Swift |
.kt, .kts | Kotlin |
.scala | Scala |
| 拡張子 | 形式 |
|---|
.yaml, .yml | YAML |
.json | JSON |
.toml | TOML |
.ini, .cfg, .conf, .config | INI/Config |
.env | 環境変数 |