BLE SMP 计算LTK = d1(ER, DIV, 0)用到的d1算法过程
时间: 2024-02-07 12:03:02 浏览: 37
BLE SMP (Bluetooth Low Energy Security Manager Protocol) 是一种用于BLE设备之间的加密和认证协议。计算LTK (Long Term Key) 的过程中使用了d1算法。
d1算法的输入参数为ER、DIV和rand,其中ER是设备的长期密钥,DIV是一个随机数,rand是一个随机数。d1算法的输出为一个伪随机数,通常用作加密密钥。
d1算法的过程如下:
1. 将ER按字节分为8个部分,分别命名为ER0至ER7。
2. 计算S = (DIV ⊕ ER0) || (DIV ⊕ ER1) || (DIV ⊕ ER2) || (DIV ⊕ ER3) || (DIV ⊕ ER4) || (DIV ⊕ ER5) || (DIV ⊕ ER6) || (DIV ⊕ ER7),其中||表示连接操作。
3. 计算M = S ⊕ rand,其中 ⊕ 表示按位异或操作。
4. 将M按字节分为8个部分,分别命名为M0至M7。
5. 计算LTK = d2(M0, M1, …, M7, DIV, 0),其中d2是另一个伪随机数生成算法,用于生成LTK。
注意:在上述计算过程中, ⊕ 操作表示按位异或操作,即对应位上的两个二进制数如果不同则结果为1,否则为0。
希望这个答案能够帮到你。
相关问题
BLE SMP DIV的生成方式
BLE SMP DIV是由Master和Slave设备在进行安全连接时生成的一种用于加密通信的随机数。具体生成方式如下:
1. Master设备和Slave设备各自生成一个随机数,分别称为RANDm和RANDs。
2. Master设备将自己的RANDm和Slave设备的RANDs发送给Slave设备,Slave设备将自己的RANDs和Master设备的RANDm也发送给Master设备。
3. Master设备和Slave设备使用自己的RANDm和RANDs以及另一方发送的RAND来生成一个共享的密钥,生成方式为:SMP DIV = E(RANDm || RANDs || RAND)。
其中,E为加密函数,“||”表示连接操作符,RAND为两个随机数的异或结果。
4. 生成SMP DIV后,Master设备和Slave设备就可以使用该密钥进行加密通信了。
BLE SMP CSRK生成过程
BLE SMP(Secure Connections Pairing)协议中,CSRK(Connection Signature Resolving Key)是用于加密和解密数据包的密钥。下面是CSRK的生成过程:
1. 确定参与配对的两台设备的公钥和私钥。
2. 通过公钥交换算法,双方交换并验证对方的公钥,确保双方公钥的合法性和真实性。
3. 确定随机数r1和r2。
4. 将r1和r2以及双方的公钥按照一定规则进行计算,生成CSRK。
具体的计算方法是,将r1和r2按照一定的规则转换成两个256位的数值,然后将这两个数值与双方的公钥进行异或运算,再将结果进行SHA-256哈希运算,即可得到128位的CSRK。
5. 双方将CSRK保存在本地,用于加密和解密数据包。
需要注意的是,CSRK只能用于加密和解密数据包,不能用于身份验证。在BLE SMP协议中,身份验证需要使用配对过程中生成的Long Term Key(LTK)。