米家BLE广播协议(MI Beacon)Object字段解密

一、协议分析

参考链接:小米蓝牙广播数据解析(MiBeacon)

二、广播实例解析(门窗传感器广播数据)

在这里插入图片描述
service data 如下

95 FE 58 59 89 18 69 B3 D4 D7 38 C1 A4 60 2C 8F B1 3B 00 00 41 3D 5E 0A
Mi service UUID : 0xFE95
Frame Control
*C.1 根据Frame Control 字段定义确认是否包含
*C.2 根据Capability 字段确认是否包含

FieldName类型长度(byte)必备(o)/可选(M)说明实例
0Mi service UUIDu162M米家服务的UUIDFE 95
1Frame Controlbitmap2M控制位 (大端存储)59 58
2Product IDu162M产品ID89 18
3Frame Counteru81M序号69
4MAC Addressu86C.1设备MAC地址B3 D4 D7 38 C1 A4
5Capabilityu86C.1设备能力/
6I/O capabilityu82C.2I/O能力/
7objectu8n(根据实际需求)C.1触发事件或者广播属性 详见米家BLE Objecty协议60 2C 8F B1
8Random Numberu83C.1如果加密则必须字段,与Frame Counter 合并成4个字节的Counter, 用于防重放3B 00 00
8Message Integrity Checku84C.1如果加密则必须字段,4个字节41 3D 5E 0A

三、object字段解析

3.1 米家的加密认证(aes-128-ccm)

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。现在,高级加密标准已然成为对称密钥加密中最流行的算法之一。
aes-192密钥的长度为24字节,aes-256密钥的长度为32字节,aes-128密码的长度为16字节。
aes-ccm需要key,nonce,adata,另外aes-ccm不需要填充。 Counter with CBC-MAC (CCM)

在标准规范中,key的长度为16、24、32字节。

在标准规范中,nonce的长度为7~13字节。

在标准规范中,tag的长度为4、6、8、10、12、14、16字节。本工具加密时默认选择16字节。

在标准规范中,adata的长度没有要求。

加密时,需要填写明文、密码、nonce、选填adata,输出密文与Tag。

解密时,需要填写密码、nonce、密文、Tag,adata根据实际情况填写,得到明文。

3.2 密钥(key)获取

  1. 将门窗传感器和米家APP进行绑定,米家app会给传感器下发key(重新绑定之后才会更新)

  2. 下载工具 【工具源码】【工具下载

  3. 获取密钥

3.3 用例解析

  1. 用例说明
    字段说明用例
    密码(Key)16byte 通过3.2步骤获取a6 5f 46 82 a2 d0 e7 34 5c a8 ff 9c 28 e5 db ff
    nonce(Nonce):随机数(12byte)。由 MAC Address+Product ID+Frame Counter + Random Number 组成B3 D4 D7 38 C1 A4 89 18 69 3B 00 00
    额外数据(adata):米家传感器使用的数据为 0x1111
    密文(CipherText):Object字段60 2C 8F B1
    Tag(Tag):Message Integrity Check 字段41 3D 5E 0A
    明文(plaintext):解析结果04 48 01 02
  2. 工具验证
    在线工具链接: https://const.net.cn/tool/aes/aes-ccm/
    在这里插入图片描述
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值