《信息安全工程》这本书里提到的一个协议,怎样攻击

把这个问题搁置了很久,主要是卡在对开锁条件的理解上。今天感谢匿名用户的回答,让我又重新读了一遍描述,整理出了一个思路。
正常情况是没问题的,锁只有当接收到小于等于16+当前nonce值的时候才会开。
关键在于,这句中的open on a second press上。
To cope with cases where the token has been used more than sixteen times elsewhere (or gnawed by a family pet), the lock will open on a second press provided that the counter value has been incremented between 17 and 32,767 times
一开始想岔了,把press理解为第二段刻印之类的东西(我以为计数器有两段),其实,这个词在这里仍旧是“按压”的意思。
这句话是说:
为了应对当令牌(token)在其他地方被使用了16次以上的情况(或者钥匙被宠物啃了的情况),这个锁会在第二次按钥匙的时候被打开,只要计数器值是从上次开锁时的数值被增加了17至32767次的结果。
换句话说,如果我得到一个token 《信息安全工程》这本书里提到的一个协议,怎样攻击
,其内部被加密的counter值N‘是正好是上次counter值N加上17至32767中的任何一个数,那么当我把t发送给锁之后,只要再按一次钥匙,锁就会开!这里的攻击方式应该就是重放攻击(replay attack)
结合后文说到的六个数和计数器的表数范围再次考虑。
0, 1, 20000, 20001, 40000 40001
表示为以a为上界,b为下界的区间。
设i为上述六数字之一,a= (i-17) mod 65536, b=(i-32767) mod 65536,依次计算得到可以用重放攻击攻破的、上次正确的N值范围:
, ,
, , (注)
,
以上区间覆盖了整个N的范围0-65535。所以这时候,只要攻击者重发这几个token,就有
... a thief who can get six well-chosen access codes — say for values 0, 1, 20,000, 20,001, 40,000 and 40,001 — can break the system completely.
注:
由于模运算表示的实际上是 【《信息安全工程》这本书里提到的一个协议,怎样攻击】 《信息安全工程》这本书里提到的一个协议,怎样攻击


■网友
我感觉跟对称加密方案有关,如果是分组加密,也许能拿到初始向量。密码学里面有个概念,叫选择明文攻击,也即敌手只有加密能力。一般的对称密码方案都只有这种安全性。如果拿到题主所说的明密文对,理论上确实可以攻破该密码方案。因为没具体看索引章节,论述仅供参考。望提供一个分析方向。


    推荐阅读