当前位置: 首页 > news >正文

ESP32 C3开发实战 -7(BLE加密连接Bond)

在一些特定物联网产品,有时会遇到对BLE的GATT访问进行加密

先来看下BLE加密连接流程图

扫描&连接->安全请求->配对处理->生成加密key->链路加密,完成链路加密连接

实例项目开发时候,需要几个步骤来完成

1,BLE组件对应的SMP项设置:开启加密配对,加密连接,保存bond key到NVS

2,在这里使用:Just work bond。

ble host config:配置为:BLE_HS_IO_NO_INPUT_OUTPUT,无需输入pair key,

nimble_host_config_init

ble_hs_cfg.sm_io_cap = BLE_HS_IO_NO_INPUT_OUTPUT;//无输入,无输出设备

ble_hs_cfg.sm_bonding = 1;

ble_hs_cfg.sm_mitm = 0;

ble_hs_cfg.sm_our_key_dist |= BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID;

ble_hs_cfg.sm_their_key_dist |= BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID;

3,GATT层访问安全设定,读写需加密ENC

GATT的读写权限加密设定为:BLE_GATT_CHR_F_READ_ENC和BLE_GATT_CHR_F_WRITE_ENC

* GATT services table */

staticconststructble_gatt_svc_defgatt_svr_svcs[]= {

/* Heart rate service */

{.type = BLE_GATT_SVC_TYPE_PRIMARY,

.uuid = &heart_rate_svc_uuid.u,

.characteristics =

(structble_gatt_chr_def[]){

{/* Heart rate characteristic */

.uuid = &heart_rate_chr_uuid.u,

.access_cb =heart_rate_chr_access,

.flags = BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_INDICATE |

BLE_GATT_CHR_F_READ_ENC,

.val_handle = &heart_rate_chr_val_handle},

{

0,/* No more characteristics in this service. */

}}},

/* Automation IO service */

{

.type = BLE_GATT_SVC_TYPE_PRIMARY,

.uuid = &auto_io_svc_uuid.u,

.characteristics =

(structble_gatt_chr_def[]){

/* LED characteristic */

{.uuid = &led_chr_uuid.u,

.access_cb =led_chr_access,

.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_WRITE_ENC,

.val_handle = &led_chr_val_handle},

{0}},

}

{

0,/* No more services. */

},

};

http://www.gsyq.cn/news/1602507.html

相关文章:

  • upload-labs靶场通关实战:20种文件上传漏洞的深度剖析与利用
  • 终极指南:3分钟解决Windows软件运行库依赖问题
  • 认知颠覆型:别只看排行!一文揭秘oem卫浴五金洁具工厂真实实力
  • NifSkope深度探索:解锁游戏模型编辑的无限可能
  • OpCore-Simplify:终极黑苹果EFI配置自动化工具,15分钟完成专业级OpenCore构建
  • 微信小程序渗透测试实战指南:从抓包到漏洞挖掘
  • PHP集成国密SM2算法实战:从PFX证书解析到数据加密完整指南
  • Spring Boot AOP 拦截逻辑性能分析
  • VMware Log4j2漏洞应急响应:从原理到实战修复指南
  • 3步解决macOS SMAPI模组加载器安全限制的实用方案
  • Guna UI WinForms 2.0.4.4:解锁现代桌面应用界面的高效开发利器
  • 小米手表表盘设计终极指南:如何用Mi-Create免费创建个性化表盘
  • 终极指南:3步轻松打造你的个人小说图书馆
  • 如何使用oec-hardware快速验证服务器与openEuler兼容性:完整指南 [特殊字符]
  • MSPM0Lxx低功耗与中断协同设计:从原理到实战优化
  • 如何轻松实现AI智能分层:Layerdivider完整使用教程
  • 无硬件学LVGL:基于Web模拟器+MiroPython速通GUI开发—布局与空间管理篇
  • 服务发现——让服务“自动寻址“
  • HS2-HF Patch终极指南:如何通过模块化架构实现Honey Select 2的全面增强
  • 如何用MeEdu快速搭建专属在线网校系统:完整指南
  • 3个步骤彻底告别XCOM 2模组管理噩梦:AML启动器完整解决方案
  • 从理论到实践:基于同态加密的隐私信息检索方案深度解析
  • MySQL主从复制报错:UUID冲突导致I/O线程停止的排查与修复
  • Python QQ机器人架构解密:多线程事件驱动模型的技术实现
  • 暗黑3技能连点器终极指南:解放双手的智能战斗助手
  • ProperTree跨平台plist编辑器完整指南:从安装配置到高效编辑技巧
  • 普通人也能做专业量化!香港大学免费开源 Vibe-Trading用自然语言来写策略
  • Sublime Text 3 —— 打造沉浸式编码体验:Material主题与Fira Code字体的黄金组合
  • Windows 11 系统优化终极指南:使用 Win11Debloat 实现专业级性能与隐私保护
  • 告别乱码困扰:SOLIDWORKS工程图转DWG字体映射实战指南