单向身份验证时间戳和nonce是什么意思?

use*_*734 5 security cryptography

http://technet.microsoft.com/en-us/library/cc767123.aspx

在本文中,客户端会加密到目标的时间戳,nounce和目标标识.我无法理解这里的时间戳是什么,什么是nounce?

bet*_*hmi 13

timestamp和nonce都是防止中间人攻击身份验证机制的方法.它们的工作方式略有不同,但目的是相同的 - 提供一种加密内置于身份验证机制中的数据,这将使攻击者难以或不可能通过重播消息来攻击系统.典型的机制是通过数字签名进行认证.在任何一种情况下,这是步骤:

1 - 发送消息,将时间戳或随机数附加到消息

2 - 散列消息和时间戳或随机数

3 - 使用私钥加密哈希(即签名)

4 - 发送签名和消息以及nonce/timestamp

(这是攻击者掌握它的点.

5 - 收件人获取消息.

6 - 收件人检查签名是否与发送的数据匹配(重复步骤2,使用公钥解密签名,与哈希进行比较)

7 - 收件人检查时间戳或nonce:

a - 检查时间戳 - 时间戳的值必须在当前时间的可接受范围内.理想情况下,整个系统由时间戳服务器提供服务,该服务器定义"当前时间"的精确度.如果不是,则系统存在漏报,其中收件人错误地判定消息时间戳太旧(或尚未发生)对当前时间不匹配造成影响.

b - 检查nonce - 验证从此发送方之前从未收到过的nonce.由于散列对于消息的内容是唯一的,因此该消息必须来自授权发送者,因为该消息未被重放.

8 - 接收者执行任何进一步的授权和访问控制检查.

重要的是:

  • 时间戳或nonce必须是签名的一部分
  • 如果您担心在给定时间内重播,时间戳是好的,但它需要服务器之间的良好同步,并且它总是会假设一些错误的频率,因为可以在当前时间范围内发送许多消息 - 例如,如果时间戳直到第二个,然后可以在那一秒发送多个消息(包括重放).
  • nonce需要一定程度的持久性,因为它只有在保证和检查唯一性时才有效.此外,如果中间的人可以打断发送者,获取现时,并让发送者不发送,中间人的攻击仍然可以成功.

  • 很好的答案,但重播攻击不是中间人攻击. (2认同)