加密:验证签名时间戳

时间:2014-03-26 03:06:39

标签: cryptography pem

我正在基于私钥/公钥对信任编写对等网络协议。要验证和删除主机发送的消息,我使用时间戳验证。如果签名时间戳的增量(对于当前值)大于30秒左右,则主机不信任其他主机的消息。

我遇到了一个有趣的问题,即我的测试服务器和我的第二个客户端大约40秒不同步(通过更新ntp修复)。

我想知道可接受的时差是多少,以及是否有更好的方法可以防止重播攻击?据说我可以让一个客户端提供随机文本来散列和签名,但不幸的是,这不会起作用,因为在这种情况下我必须写一次消息。

1 个答案:

答案 0 :(得分:2)

  

如果签名时间戳的增量(到当前值)大于30秒左右,则主机不信任其他主机的消息。

基于时间是非常困难的。我无法告诉您移动设备遇到的问题,这些移动设备无法或无法将其时钟与网络同步。

基于计数器通常更容易,而不是自己的DoS。


  

我想知道可接受的时差是多少......

Microsoft的Active Directory使用5分钟。


  

如果有更好的方法可以阻止重播攻击

基于挑战/回应的计数器。


  

我可以让一个客户端提供随机文本来散列和签名,但不幸的是,这不会起作用,因为在这种情况下我必须写一次消息...

也许你可以使用{time,nonce}对。如果之前没有记录过nonce,那么如果它在时间增量内,则对该消息进行操作。然后保持窗口的消息({time,nonce})(5分钟?)。

如果您再次遇到相同的nonce,请不要采取行动。如果你遇到一个看不见的nonce但它超出了时间delta,那么就不要采取行动。偶尔清除你的nonce列表(每5分钟?)。


  

我正在编写基于对等网络协议的...

如果你环顾四周,那么你可能会在学术文献中找到一个协议。