时间相关安全协议分析(时序性)
Time-Release
“向未来发送消息”。有两种方式实现Time-Release秘密:(1)基于计算困难问题,即需要一定的时间解密;(2)通过一个可信的第三方提供标准的时间参照,使得秘密只能在某个未来时间公开。
协议新鲜性的保证
我们通过以下三种方式保证协议的新鲜性来抵御重放攻击。
时间戳
发送者将当前时间加入到信息中,接收者收到后将其与本地时间进行比较,如果时间差在一定范围内则认为收到的消息是新鲜的。这种方式对时钟同步有较高的要求。
纳时
nonce就是一个新随机生成的一个值。协议一方生成一个纳时 n n n,然后将其作为一个挑战发给接收者,接收者收到后将一个合适的密码函数 f f f应用于该纳时,将结果 m = f ( n , . . . ) m=f(n,...) m=f(n,...)作为应答返回给发送者。发送者此时检查 m m m中的 n n n是否是作为挑战时的纳时 n n n,如果是的话,则说明 m m m一定是在 n n n之后生成的,从而保证了 m m m的新鲜性。但是这种方式增加了协议的交互次数,还要保证纳时生成的不可预测性。
计数器
发送者和接收者保持一个同步的计数器,每次发送信息时,将计数器一并发送并将其值加一。每个潜在对象都要保持相关的状态信息,当信道出问题时计数器管理也会出问题。同时,如果计数器不同步,就可能导致重放攻击。