https是http协议的安全版本,在HTTP和TCP层中加入了SSL层.https之所以是安全的,就依赖于SSL.本文对https中的重要部分进行详细分析.
目录
- 对称加密
- 非对称加密
- 摘要算法
- 数字签名
- 数字证书
- https连接过程
- SSL/TLS握手过程
对称加密
对称加密:加密和解密过程采用相同的密钥进行加密的加密算法.
- 常用的对称加密算法有AES,DES等.
- 在https协议中,对称加密用来对传输的报文进行加密.
非对称加密
非对称加密:加密和解密过程采用不同密钥进行加密的加密算法.
- 常用的非对称加密有RSA加密.
- 非对称加密的密钥包含公钥和私钥,公钥对外暴露,私钥为自己私有不对外暴露.通常采用公钥(私钥)加密,私钥(公钥)解密.
- 非对称加密对加密内容的长度有限制,且非对称加密对资源的消耗较大.
- 在https协议中,非对称加密用来对"会话密钥"进行加密;对摘要信息进行加密.
数字摘要
摘要算法:采用单项Hash函数将待摘要的内容摘要成一段固定长度的密文,通常是128位.不同内容的的明文摘要后得到的密文必定不相同,而相同的内容经摘要后的密文必定相同.
常见的摘要算法有Base64,SHA256.
在https中,摘要算法能够保证报文的完整性和防篡改.
数字签名
将待签名内容用Hash算法得到内容摘要,将内容摘要用发送者的私钥进行非对称加密,两者所组成的报文成为"数字签名".
数字签名是对摘要算法和非对称加密两项技术的应用.
数字证书
数字证书一般由CA机构颁发.其生成过程如下:
- 用户通过非对称加密生成公钥和私钥,然后将公钥和用户身份信息发送给CA机构.
- CA机构核实用户的身份信息之后,对用户公钥等信息进行摘要,然后用CA的私钥对摘要进行加密,得到证书的数字签名.
- CA将用户私钥,证书的数字签名等组成数字证书后颁发给用户.
数字证书包含以下内容:
- 证书颁发机构的名称:CA的名称.
- 证书的数字签名:用来检验证书内容是否被篡改.
- 证书持有者的公钥:即服务端所用公钥
- 证书所用到的Hash算法:客户端对证书合法性校验时需要用到
数字证书合法性校验:
- 客户端获得证书后,用CA机构的公钥,对数字签名解密后得到证书的摘要信息.
- 将证书持有者的个人信息进行摘要后,对比步骤1中CA所生成的摘要,两者一致,则证书未被篡改.
- 对证书的过期时间等校验.
https的连接过程
1.客户端向服务器发送https请求.
2.服务器将数字证书传送给客户端.
3.客户端对证书的有效性进行校验,校验成功后,生成随机数(AES key),并将此随机数用服务器的公钥进行加密后传送给服务器,作为后续数据传输时,对报文进行对称加密的密钥.
4.服务端接收客户端传输的内容,用服务器的私钥对其解密后,得到客户端传过来的随机数.
5.服务器将数据用此随机数经过对称加密后,传送给客户端.
6.客户端获得加密后的报文,用步骤4产生的随机数进行解密,得到服务器传回的数据.至此,一次https请求结束.
补充说明:
1.在https协议中,非对称加密用于握手阶段,对会话密钥进行加密;对称加密则用来对报文进行加密.
2.采用此加密策略的原因是:非对称加密安全系数高,但非常消耗资源,且对加密的内容长度有限制.
欢迎转载,欢迎指正~