4. 组织密码资产清点方法与实战

后量子安全迁移的第一步不是选算法,而是弄清楚“我们到底在用哪些密码”。密码资产清点(Cryptographic Asset Inventory)的目标,是系统识别组织内所有依赖密码算法的对象——算法、协议、证书、密钥、库与硬件模块——并记录其位置、用途、生命周期与迁移难度。没有一份可信的清单,后续的风险评估、优先级排序和迁移排期都无从谈起。

本节把清点拆成“识别范围—采集手段—分类建模—模板落地”四个环节,并给出一份可直接填写的资产清单模板。

一、先划定清点边界:五类资产对象

密码资产不是单一概念,实践中至少包含五类相互关联的对象,清点时需分别登记并建立引用关系:

  • 算法:RSA-2048、ECDSA P-256、SHA-1、AES-128-GCM、SM2/SM3/SM4 等,记录算法族、参数长度与用途(签名/加密/摘要/KDF)。
  • 协议:TLS 1.2/1.3、SSH、IPsec/IKEv2、S/MIME、Kerberos、QUIC 等,记录版本、密码套件与协商参数。
  • 证书:X.509 终端实体证书、中间 CA、根 CA、代码签名证书、设备证书,记录签发者、公钥算法、有效期、吊销状态与部署位置。
  • 密钥:对称密钥、非对称私钥、主密钥、数据加密密钥(DEK)、密钥加密密钥(KEK),记录长度、存储介质(HSM/软件密钥库/配置文件)、轮换周期与责任人。
  • 依赖组件:OpenSSL、BoringSSL、Java JCE、国密 SDK、HSM 固件、智能卡、IoT 安全芯片等,记录版本与支持的算法集合。

这五类对象之间存在引用链:协议调用算法,证书绑定公钥,密钥由组件托管。清点表必须能表达这种引用关系,否则后续做“某算法退役影响哪些业务”的分析时会断链。

二、采集手段:从被动扫描到主动问询

实际清点通常组合使用以下手段,单一手段都会留下盲区:

  1. 网络与端点扫描:用 nmap 的 ssl-enum-ciphers 脚本、testssl.sh 或 sslyze 探测对外服务的 TLS 版本与密码套件。例如对一台 Web 服务器执行 testssl.sh --severity HIGH 10.0.1.20:443,输出会列出支持的套件,如 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,据此可反推使用了 ECDHE、RSA 签名与 AES-128-GCM。
  2. 代码与配置静态检索:在代码仓库中检索 MD5、SHA1、RSA、DES、ECB 等关键字,并检查配置文件中的 ssl_protocols、cipher_suites、keyStore 路径。注意区分“调用”与“注释/测试代码”,避免误报。
  3. 证书透明日志与内部 CA 导出:从公共 CT 日志和内部 CA 系统导出组织域名下的全部证书,按公钥算法与有效期归类。
  4. 资产管理系统与 CMDB 关联:把扫描结果挂到主机、应用、业务系统上,形成“业务—应用—主机—密码资产”的归属链。
  5. 人工访谈与问卷:对无法自动发现的场景(嵌入式设备、第三方 SaaS、纸质流程中的电子签章)进行问询,重点确认“是否使用自研密码”“是否使用国密”“密钥由谁保管”。
扫描结果只能证明“某端口当前协商了什么”,不能证明“系统内部还硬编码了哪些算法”。因此扫描与代码检索必须并行,且以代码检索结果补充扫描盲区。

三、分类维度:让清单可排序、可决策

清点不是罗列,而是为迁移决策服务。建议每条资产至少打上以下标签:

  • 量子脆弱性:直接脆弱(RSA/ECDSA/ECDH/DH)、部分脆弱(SHA-1 等摘要)、相对安全(AES-256、SHA-384、对称密钥体系)。
  • 业务关键度:核心交易、内部办公、测试环境。
  • 暴露面:互联网可达、内网、离线。
  • 迁移难度:可配置替换、需改代码、依赖硬件更换、依赖第三方。
  • 生命周期:证书到期时间、密钥轮换周期,决定“自然替换窗口”。

下图展示了一条典型的密码资产引用链与分类标注方式,帮助理解“协议—证书—密钥—组件”如何串联并映射到迁移优先级:

密码资产引用链与迁移优先级标注(示例) 业务系统 网上银行交易 协议 TLS 1.2 / ECDHE-RSA 证书 RSA-2048,2026-03 到期 密钥 RSA 私钥,HSM 托管 依赖组件 OpenSSL 1.1.1 / HSM 固件 分类标注(每条资产必填) 量子脆弱性 直接脆弱 / 部分 / 安全 业务关键度 核心 / 一般 / 测试 暴露面 互联网 / 内网 / 离线 迁移难度 配置 / 改码 / 换硬件 生命周期 到期 / 轮换周期 优先级判定示例:互联网暴露 + 直接脆弱 + 核心业务 + 证书 2026 年到期 → 列入第一迁移批次。 若迁移难度为“换硬件”,则需提前启动采购与兼容性验证,避免到期前被动替换。

四、资产清单模板设计

模板字段应围绕“可定位、可判断、可排期”设计。下面给出一份可直接落地的清单结构,字段按实际需要取舍:

资产编号资产类型算法/协议/证书标识参数部署位置所属业务量子脆弱性迁移难度到期/轮换责任人
CA-001证书X.509 终端证书RSA-2048 / SHA-25610.0.1.20:443网银交易直接脆弱配置替换2026-03-15张工
PR-002协议TLS 1.2ECDHE-RSA-AES128-GCM网关集群网银交易直接脆弱配置替换随证书张工
KY-003密钥RSA 私钥2048 位HSM-A 分区 3网银交易直接脆弱换硬件/固件每年轮换李工
AL-004算法SHA-1摘要旧版签章服务电子合同部分脆弱需改代码—王工
CP-005组件OpenSSL1.1.1w应用服务器多个依赖算法升级替换—运维组

填写时有几条实操要点:资产编号建议采用“类型前缀+序号”,便于跨表引用;部署位置要精确到主机与端口或密钥库路径,避免只写“生产环境”;“到期/轮换”字段直接决定迁移窗口,必须与证书管理系统、密钥管理系统的真实数据对齐,不能凭记忆填写。

五、实战中的常见问题与判断依据

问题一:扫描显示“支持 TLS 1.3”,是否说明已安全? 不一定。TLS 1.3 的密钥交换已使用 ECDHE,但服务器证书仍可能是 RSA 签名,量子脆弱性依然存在。判断时应分别看“密钥交换算法”和“签名算法”,两者都要登记。

问题二:同一算法在多处出现,是否合并为一条? 不建议。清点的粒度是“部署实例”,因为迁移时不同实例的窗口、责任人和难度不同。可以在算法维度做汇总视图,但底层记录应保持实例级。

问题三:如何判断清点是否“足够完整”? 可用交叉验证:扫描发现的端口数应与 CMDB 中登记的服务数大致吻合;代码检索命中的高危算法调用应能在清单中找到对应条目;内部 CA 签发的证书应全部有归属。三者对不上时,缺口就是下一轮清点的重点。

清点结果本身包含敏感信息(密钥位置、证书私钥托管方式)。清单应存放在受控系统中,按最小权限分发,避免以明文表格在即时通讯工具中流转。

完成一轮清点后,组织应得到三样东西:一份实例级资产清单、一张按迁移优先级排序的汇总视图、一份“已知盲区”说明。盲区说明同样重要——它明确了本轮清点未覆盖的范围(如某些第三方 SaaS、离线设备),为后续补充清点提供依据,也避免管理层误以为清单已覆盖全部风险。