3. 密码资产分类与标识体系
密码资产发现如果只停留在“扫到了什么”,清单很快就会变成一堆无法维护的字符串。真正决定清单质量的,是发现之后能否把每个对象放进统一的分类框架,并赋予一个稳定、可追溯、可关联的标识。本节要解决的就是这个数据模型问题:先明确密码资产有哪些类别,再设计标识与属性字段,使后续的清单构建、去重、关联和变更跟踪有共同语言。
一、密码资产的五类核心对象
从工程视角看,密码资产可以归纳为五类:算法、密钥、证书、协议、库文件。它们不是并列的“文件类型”,而是处在不同抽象层次、彼此存在引用关系的对象。
- 算法:指实际被使用的密码算法及其参数组合,如 SM4-CBC、RSA-2048、SHA-256、SM2。算法本身是标准,但“算法+模式+密钥长度+填充方式”才构成可评估的算法配置。
- 密钥:包括对称密钥、非对称密钥对、会话密钥、主密钥等。密钥资产的关键属性是用途、长度、生命周期和存储位置,而不是密钥值本身。
- 证书:X.509 证书、国密双证书、自签证书等。证书是密钥与身份绑定的载体,需要记录颁发者、有效期、签名算法、密钥用法。
- 协议:TLS/SSL、IPSec、SSH、国密 TLCP 等。协议资产描述的是通信双方约定的密码套件与握手方式。
- 库文件:OpenSSL、BouncyCastle、GmSSL、各类 JCE Provider 等密码实现载体。库文件的版本直接决定其支持的算法集合与已知漏洞。
这五类对象之间存在明确的引用链:库文件提供算法实现,协议调用算法并协商密钥,证书绑定公钥,密钥服务于协议与证书。理解这条链,才能设计出可关联的标识体系。
二、统一资产标识的设计
标识的第一要求是全局唯一且稳定。不能用“服务器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 暴露算法能力。处理原则是:以物理载体归类为库文件,以被调用的配置归类为算法,两者用引用字段关联,而不是强行合并成一个对象。再如自签证书,它同时承载公钥和身份,仍归入证书类,其绑定的私钥单独作为密钥资产登记,通过指纹关联。
分类与标识体系确定后,清单的每一行就有了确定的含义:一行代表一个资产对象,标识唯一,字段可追溯,对象之间可关联。后续的算法合规筛查、密钥生命周期监控、证书到期预警,都建立在这个数据模型之上,而不需要每次重新定义“什么算一个资产”。