【经验】解密低功耗蓝牙安全性之开发平台例程
这篇文章将会介绍在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命令实现。
【经验】Silicon Labs蓝牙SoC EFR32BG射频性能生产测试方法
Silicon Labs蓝牙SoC EFR32BG系列的产品支持Bluetooth5,Bluetooth5.1标准及蓝牙MESH网络功能,产品可方便的用于运动健身、消费类电子产品、信标和智能家居应用等等领域。本文详细介绍Silicon Labs蓝牙SoC EFR32BG芯片在产测阶段的射频性能测试的解决方案
【经验】Silicon Labs蓝牙模块的PCB设计要点
Silicon Labs的蓝牙模块不注意PCB的设计会造成硬件性能下降的问题,比如,可能与其它的无线设备存在干扰,通讯质量下降等。
【产品】支持蓝牙5.2的SoC EFR32BG22系列,可满足智能家居、消费类电子、商业和工业物联网应用需求
Silicon Labs(亦称芯科科技)新年发布的特别优化的蓝牙单芯片SoC解决方案-EFR32BG22(BG22),支持蓝牙5.2、Bluetooth® Low Energy、蓝牙网状网络和1米以下测向精度,适用于物联网产品的大量生产。该系列提供了三种蓝牙SoC产品供选择,专为满足智能家居、消费类电子、商业和工业物联网应用(包括那些需要多年电池使用寿命的应用)对价格/性能的各种要求所打造。
Bluetooth®LE SDK 7.1.0.0 GA Gecko SDK套件4.4
描述- Silicon Labs发布蓝牙低功耗(BLE)SDK 7.1.0.0 GA版本,包含核心功能、API简化开发。新增特性包括周期性广告传输功率设置、蓝牙连接分析器等。兼容多种编译器,支持多协议,如Zigbee、OpenThread。此版本为Gecko SDK的最后一个支持所有EFM和EFR设备的版本,未来将推出针对Series 2和3设备的独立SDK。
蓝牙技术联盟发布《2024年蓝牙市场最新资讯》,介绍蓝牙技术在各个行业和市场中的最新应用趋势
负责监管蓝牙技术的行业协会蓝牙技术联盟(Bluetooth SIG)发布年度报告《2024年蓝牙市场最新资讯》。该报告介绍了蓝牙技术在各个行业和市场中的最新应用趋势,以及如何通过各种应用为人们的日常生活带来丰富的连接。
要在电路板上增加蓝牙功能,都需要什么器件?
如果使用蓝牙SoC EFR32BG1xx系列,芯片电源部分需要电感(使能DC-DC)、退耦电容,射频链路1个电感、一个电容,陶瓷天线或者PCB板载天线。如果用蓝牙模块BGM11x,可预留串口和电源接口。
蓝牙®LE SDK 7.1.2.0 GA Gecko SDK套件4.4
描述- 本资料介绍了Silicon Labs发布的蓝牙低功耗(BLE)软件开发套件(SDK)7.1.2.0 GA版本。该版本包括新的功能组件、API更新、改进和问题修复。新特性包括周期性广告功率设置、蓝牙连接分析器等功能。此外,还提供了兼容性说明、安全信息和安装指南。
在市面上看到蓝牙BLE的耳机,请问BGM111是否可以做蓝牙耳机应用?
不能,BLE协议特点是低功耗、低速率,蓝牙耳机的目前最低的音频采样率为44.1KHZ,目前市面上所有厂商的BLE蓝牙模块都达不到此速率。如果有支持BLE的蓝牙耳机,那么应该是双模的蓝牙产品,即支持蓝牙BLE,也支持传统蓝牙3.0协议或者2.1+EDRx协议,在传输音频数据方面使用的蓝牙传统协议;我们有专门适合音频的蓝牙芯片WT32i,蓝牙3.0协议,支持速率24mps,内置DSP音频解码器。
Silicon Labs(芯科科技) 蓝牙网络APK应用程序(Android)
描述- Silicon Labs-wirelessgecko-android.apk (安卓手机APP适用下载)
型号- EFR32MG,EFR32BG
【Silicon Labs无线技术】Zigbee/Thread/蓝牙/WIFI/Sub-GHz齐齐来媲美
物联网连接,应挑选怎样的无线协议栈才是最佳的?世强为你解析时下最热Zigbee/Thread/蓝牙/WIFI/Sub-GHz技术
远程蓝牙模块WT41通信距离能达到1000米吗?用在什么领域比较多?
远程蓝牙模块WT41,相应指标如下:1)发射功率:+20.5 dBm【MAX】2)接收灵敏度:-94dBm【MAX】可以计算出无线链路数据如下:20.5 dB(TX)+ 94 dB(RX灵敏度) - 4.5dB(TX和RX两种天线衰减,已假设天线较差)= 110 dB,在视距情况下的传输距离可以轻松达到1000米。WT41有如下典型应用:1)手持终端2)工业设备3)POS4)个人数字助理(PDA)5)汽车诊断单元
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 101,879
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥27.0929
现货: 90,767
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥10.4994
现货: 50,699
现货市场
服务
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
支持Bluetooth SIG最新的测试规范,支持2.0(EDR), 2.1(EDR), 3.0(HS), 4.0(LE)规范, 并且能完整覆盖BR/EDR/HS/BLE的所有射频测试项目。测试标准:RF.TS/4.03 ;RF-PHYTS/40.3。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论