chanukyachintada06/psb-quantum-security-scanner
GitHub: chanukyachintada06/psb-quantum-security-scanner
这是一个面向银行基础设施的全栈安全扫描器,用于评估TLS加密漏洞并生成符合NIST标准的后量子密码学(PQC)合规报告。
Stars: 1 | Forks: 0
# 🛡️ Quantum-Proof Systems Scanner
### 银行基础设施后量子密码学合规扫描器
**Team CypherRed261 | PSB Hackathon 2026 | Lovely Professional University**
## 📌 项目概述
**Quantum-Proof Systems Scanner** 是一个全栈 Web 应用程序,用于对面向公众的银行端点执行实时 TLS 加密漏洞评估,并评估其对后量子密码学 (PQC) 标准的准备情况。
随着具有密码学相关性的量子计算机的出现,使用 Shor 算法可以破解 RSA 和 ECC 等经典算法。该工具帮助像旁遮普国家银行 这样的银行机构识别易受攻击的资产,生成加密物料清单 (CBOM),并接收符合 NIST PQC 标准的优先迁移建议。
## 🔐 在线演示访问
在此尝试在线部署:
**🔗 https://psb-hackathon2026.vercel.app/**
| 用户名 | 密码 | 角色 |
|---|---|---|
| `pnbuser` | `pnb@123` | PNB 用户 |
| `judge01` | `pnb@123` | 评委 |
| `judge02` | `pnb@123` | 评委 |
| `judge03` | `pnb@123` | 评委 |
## 🎯 目标
- 扫描面向公众的银行端点的 TLS 加密配置
- 检测量子易受攻击的算法 (RSA, ECC, DH, DSA)
- 分配 PQC 风险评分 (0–100) 和就绪百分比
- 生成符合 CERT-IN Annexure-A 的结构化 CBOM
- 推荐后量子替代方案 (Kyber-768, Dilithium, SPHINCS+, Hybrid TLS)
- 在 MySQL 中存储扫描历史、审计日志和分类标签
- 在实时交互式仪表板上显示结果
## ⚙️ 系统工作流
1. 用户使用授权凭据登录
2. 用户在资产清单中输入域名或 IP 地址
3. 后端连接到 domain:443 并通过 sslyze 执行 TLS 握手分析
4. 提取加密参数(密码套件、密钥类型、证书元数据)
5. 量子验证引擎使用 NIST FIPS 203/204/205 对漏洞进行分类
6. 生成风险评分、PQC 就绪度和建议
7. 结果存储在 MySQL 中 (scan_results, cbom_records, audit_logs, classification_labels)
8. 仪表板在 7 个模块中显示实时输出
## 🧱 技术栈
| 层级 | 技术 |
|---|---|
| **Frontend** | HTML5, CSS3, Vanilla JavaScript (SPA) |
| **Backend** | Python 3.12, FastAPI, Uvicorn |
| **TLS Scanner** | sslyze 6.x, cryptography library |
| **PQC Engine** | 自定义分类器 — NIST FIPS 203/204/205 |
| **Database** | MySQL 8.0 (mysql-connector-python) |
| **Version Control** | Git, GitHub |
| **IDE** | VS Code, Antigravity IDE |
## 📂 仓库结构
```
quantum-proof-scanner/
│
├── frontend/
│ ├── index.html ← Single Page Application (7 modules)
│ ├── styles.css ← PNB red/gold dark theme
│ └── script.js ← SPA router, charts, login, scan logic
│
├── backend/
│ ├── main.py ← FastAPI app + all API endpoints
│ ├── scanner.py ← TLS scanning engine (sslyze)
│ ├── quantum_validator.py← PQC algorithm classifier
│ ├── database.py ← MySQL connection + all queries
│ ├── models.py ← Pydantic response models
│ ├── requirements.txt ← Python dependencies
│ ├── run.bat ← Windows one-click startup
│ └── .env.example ← Environment variable template
│
└── README.md
```
## 🖥️ 前端模块
| 模块 | 描述 |
|---|---|
| **Home** | 包含 6 个统计卡片、4 个图表、资产表、活动流的仪表板 |
| **Asset Inventory** | 实时 TLS 扫描,包含风险摘要、TLS 详细信息、建议 |
| **Asset Discovery** | 域名、SSL、IP、软件选项卡 + D3.js 网络图 |
| **CBOM** | 加密物料清单 — 密钥长度、密码使用图表 |
| **Posture of PQC** | 风险热力图、分类等级、PQC 支持状态 |
| **Cyber Rating** | 企业评分 (0–1000)、仪表盘、单资产评分 |
| **Reporting** | 执行摘要、计划、按需报告生成 |
## 🔌 API 端点
| 方法 | 端点 | 描述 |
|---|---|---|
| GET | `/` | API 信息和状态 |
| GET | `/health` | 健康检查 + 数据库状态 |
| POST | `/api/scan` | 扫描域名 (JSON body) |
| GET | `/api/scan/{domain}` | 扫描域名 (URL 参数) |
| GET | `/api/history` | 来自 MySQL 的最近扫描历史 |
| GET | `/api/cbom` | 来自 MySQL 的 CBOM 记录 |
| GET | `/api/audit` | 来自 MySQL 的审计日志 |
| GET | `/api/stats` | 聚合仪表板统计信息 |
| GET | `/docs` | Swagger UI 文档 |
## 🗄️ 数据库架构 (MySQL)
```
quantum_scanner_db
├── scan_results ← TLS scan data per domain
├── cbom_records ← Cryptographic Bill of Materials
├── audit_logs ← System event tracking (SRS 5.4)
└── classification_labels ← PQC labels issued (FR-17, FR-18)
```
表在首次后端启动时自动创建 — 无需手动 SQL。
## 🚀 设置与运行
### 前置条件
- Python 3.10+
- MySQL 8.0
- Google Chrome
### Step 1 — 克隆仓库
```
git clone https://github.com/YOUR_USERNAME/quantum-proof-scanner.git
cd quantum-proof-scanner
```
### Step 2 — 设置 MySQL 数据库
```
-- Run in MySQL shell
CREATE DATABASE quantum_scanner_db;
```
### Step 3 — 配置环境
```
cd backend
cp .env.example .env
# 编辑 .env 并设置您的 MySQL 密码
```
`.env` 文件内容:
```
DB_HOST=localhost
DB_PORT=3306
DB_NAME=quantum_scanner_db
DB_USER=root
DB_PASSWORD=your_mysql_password
```
### Step 4 — 安装 Python 依赖
```
pip install -r requirements.txt
```
### Step 5 — 启动后端
```
# Windows
python -m uvicorn main:app --reload
# Linux/Mac
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
您应该看到:
```
✅ MySQL connected successfully!
✅ Database tables initialized successfully.
INFO: Application startup complete.
```
### Step 6 — 打开前端
直接在 Chrome 中打开 `frontend/index.html`。
API 文档位于:`http://localhost:8000/docs`
### Step 7 — 使用真实域名测试
尝试扫描:
- `google.com` → TLS 1.3, MEDIUM 风险 (RSA 密钥)
- `sbi.co.in` → 真实的印度银行 TLS 配置
- `github.com` → ECDSA, 较低风险
## 🛡️ PQC 合规标准
| 标准 | 描述 |
|---|---|
| NIST FIPS 203 | ML-KEM (CRYSTALS-Kyber) — 密钥封装 |
| NIST FIPS 204 | ML-DSA (CRYSTALS-Dilithium) — 数字签名 |
| NIST FIPS 205 | SLH-DSA (SPHINCS+) — 基于哈希的签名 |
| CERT-IN | Annexure-A 加密要求 |
| RBI CSF | RBI 网络安全框架 TLS 要求 |
## 🔐 关键功能
- ✅ 通过 sslyze 进行实时 TLS 扫描(非模拟数据)
- ✅ 符合 NIST FIPS 203/204/205 的 PQC 风险评分
- ✅ 符合 CERT-IN Annexure-A 的 CBOM 生成
- ✅ MySQL 持久化 — 扫描历史在重启后保留
- ✅ 完整审计跟踪 — 每次扫描均记录时间戳和 IP
- ✅ 用户身份验证 — 基于角色的登录系统
- ✅ 演示模式回退 — 使用模拟数据离线工作
- ✅ 资产关系的交互式 D3.js 网络图
- ✅ 所有模块中的 Chart.js 仪表板
- ✅ 响应式 SPA — 无页面重新加载
## 👥 团队
| 成员 | 角色 |
|---|---|
| [Chanukya Venkata Sai](https://github.com/chanukyachintada06) | 团队负责人 — 风险引擎、前端、集成 |
| [G.L. Santhosh Reddy](https://github.com/santhoshreddy28) | 后端开发人员 — 扫描引擎与 API |
| [ANKUSH TANWAR](https://github.com/ANKUSHTANWAR55) | 数据库工程师 — MySQL 设计与数据完整性 |
| [Anil Kumar Reddy](https://github.com/Anil6373) | QA 工程师 — 测试与验证 |
## 🚀 未来展望
- 使用 Docker 在 AWS/Azure 上进行云部署
- 混合 PQC + 经典证书颁发
- PDF/JSON 合规报告导出
- 面向企业银行集团的多租户支持
- 用于自动扫描的 CI/CD 流水线集成
- RBAC 扩展 — 管理员、审计员、检查员角色
## 📜 许可证
本项目是为 **PSB Cybersecurity Hackathon 2026** 开发的,与 **IIT Kanpur** 合作完成。
*Team CypherRed261 | Lovely Professional University | PSB Hackathon 2026*
标签:AES-256, CBOM, CERT-IN, Dilithium, ECC, Kyber-768, NIST标准, PQC, RSA, Shor算法, SPHINCS+, sslyze, TLS扫描, 仪表盘, 加密算法, 后量子密码学, 实时分析, 数据可视化, 漏洞评估, 网络安全, 逆向工具, 量子计算安全, 银行基础设施, 隐私保护