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