在蓝牙核心文档中,有各种各样的关联模型,我试图理解数字比较,这两个设备都能够显示一个六位数的数字(我将称之为PIN,尽管他们显然不喜欢这个术语)。
v4.2第5.2.4.1节中的一段说:
数字比较有两个目的。首先,由于许多设备没有唯一的名称,因此它向用户提供正确的设备相互连接的确认。第二,数值比较提供了防止MITM攻击的措施。
我绝对理解用户确认部分,但是PIN如何帮助防范MitM呢?
我认为答案就在这一段:
在数字比较关联模型中,六位数是安全算法的一个工件,而不是它的输入,就像蓝牙安全模型中的情况一样。
但我不知道那是什么意思。
发布于 2017-02-23 21:45:40
这是为BT的前4.0:
这意味着在生成初始化键时,两个设备之间的会话不包含明文中的PIN,PIN用于这样的函数(伪代码):
GenerateKey(PIN, sizeof(PIN), RAND, D_ADDR)
其中:
RAND: A 128-bit ~random number generated by the device (by software).
D_ADDR: Device address, it is a unique 48 bit sequence. (IEEE).
它返回:
A 128 bit initialization key via shifting and xors (Linear feedback shift registers, the output is combined by a state machine)
两个设备都将共享此初始化密钥,并将其用作临时链接密钥,并且在交换成功后将被丢弃。
关于更多的技术细节,请查看这份报告课程的CSE446 (软件为嵌入式系统,华盛顿大学),它将从更高到更低的水平解释这一切。
https://security.stackexchange.com/questions/151918
复制相似问题