TOOL RELEASE

cbom-tools v0.1.0 — 密码资产盘点工具

2026-09-27 · Apache-2.0 · GitHub

密码物料清单(CBOM)回答「这个项目用了哪些密码算法、用在哪里」。本文发布工具——盘点本身。

一条命令

npm install -g cbom-tools
cbom-scan --dir ./my-project --out cbom.json

输出是 CycloneDX 1.6 格式的 CBOM JSON。每个算法条目带 cryptoProperties(资产类型、密码原语、量子安全等级)和 evidence.occurrences(文件路径加行号,单算法上限 50 处,去重)。

检测两个来源:

  1. package.json 依赖——查规则表(@noble/post-quantum、sm-crypto 这类包名)。
  2. 源码——对 .js/.cjs/.mjs/.ts/.tsx/.jsx 做模式匹配(crypto.createHash('sha3-256') 这类调用)。

实测

扫 fibemate 主仓(PQC 全栈平台,算法横跨 ML-KEM/ML-DSA/SLH-DSA、SM2/3/4、SHA-2/SHA-3/Keccak):

发布物两个:

diff:迁移的前后对照

盘点只是起点。CBOM 的日常用法是 diff——迁移前后各扫一次,算法增删一目了然:

cbom-diff cbom-before.json cbom-after.json
# Removed: none
# Added: Keccak-256, SHA3-512
# Exit code: 1

退出码三条:0 无变化,1 有变化,2 文件缺失或解析错误。放进 CI 就是密码资产的守门规则——依赖升级悄悄换掉哈希算法这类事,diff 第一时间报。

边界:不做什么

四条,写进了 README:

全部信息来自 CycloneDX SBOM 规范和公开算法参数,纯静态模式匹配,不做任何密码计算。扫描器读你的代码,不碰你的密钥。

工程面

规则表当前覆盖 KEM、签名、哈希、对称四类原语,支持按源码规则扩展。国密和 NIST 后量子套件都在表内。

系列索引

前作讲为什么需要 CBOM;本文解决「怎么扫、怎么 diff」。下一步是把 diff 挂进 CI 门禁,和 verifact 的事实核验、xdiff 的实现差分组成三条守门线。