【问题标题】:Java SSLSockets and repetition attackJava SSLSockets 和重复攻击
【发布时间】:2014-12-08 13:18:15
【问题描述】:

我目前正在为一个学校项目开发 Java 服务器平台。我正在使用 SSL TCP 套接字进行通信,并且我正处于开发客户端和服务器之间的 JSon 协议的阶段。

我的问题是协议中的消息是否应该包含唯一 ID,或者是否使用 SSL TCP 套接字是否足以避免重复攻击。

【问题讨论】:

  • “如果 SSL 受到威胁,您应该”采取更多措施来保护通信安全吗?这是一个需求问题。你的偏执和保密程度如何?此外,“重放攻击”是比“重复”更常见的术语,您可以通过谷歌搜索来了解更多信息。 (此外,在不知道您打算如何处理的情况下,“添加唯一 ID”并没有多大意义……!)

标签: java sockets ssl tcp


【解决方案1】:

没有。 SSL 不受重放攻击的影响

【讨论】:

    【解决方案2】:

    我相信您指的是replay attacks,这可能取决于您的协议的实现。

    如果你收到两次相同的消息,你会如何处理?

    假设 Bob 向您发送了一条有效、合法的消息。您以有效、合法的回应作出回应。 SSL 在整个对话过程中保护通道,因此任何人都无法窃听网络流量并查看原始请求和/或响应。

    现在想象一下,我攻破了 Bob 的网络并获得了一份加密流量的副本。如果我重新发送加密消息,会发生什么? SSL 可能会在以后保护我,因为 SSL 会话将不再有效。

    但是,如果我在 SSL 会话到期之前立即重新发送消息怎么办?那你会易感吗?

    或者你的协议的一部分是否发布了一个我可以得到的令牌(可能通过肩上冲浪或感染 Bob 的计算机)?我能否再次使用该令牌,可能来自其他地方,并假装我是 Bob?那你的曝光率是多少?

    您只需浏览您的特定案例中的场景并检查它发生的风险以及保护它的努力。

    通常,SSL 保护通道(传输中的数据),但您必须将协议设计为最终安全。在协议中包含一个随机令牌(并确保它存在)是一种防止各种不同攻击(包括重放攻击)的简单方法(想想CSRF 令牌)。

    【讨论】:

    • 这根本不是一个答案,主要是问题,但最后的最终断言是不正确的。您不必针对 SSL 重放设计您的协议。
    • 仅仅因为你的传输不容易受到重放攻击并不意味着你的协议不是。这完全取决于您的消息可以注入或重放的位置。
    猜你喜欢
    • 2014-03-25
    • 2013-02-14
    • 2022-01-24
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    相关资源
    最近更新 更多