浅析https
什么是https
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
HTTPS 并非是应用层的一种新协议。只是HTTP通信接口部分用SSL和TLS协议代替而已。HTTPS本质就是身披SSL协议这层外壳的HTTP。
http 与 https的区别
- https需要到CA申请证书。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http默认使用80端口,https默认使用443端口。
对称加密与非对称加密
对称加密:对称加密又称为私钥加密,即信息的发送方与接收方使用同一个密钥去加密与解密数据。对称加密的特点是速度快,常用的对称加密算法是DES。
非对称加密:非对称加密使用一对密钥,公钥与私钥,私钥被自己保存,而公钥可以被任何人获取,加密的过程就是使用公钥加密,私钥解密。特点是相对对称加密比较安全(私钥自己保存),常用的非对称加密算法有RSA。
HTTPS采用混合加密机制
HTTPS采用共享秘钥加密和公开秘钥加密两者并用的混合加密机制。若秘钥能够安全交换,那么有可能会考虑仅使用公开密钥加密方式来通信,但是非对称方式相比对称加密,其速度会更慢。
https请求过程分析
https在传输过程中会涉及到3个密钥,服务器的公钥和私钥-非对称加密。客户端生成的随机密钥-进行对称加密。
- 客户端向服务器发起https请求,连接到服务器443端口。
- 服务端向客户方下发自己的公钥(实际上是证书)。
- 客户端收到公钥之后,开始通过CA机构验证公钥的合法性。验证通过之后,客户端生成自己的密钥,通过刚刚下发的公钥对此密钥加密,然后发送给服务端。
- 服务端接受到之后,用自己的私钥进行解密得到客户端的密钥。
- 客户端与服务端使用上一步生成的密钥开始进行对称加密通信。
客户端如何辨别服务端下发的公钥是服务端的?
在https中,使用证书+数字签名来解决该问题。
数字证书= 网站信息 + 数字签名
如何保证公钥不被篡改?
将公钥放在数字证书当中,只要证书是可信的,公钥就是可信的。
历史
- 1994年,NetScape公司设计了SSL(Secure Sockets Layer)的1.0版,但是未发布。
- 1995年,NetScape公司发布了2.0版,很快发现有严重漏洞。
- 1996年,SSL 3.0版问世,得到大规模的应用。
- 1999年,互联网标准化组织ISOC接替NetScape公司,对SSL标准化,发布了SSL升级版本TLS 1.0版本。
- 2006年和20008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年的TLS 1.2的修订版。
- 2018年,发布了TLS 1.3。