-
数字签名相关资料
- 非对称加密的计算效率较低,一般是对要传输的内容通过散列函数计算出哈希值,再对哈希值进行加密,获得数字签名,也被称之为指纹
- 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证
- 数字签名(指纹)= 私钥加密(密码散列函数(原文))
- 消息 = 原文+数字签名
- 一般用于对公开内容(如包含公钥的证书)进行数字签名,防止篡改
-
那又如何保证公钥是正确的捏,而不是被篡改或仿造的捏
- 可信的人验证蟹老板的公钥
- 那谁验证可信的人的公钥?
- 根证书是证书链的尽头
- 验证的一连串证书称为证书链
- 分发证书、验证证书的基础设施称为 PKl, Public Key Infrastructure
- 所以想要实现身份验证,通信双方需要先有秘密信息,即根证书中的公钥 (而根证书是设备制造时被放入设备的,经过制造商验证的)
-
HTTPS 有了PKI,我们就可以实现基于明文的安全通行,也就是HTTPS
把 HTTP 的明文换成密文,再验证身份,即HTTPS。
HTTPS = HTTP + TLS
TLS=身份验证 + 加解密
身份验证靠 PKI
服务端身份验证靠 PK,客户端身份验证靠 HTTP 协议。
(
- 使用PKI对服务器的证书进行验证
- 使用验证后得到的证书中的公钥与服务器交换对称加密的加密算法及密钥
- 使用协商后得到的加密算法及密钥对通信内容进行加密
)
客户端验证服务端的身份的合法性是通过PKI对服务器的证书进行验证得到确认的,而服务端对客户端的验证是通过HTTP应用层进行实现的,最常见的就是登录后,返回cookie,然后之后的通讯客户端都携带上这一cookie。当然服务端也可以要求客户端提供证书,这样就省去了客户端的登录,但这种方法很麻烦,现实生活中几乎没有应用
六. 小结
- 网络安全三要素:机密性、完整性和身份验证
- 在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
- PK保证了普通用户不需要“面对面”和根证书机构交换根证书
- HTTPS 使用 PK 完成了除客户端身份验证以外的特性,客户端身份验证靠HTTP 协议实现