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

时间:2011-01-20 18:46:36

标签: security cryptography

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

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

1 个答案:

答案 0 :(得分:13)

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

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

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

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

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

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

5 - 收件人获取消息。

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

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

a - 检查时间戳 - 时间戳的值必须在当前时间的可接受范围内。理想情况下,整个系统由时间戳服务器提供服务,该服务器定义“当前时间”的精确度。如果没有,系统会冒错误,如果收件人错误地判定邮件时间戳太旧(或尚未发生),则表示当前时间不匹配。

b - 检查现时 - 验证从此发件人之前从未收到过的nonce。由于散列对于消息内容是唯一的,因此该消息必须来自授权发件人,因为此消息未被重播。

8 - 收件人执行任何进一步的授权和访问控制检查。

重要的是:

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