首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于重放攻击的时间戳、序列号和非for

用于重放攻击的时间戳、序列号和非for
EN

Cryptography用户
提问于 2019-04-13 07:13:24
回答 1查看 1.8K关注 0票数 3

在简单的服务器客户端设置(最好是服务器处于无状态状态)中,防止重放攻击的最佳实践或标准化方法是什么?

什么时候应该使用时间戳、序列号和非the,它们之间的主要目的/区别是什么?

EN

回答 1

Cryptography用户

发布于 2019-04-13 14:32:22

AEAD构造加密消息并附加身份验证标记。该身份验证标记是使用以下数据计算的:

  • 秘密钥匙
  • 王者
  • 加密之前或之后的消息
  • 或者,一些额外的数据

在解密过程中,使用相同的数据计算身份验证标记,并与附加到密文的验证标记进行比较。

为了防止重放攻击,接收方必须隐式地知道这些参数之一。

确保这一点的一种简单方法是将初始的nonce设置为给定的值,并在每条消息之后增加它。

发起人只发送初始化向量。单个消息不包含用于加密它们的not副本。它们不必这样做,因为接收方可以执行与发送方相同的操作,即在接收到的每条加密消息之后增加nonce,以便解密流。

如果正在解密的流与原始流不匹配,因为消息已被更改、删除、添加、复制或重新排序,则身份验证标记将不匹配由接收方使用预期的nonce计算的标记。将通过验证标记立即检测到此问题。

当使用像UDP这样的传输协议时,加密的消息不能按顺序接收。一些数据报也可能丢失或复制。应用程序必须重新排序并处理重传。

在这种情况下,可以向每条加密消息中添加一个nonce的副本,或者表示与初始nonce之间的差异的值。由于除了密钥之外,消息是使用唯一的当前加密和身份验证的,因此解密过程将立即检测到其附加的当前已被篡改的加密消息。

现在,如果服务器是“无状态的”,就没有办法确保以前没有收到过消息。但是,仍然可以检查接收到的消息是否太旧(“太老”的定义是特定于应用程序的)。

将时间戳附加到消息或密文上。如果它被附加到密文,包括它是额外的数据,所以它将是标签计算的一部分。

然后,接收方可以检查时间戳是否未被篡改,并且它是否比预期的更早。

这需要同步时钟,并且再次只提供部分保护,防止重播攻击。

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/68750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档