https 加解密的一些理解

客户端与服务端之间的通信为了保证通信过程安全一般会使用 https 传输数据,https 里既有用到非对称加密,也有用到对称加密。

具体来说,客户端与服务端协商用什么加密算法的过程是非对称加密的,在协商完成之后,它们之间传输的数据是用对称加密的。

协商过程

  1. 客户端连上服务端
  2. 服务端发送 CA 证书给客户端
  3. 客户端验证该证书的可靠性
  4. 客户端从 CA 证书中取出公钥
  5. 客户端生成一个随机密钥 k,并用这个公钥加密得到 k’
  6. 客户端把 k’ 发送给服务端
  7. 服务端收到 k’ 后用自己的私钥解密得到 k
  8. 此时双方都得到了密钥 k,协商完成。

解释几个概念:

公钥,私钥:在非对称加密算法中,私钥只会自己持有,公钥可以公开给其他人,公钥加密,私钥能够解密,因为私钥只有自己持有,所以其他人无法解密。也可以用私钥加密,任何持有该公钥的人都可以解密,私钥加密的应用场景是确保信息的来源是你,没有被篡改,因为只有你才持有私钥。

ca证书:这是服务端拿着自己的公钥到去CA那申请的,CA会用自己的私钥给公钥加密,证书上的信息有:服务器端加密后的公钥、服务器的域名等相关信息以及形成摘要算法(MD5,SHA-1等),把这些信息通过证书上指定的摘要算法生成一个摘要,这个摘要再进行CA私钥的加密得到密文(就是我们常说的签名),生成的密文也放在证书里。

根证书:存在于客户端,它含有CA的公钥,用于验证CA证书的真伪。客户端收到服务端的CA证书后,首先用根证书里CA公钥,解密CA证书里解密的摘要,得到明文摘要,然后再根据CA证书里提到的生成摘要的算法,用摘要算法对证书内容生成摘要。然后比对之前解密后的摘要是否相同,相同则验证通过。

再概括一下这个过程:

服务端将自己的CA证书发送给客户端,客户端用存在自己本地的根证书进行验证,验证过程就是上面斜体加粗部分。验证通过后可以拿到服务端公钥。然后客户端生成一个随机密钥,通过服务端公钥加密后发给服务端,服务端解密后得到密钥。之后服务端与客户端就用这个密钥进行对称加密传输数据。

文章目录
  1. 1. 协商过程
|