完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在上一篇博文《蓝牙配对 - 第二篇:密钥生成方法》中,我们讨论了密钥的生成方法 – 如果发起设备和响应设备都满足一定的IO功能,它们就可以选择低功耗传统配对(Legacy Pairing)的Passkey Entry方法。在本文中,让我们继续深入了解如何借助Passkey Entry进行传统配对及其工作原理。
图 1:通过Passkey Entry进入低功耗传统配对 1.临时密钥(TK) 和随机数生成 采用低功耗传统蓝牙配对时,两台设备都会生成临时密钥(Temporary Key,简称TK),进行配对。 如果发起设备或响应设备中的任何一台设备的IO具有显示功能,就会生成并显示任意一个位于 “000000”到“999999”之间的TK值。另一台设备应具有输入功能,如键盘,这样用户就能输入这一临时密钥值。 如果发起设备和响应设备的IO功能都不具备显示功能,但都是“仅有键(Keyboard Only)”,那么用户就需要确保发起设备和响应设备之间的临时密钥是相同的,这是Passkey Entry进入的一个特例。 下图是一台设备名为“Authentication”的设备想要与一台iOS设备配对时的场景,“Authentication”设备的输入界面上显示了临时密钥。之后,iOS设备就会跳出对话框,提示用户输入临时密钥值。 图2:iOS设备的万能钥匙进入输入临时密钥值之后,发起设备和响应设备应生成一个128位的临时数值,发起设备的叫做Mrand (“master random”),响应设备的叫做Srand (“slave random”)。 2.Mconfirm和Sconfirm Mconfirm和Sconfirm是128位的确认值,可以通过确认值生成函数c1计算得出。这一函数的相关详情请参考蓝牙核心规格4.2版本,第4卷,H部分,第2.2.3章节c1 函数的输入参数包括: 临时密钥(TK) 用于计算Mconfirm的Mrand,或用于计算Sconfirm的Srand 配对请求指令 配对响应指令 发起设备地址类型 发起设备地址 l 响应设备地址类型 响应设备地址 3.验证 Mconfirm和Sconfirm就绪之后,发起设备向响应设备发送Mconfirm。当响应设备收到Mconfirm后,就会向发起设备发送Sconfirm。发起设备收到Sconfirm后,就会向响应设备发送Mrand。响应设备通过发起设备传送的Mrand值来再次执行Mconfirm的计算,来验证计算出的值和Mconfirm值是否一致。 如果响应设备计算得出的Mconfirm值与发起设备发来的Mconfirm值不匹配,则配对过程会中止,响应设备会发送原因代码为“确认值失败(Confirm Value Failed)”的配对失败指令。 如果响应设备计算得出的Mconfirm值与发起设备发来的Mconfirm值相匹配,则响应设备会向发起设备发送Srand。 发起设备通过响应设备传送的Srand值来再次执行Sconfirm的计算,来验证计算出的值和Sconfirm值是否一致。 如果发起设备计算得出的Sconfirm值与响应设备发来的Sconfirm值不匹配,则配对过程或被中止,发起设备会发送原因代码为“确认值失败(Confirm Value Failed)”的配对失败指令。 如果发起设备计算得出的Sconfirm值与响应设备发来的Sconfirm值相匹配,则发起设备会计算出短期密钥(Short Term Key,简称STK ),并通知控制器(Controller)启用加密。 4.短期密钥(STK)生成 短期密钥(STK)是通过密钥生成函数s1生成的,详情请参考:蓝牙核心规范4.2版本,第2卷,H部分,第2.2.4章节对于s1 函数,输入参数包括: 临时密钥(TK) Srand Mrand 有了短期密钥(STK),配对设备就能建立加密连接了。蓝牙配对系列第四篇中,我将继续为大家介绍低功耗安全配对的一种新的配对算法:数值比较(Numeric Comparison)。 |
|
|
|
只有小组成员才能发言,加入小组>>
3426个成员聚集在这个小组
加入小组物联网工程师必备:怎么选择不同的无线连接威廉希尔官方网站 ,本指南帮你忙!
3286 浏览 1 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】WIFI功能测试
3939 浏览 0 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】Arduino的替代SublimeText3+STino
3445 浏览 0 评论
使用端口扩展器轻松高效地向IIoT端点添加具有成本效益的子节点
4010 浏览 1 评论
20685 浏览 11 评论
模组有时候复位重启后输出日志为“REBOOT_CAUSE_SECURITY_PMU_POWER_ON_RESET”的原因?
806浏览 2评论
1030浏览 2评论
1031浏览 1评论
1150浏览 1评论
384浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 14:41 , Processed in 1.092464 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号