- 为什么要用https?
HTTP使用明文传输,可以从中截断获取信息,安全性很低。
- 什么是https
HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。
即http层将数据给到ssl,ssl将数据加密后再给到tcp进行传输。
https保证:内容加密、身份认证和数据完整性。
- 加密算法
加密分为对称加密和非对称加密。
对称加密:加密数据和解密数据使用的密钥是一样的。
对称加密的优点在于加密、解密效率通常比较高。
缺点在于,数据发送方、数据接收方需要协商、共享同一把密钥,并确保密钥不泄露给其他人。此外,对于多个有数据交换需求的个体,两两之间需要分配并维护一把密钥,这个带来的成本基本是不可接受的。
非对称加密:加密数据用的密钥(公钥),跟解密数据用的密钥(私钥)是不一样的。
公钥:谁都可以看的到的公开的密钥。非对称加密因此也被称为公开密钥加密。
私钥:非公开的密钥。
通过公钥加密的数据只能通过私钥解开。通过私钥加密的数据,只能通过公钥解开。
由于公钥可以解开私钥,而公钥是公开的,因此非对称加密只能保证单向数据传输的安全性,即公钥加密,私钥解密。
这里就要涉及两个重要的概念:
证书:包含公钥、数字签名等。
在客户端发起SSL请求后,服务端会将数字证书发给客户端,客户端会对证书进行验证,并获取公钥。
CA:证书颁发机构。网站向CA提交申请,CA审核通过后,将证书颁发给网站,用户访问网站的时候,网站将证书交给用户。
- 整个HTTPS通信的过程如下:
握手阶段:
1.客户端发起ssl请求,告知服务器自己支持的加密算法
2.服务器返回证书与要使用的加密算法
3.客户端验证证书
4.客户端生成随机的对称密钥,使用公钥加密后发送到服务器
5.服务器使用私钥进行解密,得到对称密钥
这之后客户端和服务器端进行的通信都使用此对称密钥进行加密。
因此https在握手阶段使用非对称密钥,在数据传送阶段使用对称密钥。
若中间截取了https报文,但是没有密钥是无法解密的。