• 正文
  • 相关推荐
申请入驻 产业图谱

手把手教你:拆解BLE Just Work配对 S1 算法 STK 计算全过程

06/23 08:48
294
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

一、前言

本篇讲解如何生成短期秘钥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、加密算法

    1. 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秘钥,以及秘钥的计算过程,下一篇将对配对的第一阶段和第二阶段做一个总结

相关推荐