
CLI-инструмент для сканирования кодовых баз на предмет криптографии, уязвимой к квантовым атакам
Сканируйте свою кодовую базу на предмет уязвимой к квантовым атакам криптографии, пока не стало слишком поздно.
Быстрый старт • Почему квантовая готовность? • Использование • Уровни риска • CI/CD • О нас
Crypto Scanner — это CLI-инструмент, который сканирует вашу кодовую базу на наличие криптографических алгоритмов и генерирует оценки риска квантовой уязвимости. Он анализирует исходный код, конфигурационные файлы и сертификаты X.509 для выявления криптографии, которая будет взломана квантовыми компьютерами.
Разработан Quantum Shield Labs — помогает организациям подготовиться к постквантовой эре.
Прогнозируется, что криптографически релевантные квантовые компьютеры (CRQC), способные взламывать RSA и ECC, появятся к 2033 году. Это не научная фантастика — это график, к которому активно готовятся крупные правительства и предприятия.
Злоумышленники уже сейчас собирают зашифрованные данные с намерением расшифровать их, когда появятся квантовые компьютеры. Если ваши данные имеют долгосрочную ценность (медицинские записи, финансовые данные, коммерческие тайны, государственные коммуникации), они уже находятся в зоне риска.
| Проблема | Реальность |
|---|---|
| Сложность миграции | Большие кодовые базы требуют 3–5+ лет для перехода |
Алгоритм Шора, выполняемый на достаточно мощном квантовом компьютере, может эффективно факторизовать большие целые числа и вычислять дискретные логарифмы. Это взламывает:
Нельзя мигрировать то, о наличии чего вы не знаете. Crypto Scanner предоставляет криптографическую инвентаризацию, которая является первым важным шагом в любой программе квантовой готовности.
📘 Узнать больше: Прочитайте Playbook от Quantum Shield Labs для всестороннего руководства по миграции.
Получите первое сканирование на квантовую уязвимость менее чем за 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 в stdout)
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",
"recommendation": "Запланируйте миграцию на постквантовые алгоритмы (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 "Сканирование завершено: $CRITICAL критических, $HIGH высокорисковых находок"
if [ "$CRITICAL" -gt 0 ]; then
echo "ОШИБКА: Обнаружена критическая квантово-уязвимая криптография!"
exit 1
fi
crypto-scanner/
├── src/crypto_scanner/
│ ├── cli.py # Интерфейс CLI на Typer
│ ├── 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 | АНБ требует квантово-устойчивые алгоритмы к 2033 году |
| Опция | Короткая | Описание |
|---|
--html | Создать HTML-отчёт вместо JSON | |
--output | -o | Сохранить отчёт в файл (вместо stdout) |
--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 | Переменные окружения |