-
HTTP
HTTP 是应用层协议,用于web浏览器和网站服务器之间传递信息,该协议是明文发送不提供加密,所以如果攻击者截取了传输报文,就可以直接读懂其中的信息。
-
HTTPS
安全套接字超文本传输协议,在 HTTP 的基础上加入了SSL或TLS(靠整数验证服务器的身份,并为浏览器和服务器之间的通信加密)
HTTPS 涉及的加解密方式
- 1、对称加密
- 同一秘钥可以用作信息的加密和解密,也称为单秘钥加密;
- 常用的算法 DES, AES 等;
- 优点:算法公开、计算量小、加密速度快、加密效率高;
- 缺点:
- 数据传输前,双方需要约定好秘钥
- 如果一方的秘钥泄露,加密信息不再安全
- 同一服务对不同用户要使用唯一秘钥,造成秘钥数量巨大,管理负担
- 2、非对称加密
- 需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密;
- 常用的算法 RSA, Elgamal, 背包算法 (算法的实现尚未深入学习);
- 优点:
- 公钥是公开的,秘钥自己保存
- 不需要通信双方前同步秘钥
- 不需要针对不同用户使用不同秘钥,维护简单
- 缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密
HTTPS 为什么比 HTTP 安全?
HTTPS 会将 应用层 和 传输层 之间传输的数据进行加密;加密基础是 SSL, 加密相关的算法也在 SSL 层完成
网络传输协议划分
- 物理层:以太网,调制解调器,光纤等
- 数据链路层
- 网络层:IP等
- 传输层:TCP,UDP,SSL/TLS等
- 应用层:HTTP,SSH,DNS,FTP,SMTP,RPC等
HTTP 和 HTTPS 在网络传输中的差异
- 相同:在物理层,数据链路层,网络层,传输层 数据传输方式相同
- 差异:HTTPS 会将应用层的数据,使用 SSL 进行加密后传给传输层。
什么是 SSL
- SSL (security socket layer安全套接层),由 Netscape(网景) 公司研发,后使用 TLS 代替。
- SSL 加密的流程(一次 web 请求示例)
- 1、浏览器从服务器获取其公钥,协商加密算法等
- 2、双方协商生成对话秘钥(对称)
- 3、浏览器使用秘钥对传输的数据进行加密,然后数据经由传输层,网络层 ... 到达服务器
- 4、服务器使用秘钥将数据解密,并将响应的数据加密返回给浏览器
备注
- 非对称加解密比较耗时,因此实际传输中使用的是对称秘钥,而服务器的公钥和秘钥仅仅是用来生成数据传输使用的秘钥
- 加密操作发生在传输层和应用层,因此安全性主要体现在传输层以下网络传输层
- 为保证浏览器从服务器获取的公钥准确性,一般从第三方公证机构提供的 CA 证书中获取公钥