数字证书 与 数字签名 介绍
目录
- 数字签名
- 什么时候公钥加密数据,什么时候私钥加密数据?
- 消息认证码(MAC)和数字签名 区别
- 数字证书
- 如何使用数字证书验证服务器身份?
数字签名
定义:它类似于现实生活中的手写签名。
手写签名的法律效力
1、每个人的笔迹因生理和心理差异而独一无二,难以复制。签名被视为真实性和有效性的直接证明。
2、手写签名是法律文件生效的核心要件之一,能证明签署人对文件内容的认可与授权。具有不可否认性。
数字签名的过程
(1) 签名过程
1、发送者使用哈希函数(如 SHA-256)对原始数据进行计算,生成一个固定长度的摘要(Message Digest)。
2、签名者用自己的私钥对摘要(Hash 值)进行加密,生成数字签名。
3、签名者将原始数据和签名一起发送给接收方。
(2) 验证过程
4、接收方用签名者的公钥解密签名,得到摘要。
5、接收方重新计算原始数据,得到摘要。两个摘要进行比较,如果一致,则验证通过。
作用:
数据完整性 + 真实性 + 抗抵赖性
完整性如何体现?
发送者使用哈希函数对原始数据进行计算,生成一个固定长度的摘要,收到者使用相同哈希函数对原始数据进行计算,得到相同摘要,就说明数据没有被改动,这就保证了数据完整性。
摘要已经是是公开的,那为何还要引入数字签名呢?
摘要可以验证数据的完整性,但无法验证数据的来源。
通过私钥加密摘要和公钥解密签名,可以确定公钥和私钥是一套的。保证了数据的来源。
公钥能解密且摘要还一致,则说明数据和公钥是从同一个人发出来的。这就保证了数据的真实性。且发送者无法否认自己生成了签名(抗抵赖性)。 但是只能证明公钥百分百是你的,且原始信息没有被修改过,但是无法证明你就是我兄弟。
只有数字签名能否防护中间人攻击?
不能。数字签名只能验证消息的真实性和完整性,接收方无法确定收到的公钥确实属于发送者,如果攻击者伪造身份并提供自己的公钥,接收方可能误以为攻击者是合法发送者。
什么时候公钥加密数据,什么时候私钥加密数据?
非对称加密中 :目标是保护数据的 机密性(谁都可以给我发信息,只有我自己可以看) 所以数据由公钥加密,私钥解密。
数字签名 :不是保护数据的机密性,而是验证数据的 真实性 和 完整性(用谁都不知道的私钥加密(签名),大家用谁都知道的公钥解密(验证)
消息认证码(MAC)和数字签名 区别
消息认证码(Message Authentication Code, MAC)
数字签名(Digital Signature)
(1) MAC 的生成与验证
生成过程:
发送方将消息与共享密钥拼接。使用哈希算法(如 HMAC-SHA256)生成消息摘要 MAC。
验证过程:
接收方使用相同的共享密钥与收到的消息重新生成消息摘要 MAC。
比较接收到的 MAC 和重新生成的 MAC 是否一致。
(2) 签名的生成与验证
生成过程:
发送方对消息计算哈希值。使用发送方的私钥对哈希值进行加密,生成签名。
验证过程:
接收方使用发送方的公钥解密签名,得到原始哈希值。对消息重新计算哈希值。
比较接解密的 哈希值 和重新生成的 哈希值 是否一致。
特性 | MAC | 签名 |
---|---|---|
机密性依赖 | 使用共享密钥 | 私钥签名公钥验证 |
计算复杂度 | 对称加密 | 非对称加密 |
不可否认性 | 都使用共享密钥,无不可否认性 | 使用到私钥,有不可否认性 |
适用场景 | 通信双方预先共享密钥的场景 | 需要身份验证和不可否认性的场景 |
数字证书
数字证书是一种电子文件,用于证明某个实体(如个人、组织或设备)的身份。
它由可信的第三方机构(称为 CA,Certificate Authority)签发,并包含以下信息:
● 签发机构(CA)的签名
● 有效期限
● 持有者的身份信息(如域名、公司名称等)
● 持有者的公钥
作用:提供一种安全的方式将公钥分发给通信对方。
工作原理
1、用户向 CA 提交申请,提供身份信息和公钥。
2、CA 验证用户身份后,生成并签署数字证书。
3、用户将数字证书发送给通信对方。
4、对方通过验证证书中的 CA 签名来确认用户身份,成功拿到用户的公钥
如何使用数字证书验证服务器身份?
客户端收到服务器的数字证书后,使用以下步骤验证服务器身份:
● 验证证书链:检查证书是否由受信任的 CA 签发。
● 验证证书有效性:检查证书是否在有效期内,且未被列入吊销列表(CRL)。
● 验证证书绑定:确认证书中的域名与服务器的实际域名匹配。
● 验证签名:使用 CA 的公钥验证数字证书的签名是否有效。