如何保护私人消息免受重播攻击?

时间:2017-05-20 15:36:00

标签: encryption cryptography private-key

如果我发送带私钥的邮件,该怎么办? 我的信息是“今天是7人聚会”

Devil使用签名

复制了我的加密文本

几天之后,恶魔将信息发送给我发送的同一个人。

邮件没有更改,我的朋友在7时仍然收到了同一个聚会消息,并且是通过我的私钥进行数字签名。

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

1 个答案:

答案 0 :(得分:2)

重播攻击通常是通过添加一条不属于邮件的额外信息来阻止的。这是一个常见的解决方案:

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

通过添加时间戳,您可以约束您需要多长时间跟踪您之前见过的内容。"

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

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