您好!
我正在开发一个定制的低功耗蓝牙项目、为此、我使用了 TI 多角色项目。 到目前为止、我使用了不带绑定的"仅工作"配对。 现在,我不会交换可以建立加密连接的安全密钥。 我的设备(主设备)和从设备没有允许输入钥匙的键盘或显示屏。 因此、我认为使用 Bondmanager 的唯一方法是在没有 MITM 保护的情况下启用配对和绑定。
我已经阅读了《开发人员指南》SWRU393D 的第5.4.3章。 我使用以下命令配置了 Gapbond 管理器:
uint8_t pairMode = GAPBOND_Pairing_mode_initiate; uint8_t MIPTM = false; uint8_t 绑定= true; //设置配对模式 GAPBondMgr_SetParameter (GAPBOND_Pairing_mode、sizeof (uint8_t)、&pairMode); //设置身份验证要求 GAPBondMgr_SetParameter (GAPBOND_MITM_protection、sizeof (uint8_t)、&MIPTM); //设置绑定要求 GAPBondMgr_SetParameter (GAPBOND_BUSIONIND_ENABLED、sizeof (uint8_t)、&bonding); //注册并启动 Bond Manager void GAPBondMgr_Register (&multi_role_BondMgrCBs);
下图和开发人员指南中描述了在初始配对过程中、从堆栈处理 GAPBOND_PAIIRNG_State_Complete 事件。 在将来的连接中、不会处理该事件、堆栈会处理 GAPBOND_Pairing_State_Bonded (这意味着堆栈已从闪存加载密钥)。 现在、当我连接到接收到 GAPBOND_PAIRNG_State_Complete 事件的器件时、我的问题。 当我断开器件并重新连接时、我还会收到一个 GAPBOND_PAIRNG_State_Complete 事件。 我想我现在应该会收到一个 GAPBOND_Pairing_State_Bonded 事件。 因此、我认为我的器件没有将加密密钥保存在闪存中。
您能告诉我如何确定我的设备是否已将密钥存储在闪存中? 以及如何确定它们是否用于与该器件的进一步连接。
第二个问题是:我是否可以选择其他选项来防止连接受到 MIPTM 攻击? (两个设备都没有键盘和显示屏)
