面试官告诉我Https建立链接的过程
知识准备:非对称加密和对称加密的使用
非对称加密
非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
目前最常用的非对称加密算法是RSA算法。
对称加密
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。但是密钥的长度也不能太小,太小反而也容易被破解。
des对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码)。
建立连接过程
第一步:客户端向服务端发送支持TLS版本和加密套件和随机数1,服务端接收之后,此时双方都知道随机数1的存在
第二步:服务端向客户端发送TLS版本和加密套件和随机数2,之后接着发送申请的数字证书和公钥 此时服务端和客户端都知道了随机数2
第三步:客户端生成随机数3,用第二步服务端发送的RSA的公钥进行加密,发送给服务端,服务端用RSA的密钥解密后获得随机数3,此时双方都知道了随机数3,且随机数3不被外界知道,
非对称加密到这就结束了
接下来服务端和客户端分别使用随机数1和随机数2和随机数3按一定规则生成相同的会话密钥,,之后双方通信就可以直接使用对称加密的方法进行通信了。