3. 数字签名基础:数字签名原理、公钥基础设施(PKI)、哈希函数在签名中的作用
数字签名是RBAC签名证据校验的核心技术。它通过密码学手段,为电子文档提供身份认证、数据完整性和不可否认性三大安全属性。本节将深入剖析数字签名的底层原理、支撑其运行的公钥基础设施(PKI),以及哈希函数在签名流程中的关键作用。
3.1 数字签名原理
数字签名并非手写签名的电子化扫描,而是基于非对称加密的数学方案。其核心思想是:使用私钥签名,使用公钥验签。私钥由签名者独占保管,公钥则公开发布。
核心概念:数字签名不是对原始数据的加密,而是对数据摘要的加密。这保证了签名的高效性和安全性。
一个标准的数字签名流程包含两个阶段:
- 签名阶段(发送方):
- 对原始消息进行哈希运算,生成固定长度的消息摘要。
- 使用发送方的私钥对消息摘要进行加密,生成数字签名。
- 将原始消息和数字签名一起发送给接收方。
- 验签阶段(接收方):
- 使用发送方的公钥对数字签名进行解密,得到消息摘要1。
- 对接收到的原始消息进行相同的哈希运算,得到消息摘要2。
- 比较摘要1和摘要2:如果相同,则签名验证通过;否则,签名无效。
实战要点:在RBAC系统中,权限令牌()或策略文件通常会被签名。校验方通过验证签名,确保令牌未被篡改且确实由授权中心签发。
3.2 哈希函数在签名中的作用
哈希函数是数字签名的“效率倍增器”和“安全基石”。它并非直接对原始消息签名,而是对消息的哈希值进行签名。这样做带来了三大好处:
| 特性 | 说明 | 对签名的价值 |
|---|---|---|
| 固定输出长度 | 无论输入消息多大(1KB或1GB),哈希值长度固定(如SHA-256为256位)。 | 签名计算量恒定,避免对超大文件进行低效的非对称加密。 |
| 单向性(抗原像) | 从哈希值无法逆向推导出原始消息。 | 签名过程不泄露原始消息内容,保护数据隐私。 |
| 抗碰撞性 | 极难找到两个不同消息具有相同的哈希值。 | 确保签名与消息唯一绑定,任何篡改都会导致验签失败。 |
安全警示:MD5和SHA-1已被证明存在碰撞攻击风险,在RBAC签名证据校验中严禁使用。生产环境应使用SHA-256或更高强度的哈希算法。
3.3 公钥基础设施(PKI)
数字签名解决了“谁签的名”问题,但PKI解决了“公钥属于谁”这个更根本的信任问题。PKI是一套由证书颁发机构(CA)、注册机构(RA)、证书吊销列表(CRL)等组成的完整体系。
PKI的核心组件及其职责如下:
- 证书颁发机构(CA):信任的根,负责签发、管理和吊销数字证书。
- 注册机构(RA):负责验证申请者的身份,并将验证结果提交给CA。
- 数字证书:将公钥与实体身份(如用户名、域名)绑定的电子文件,由CA签名。
- 证书吊销列表(CRL):已失效但未过期的证书列表,验签时需检查。
- 在线证书状态协议(OCSP):实时查询证书状态的替代方案,比CRL更高效。
3.4 数字证书与证书链
在RBAC系统中,权限签名者的身份通过数字证书来证明。证书遵循X.509标准,包含以下关键字段:
| 字段 | 含义 | 在RBAC校验中的用途 |
|---|---|---|
| Subject | 证书持有者身份(如CN=权限中心) | 确认签名者是否为授权的权限中心 |
| Issuer | 签发该证书的CA身份 | 构建证书链,追溯信任根 |
| Subject Public Key Info | 持有者的公钥及算法 | 用于验签操作 |
| Validity | 证书有效期(notBefore / notAfter) | 检查签名时证书是否在有效期内 |
| Signature | CA对证书内容的数字签名 | 验证证书本身是否被篡改 |
证书链验证是PKI信任传递的核心。当校验一个RBAC权限签名时,校验方需要:
- 获取签名者的证书。
- 找到签发该证书的CA证书。
- 用CA证书的公钥验证签名者证书的签名。
- 重复步骤2-3,直到找到一个信任锚点(通常是操作系统或应用内置的根证书)。
- 检查所有证书是否被吊销(查询CRL或OCSP)。
RBAC实战关联:在微服务架构中,服务间调用权限令牌的校验,通常依赖于预先部署的CA根证书。所有服务都信任同一个根,从而形成一个统一的权限信任域。