一、配对与绑定

Paring(配对)和bonding(绑定)是实现蓝牙射频通信安全的一种机制,有两点需要注意:
paring/bonding实现的是蓝牙链路层的安全,对应用来说完全透明,也就是说,不管有没有paring/bonding,你发送或接收应用数据的方式是一样的,不会因为加了paring/bonding应用数据传输需要做某些特殊处理;
安全有两种选项:加密或者签名,目前绝大多数应用都是选择加密。
  实现蓝牙通信安全,除了paring/bonding这种底层方式,用户也可以在应用层去实现相同功能,两者从功能上和安全性上没有本质区别,只不过应用层自己实现的话,需要自己选择密码算法,密钥生成,密钥交换等,如果你不是这方面的专家,你的应用就有可能会存在安全漏洞。Paring/bonding则把上述过程标准化,放在了蓝牙协议栈中,并且其安全性得到了充分评估,用户可以 “无感的” 用上安全的蓝牙通信。

Paring(配对):

配对包括配对能力交换,设备认证,密钥生成,连接加密以及机密信息分发等过程,配对的目的有三个:加密连接,认证设备,以及生成密钥。从手机角度看,一旦设备跟手机配对成功,蓝牙配置菜单将包含该配对设备。如果用户需要主动删除配对设备,点击配对设备右边的“设置”菜单,出现如下界面,选择“取消配对”或者“忽略该设备”,设备的配对信息即被手机删除。

Bonding(绑定):

配对过程中会生成一个长期密钥(LTK,long-term Key),如果配对双方把这个LTK存储起来放在Flash中,那么这两个设备再次重连的时候,就可以跳过配对流程,而直接使用LTK对蓝牙连接进行加密,设备的这种状态称为bonding。如果paring过程中不存储LTK(不分发LTK)也是可以的,paring完成后连接也是加密的,但是如果两个设备再次重连,那么就需要重走一次paring流程,否则两者还是明文通信。

初始化函数参数解读

在这里插入图片描述

ioCap:表示蓝牙设备有哪些输入输出资源,据此选择合适的密码验证方式,5种取值情况,映射出3种密码验证模式,以下说明默认主机具备输入输出功能(有键盘和显示屏);
1、GAPBOND_IO_CAP_DISPLAY_ONLY:只能显示,此处需要显示配对密码,以便主机输入密码可以连接;
2、GAPBOND_IO_CAP_DISPLAY_YES_NO:可以显示,并且可以选择“是/否”;
3、GAPBOND_IO_CAP_KEYBOARD_ONLY:仅有键盘,配对时需要写入主机显示的PIN码;
4、GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT:无键盘和显示,justwork模式,主机可以直连;也可以使用静态密码方式,提高加密等级;
5、GAPBOND_IO_CAP_KEYBOARD_DISPLAY:有键盘和显示能力,均可以发起配对连接,显示一致的PIN码后输入确定连接;
passKey:PIN码,取值范围:0-999999,配对密码;
pairMode
GAPBOND_PAIRING_MODE_NO_PAIRING:不允许配对;
GAPBOND_PAIRING_MODE_WAIT_FOR_REQ:等待请求配对;
GAPBOND_PAIRING_MODE_INITIATE:不等待,直接发起配对请求;
mitm:man in the middle,中间人攻击。意思是防止中介接入监听和篡改信息,如果要让通信具有MITM保户,不能使用justwork模式;
bonding:使能绑定功能,是能后会记录配对信息,下次再配对时不用验证过程;
Just Works :不会进行鉴权,不能防止中间人攻击用于配对没有显示没有输入的设备,主动发起连接即可配对,用户看不到配对过程,不可以防止中间人攻击,例如连接蓝牙耳机。 使用场景:用于即不能显示6位随机数,也不能输入的设备。

二、代码移植

移植工程为bleUart_AT

1、打开OSAL_bleuart.c文件,osalInitTasks()中添加 osal_CbTimerInit( taskID );和GAPBondMgr_Init(taskID++);;tasksArr[]中添加 OSAL_CBTIMER_PROCESS_EVENT( osal_CbTimerProcessEvent )和GAPBondMgr_ProcessEvent;
在这里插入图片描述
在这里插入图片描述

2、打开bleuart.c文件,bleuart_Init( uint8 task_id )中添加以下代码;
在这里插入图片描述

3、打开bleuart.c文件bleuart_ProcessEvent(uint8 task_id, uint16 events)中添加以下代码;
在这里插入图片描述

4、实现配对回调函数
在这里插入图片描述

1.4编译测试
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐