SSL和HTTPS
SSL
SSL主要分为两层协议,,分别是SSL记录协议和SSL握手协议。
SSL记录协议
- 分块 将数据分为大小合适的块,大小不超过2^14字节
- 消息认证 使用HMAC生成消息摘要
- 加密 使用对称算法如AES加密数据和MAC
- 附加头部并发送
SSL握手协议
- 客户端发送ClientHello,包含SSL版本、加密算法、压缩算法等
- 服务器发送ServerHello,从客户端提供的信息中选择加密算法、压缩算法等,并发送自己的证书,可能要求客户端提供证书
- 通过如D-H算法生成共享密钥
- 身份验证
- 通知切换到加密通信,握手完成
SSL对应用层透明,可以在应用层之下使用
HTTPS
HTTP
全部由明文传输,很容易被截取并使用ARP攻击
HTTPS
流程
- 客户端发送一个请求
- 服务器返回数字证书以验证自己的身份
- 客户端验证证书。证书中包含了公钥,CA签发的签名,有效期等信息
- 客户端和服务器约定加密算法与对称密钥
- 双方使用对称密钥进行加密通信
HTTPS使用了SSL技术,CA技术,对称加密/非对称加密技术,散列函数等技术
优势
HTTPS并不能阻挡中间人获取信息,但是由于信息是加密的,即使获取了,中间人也不能读取内部信息。同时,由于证书由可靠的CA签发,ARP也不能伪造。