CH579 CH573 CH582 CH592 蓝牙主机(Central)实例应用讲解(四)——配对及加密

我写博文的目的大多数情况下都只是为研发工作复盘,记录研发工作中碰到的一些问题及最终解决方案或处理方式,也正因为如此,很多博文会显得很杂,甚至没有明显的主体。这篇博文的目的更是如此,说白了就是给自己看的,如果能对碰到类似问题的朋友提供那怕一点点的思路,那就是意外之喜了。

配对及加密,对沁恒的蓝牙的应用开发者来说,能做的事情其实很少,毕竟这部分内容都已打包在库里,我们几乎没办法修改。能做的不过是修改相关设置来满足我们的需要。尽管如此,我们还是先了解一下相关的知识。

沁恒CH582作为国产低功耗蓝牙SOC芯片,其配对与加密流程符合蓝牙4.2/5.0核心规范,本文将从实践角度解析其安全机制实现。

一、配对流程三阶段

  1. 配对特征交换

    • 通过GAP Bonding过程交换IO能力(如是否支持显示屏/键盘)

    • 典型配对方式:PIN码配对(默认6位数字)或Just Works(无用户交互)

  2. 临时密钥生成

    • 支持LE Legacy Pairing和LE Secure Connections

    • 基于DHKey的ECDH椭圆曲线加密(当启用Secure Connections时)

  3. 长期密钥分发

    • 生成并交换LTK(Long Term Key)用于后续加密

    • 可选的IRK(Identity Resolving Key)和CSRK(Connection Signature Key)

二、加密配置实践

  uint32_t passkey = DEFAULT_PASSCODE;
  uint8_t pairMode = GAPBOND_PAIRING_MODE_INITIATE;
  uint8_t mitm = DEFAULT_MITM_MODE;
  uint8_t ioCap = DEFAULT_IO_CAPABILITIES;
  uint8_t bonding = DEFAULT_BONDING_MODE;
  uint8_t key = 0x33;


  GAPBondMgr_SetParameter( GAPBOND_CENT_DEFAULT_PASSCODE, sizeof(uint32_t), &passkey );
  GAPBondMgr_SetParameter( GAPBOND_CENT_PAIRING_MODE, sizeof(uint8_t), &pairMode );
  GAPBondMgr_SetParameter( GAPBOND_CENT_MITM_PROTECTION, sizeof(uint8_t), &mitm );
  GAPBondMgr_SetParameter( GAPBOND_CENT_IO_CAPABILITIES, sizeof(uint8_t), &ioCap );
  GAPBondMgr_SetParameter( GAPBOND_CENT_KEY_DIST_LIST, sizeof(uint8_t), &key );

  GAPBondMgr_SetParameter( GAPBOND_CENT_BONDING_ENABLED, sizeof(uint8_t), &bonding );

很明显,GAPBOND_CENT_DEFAULT_PASSCODE,从名称就知道用于设置缺省密码。GAPBOND_CENT_PAIRING_MODE用于设置配对方式,从官方SDK中我们知道,有三种配对方式 :

 GAPBOND_CENT_MITM_PROTECTION简单说就是用于设置是否需要密码,GAPBOND_CENT_IO_CAPABILITIES简单说就是设定配对绑定时,是否有输入输出相关设备。GAPBOND_CENT_KEY_DIST_LIST设置SM Pairing Request中的InitiatorKey(发起方密钥)及ResKey(响应方密钥)。
GAPBOND_CENT_BONDING_ENABLED用于设置配对时是否绑定,如果设置为TRUE,最好修改config.h中的BLE_SNV  为  TRUE。否则可能在重连已配对过的设备时,会出现连接上后立即断开等现象。

有关BLE 安全SM协议,有兴趣的可以参考:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的元子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值