代码之家  ›  专栏  ›  技术社区  ›  Kraken

HTTPS/TLS/SSL如何防止会话劫持?[副本]

  •  -1
  • Kraken  · 技术社区  · 2 年前

    我一直在读( how do https prevent session hijacking )它说劫持者只会看到加密的数据,而不会看到纯文本,因此他们不可能劫持会话。

    但是,考虑到实际用户也在发送加密数据,这难道不是劫持者所需要的全部吗?因此,劫持者可以看到加密数据的事实仍然存在问题,足以真正劫持会话并模仿成不同的用户吗?

    我不确定TLS/SSL是如何防止这种情况发生的。

    假设客户端发送cookie值“ABC”,该值是服务器在成功身份验证时生成的。现在,客户端不会发送ABC,而是发送“XYZ”(加密后)。现在,劫持者将看到XYZ,它也可以发送XYZ,然后服务器将解密它,并假设劫持者是实际的客户端。

    我在这里做错了什么?

    1 回复  |  直到 2 年前
        1
  •  0
  •   freakish    2 年前

    加密通信通常或多或少是这样工作的:

    1. 客户端和服务器就初始密钥K达成一致。
    2. 客户端发送用K加密的消息M1。
    3. 客户端通常从(M1,K)对导出新密钥K2,即从先前的消息和密钥导出。
    4. 客户端发送用K2加密的消息M2, 等等

    另一方面,服务器当然反映了这一点。这样我们就可以防止重播。您不能只选择一条用K加密的消息M1并再次发送,因为服务器已经期望下一条消息用K2加密。当然,关键是要以这样一种方式构建协议,即中间的人不能仅仅通过查看加密消息来导出K2。

    更不用说,仅仅通过查看加密流,你甚至无法判断哪一块是cookie。