数字签名

是什么

用私钥加密散列值生成数字签名

特点

1. 完整性校验
2. 源认证
3. 不可否认性 

2026-02-01T05:01:07.png

公钥交换

密钥管理面临的挑战

在任何基于RSA服务之前,一个实体需要真实可靠的获取其他实体的公钥。
1. 通过非信任的通道,公钥交换必须是安全的。
2. 在密钥交换的过程中,公钥必须不能够被截获和更改。
3. 交换呈现Full Mesh的复杂度。
4. 由最终用户来确认密钥有效性,非常不靠谱。

证书系统解决的问题

证书系统只解决一个问题,就是安全的公钥交换

受信任介绍

1. A 和 B 是互信的,B 和 C 是互信的

2. B 向 C 介绍 A
2.1 B 将 A 的公钥PubA, hash出散列值HashA
2.2 用 B 的私钥对散列值HashA做数字签名得到 SignA
2.3 将 PubA + SignA 发送给 C

3. C 验证 B 发来的信息
3.1 C 使用 B 的公钥,解密数字签名 SignA, 得到 HashA
3.2 C 计算 PubA 的散列值 HashA1
3.3 验证 HashA 是否和 HashA1 相等,相等则 C 就信任了 A 的公钥,PubA

2026-02-01T05:01:58.png


2026-02-01T05:02:40.png

证书授权颁发机构(CA)

概念 对照
证书 身份证
CA 颁发身份证的单位:公安局
PKI 和颁发证书有关的所有配套的软件、硬件、政策等,统一叫PKI

2026-02-01T05:03:19.png

数字证书

申请证书

1. 需要个人信息
2. 需要个人公钥
1. CA 将 个人信息 + 个人公钥,hash 获取 散列值 HashStr
2. 使用 CA 私钥加密 HashStr,生成签名 SignStr
3. 将 个人信息 + 个人公钥 + 签名,放在一起,生成 证书

2026-02-01T05:04:22.png


2026-02-01T05:04:48.png

交换证书

证书只做一件事,安全的公钥交换
1. A 拿到 C 的证书(C个人信息+C公钥+CA签名)
2. 使用 CA 的公钥解密 CA签名,生成 C个人信息+C公钥 的散列值 HashC
3. 使用明文 C个人信息+C公钥,计算出散列值 HashC1 
4. 对比 HashC 和 HashC1 如果相等,就信任 C 的公钥

2026-02-01T05:05:31.png

举例 IKE 数字签名认证

1. 发起方A 
1.1 将关键信息hash得到散列值HashInfoA
1.2 使用A私钥给HashInfoA做数字签名
1.3 数字签名 + 发起方证书(发起方信息+发起方公钥+CA签名) 打包发给 接收方B

2. 接收方B 
2.1 证书校验:使用CA公钥解密 发起方证书里面的CA签名,得到 发起方信息+发起方公钥 的散列值 HashA
2.2 证书校验:将明文 发起方信息+发起方公钥 hash 获取散列值 HashA1
2.3 证书校验:比较 HashA 和 HashA1,相等说明证书校验通过
2.4 证书校验通过后,接收方B 就信任了 发送方A的公钥
2.5 使用A的公钥,解密A发送过来的数字签名,得到 HashInfoA
2.6 自己本地将关键信息做hash得到散列值 HashInfoA1
2.7 比较 HashInfoA 和 HashInfoA1 ,相等则说明重要信息匹配成功

2026-02-01T05:05:57.png

最后修改:2026 年 02 月 01 日
如果觉得我的文章对你有用,请随意赞赏