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扫描, 仪表盘, 加密算法, 后量子密码学, 实时分析, 数据可视化, 漏洞评估, 网络安全, 逆向工具, 量子计算安全, 银行基础设施, 隐私保护