1 encryption connection ltk bluetooth-lowenergy
我正在通过Android和Sensor之间的BLE连接进行渗透测试,尝试解密Wireshark .pcap文件时遇到问题,因为我不太确定LTK的形成方式。
屏幕快照中有[Encryption_Req]和[Encryption_Rsp]数据包,关于我使用带有嗅探器的Texas Instruments加密狗得到的信息。
我认为LTK是与[SKDm&SKDs]或[SKDs&SKDm]匹配而形成的。
这意味着:BE952D3D760331A834CC6A4274417E48(SKDm-> SKDs)
或:A834CC6A4274417E48BE952D3D760331(SKD-> SKDm)
我不确定这是正确的还是缺少什么。
LTK是存储在设备中的长期密钥,在绑定后可以交换。在传统配对中,从设备仅选择一个随机LTK并将其发送给主设备。在LE Secure Connections中,LTK来自diffie hellman交换。
LL_ENC_REQ和LL_ENC_RSP数据包包含“会话密钥分配器”,而不包含LTK(因为如果在启用加密之前以明文形式发送密钥,这将破坏安全性)。为了确保每个新连接的安全,每个连接都使用一个新的会话密钥。要创建此会话密钥,每个设备会生成8 + 4字节的随机数据。SKDm和SKDs值连接到一个16字节的SKD。会话密钥是通过LTK的AES加密作为值而SKD作为密钥来生成的。请注意,在串联SKDm和SKD之后,将所有16个字节全部颠倒,然后再将其输入到标准AES函数中,因为蓝牙使用的字节序少,而AES标准使用的字节序大。
因此,487E4174426ACC34A83103763D2D95BE是所有AES库期望的格式的SKD。
LL_ENC_REQ中的Rand和EDIV字段作为密钥的标识符发送到从属设备,以便它可以在其数据库中查找LTK。
应将IVm和IVs值连接起来以获得IV(不可颠倒)。该IV用作AES-CCM加密中随机数的一部分。请参阅蓝牙核心规范5.0,第6卷,E部分,第2.1章。