HTTP
http是超文本传输协议,工作在tcp协议之上
HTTPS
https是安全的超文本传输协议
https由2部分组成 http协议+tls协议
TLS
tls是安全传输层协议,
要保证安全就要实现安全的5要素:
可用性 - 劫持
机密性 - 私钥加密,公钥解密
真实性 - 中间人
完整性 - hash校验
不可否认性 - 私钥签名,公钥验证签名
包括 密钥管理,密钥协商,加密管理,签名管理,认证管理
5步分2层实现:
握手协议和加密协议
TLS有4次握手,握手成功后,才可以利用握手协议协商好的密钥进行加密
密钥管理
用于分发公钥,保证公钥是可信任的
防止任何人都可以伪造公钥进行欺骗。
密钥协商/密钥交换
非对称密钥进行密钥管理和协商
确保加密密钥只有双方知道,这样信息只有双方可以加解密,即便信息被旁路,也无法解密获得明文。
加密管理
对称加密算法进行加密,因为非对称加密算法的加密效率不如对称加密算法。但是安全性好于对称加密算法。
对传输内容进行加密,只有双方可以解密,可以保证信息
机密性
签名管理
不可否认
私钥签名,公钥解密验证签名
认证管理
对传输信息进行哈希认证,任何人修改了信息,都会导致哈希不一致,破坏信息的完整性。如果哈希和内容一致,那么可以说内容没有被篡改过,可以保证完整性。同时校验过的信息也有一定的真实性
信息完整性、真实性
TLS的流程
TLS的初衷是一次一密,也就是交换一次数据,变一次密钥。
-
客户端发起请求 CLIENT HELLO
CLIENT HELLO 携带的信息应该包括如下:
版本 TLS1.0 TLS 1.1 支持的协议 RSA EC2 DH AES DES 3DES 随机数 压缩算法(可选) sessionId(重用加密密钥,在sessionId有效期内,都不需要重新生成加密密钥,直接使用上次协商好的)
-
服务器响应公钥 SERVER HELLO
SERVER HELLO携带的信息应该包括:
版本 TLS1.0 TLS1.1 从客户给的选项中选择的协议 RSA AES DES 3DES 服务器的证书(公钥) 随机数 压缩算法(可选)
-
客户端
验证服务器的证书是否有效,
客户端根据两个随机数生成加密密钥,
使用服务器的公钥将加密密钥加密,签名,hash,压缩发送给服务器 -
服务器用私钥解密得到机密密钥
服务器根据自己的私钥解密客户端发来的加密密钥,握手完成
HTTPS的流程
- tcp握手
- tls握手 得到加密密钥
- http报文交换 用上一步得到的加密密钥加密/解密
- tcp断开
相关概念
对称加密算法
加解密使用同一个密钥,通信双方使用1个密钥
AES
DES
3DES
RC4
非对称加密算法
加解密使用一对密钥,称为公钥和私钥,通信双方各一对密钥,a用b的公钥给发送给b的信息加密,a用a的私钥解密b发给a的信息。
公钥公开,私钥私有
公钥推导不出私钥
用公钥加密,私钥解密
私钥签名,公钥验证