关于RFID协议HB(不是HB +),我很难理解为什么我的方法不起作用。
所以在HB中我们有Tag和Reader,他们都共享一个秘密X.
我们正试图找出X.
协议如下:
假设k = 3位。 从我看过的论文看来,攻击似乎如下。 设置a = 001并发送1000次 设置a = 010并发送1000次 设置a = 100并发送1000次
取每个显示x的大多数时间出现的奇偶校验。
这对我来说很有意义并且运作良好。
我的问题是,为什么我不能简单地将a设置为001.因为a = 001,当它与x进行ANDED时,它将始终产生x,然后与v形成XOR。结果Z将始终为x或者它将x XOR与1.然后我们只取大部分时间发生的输出,因为v = 1<的概率是x。 0.5
我觉得我只需要运行10次而不是每次运行多次。
我错过了一个重要的方面。
由于
答案 0 :(得分:1)
为什么我不能简单地将 设置为' 001'
x 和 a 的长度为 k ,所以
x = { x k -1 ,..., x 0 }
a = { a k -1 ,..., a 0 }
如果, k = 3,这将是
x = { x 2 , x 1 , x 0 }
a = { a 2 , a 1 , a 0 }
即。 x 和 a 将是' 000' 001'' 010',&# 39; 011',' 100',' 101',' 110',或' 111'。
标量产品 x • a 导致
x • a =( x 2 AND a 2 )XOR( x 1 AND a 1 )XOR( x 0 AND a 0 )
因此使用 a =' 001'结果
z = x •' 001' =( x 2 AND' 0')XOR( x 1 AND&#39 ; 0')XOR( x 0 AND' 1')= x 0
所以你不会得到 x 的剩余数字(即 x 2 和 x 1 )在这种情况下。同样,如果您使用具有多个位设置的 a ,例如 a =' 111',你会得到
z = x •' 111' =( x 2 AND' 1')XOR( x 1 AND&#39 ; 1')XOR( x 0 AND' 1')= x 2 XOR x 1 XOR x 0
因此可以删除 x 的数字。因此,您需要使用 a =' 001', a =' 010'和 a执行协议 =' 100'为了获得 x 的每个数字。
我觉得我只需要运行10次而不是每次运行多次。
好吧,对于每一轮,你都会得到一个概率 v 的正确结果。所以期望值是
E [X] = v ,如果正确的数字是' 1',并且
E [X] = 1 - v ,如果正确的数字是' 0'。
因此,对于' 1'所有轮次(即您采取的每个样本)的平均值将近似 v 。对于' 0' 近似 1 - v 对于无限轮数。但这并不一定意味着您已经在1轮或10轮后达到了这个预期值。但是,每一轮都会增加获得预期值的信心。