浅谈 HTTP 和 HTTPS

  • 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 证书中获取公钥

你可能感兴趣的:(浅谈 HTTP 和 HTTPS)