quantumscan-io/scanner-core
GitHub: quantumscan-io/scanner-core
QuantumScan 是一款后量子密码学扫描器,用于检测代码中的经典加密算法漏洞并推荐 NIST 标准的 PQC 替代方案。
Stars: 0 | Forks: 1
# QuantumScan — scanner-core
[](./STATS.md)
[](https://quantumscan.io)
[](./LICENSE)
[](https://www.npmjs.com/package/elizaos-plugin-quantumscan)
QuantumScan 检测易受量子计算机攻击的经典密码学算法(RSA、ECDSA、AES-128、SHA-1…),并将它们映射到 [NIST FIPS 203/204/205](https://csrc.nist.gov/publications/detail/fips/203/final) 中的后量子替代方案。
## 快速开始
```
# 扫描任意公开 GitHub 仓库 — 免费,无需登录
curl -X POST https://quantumscan.io/api/scan \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","repoUrl":"https://github.com/owner/repo"}'
```
或者使用 **[quantumscan.io](https://quantumscan.io)** 上的 Web UI —— 粘贴仓库 URL,几秒钟即可获得完整的风险报告。
## 检测内容
| 严重程度 | 示例 |
|---|---|
| CRITICAL | MD5, SHA-1, DES, SSLv3/TLS<1.2 |
| HIGH | RSA, ECDSA, ECDH, DSA (均已被量子破解) |
| MEDIUM | AES-128 (需升级至 AES-256) |
| LOW | HMAC-SHA1, 硬编码的密钥字面量 |
最近在实际环境中检测到最多的是:**`ECDSA`** —— 出现在 515 次扫描中。
→ 请参阅 [STATS.md](./STATS.md) 查看每 24 小时更新一次的实时数据。
## 为什么现在需要后量子密码学?
NIST 于 2024 年 8 月正式定稿了 **ML-KEM**(密钥封装)和 **ML-DSA**(签名)。DORA、NIS2 和 ISO 27001:2022 合规框架已经提及了 PQC 就绪性。迁移窗口期为 3-7 年 —— 规划从今天开始。
## PQC 替代方案
| 经典算法 | 量子替代方案 |
|---|---|
| RSA / ECDSA | ML-DSA (FIPS 204) |
| ECDH / DH | ML-KEM (FIPS 203) |
| SHA-1 | SHA-3 / SHA-256+ |
| AES-128 | AES-256 |
## Substrate / Polkadot
使用 `--substrate` 参数可启用 19 种针对 Substrate 的特定 PQC 模式,涵盖 BABE/GRANDPA 共识密钥、自定义 pallet 加密、XCM 签名以及 ink! 智能合约。
```
npx quantumscan ./my-parachain --substrate
```
**使用 `--substrate` 检测的内容:**
| 模式组 | 涵盖的 API |
|---|---|
| BABE/GRANDPA 密钥 | `BabeId`, `GrandpaId`, `sr25519::Pair`, `ed25519::Pair`, `impl_opaque_keys!`, `LocalKeystore::open`, `KeystorePtr` |
| Pallet 加密 | `sp_runtime::traits::Verify`, `MultiSignature`, `sp_core::sr25519/ed25519`, `sp_io::crypto::*` |
| XCM 签名 | `OriginKind::SovereignAccount`, `xcm::prelude::*`, `Junction::AccountId32`, `xcm_executor::XcmExecutor` |
| ink! 合约 | `ink::env::ecdsa_recover`, `ink::env::sr25519_verify`, `self.env().caller()` |
| Rust crates | `schnorrkel`, `ed25519-dalek`, `x25519-dalek`, `libp2p-noise` |
**示例输出:**
```
QuantumScan v1.9.0 Substrate/Polkadot PQC Analysis
──────────────────────────────────────────────────────────
Workspace Substrate/Polkadot detected
Pallets 3 found (pallets/staking, pallets/identity, pallets/session)
ink! 2 contract(s) found
Crates frame-support, sp-core, sp-runtime, schnorrkel… +4
Patterns 19 Substrate-specific PQC patterns active
🟠 HIGH 12 findings
pallets/staking/src/lib.rs:42 BABE Authority Key (sr25519) `BabeId`
pallets/staking/src/lib.rs:89 Substrate Session Keys `impl_opaque_keys! {`
contracts/token/src/lib.rs:31 ink! ECDSA Recovery (secp256k1) `self.env().ecdsa_recover`
...
Risk Score 85/100 High Risk
```
**迁移路径:**
| 算法 | PQC 替代方案 |
|---|---|
| sr25519 / BABE | ML-DSA (CRYSTALS-Dilithium) — 等待 sp-core PQC RFC |
| ed25519 / GRANDPA | ML-DSA 或 SLH-DSA — 等待 Substrate PQC pallets |
| x25519 / libp2p-noise | ML-KEM (CRYSTALS-Kyber) — 等待 libp2p PQC KEX |
| ink! ECDSA | ML-DSA,待 ink! 添加 PQC 宿主函数 |
**运行测试:**
```
npm test
# → 60 项测试通过,6 个分组,0 次失败
# Node.js 内置测试运行器 — 无额外依赖
```
**Docker:**
```
docker run --rm -v $(pwd):/target quantumscan/scanner /target --substrate
```
### 链上 CBOM (EIP-7789)
QuantumScan 扫描报告现在包含一个 **EIP-7789 CBOM 清单** —— 这是一个机器可读的加密清单,记录了检测到的每一个原语。
- EIP 草案: [quantumscan-io/eip-cbom](https://github.com/quantumscan-io/eip-cbom)
- 接口: `ICBOM.sol` — 在您的合约中实现它以实现链上 PQC 可发现性
### Arbitrum Stylus 上的 ML-DSA
今天即可部署抗量子签名验证,无需等待 EVM 协议升级:
- [quantumscan-io/stylus-ml-dsa](https://github.com/quantumscan-io/stylus-ml-dsa) — 作为 Arbitrum Stylus WASM 合约的 ML-DSA-65 (NIST FIPS 204)
- `mlDsaVerify(pubkey, message, signature)` 可从 Arbitrum 上的任何 Solidity 合约中调用
- Gas: ~112,000 (相比之下 ecrecover 为 ~3,000 — 37 倍开销,适用于高价值操作)
## AI Agent 集成 (ElizaOS)
[](https://www.npmjs.com/package/elizaos-plugin-quantumscan)
直接从任何 [ElizaOS](https://elizaos.ai) agent 中使用 QuantumScan:
```
npm install elizaos-plugin-quantumscan
```
```
import { quantumscanPlugin } from "elizaos-plugin-quantumscan";
// Register in your agent character
character.plugins = [quantumscanPlugin];
```
您的 agent 可以使用以下三种操作:
- `SCAN_REPOSITORY` — 提交 GitHub/GitLab/Bitbucket 仓库进行 PQC 分析
- `GET_SCAN_RESULT` — 通过 ID 获取已完成的扫描结果
- `CHECK_PQC_RISK` — 对指定的算法进行即时风险检查 (ECDSA, RSA, AES-128…)
在您的 agent 环境变量中设置 `QUANTUMSCAN_API_KEY` 以获取优先访问权限和更多的每日扫描次数。
## LangChain / LangGraph / CrewAI / AutoGen
[](https://pypi.org/project/langchain-quantumscan/)
```
pip install langchain-quantumscan
```
```
from langchain_quantumscan import get_quantumscan_tools
tools = get_quantumscan_tools() # scan_repository, get_scan_result, check_pqc_risk, scan_contract
agent = create_react_agent(llm, tools)
```
`ScanContractTool` 会验证智能合约用于签署交易是否安全 —— 包括蜜罐、
drainer、rug-pull 和无上限铸造检测 —— 这一切都在 agent 执行操作**之前**进行,而不是之后。同样
适用于 CrewAI (`QuantumScanCrewTool`) 和 AutoGen (`AUTOGEN_TOOLS`)。无需运行任何服务器。
## CLI: 即时钱包检查
```
npx quantumscan-agent-doctor 0xYourAgentWallet
```
无需注册。可一次性针对任何钱包检查开放的 ERC-20 授权 + ECDSA nonce 重用(这是一种数学上确定的密钥
泄露,而非启发式判断)。遇到真实风险时以非零退出码退出 ——
可作为部署 agent 之前的 CI 门禁。请参阅
[quantumscan-io/quantumscan-agent-doctor](https://github.com/quantumscan-io/quantumscan-agent-doctor)。
标签:LNA, MITM代理, 可视化界面, 暗色界面, 自定义脚本, 请求拦截, 逆向工具