admin 管理员组

文章数量: 886992

图解HTTP

文章目录

  • HTTPS
    • HTTP的缺点(明文传输、不验证身份、无法证明明文完整)
      • 1、使用明文可能会被窃听
      • 2、加密处理防止被窃听
        • 通信的加密
        • SSL建立安全通信过程
        • 内容的加密
      • 不验证通信方身份就可能遭遇伪装
        • 查明对手的证书(通过SSL可确认通信方身份)
      • 无法证明报文完整性,可能已经遭到篡改
        • 如何防止篡改
    • HTTP+加密+认证+完整性保护=HTTPS
      • HTTPS是身披SSL外壳的HTTP
      • 相互交换密钥的刚开密钥加密技术
        • 共享密钥加密的困境(对称加密技术)
        • 非对称加密
        • HTTPS使用混合加密机制
      • 证明公开密钥正确性的证书
  • 确定访问用户身份
    • BASIC认证步骤
    • DIGEST认证
    • SSL客户端认证

HTTPS

HTTP的缺点(明文传输、不验证身份、无法证明明文完整)

  • 1、通信使用明文(不加密),内容可能会被窃听。
  • 2、不验证通信方的身份,因此有可能遭遇伪装
  • 3、无法证明报文的完整性,所以有可能已遭篡改。

1、使用明文可能会被窃听

由于HTTP本身不具备加密的功能,所以无法做到对通信整体进行加密,即HTTP使用明文进行传输数据。

为什么可能会被窃听:

  • 因为按照TCP/IP协议的工作机制,通信内容在所有的通信线路上都有可能遭到窥窃。

即使被加密处理的通信,也会被窥窃到通讯内容。只是说通信经过加密,让对方无法理解报文信息含义。但是加密的报文信息本身还是会被看到的。

通过抓包工具WireShark就可以进行抓包,获得HTTP协议的请求和响应的内容,并对其进行解析。

2、加密处理防止被窃听

通信的加密

HTTP没有加密机制,但是可以通过和SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全传输协议)的组合使用,加密HTTP的通信内容。

用SSL建立安全通信线路之后。就可以在这这条线路上进行HTTP通信,
与SSL组合使用HTTP被称为HTTPS(超文本传输安全协议)或者HTTP Over SSL

SSL建立安全通信过程

视频地址
SSL建立通信连接的过程:

  • 在建立好连接之后,权威机构颁发的数字证书可用来证明一个公钥和实体的绑定。
    比如客户端在收到服务端发来的证书之后,就可以知道现在和自己通信的不是别人,就是目标服务器A,客户端随后从证书中提取出a的公钥,并随机生成一个通信主密钥MS,然后用A的公钥对其进行加密之后传送给A,然后A用自己的私钥对其进行解密,随后主密钥的分发就完成了。现在A和B都掌握了除了他们,没有其他人能掌握的秘密信息
内容的加密

客户端需要对HTTP报文进行加密处理之后再发送请求。

该方式不同于SSL或者TLS将整个线路加密处理,所以内容仍然有被篡改的风险。

不验证通信方身份就可能遭遇伪装

在HTTP中,由于不存在确认通信方的处理步骤,任何人都可以发起请求。不管是谁都会返回一个响应。

查明对手的证书(通过SSL可确认通信方身份)

SSL不仅提供了加密处理,而且还提供了一种被称为证书的手段,可用于确定通信方。

证书由第三方机构颁发,用来证明服务器和客户端是实际存在的。所以只要能确定通信方持有的证书,就可以判断通信方的真实意图。

无法证明报文完整性,可能已经遭到篡改

所谓完整性指的是信息的准确度,如果无法证明其完整性,那么就无法判断信息是否正确。

如何防止篡改

常用的方法有MD5、SHA-1等散列值校验的方法。

HTTP+加密+认证+完整性保护=HTTPS

HTTPS是身披SSL外壳的HTTP

通常HTTP直接和TCP通信,当使用SSL的时候,则演变成先和SSL通信,再由SSL和TCP通信。

在使用SSL之后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。

相互交换密钥的刚开密钥加密技术

SSL使用的是公开密钥加密的加密处理方式(非对称加密)

共享密钥加密的困境(对称加密技术)

公钥可能会被窃听到

非对称加密

两把钥匙

  • 一把私有密钥
  • 一把公开密钥

私有密钥不能让其他人知道,公开密钥可以随意发布。

使用非对称加密的方式,发送秘文的一方使用对方的公开密钥进行加密,对方收到之后再使用自己的私有密钥进行接密,利用这种方式,不需要发送用来解密的私有密钥。

HTTPS使用混合加密机制

因为非对称加密恢复到原文比较复杂。所以在交换密钥阶段使用公开密钥加密方式即非对称加密,之后建立通信交换报文阶段则使用对称加密方式。

证明公开密钥正确性的证书

可以使用数字证书认证机构(CA)和其相关机关颁发的公开密钥证书。

确定访问用户身份

核对信息通常有以下方式:

  • 密码:只有本人知道的字符串信息
  • 动态令牌:仅限本人持有的设备内显示的一次性密码
  • 数字证书:仅限本人持有的信息
  • 生物认证:指纹和虹膜等本人的生理信息
  • IC卡等:仅限本人持有的信息

BASIC认证步骤

  • 1、发送请求
  • 2、返回401状态码告诉客户端需要认证
  • 3、客户端把用户ID和密码以Base64编码之后发送过去
  • 4、认证成功返回200,否则返回401

BASIC使用Base64编码,如果窃听之后解码就是账号和密码。所以被盗的可能性也很高。

DIGEST认证

  • 1、发送请求
  • 2、发送临时的质询码(随机数,nonce)以及告知需要认证的状态码401
  • 3、发送摘要以及由质询码计算出的响应码
  • 4、认证成功返回状态码200,失败则再次发送状态码401

SSL客户端认证

  • 1、接收到需要认证资源的请求,服务器会发送Certificate Request报文。要求客户端提供客户端证书
  • 2、客户端选择将发送的客户端证书之后,客户端会把客户端证书信息以Client Certificate报文方式发送给服务器。
  • 3、服务器验证客户端证书验证通过之后方可领取证书内客户端的公开密钥,然后开始HTTPS加密通信。

本文标签: 图解http