【问题标题】:How to protect a private message from Replay attack?如何保护私人消息免受重放攻击?
【发布时间】:2017-05-20 15:35:59
【问题描述】:

如果我使用私钥发送消息会怎样
我的消息是“今天是 7 点聚会”

魔鬼用签名复制了我的加密文本

几天后,魔鬼将消息发送给了我发送的同一个人。

消息没有改变,我的朋友在 7 点仍然收到了相同的消息,并且由我的私钥进行了数字签名。

我应该怎么做才能防止这种情况发生?

【问题讨论】:

  • 为什么要阻止这种情况?
  • 我想防止我的消息不应该再次发送。很明显,第二天我的伴侣将在 7 点等我而我没有给他发消息..跨度>
  • 您应该要求您的合作伙伴向您发送确认信息。虽然确认仍然可以被拦截。或者,您可以在消息中包含日期,或者一次性使用的密语。
  • @BilalRehman 您看到了什么问题?你认为攻击者通过再次发送消息获得了什么?有一些简单的方法可以击败重放攻击,例如消息计数器或时间戳。然后要求接收方检查它们。
  • @BilalRehman “实现的方法”是什么意思?您的问题不涉及任何编程语言或框架。

标签: encryption cryptography private-key


【解决方案1】:

重放攻击最常见的方法是添加一条不属于消息的额外唯一信息。这是一个常见的解决方案:

  • 向消息添加时间戳和随机值。
  • 如果邮件超过某个时间(一分钟、一小时、一天,具体取决于邮件的传递方式),则会生成“邮件太旧”错误
  • 如果消息在该时间范围内,请确保您以前从未见过该随机值。如果你有,那么它是重复的,可以简单地忽略。

通过添加时间戳,您可以确定您必须在多长时间内跟踪“您之前看到的内容”。

另一种通用方法是使所有消息具有幂等性。这意味着多次应用相同的消息是没有问题的。像 git 这样的系统具有这种品质。构建幂等系统有些棘手,并且对于所有问题都不容易实现,但在可能的情况下是一个强大的解决方案。使某事物具有幂等性的一个例子是说“在这个时间点,X 的值是 Y”。您可以重复应用该消息而不会导致任何问题(因为它以完全相同的方式更新同一记录,或者因为您忽略了所有早于您拥有的最新值的时间点)。

解决重放攻击问题恰好也解决了其他几个问题,这很好。消息传递系统面临一个基本问题,即不能保证消息只传递一次。您最多可以保证一次,或至少一次,但不能完全保证一次。 (研究Two Generals' Problem 以获得一种常见的思考方式。有争议的是,您实际上不能承诺“至少一次”,因为系统可能永远不会连接,但我们通常会忽略这种极端情况)。幂等系统非常好,因为它们高度容忍“至少一次”解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2011-01-07
    • 2020-05-12
    • 2016-10-28
    • 2011-05-14
    相关资源
    最近更新 更多