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

手把手教你:解析 BLE 链路层 LL_ENC 指令中IV与NONCE的关系

5小时前
38
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

一、前言

上一篇文章“手把手教你:解析 BLE 链路层 LL_ENC 指令与会话密钥生成原理”,中有对IV进行描述,那么这个IV到底是起什么作用的呢。因为我们后需要对BLE的Payload进行加解密,在加解密的时候会使用AES-CCM算法,这个算法会用到NONCE,NONCE里面就包含了IV,下面会此进行详细的讲解。

二、阅读说明

1、泰凌微芯片学习者,前期使用过该芯片。

2、能够知道怎么进行创建工程,下载代码。

3、有一块开发板,板上的芯片可以是8251,8253或者8258。

三、正文

1、使用的SDK使用的sdk和demo为该篇文章描述的“手把手教你:BLE设备如何和手机进行加密配对绑定”;

2、NONCE的组成

组成如下:

39bit的包计数器:每次连接从0开始计时,可以看图中的0~4个字节。

1bit的方向计数器:图中的第4字节的bit7,当主机发送时为1,当从机发送时为0。

8字节的IV:初始话向量,这篇“手把手教你:解析 BLE 链路层 LL_ENC 指令与会话密钥生成原理”文章中讲解,在此不再赘述。图中的5~12字节。

3、NONCE的作用用来参与消息完整性的计算和Payload的加解密。感兴趣的读者可以参考BLE 5.3 Vol 6  Part E: Low Energy Link Layer Security章节

五、结尾

本篇解释了IV在加密算法AES-CCM中的作用,下一篇将继续讲解配对第二阶段的指令。

我写了一个合集,不依赖 Nordic、泰凌、瑞萨等厂商商用 BLE 协议栈,从无线底层链路层入手,从零手写 BLE 广播扫描逻辑,拆解蓝牙广播包、信道切换、射频调度、广播数据解析完整流程,适合想吃透 BLE 底层、自主开发蓝牙工具、规避商用协议栈授权限制的嵌入式开发者。

相关推荐