要知道一点,证书只做公钥交换,传递公钥
首先明确几个基本概念:
-
密钥对:在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
-
公钥:公钥用来给数据加密,用公钥加密的数据只能使用私钥解密。
-
私钥:如上,用来解密公钥加密的数据。
-
摘要:对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得。
-
数字签名:使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。
-
签名验证:数据接收端,拿到传输文本,但是需要确认该文本是否就是发送发出的内容,中途是否曾经被篡改。因此拿自己持有的公钥对签名进行解密,得到了文本的摘要,然后使用与发送方同样的HASH算法计算摘要值,再与解密得到的摘要做对比,发现二者完全一致,则说明文本没有被篡改过。
证书应用1
IKE(网络密钥交换协议)数字签名认证过程,IKE 具体是啥我也不知道,主要看证书在里面的应用
我的理解,在发送明文内容过程中,对内容进行数字签名,防止数据被篡改
- 生成证书:发起方拿着自己的个人信息和公钥去 CA申请证书,CA 对 A的个人信息和公钥进行hash然后用ca的私钥加密生成签名,这时候 A的个人信息和公钥 和 ca对A的签名 组合起来就是证书内容。
- A对自己要发送的内容进行hash,再用自己的私钥加密,得到数字签名
- 开始发送
- B收到开始解密:用根证书的公钥 对 发送过来的证书内容里的签名 进行解密 得到 (A的个人信息和公钥)的hash值(HA)
- 在对证书里的 A的个人信息和公钥的重新hash得到(HB)
- HA==HB,判断是否相等,相等则是正确的,说明这个公钥是A的
- 拿A的公钥对发过来的数字签名进行解密得到hash值(HC)
- 对发送过来的内容也hash(HD)
- HC==HD,判断是否相等,相等则是正确的,说明是A发送的内容
10.至此验证完毕
https中证书的应用
HTTPS的协商过程:HTTPS的协商目的主要是基于使用非对称加密做传输会拖慢速度,因而客户端和服务器端首先需要基于非对称加密协商出一个对称加密的key。所以简化过的HTTPS的协商流程是这样的。
-
浏览器首先向服务器发起请求
-
服务器响应浏览器,并将自己的证书传递给浏览器,浏览器从证书得到公钥
-
浏览器生成sessionKey,这个key今后会被用来用作对称加密,浏览器用证书中的公钥加密这个sessionKey并发送到服务器
-
服务器使用自身私钥解密出sessionKey
-
后续的传输只需要建立在http上,双方都使用这个sessionKey做对称加解密就能完成整个通信