题干与适用场景
公司准备应对后量子密码迁移,但不知道哪些系统使用了 RSA、椭圆曲线或共享密钥。请设计一个密码资产清单服务,说明采集、去重、风险评分、权限、变更检测和迁移联动。
题目考察资产治理系统,不要求候选人预测量子计算时间。RFC 9958 将密码清单、密钥建立与签名用途、密码敏捷性和迁移证据放在同一工程上下文中;NIST 已发布 ML-KEM、ML-DSA 与 SLH-DSA 标准。
面试官考察点
- 能否区分密码算法、密钥、证书、协议套件和业务数据寿命。
- 能否把代码扫描、运行时遥测、证书与 HSM API 连接成可追溯事实。
- 能否处理重复发现、过期数据、未知算法和供应商黑盒。
- 能否设计租户隔离、最小权限、版本化证据与审计查询。
- 能否把风险评分连接到迁移批次、停止线和回滚,而非只做报表。
需要澄清的问题
- 清单覆盖哪些环境:源代码、容器、移动端、固件、云 KMS、HSM 和第三方 SaaS?
- 资产的唯一键是密钥、证书、调用点、服务还是数据流?同一密钥跨系统使用是否合法?
- 需要保存历史多久,谁能看到密钥材料、算法名称和业务敏感标签?
- 风险评分要服务合规证明、工程排期,还是自动阻断新部署?
- 采集失败时是否允许估算,还是必须标记为未知并阻止“已完成”结论?
端到端设计
采集器将静态扫描、证书解析、KMS/HSM 审计事件、服务配置和运行时握手摘要写入不可变事件流。规范化层把算法、用途、密钥标识、调用主体、数据保密期限、来源、时间和置信度映射到版本化 schema。实体解析层以 tenantid + assetnamespace + providerid + localid 作为候选键,并用证书指纹、密钥 ARN、部署 ID 和时间窗口做去重;无法证明相同的记录保留关联而不强行合并。
查询服务只返回元数据和证据链接,不返回私钥或完整密文。策略层按数据寿命、算法状态、暴露面、不可更新客户端比例和证据新鲜度计算风险。风险结果必须保存输入快照、规则版本和人工覆盖理由。迁移编排器读取高风险资产,生成批次、负责人、兼容矩阵和验收指标;它不能直接替换生产密钥。
数据一致性与变更检测
事件流至少一次投递,因此每条发现带 sourceeventid 和采集器版本,消费者用幂等写入表去重。资产状态由事件折叠得到,删除采用带时间的撤销事件,避免把一次扫描缺失误判为资产消失。定期扫描与运行时心跳都要报告 last_seen;超出保鲜窗口的记录进入未知状态。
对代码、证书和配置分别计算内容摘要。摘要变化产生新版本,而不是覆盖旧事实。规则升级要重算风险并保留旧分数,便于审计“当时为何批准”。跨来源冲突时显示冲突字段、来源优先级和待确认任务;不能静默选择一个来源。
权限、隐私与可靠性
按租户、业务域和资产标签实施行级授权;安全团队可看算法与暴露面,应用团队只看本域迁移任务。密钥材料、令牌和原始流量永不进入清单;运行时只采集握手元数据和经过脱敏的标识。所有读取和人工修改都写审计日志。
采集器离线时先落本地队列并重放,服务端以租户配额和背压保护事件流。查询提供“截至时间”和证据新鲜度,避免把陈旧清单当实时事实。多地域部署使用分区写入与全局查询索引;跨地域复制失败时标记覆盖范围,不报告虚假的全量状态。
设计取舍与边界
静态扫描覆盖广但可能漏掉动态协商;运行时遥测接近真实使用却受流量和隐私限制。两者应并列存证并以置信度区分。集中式图谱方便依赖查询,但爆炸半径大;按域分区更易授权,跨域关系可通过只读引用连接。
自动阻断新算法部署能降低新增债务,却会误伤未知供应商。可先对高风险规则启用审批门,再用误报率、未知资产比例和回滚成功率决定是否强制。清单服务负责事实和排序,密码库升级、证书签发和业务迁移仍由专门流水线执行。
失败演练与评分标准
若某 HSM 不提供密钥用途,记录“用途未知”并创建补证任务;禁止按服务名称猜测。若同一证书在多个租户出现,保留共享关系并触发隔离审查。若扫描器版本变化导致资产数激增,比较原始事件和规则版本后再决定是否接受新基线。
高质量回答应给出至少三类来源、不可变证据、幂等与过期语义、最小权限、风险可解释性和迁移联动。加分点是明确未知状态、数据保留期限、冲突处理、回滚边界与“清单完整性”指标;只画一个数据库和仪表盘不足以通过。
延伸追问与参考答案
为什么不能用服务名推断算法?
同一服务可能调用多个库、协议或供应商,服务名无法证明密钥用途和实际协商结果。应保留来源证据,并把推断标记为低置信度。
如何定义清单完整性?
按环境覆盖率、来源新鲜度、未知资产比例、重复率、事件延迟和抽样人工核验准确率定义;资产总数本身不能证明完整。
迁移服务如何消费清单?
编排器按风险和可更新性生成批次,读取兼容矩阵与性能预算,执行灰度、观测和回滚。清单只提供事实与证据,不直接修改生产密码配置。