HTTPS过程
TLDR:使用非对称加密传输一个对称密钥K,让服务器和客户端都得知。然后两边都使用这个对称密钥K来加密解密收发数据。因为传输密钥K是用非对称加密方式,很难破解比较安全。而具体传输数据则是用对称加密方式,加快传输速度。两全其美。
HTTPS
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
完整HTTPS请求过程:
- 浏览器请求一个url,找到服务器,向服务器发起一个HTTPS请求。
- 服务器将自己的证书(包含服务器公钥S_PuKey)、对称加密算法种类及其他相关信息返回客户端。
- 浏览器检查CA证书是不是由可以信赖的CA机构颁发的,确认证书有效和此证书是此网站的。如果不是,给客户端发一个警告,询问是否继续访问。
- 如果是,客户端使用公钥加密了一个随机对称密钥,包括加密的URL一起发送到服务器
- 服务器用自己的私匙解密了你发送的钥匙。然后用这把对称加密的钥匙给你请求的URL链接解密。
- 服务器用你发的对称钥匙给你请求的网页加密。你也有相同的钥匙就可以解密发回来的网页了。
顺便补一下数字签名:加了密的校验和
- 证明是原作者,只有原作者可以私钥来进行加密
- 证明没有篡改,中途篡改校验和就不再匹配
校验和使用摘要算法生成,比如 MD5,SHA
TLS
TLS就是从SSL发展而来的,只是SSL发展到3.0版本后改成了TLS。TLS主要提供三个基本服务:
- 加密
- 身份验证,也可以叫证书验证
- 消息完整性校验
TLS协议是基于TCP协议之上的,图中第一个蓝色往返是TCP的握手过程,之后两次橙色的往返,我们可以叫做TLS的握手。握手过程如下:
- Client1:TLS版本号+所支持加密套件列表+希望使用的TLS选项
- Server1:选择一个客户端的加密套件+自己的公钥+自己的证书+希望使用的TLS选项+(要求客户端证书);
- Client2:(自己的证书)+使用服务器公钥和协商的加密套件加密一个对称秘钥(自己生成的一个随机值);
- Server2:使用私钥解密出对称秘钥(随机值)后,发送加密的Finish消息,表明完成握手
- 先看蓝色的部分,可以看出来,这是tcp链接。所以https的加密层也是在tcp之上的。
- 客户端首先发起clientHello消息。包含一个客户端随机生成的random1 数字,客户端支持的加密算法,以及SSL信息。
- 服务器收到客户端的clientHello消息以后,取出客户端法发来的random1数字,并且取出客户端发来的支持的加密算法,
- 然后选出一个加密算法,并生成一个随机数random2,发送给客户端serverhello
- 让客户端对服务器进行身份校验,服务端通过将自己的公钥通过数字证书的方式发送给客户端
- 客户端收到服务端传来的证书后,先从 CA 验证该证书的合法性,验证通过后取出证书中的服务端公钥,再生成一个随机数 Random3,再用服务端公钥非对称加密 Random3 生成 PreMaster Key。并将PreMaster Key发送到服务端,服务端通过私钥将PreMaster Key解密获取到Random3,此时客户端和服务器都持有三个随机数Random1 Random2 Random3,双方在通过这三个随即书生成一个对称加密的密钥.双方根据这三个随即数经过相同的算法生成一个密钥,而以后应用层传输的数据都使用这套密钥进行加密.
- Change Cipher Spec:告诉客户端以后的通讯都使用这一套密钥来进行.
常见加密算法
-
非对称加密算法(公钥加密)
有RSA、DSA/DSS、Elgamal、Rabin、D-H、ECC等。在客户端与服务器相互验证的过程中用的就是非对称加密算法。RSA密码体制就是公钥密码体制,RSA的一对公钥和私钥都可以用来加密和解密。比如公钥加密后只能由私钥解密;私钥加密后只能由公钥解密。且一方加密的内容只能由对方进行解密。 -
对称加密算法(私钥加密)
有AES、DES、3DES、TDEA、Blowfish、RC4、RC5、IDEA等。加密使用的密钥和解密使用的密钥是同一个密钥。由于加密算法是公开的,若要保证安全性,密钥不能对外公开。通常用来加密消息体。
References:
https://juejin.cn/post/6844903522333376525
https://blog.csdn.net/xiaoming100001/article/details/81109617
https://segmentfault.com/a/1190000019976390
https://www.jianshu.com/p/918d9f517749
https://zhuanlan.zhihu.com/p/34732244
https://juejin.cn/post/6844903545272041479
https://zhuanlan.zhihu.com/p/43789231