一、前言
本篇讲解如何生成短期秘钥STK,以及STK秘钥的计算方法以及验证过程。备注:本文采用的配对方式为为传统配对(LE legacy pairing)Just Work方式,也就是最低等级的加密配对。主要针对设备双方都没有输入和输出能力的时候,所谓没有输入和输出能力,也就是没有键盘和显示屏。
二、阅读说明
1、泰凌微芯片学习者,前期使用过该芯片。
2、能够知道怎么进行创建工程,下载代码。
3、有一块开发板,板上的芯片可以是8251,8253或者8258。
三、正文
1、使用的SDK
使用的sdk和demo为该篇文章描述的“手把手教你:BLE设备如何和手机进行加密配对绑定”;
2、配对第二阶段所处的位置
3、STK计算说明
如上图所示,STK计算使用的s1算法,其中需要传入3个参数,如下:
- TK:128bits,just work方式默认当前TK等于0
- Srand:从机产生的128 bits 随机数
- Mrand:主机产生的128 bits 随机数
备注:Mrand在上一篇文章中有介绍,不清楚的读者可以参考,Srand同Mrand,所不同的是,Srand是由从机产生的随机数。
4、秘钥长度
秘钥的长度可以有两种,一种是7个字节的,也就是56 bits,一种是16字节,也就是128 bits的,这两种的表现方式如下:
5、加密算法
-
- r1':该值为r1的低64bits,例如r1 = 0x000F0E0D0C0B0A091122334455667788,那么r1'就为
0x1122334455667788
r2':该值为r2的低64bits,例如r2 = 0x010203040506070899AABBCCDDEEFF00,那么r2'就为0x99AABBCCDDEEFF00
r':该值为r1' || r2',例如r1' = 0x1122334455667788,r2' = 0x99AABBCCDDEEFF00,那么r'就为0x112233445566778899AABBCCDDEEFF00
最后计算秘钥的函数为e(k,r'),那么这个e是怎么定义的呢,如下图所示
e使用的是AES128 加密算法来进行计算的,且使用的是ecb模式,只需要输入秘钥和明文就可以加密成密文。
目前我们使用的是传统配对中的just work方式,那么key就是0。如果当前的r'=0x112233445566778899AABBCCDDEEFF00,则计算出来的s1也就是短期密钥(STK)为0x9A1FE1F0E8B0F49B5B4216AE796DA062。
6、使用在线的AES加密算法验证
AES128在线计算网址:https://www.toolhelper.cn/SymmetricEncryption/AES
如上所示,是用在线的AES128算法计算出来的数值,该数值和低5小节中计算的完全一样。
五、结尾
本篇讲解了STK秘钥,以及秘钥的计算过程,下一篇将对配对的第一阶段和第二阶段做一个总结
294