3. 密码资产分类与标识体系

密码资产发现如果只停留在“扫到了什么”,清单很快就会变成一堆无法维护的字符串。真正决定清单质量的,是发现之后能否把每个对象放进统一的分类框架,并赋予一个稳定、可追溯、可关联的标识。本节要解决的就是这个数据模型问题:先明确密码资产有哪些类别,再设计标识与属性字段,使后续的清单构建、去重、关联和变更跟踪有共同语言。

一、密码资产的五类核心对象

从工程视角看,密码资产可以归纳为五类:算法、密钥、证书、协议、库文件。它们不是并列的“文件类型”,而是处在不同抽象层次、彼此存在引用关系的对象。

  • 算法:指实际被使用的密码算法及其参数组合,如 SM4-CBC、RSA-2048、SHA-256、SM2。算法本身是标准,但“算法+模式+密钥长度+填充方式”才构成可评估的算法配置。
  • 密钥:包括对称密钥、非对称密钥对、会话密钥、主密钥等。密钥资产的关键属性是用途、长度、生命周期和存储位置,而不是密钥值本身。
  • 证书:X.509 证书、国密双证书、自签证书等。证书是密钥与身份绑定的载体,需要记录颁发者、有效期、签名算法、密钥用法。
  • 协议:TLS/SSL、IPSec、SSH、国密 TLCP 等。协议资产描述的是通信双方约定的密码套件与握手方式。
  • 库文件:OpenSSL、BouncyCastle、GmSSL、各类 JCE Provider 等密码实现载体。库文件的版本直接决定其支持的算法集合与已知漏洞。

这五类对象之间存在明确的引用链:库文件提供算法实现,协议调用算法并协商密钥,证书绑定公钥,密钥服务于协议与证书。理解这条链,才能设计出可关联的标识体系。

密码资产分类与引用关系模型 库文件 OpenSSL 3.0.8 GmSSL / BouncyCastle 算法配置 SM4-CBC / RSA-2048 SHA-256 / SM2 协议 TLS 1.2 / TLCP IPSec / SSH 密钥 对称密钥 / 密钥对 会话密钥 / 主密钥 证书 X.509 / 国密双证书 签名算法 / 有效期 提供实现 调用算法 使用密钥 签名/加密 绑定公钥 协商密钥 统一标识示例:PA-{类型码}-{位置码}-{序号},如 PA-KEY-DB01-0007 表示数据库服务器上的第 7 个密钥资产 类型码:ALG 算法 / KEY 密钥 / CRT 证书 / PRO 协议 / LIB 库文件

二、统一资产标识的设计

标识的第一要求是全局唯一且稳定。不能用“服务器IP+文件名”这类会随部署变化的组合,也不能用自增数字,否则资产迁移或重新扫描后无法对应。推荐采用“类型码-位置码-序号”的三段式结构,例如 PA-KEY-DB01-0007。其中 PA 是密码资产前缀,KEY 表示密钥类,DB01 是资产所在位置或系统编码,0007 是该位置下的顺序号。

这种结构的好处是:类型码让标识自带分类信息,位置码支持按系统聚合,序号保证同一位置内不冲突。当资产发生迁移时,标识保持不变,只在属性中更新位置字段,从而保留历史轨迹。对于证书这类天然具有唯一指纹的对象,还可以在标识之外附加 SHA-256 指纹作为辅助匹配键,用于跨系统去重。

三、属性字段的分层设计

属性字段应分为三层:通用字段、分类字段、管理字段。通用字段所有资产共有,包括资产标识、资产名称、类别、发现时间、发现方式、所在位置、责任人。分类字段因类别而异,是体现专业性的部分。

资产类别关键分类字段示例值
算法算法名称、工作模式、密钥长度、填充方式、是否国密SM4 / CBC / 128 bit / PKCS7 / 是
密钥密钥用途、密钥长度、生命周期、存储方式、是否可导出数据加密 / 256 bit / 2025-01 至 2026-01 / HSM / 否
证书颁发者、主体、签名算法、公钥算法、有效期、指纹CA-XX / server.xx.cn / SM3withSM2 / SM2 / 2026-06-30 / a1b2…
协议协议名称、版本、密码套件、认证方式TLS / 1.2 / ECDHE-SM4-CBC-SM3 / 双向认证
库文件库名称、版本、提供者、支持的算法集、已知漏洞OpenSSL / 3.0.8 / 系统自带 / AES、SM4 / CVE-2023-xxxx

管理字段则服务于清单运营,包括资产状态(在用、停用、待确认)、风险等级、合规基线符合性、最近复核时间。把管理字段与分类字段分开,可以避免每次合规评估都改动资产本体数据。

四、从字段到可执行的数据模型

设计字段时最容易犯的错误是“字段很多但无法填写”。每个字段都应当能从发现手段中获得,或由责任人明确补充。例如“是否可导出”无法通过扫描自动判断,就应标记为人工确认项,而不是留空。下面给出一个密钥资产的 JSON 示例,字段命名可直接作为清单模板的列名:

{
  "asset_id": "PA-KEY-DB01-0007",
  "asset_name": "订单库透明加密主密钥",
  "category": "KEY",
  "algorithm_ref": "PA-ALG-DB01-0003",
  "key_usage": "数据加密",
  "key_length": 256,
  "storage": "HSM",
  "exportable": false,
  "lifecycle": {"start": "2025-01-15", "end": "2026-01-14"},
  "location": "10.20.1.31 /db01",
  "owner": "数据平台组",
  "status": "在用",
  "last_review": "2025-06-01"
}

注意 algorithm_ref 字段,它用标识而非文字描述来引用算法资产。这样当算法配置升级时,只需修改算法资产本身,所有引用它的密钥、协议都能通过关联查询同步获知影响范围。这正是统一标识体系相对于普通表格的核心价值。

设计标识时先问三个问题:资产迁移后标识是否仍然有效?同一资产被两种手段发现时能否合并?删除资产后标识是否会被复用?三个答案都应为“是、能、不会”,否则标识方案需要调整。

五、分类落地时的常见判断

实际盘点中会遇到边界对象。例如一个 Java 应用内置了 BouncyCastle 的 jar 包,它既是库文件,又通过 JCE Provider 暴露算法能力。处理原则是:以物理载体归类为库文件,以被调用的配置归类为算法,两者用引用字段关联,而不是强行合并成一个对象。再如自签证书,它同时承载公钥和身份,仍归入证书类,其绑定的私钥单独作为密钥资产登记,通过指纹关联。

分类与标识体系确定后,清单的每一行就有了确定的含义:一行代表一个资产对象,标识唯一,字段可追溯,对象之间可关联。后续的算法合规筛查、密钥生命周期监控、证书到期预警,都建立在这个数据模型之上,而不需要每次重新定义“什么算一个资产”。