【经验】解密低功耗蓝牙安全性之开发平台例程
这篇文章将会介绍在Simplicity Studio C SDK下,如何使用低功耗蓝牙(BLE)的相关特性,配对、绑定、加密和授权。
首先,我们给出一些关于BLE安全性的一些基础信息,并突出介绍附件的例程里的重要的代码片段。示例程序实现了一个加密传输功能,其特征值只能在配对和绑定完成才能被读出。
BLE安全性特征
最常见的无线通讯的威胁如下:
1)被动监听(Passive eavesdropping)
2)主动监听(Active eavesdropping = Man-in-the-Middle (MITM))
3)隐私(Tracking)
BLE定义了5种安全特性来对抗上述威胁:
1)配对(Pairing):设备间建立可信的连接(密钥(Key)的产生、交换,以及ID信息的交换)
2)绑定(Bonding):保存配对阶段所产生的Key
3)设备身份认证(Device authentication):验证两个设备具有相同的Keys(防护MITM)
4)加密(Encryption):数据加密(FIPS、NIST、AES128-CCM)
5)数据签名(Data signing,信息一致性):防止数据被修改
上述特征实现在BLE协议栈的不同层,参下图:
配对&绑定
配对:
• 配对是一个建立可信连接的过程
• 用于产生和交换密钥(Security Keys)
• 用于交换ID信息
BLE使用Secure Simple Pairing(SSP)配对模型:
• Just works:针对于没有交互界面的设备,无需用户操作,其无法提供MITM防护
• Pass key entry:用户需输入另一设备的显示屏所显示的pass key,其提供MITM防护
• Numeric comparison:用户需要确认双方显示屏所显示的pass keys。其提供MITM防护。注意:此方法在Blue Gecko的协议栈下还尚未支持
• Out-of-band:用其他技术交换keys,比如NFC
绑定:
• 保存keys以备之后使用
• 用于鉴别连接、验证设备ID等
隐私
• BLE提供隐私保护
• 设备可以使用公共地址或者私有(随机)地址
• 对于一个设备,其公共地址是固定且唯一的
• 随机地址可以随时间改变而改变,其可以对不想建立连接的设备隐藏其公共地址
• 绑定设备可以通过key来解析设备的公共地址
注意:随机地址尚未在Blue Gecko的协议中实现。
加密
• 加密过程用于保证数据的完整性和一致性
• 已配对或绑定的设备可以加密/解密连接中的数据
• BLE使用AES-128作为加密算法
注意:广播数据不支持加密
蓝牙4.2安全特性
• LE Secure connections:将Key的交换机制升级至更安全的配对流程-ECDH
• LE privacy 1.2:ID信息解析由HOST层转移到Controller层,这样提升了速度并减小了功耗
注意:蓝牙4.2的安全特性尚未在Blue Gecko的协议中实现。
示例程序
此应用程序是基于Simplicity Studio Bluetooth Smart C SDK 1.0.4版本,此应用程序是基于Blue Gecko SoC Starter Kit(SLWSTK6020A),同时只需要做很少的改动,它便可以用于BGM111和BGM113。
示例程序实现了一个特征值,其被另外设备读的前提是双方配对并绑定,以下是完成这一任务的具体步骤:
1)在GATT文件中,建立此属性的权限
例程包含一个叫my_secret的特征值。因为authenticated_read属性被设为“true”,所以其只有在加密连接中才能被读出。
2)使能配对和绑定
绑定可以通过Simplicity Studio的GUI使能,设个设定会在系统启动完成后调用函数gecko_cmd_sm_set_bondable_mode(1)。
3)建立安全管理
使用函数gecko_cmd_sm_configure(flags,io_capabilities)来完成安全相关配置。
flag参数的bit0:
• 允许不带MITM保护的绑定
• 绑定需带有MITM保护
flag参数的bit1:
• 允许不绑定直接加密数据
• 加密数据必须先绑定
flag的2-7位保留,应设为0。
capabilities参数指示设备支持的输入输出类型,不同的capabilities参数会导致不同的配对方法。
系统启动后,调用函数gecko_cmd_sm_configure;
当使用sm_io_capability_displayonly或sm_io_capability_displayyesno作为io capabilities时,PIN码会显示在UART控制台,你需要在手机或平板端输入这个PIN码。
当使用sm_io_capability_keyboardonly或sm_io_capability_keyboarddisplay作为io capabilities时,PIN码会显示在手机或平板端,你需要在设备的UART控制台输入这个PIN码。
不要使用sm_io_capability_noinputnooutput,因为MITM保护不能在此模式下工作,配对和绑定将会失败。
4)在连接建立时,提升安全等级
在连接建立时间处理处,我们需要加入gecko_cmd_sm_increase_security函数。这将会触发配对流程。对于某些iOS版本的设备,这一步需要被跳过,因为iOS设备会主动发起配对请求。
如果pairing属性在GUI里被使能,gecko_cmd_sm_increase_security函数会自动被调用。
5)为gecko_evt_sm_passkey_display_id事件建立回调函数
gecko_evt_sm_passkey_display_id事件指示需要件pass key显示出来,在此例程中,此事件触发My Service_Passkey Display Cbk回调,并将pass key在UART控制台显示。
6)为gecko_evt_sm_passkey_request_id事件建立回调函数
此事件指示需要用户输入远端设备显示屏所显示的pass key。在此例程中,此事件触发回调函数My Service_Passkey Display Cbk。这个回调函数会读出UART控制台输入的passkey,实际读此输入的函数为MyService_Passkey Read函数。当pass key被读出后,调用sm_enter_pass key函数将此pass key送给协议栈。
如果pass key有效且绑定完成后,协议栈会产生一个gecko_msg_sm_bonded_evt_t事件。如果pass key无效或者由于某种原因绑定不成功,协议栈会产生一个gecko_evt_sm_bonding_failed_id事件。
测试此例程
下载Blue Gecko app,完成如下步骤:
1)将此例程烧录至WSTK。
2)删除手机或平板端关于此设备的绑定信息。
3)打开串口中断,COM口选择 J-LINK CDC UART.
4)打开Blue Gecko app并选择BLE&Stack&Profile test
5)连接设备至手机或平板。
6)按照串口终端和手机/平板的指示进行试验。
7)如果一切正常,你可以通过APP读取GATT的特征值,并在串口终端得到Bonding completed信息。
- |
- +1 赞 0
- 收藏
- 评论 0
本网站所有内容禁止转载,否则追究法律责任!
相关研发服务和供应服务
相关推荐
【经验】浅析低功耗蓝牙绑定与配对的区别
在Silicon Labs为EFR32MG和EFR32BG系列提供Bluetooth SDK,配对在连接的时候实现,绑定通过gecko_sm_increase_security命令实现。
设计经验 发布时间 : 2018-02-26
【经验】Silicon Labs蓝牙模块的PCB设计要点
Silicon Labs的蓝牙模块不注意PCB的设计会造成硬件性能下降的问题,比如,可能与其它的无线设备存在干扰,通讯质量下降等。
设计经验 发布时间 : 2017-09-04
【经验】低功耗、高速率,不用编程也能玩转的蓝牙智能双模模块
针对如何让一款设备能快速连接上手机或者其他的带蓝牙功能设备问题,BT121智能蓝牙双模模块提供了解决方案,它不需要射频或蓝牙软件开发经验,和编程就能轻松玩转。
设计经验 发布时间 : 2019-09-03
【产品】支持蓝牙5.2的SoC EFR32BG22系列,可满足智能家居、消费类电子、商业和工业物联网应用需求
Silicon Labs(亦称芯科科技)新年发布的特别优化的蓝牙单芯片SoC解决方案-EFR32BG22(BG22),支持蓝牙5.2、Bluetooth® Low Energy、蓝牙网状网络和1米以下测向精度,适用于物联网产品的大量生产。该系列提供了三种蓝牙SoC产品供选择,专为满足智能家居、消费类电子、商业和工业物联网应用(包括那些需要多年电池使用寿命的应用)对价格/性能的各种要求所打造。
新产品 发布时间 : 2020-02-03
要在电路板上增加蓝牙功能,都需要什么器件?
如果使用蓝牙SoC EFR32BG1xx系列,芯片电源部分需要电感(使能DC-DC)、退耦电容,射频链路1个电感、一个电容,陶瓷天线或者PCB板载天线。如果用蓝牙模块BGM11x,可预留串口和电源接口。
技术问答 发布时间 : 2017-09-15
蓝牙技术联盟发布《2024年蓝牙市场最新资讯》,介绍蓝牙技术在各个行业和市场中的最新应用趋势
负责监管蓝牙技术的行业协会蓝牙技术联盟(Bluetooth SIG)发布年度报告《2024年蓝牙市场最新资讯》。该报告介绍了蓝牙技术在各个行业和市场中的最新应用趋势,以及如何通过各种应用为人们的日常生活带来丰富的连接。
行业资讯 发布时间 : 2024-06-26
Silicon Labs(芯科科技) 蓝牙网络APK应用程序(Android)
描述- Silicon Labs-wirelessgecko-android.apk (安卓手机APP适用下载)
型号- EFR32MG,EFR32BG
在市面上看到蓝牙BLE的耳机,请问BGM111是否可以做蓝牙耳机应用?
不能,BLE协议特点是低功耗、低速率,蓝牙耳机的目前最低的音频采样率为44.1KHZ,目前市面上所有厂商的BLE蓝牙模块都达不到此速率。如果有支持BLE的蓝牙耳机,那么应该是双模的蓝牙产品,即支持蓝牙BLE,也支持传统蓝牙3.0协议或者2.1+EDRx协议,在传输音频数据方面使用的蓝牙传统协议;我们有专门适合音频的蓝牙芯片WT32i,蓝牙3.0协议,支持速率24mps,内置DSP音频解码器。
技术问答 发布时间 : 2016-10-25
Bluetooth ® SDK 2.13.12.0 GA Gecko SDK Suite 2.7
型号- EFR32MG22,EFR32BG1X,EFR32G1X,EFR32BG22,EFR32G22,EFR32MG1X
【Silicon Labs无线技术】Zigbee/Thread/蓝牙/WIFI/Sub-GHz齐齐来媲美
物联网连接,应挑选怎样的无线协议栈才是最佳的?世强为你解析时下最热Zigbee/Thread/蓝牙/WIFI/Sub-GHz技术
专题合辑 发布时间 : 2017-07-19
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 103,858
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥27.0929
现货: 90,767
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥10.4994
现货: 61,779
现货市场
服务
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
根据用户的蓝牙模块,使用Bluetooth 蓝牙测试装置MT8852B,测试蓝牙1.0至5.1,包括传输速率、功率、频率、调制和接收机灵敏度,生成测试报告。支持到场/视频直播测试,资深专家全程指导。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论