整体原理:
通讯双方在身份验证的基础上,协商出一次性的、随机的秘钥
身份验证: PKI公钥基础设施
协商、随机: TLS中间件生成一次性的、随机的秘钥,DH系列协议基于非对称加密技术协商出密钥
使用分组对称加密算法,基于有限长度的秘钥将任意长度的明文加密传输
AES算法, 密钥位数:16字节,24字节,32字节
分组工作模式
PKI身份验证
证书签发过程
- 服务方S向第三方机构CA提供其自己生成的公钥,用户信息给认证机构
- CA机构对用户信息取hash值, 然后用自己的私钥对hash值加密, 把机密后的信息和过期时间,CA机构的公钥,服务方S的公钥,CA机构信息等打包给服务方S
证书验签过程
- 客户端C向服务器S发送请求,S返回证书文件
- 客户端C把证书文件分为服务方S信息和CA机构密文
对于服务方S的信息,取hash值
对于CA机构密文,使用CA机构公钥进行解密,解密后也是一串数字
- 客户端C比较两串数字是否相等, 以及证书是否过期等
- 客户端会内置信任 CA 的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA 的证书,证书也会被判定非法。
HTTPS通信过程(简单版)
- 客户端C向服务端发送一个请求,服务端S反馈证书和公钥给客户端C
- 客户端对证书进行校验,确认服务端身份是否合法
- 校验成功后,客户端C生成一个随机串,然后使用服务端S的公钥进行加密,然后发送给服务器S
- 服务器S使用私钥进行解密,然后把解密后的数据作为密钥进行对称加密,与客户端进行通信
- 客户端也使用此随机生成的密钥进行对称加密与服务端通信。
RSA非对称加密
先生成公钥,再生成私钥
问题
为什么不一直使用非对称进行加密,而是在类似握手之后开始使用对称加密算法进行https通信:
非对称加密的消耗和所需的计算以及时间远比对称加密消耗要大,所以在握手和认证之后,服务器和客户端就开始按照约定的随机串,对后续的数据传输进行加密。
特点:
非对称加密相比对称加密更加安全
非对称加密算法对加密内容的长度有限制
CA数字证书作用之一是公钥分发
数字签名的签发过程是私钥加密,公钥解密
公钥加密,私钥解密, 私钥签名,公钥验签?
RSA 加密方案和 RSA 签名方案是不同的。既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。