一种蓝牙设备及其工作方法

文档序号:10572403阅读:468来源:国知局
一种蓝牙设备及其工作方法
【专利摘要】本发明公开了一种蓝牙设备及其工作方法,涉及蓝牙设备在信息安全领域中的应用。所述蓝牙设备包括蓝牙连接模块、配对模块和数据通信模块,所述工作方法包括蓝牙连接过程、配对过程和数据通信过程,其中所述配对过程包括:设备根据预设认证码、从发起方获取的第一随机数、自身生成的第二随机数计算得到加密密钥,使用所述加密密钥对包含有链路加密密钥的链路加密数据进行加密得到链路加密请求并将其发送给所述发起方,所述发起方从所述链路加密请求中获取链路加密密钥。本发明在兼容现有蓝牙协议的同时增强了蓝牙设备配对过程的安全性。
【专利说明】
一种蓝牙设备及其工作方法
技术领域
[0001]本发明涉及信息安全领域,尤其涉及一种蓝牙设备及其工作方法。
【背景技术】
[0002]蓝牙设备是一种利用蓝牙技术设计的无线通信电子产品,支持短距离无线通信,具有延迟时间短、连接稳定性强等特点。
[0003]对于蓝牙设备之类的产品而言,配对是非常重要的事情,一旦两个设备建立蓝牙连接,完成配对过程则表示建立了安全通道,相互之间便可以进行安全的数据通信。现有技术中,有些移动设备(例如具备蓝牙功能的手机)可以为用户提供显示屏和键盘输入,方便用户自行选择允许进行配对的蓝牙设备;但是对于一些没有屏幕和键盘输入的蓝牙设备而言,如何实现该蓝牙设备只和用户允许的蓝牙设备配对就成为了一个亟待解决的技术问题。

【发明内容】

[0004]为解决现有技术中存在的问题,本发明提出了一种蓝牙设备及其工作方法。
[0005]本发明采用的技术方案如下:一种蓝牙设备,包括蓝牙连接模块、配对模块和数据通信模块;
[0006]所述蓝牙连接模块,具体用于当接收到蓝牙连接事件时,与发起连接的发起方建立蓝牙连接,获取所述发起方的MAC地址并保存。
[0007]所述配对模块具体包括第一收发单元、第一计算单元、第二收发单元、验证单元、第二计算单元和链路加密单元:
[0008]所述第一收发单元,用于接收发起方发来的配对确认请求,从所述配对确认请求中获取第一确认值,生成第二随机数;还用于将所述第一计算单元计算出的所述第二确认值返回给所述发起方;
[0009]所述第一计算单元,用于根据预设认证码、所述第一收发单元生成的所述第二随机数、当前保存的发起方的MAC地址、所述蓝牙设备自身的MAC地址计算出第二确认值;
[0010]所述第二收发单元,用于接收所述发起方发来的随机数交换请求,从所述随机数交换请求中获取第一随机数;用于当所述验证单元的验证结果为通过验证时向所述发起方返回所述第一收发单元生成的所述第二随机数,并触发第二计算单元;还用于当所述验证单元的验证结果为未通过验证时向所述发起方返回错误信息;
[0011 ]所述验证单元,用于根据所述第二收发单元获取的所述第一随机数验证所述第一收发单元获取的所述第一确认值;
[0012]所述第二计算单元,用于根据所述预设认证码、所述第二收发单元获取的所述第一随机数、所述第一收发单元生成的所述第二随机数计算得到加密密钥;
[0013]所述链路加密单元,用于根据预置的第一数据、第二数据和第三数据组成链路加密数据,使用所述第二计算单元计算得到的所述加密密钥加密所述链路加密数据得到链路加密请求并发送给所述发起方,设置所述第一数据为链路加密密钥。
[0014]所述数据通信模块,具体用于接收所述发起方发送的操作数据,使用所述配对模块获得的链路加密密钥对所述操作数据进行解密,根据解密结果执行相应操作,并将经过所述链路加密密钥加密得到的操作响应返回给所述发起方。
[0015]进一步的,所述配对模块还包括第三收发单元、第一判断单元、第二判断单元、第三判断单元和模式设置单元;
[0016]所述第三收发单元,用于接收所述发起方发来的配对交换请求,用于在收到所述第一判断单元的触发时向所述发起方返回预设数据,用于收到所述第二判断单元的触发时向所述发起方返回表示密钥长度不支持的信息,用于收到所述第三判断单元的触发时向所述发起方返回表示拒绝配对的信息;
[0017]所述第一判断单元,用于判断当前模式是否为配对模式,是则触发所述第二判断单元,否则触发所述第三收发单元和第三判断单元;
[0018]所述第二判断单元,用于判断设备是否支持所述配对交换请求中指定的密钥长度,是则向所述发起方返回配对交换响应,否则触发所述第三收发单元;
[0019]所述第三判断单元,用于判断是否有长按键操作,是则触发所述第二判断单元,否则触发所述第三收发单元;
[0020]所述模式设置单元,用于在所述设备开机后设置当前模式为配对模式,还用于在所述配对模块完成配对后设置当前模式为非配对模式。
[0021]—种蓝牙设备的工作方法,包括所述设备与发起方之间的蓝牙连接过程、配对过程和数据通信过程,所述配对过程包括:
[0022]步骤S1:当所述设备接收到所述发起方发来的配对确认请求时,从所述配对确认请求中获取第一确认值,生成第二随机数;根据预设认证码、所述第二随机数、当前保存的发起方的MAC地址和设备自身的MAC地址计算出第二确认值,并向所述发起方返回所述第二确认值;
[0023]步骤S2:当所述设备接收到发起方发来的随机数交换请求时,从所述随机数交换请求中获取第一随机数;根据所述第一随机数验证所述第一确认值,若通过验证则执行步骤S3,若未通过验证则执行步骤S5;
[0024]步骤S3:所述设备向所述发起方返回所述第二随机数;
[0025]步骤S4:所述设备根据所述预设认证码、所述第一随机数、所述第二随机数计算得到加密密钥;根据预置的第一数据、第二数据和第三数据组成链路加密数据,使用所述加密密钥加密所述链路加密数据得到链路加密请求并发送给所述发起方,将所述第一数据作为链路加密密钥,配对过程结束;
[0026]步骤S5:所述设备向所述发起方返回错误信息,配对过程结束。
[0027]所述配对过程还包括,当所述设备接收到所述发起方发来的配对交换请求时,所述设备执行以下步骤:
[0028]步骤A:判断当前模式是否为配对模式,是则执行步骤B,否则执行步骤B’;
[0029]步骤B:判断是否支持所述配对交换请求中指定的密钥长度,是则向所述发起方返回配对交换响应,否则向所述发起方返回表示密钥长度不支持的信息;
[0030]步骤B’:向所述发起方返回预设数据,并判断是否有长按键操作,是则执行步骤B,否则向所述发起方返回表示拒绝配对的信息;
[0031]所述方法还包括:所述设备开机后设置当前模式为配对模式,所述步骤S4中配对过程结束时还包括:所述设备修改当前模式为非配对模式。
[0032]上述蓝牙连接过程包括:
[0033]步骤1:当所述设备接收到蓝牙连接事件时,与发起连接的发起方建立蓝牙连接,获取所述发起方的MAC地址并保存;
[0034]步骤2:所述设备等待接收所述发起方发送数据请求,当接收到的数据请求为配对确认请求时执行所述步骤SI,当接收到的数据请求为随机数交换请求时执行所述步骤S2。
[0035]上述步骤S4中配对过程结束时还包括,所述设备为所述发起方存储与所述发起方对应的配对信息。
[0036]所述发起方对应的配对信息包括所述发起方的MAC地址、所述第一数据、所述第二数据和所述第三数据。进一步的,所述发起方对应的配对信息还可以包括绑定个数和/或发起方的身份解析密钥。
[0037]上述数据通信过程包括,当所述设备接收到所述发起方发送的操作数据时,使用所述链路加密密钥对所述操作数据进行解密,根据解密结果执行相应操作,并将经过所述链路加密密钥加密得到的操作响应返回给所述发起方。
[0038]本发明的有益效果是:本发明提供的蓝牙设备及其工作方法,在兼容现有蓝牙协议的同时,既增强了配对的安全性,又有效避免了未经用户允许的未知设备与用户自身设备进行配对的问题。
【附图说明】
[0039]图1是实施例1提供的一种蓝牙设备的模块组成图;
[0040]图2是实施例3提供的一种蓝牙设备的配对方法流程图;
[0041 ]图3是实施例4提供的一种蓝牙设备的配对方法流程图。
【具体实施方式】
[0042]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]实施例1
[0044]本实施例提供了一种蓝牙设备,如图1所示,包括所述蓝牙连接模块200、配对模块100和数据通信模块300,其中,
[0045]所述蓝牙连接模块200,用于当接收到蓝牙连接事件时,与发起连接的发起方建立蓝牙连接,获取所述发起方的MAC地址并保存;
[0046]所述蓝牙连接模块200与所述配对模块100和所述数据通信模块300连接,具体还用于当获取所述发起方的MAC地址之后,根据所述发起方的MAC地址判断所述发起方是否是已绑定设备,是则根据所述发起方的MAC地址,获取与所述发起方对应的配对信息,将所述配对信息中的第一数据作为链路加密密钥,并触发所述数据通信模块300;否则触发所述配对模块100;所述发起方对应的配对信息包括所述发起方的MAC地址、所述第一数据、所述第二数据和所述第三数据。
[0047]或者是,所述蓝牙连接模块200具体还用于当获取所述发起方的MAC地址,且所述发起方的MAC地址的高位起的两个比特位为预设值时,接收所述发起方的身份解析密钥,根据所述发起方的身份解析密钥判断所述发起方是否是已绑定设备,是则根据所述发起方的身份解析密钥,获取与所述发起方对应的配对信息,将所述配对信息中的第一数据作为链路加密密钥,并触发所述数据通信模块300;否则触发所述配对模块100;所述发起方对应的配对信息包括所述发起方的MAC地址、所述第一数据、所述第二数据、所述第三数据和所述发起方的身份解析密钥。
[0048]本实施例中,所述配对模块100具体包括第一收发单元101、第一计算单元102、第二收发单元103、验证单元104、第二计算单元105和链路加密单元106:
[0049]所述第一收发单元101,用于接收发起方发来的配对确认请求,从所述配对确认请求中获取第一确认值,生成第二随机数;还用于将所述第一计算单元102计算出的所述第二确认值返回给所述发起方;
[0050]所述第一计算单元102,用于根据预设认证码、所述第一收发单元生成的所述第二随机数、当前保存的发起方的MAC地址、所述蓝牙设备自身的MAC地址计算出第二确认值;
[0051]所述第二收发单元103,用于接收所述发起方发来的随机数交换请求,从所述随机数交换请求中获取第一随机数;用于当所述验证单元104的验证结果为通过验证时向所述发起方返回所述第一收发单元101生成的所述第二随机数,并触发第二计算单元105;还用于当所述验证单元104的验证结果为未通过验证时向所述发起方返回错误信息;
[0052]所述验证单元104,用于根据所述第二收发单元103获取的所述第一随机数验证所述第一收发单元101获取的所述第一确认值;具体用于根据所述第一随机数、所述预设认证码、所述发起方的MAC地址和所述设备自身的MAC地址计算出第一比较值,比较所述第一比较值与所述第一确认值是否一致。
[0053]所述第二计算单元105,用于根据所述预设认证码、所述第二收发单元103获取的所述第一随机数、所述第一收发单元101生成的所述第二随机数计算得到加密密钥;
[0054]所述链路加密单元106,用于根据预置的第一数据、第二数据和第三数据组成链路加密数据,使用所述第二计算单元105计算得到的所述加密密钥加密所述链路加密数据得到链路加密请求并发送给所述发起方,设置所述第一数据为链路加密密钥。
[0055]优选的,本实施例中所述配对模块还包括第三收发单元、第一判断单元、第二判断单元、第三判断单元和模式设置单元;
[0056]所述第三收发单元,用于接收所述发起方发来的配对交换请求,用于在收到所述第一判断单元的触发时向所述发起方返回预设数据,用于收到所述第二判断单元的触发时向所述发起方返回表示密钥长度不支持的信息,用于收到所述第三判断单元的触发时向所述发起方返回表示拒绝配对的信息;
[0057]所述第一判断单元,用于判断当前模式是否为配对模式,是则触发所述第二判断单元,否则触发所述第三收发单元和第三判断单元;
[0058]所述第二判断单元,用于判断设备是否支持所述配对交换请求中指定的密钥长度,是则向所述发起方返回配对交换响应,否则触发所述第三收发单元;
[0059]所述第三判断单元,用于判断是否有长按键操作,是则触发所述第二判断单元,否则触发所述第三收发单元;
[0060]所述模式设置单元,用于在所述设备开机后设置当前模式为配对模式,还用于在所述配对模块完成配对后设置当前模式为非配对模式。具体用于在所述设备开机后判断开机方式,若是短按键开机则判断是否有长按键操作,是则置位配对模式标志,开启蓝牙广播,等待蓝牙连接,否则开启蓝牙广播,等待蓝牙连接;若是长按键开机则置位配对模式标志,开启蓝牙广播,等待蓝牙连接;还用于在所述配对模块完成配对后复位所述配对模式标
V 1、1、O
[0061 ]进一步的,本实施例中所述配对模块还包括存储单元,所述存储单元,用于为所述发起方存储与所述发起方对应的配对信息。
[0062]当所述配对信息还包括绑定个数时,所述存储单元,具体用于根据当前已存储的配对信息中包含的绑定个数判断已绑定设备的个数是否已达到上限值,是则根据所述上限值从当前已存储的配对信息中清除一个配对信息之后,为所述发起方存储与所述发起方对应的配对信息;否则根据当前已存储的所有配对信息中包含的绑定个数设置与所述发起方对应的配对信息中的绑定个数,并为所述发起方存储与所述发起方对应的配对信息。例如所述上限值为10,当已绑定设备的个数达到10个时,按照先进先出原则,从当前已存储的配对信息中找到所包含的绑定个数为I的配对信息并删除,将当前已存储的配对信息中所包含的绑定个数分别自减I,存储所述发起方对应的配对信息(该配对信息所包含的绑定个数为10)。当已绑定设备的个数未达到10个时,若当前已存储所有配对信息中包含的绑定个数的最大值为2,则为所述发起方存储与所述发起方对应的配对信息(该配对信息所包含的绑定个数为3)。
[0063]本实施中,所述数据通信模块,具体用于接收所述发起方发送的操作数据,使用所述配对模块获得的链路加密密钥对所述操作数据进行解密,根据解密结果执行相应操作,并将经过所述链路加密密钥加密得到的操作响应返回给所述发起方。
[0064]实施例2
[0065]本实施例提供了一种实施例1中所述蓝牙设备的工作方法,包括蓝牙连接过程、配对过程和数据通信过程。其中,所述配对过程包括以下步骤:
[0066]步骤S1:当所述设备接收到所述发起方发来的配对确认请求时,从所述配对确认请求中获取第一确认值,生成第二随机数;根据预设认证码、所述第二随机数、当前保存的发起方的MAC地址和设备自身的MAC地址计算出第二确认值,并向所述发起方返回所述第二确认值;
[0067]步骤S2:当所述设备接收到发起方发来的随机数交换请求时,从所述随机数交换请求中获取第一随机数;根据所述第一随机数验证所述第一确认值,若通过验证则执行步骤S3,若未通过验证则执行步骤S5;
[0068]步骤S3:所述设备向所述发起方返回所述第二随机数;
[0069]步骤S4:所述设备根据所述预设认证码、所述第一随机数、所述第二随机数计算得到加密密钥;根据预置的第一数据、第二数据和第三数据组成链路加密数据,使用所述加密密钥加密所述链路加密数据得到链路加密请求并将其发送给所述发起方,将所述第一数据作为链路加密密钥,为所述发起方存储与所述发起方对应的配对信息,配对过程结束;
[0070]本步骤中,所述发起方对应的配对信息包括:所述发起方的MAC地址、所述第一数据、所述第二数据和所述第三数据。
[0071]步骤S5:所述设备向所述发起方返回错误信息,配对过程结束。
[0072]进一步的,所述发起方对应的配对信息还可以包括绑定个数。当所述配对信息包括绑定个数时,步骤S4中所述存储与所述发起方对应的配对信息之前还包括,根据设备中已存储的所有配对信息所包含的绑定个数判断当前已绑定设备的个数是否已达到上限值,是则根据所述上限值从当前已存储的配对信息中清除一个配对信息,否则根据当前已存储的所有配对信息中所包含的绑定个数设置与所述发起方对应的配对信息所包含的绑定个数。例如所述上限值为3,当已绑定设备的个数未达到3个时,若当前已存储所有配对信息中包含的绑定个数的最大值为I,则为所述发起方存储与所述发起方对应的配对信息(该配对信息所包含的绑定个数为2)。
[0073]进一步的,所述配对过程还包括,当所述设备接收到所述发起方发来的配对交换请求时,所述设备执行以下步骤:
[0074]步骤A:所述设备判断当前模式是否为配对模式,是则执行步骤B,否则执行步骤B,;
[0075]步骤B:所述设备判断是否支持所述配对交换请求中指定的密钥长度,是则向所述发起方返回配对交换响应,否则向所述发起方返回表示密钥长度不支持的信息;
[0076]步骤B’:所述设备向所述发起方返回预设数据,并判断是否有长按键操作,是则执行步骤B,否则向所述发起方返回表示拒绝配对的信息;
[0077]所述方法还包括:所述设备开机后设置当前模式为配对模式,所述步骤S4中配对过程结束时还包括:所述设备修改当前模式为非配对模式。
[0078]优选的,本实施例中提供的所述蓝牙连接过程包括:
[0079]步骤1:当所述设备接收到蓝牙连接事件时,与发起连接的发起方建立蓝牙连接,获取所述发起方的MAC地址并保存;
[0080]步骤2:所述设备等待接收所述发起方发送的数据请求,当接收到的数据请求为配对确认请求时执行所述步骤SI,当接收到的数据请求为随机数交换请求时执行所述步骤S2,当接收到配对交换请求时执行所述步骤A。
[0081 ]上述步骤I中当所述设备获取所述发起方的MAC地址,且所述发起方的MAC地址的高位起的两个比特位为预设值时,还包括:所述设备接收所述发起方的身份解析密钥,根据所述发起方的身份解析密钥判断所述发起方是否是已绑定设备,是则根据所述发起方的身份解析密钥,获取与所述发起方对应的配对信息,将所述配对信息中的第一数据作为链路加密密钥,进入所述数据通信过程;否则执行所述步骤2;相应的所述配对信息还包括发起方的身份解析密钥。
[0082]实施例3
[0083]在实施例2的基础上,本实施例提供了一种蓝牙设备的配对方法,以所述蓝牙设备(本实施例中称为从设备)与发起方(本实施例中称为主设备)进行配对为例,配对过程中从设备执行的操作如图2所示,包括以下步骤:
[0084]步骤1:当从设备接收到主设备发来的配对确认请求时,从所述配对确认请求中获取第一确认值,生成第二随机数;
[0085]步骤2:从设备根据预设认证码、第二随机数、当前保存的主设备的MAC地址和从设备自身的MAC地址计算出第二确认值,并向主设备返回所述第二确认值;
[0086]步骤3:当从设备接收到主设备发来的随机数交换请求时,从所述随机数交换请求中获取第一随机数;
[0087]步骤4:从设备根据所述第一随机数验证所述第一确认值,若通过验证则执行步骤5,若未通过验证则执行步骤7 ;
[0088]具体的,从设备根据所述第一随机数、预设认证码、当前保存的主设备的MAC地址和从设备自身的MAC地址计算出第一比较值,比较所述第一比较值与所述第一确认值是否一致,是则通过验证,否则未通过验证。
[0089]步骤5:从设备向主设备返回所述第二随机数,并根据预设认证码、第一随机数、第二随机数计算得到加密密钥;
[0090]步骤6:从设备根据预置的第一数据、第二数据和第三数据组成链路加密数据,使用所述加密密钥加密所述链路加密数据得到链路加密请求并发送给所述主设备,配对结束;
[0091]优选的,预置的第一数据为链路加密密钥。本步骤中对于预置的第三数据,还可以是从设备生成第三随机数,并将生成的所述第三随机数作为第三数据保存。
[0092]进一步的,本步骤还可以包括,从设备获取所述主设备对应的配对信息并存储。优选的,所述主设备对应的配对信息包括主设备的MAC地址、第一数据(LTK)、第二数据(EDIV)和第三数据(Rand)。
[0093]优选的,当从设备获取主设备的MAC地址时,还包括,根据该MAC地址判断所述主设备是否是已绑定设备,是则直接使用与该MAC地址对应的配对信息中的第一数据作为链路加密密钥与主设备进行数据通信,否则执行本发明所述配对流程,并在配对结束时存储与所述主设备对应的配对信息。
[0094]当所述主设备的MAC地址的高位起的两个比特位为10时,从设备还可以获得主设备的身份解析密钥(IRK),相应的,所述配对信息还包括主设备的身份解析密钥。优选的,当从设备获取主设备的IRK时,根据该IRK判断所述主设备是否是已绑定设备,是则直接使用与该IRK对应的配对信息中的第一数据作为链路加密密钥与主设备进行数据通信,否则执行本发明所述配对流程,并在配对结束时存储于所述主设备对应的配对信息。
[0095]当所述从设备设置有最多可绑定的设备个数时,所述配对信息还可以包括绑定个数,相应的,所述从设备存储所述配对信息之前还包括,根据已存储的配对信息中包含的绑定个数判断已绑定设备的个数是否已达到上限值,是则从已存储的配对信息中清除与所述上限值对应的配对信息,将已存储的所有配对信息中包含的绑定个数分别加I,设置当前的所述主设备对应的绑定个数为初值;否则设置当前的所述主设备对应的绑定个数为当前已存储的配对信息中包含的绑定个数的最大值加I。例如,上限值为10,初值为I。
[0096]步骤7:从设备向所述主设备返回错误信息,配对结束。
[0097]进一步的,与图2所示流程相对应,蓝牙配对过程中当主设备接收到用户的操作时,主设备执行以下步骤:
[0098]步骤al:主设备生成第一随机数,根据预设认证码、第一随机数、从设备的MAC地址和主设备自身的MAC地址计算出第一确认值,根据所述第一确认值组成配对确认请求并发送给从设备;
[0099]进一步的,本步骤还可以是:主设备生成第一随机数,接收用户输入的预设认证码,根据预设认证码、第一随机数、从设备的MAC地址和主设备自身的MAC地址计算出第一确认值,将第一确认值作为配对确认请求发送给从设备。优选的,所述主设备的外壳上印刷有所述预设认证码。
[0100]步骤a2:主设备接收从设备返回的第二确认值,根据所述第一随机数组成随机数交换请求并将其发送给所述从设备;
[0101]步骤a3:主设备接收从设备返回的第二随机数;
[0102]步骤a4:主设备根据所述第二随机数验证所述第二确认值,若通过验证则执行步骤a5,若未通过验证则显示配对失败,并等待用户的操作;
[0103]具体的,主设备根据所述第二随机数、预设认证码、当前保存的从设备的MAC地址和主设备自身的MAC地址计算出第二比较值,比较所述第二比较值与所述第二确认值是否一致,是则通过验证,否则未通过验证。
[0104]步骤a5:主设备根据预设认证码、第一随机数和第二随机数计算得到加密密钥;
[0105]步骤a6:当主设备接收到从设备发送的链路加密请求时,使用所述加密密钥解密所述链路加密请求得到第一数据、第二数据和第三数据,将第一数据作为链路加密密钥保存,将第二数据和第三数据与链路加密密钥建立对应关系并保存。
[0106]进一步的,本步骤还可以包括,主设备根据所述从设备的MAC地址、所述链路加密密钥、所述第二数据和所述第三数据组成与所述从设备对应的配对信息并存储。
[0107]实施例4
[0108]在实施例2的基础上,本实施例提供了一种蓝牙设备的配对方法,以所述蓝牙设备(从设备)与发起方(主设备)进行配对为例进行详细说明,如图3所示,从设备(以下简称设备)开机以后,执行以下步骤:
[0109]步骤101:判断开机方式,若是长按键开机则执行步骤104,若是短按键开机则执行步骤102;
[0110]优选的,设备判断按键按下时间,若达到5s则开机方式为长按键开机,否则开机方式为短按键开机。
[0111]步骤102:判断是否有长按键操作,是则执行步骤104,否则执行步骤103;
[0112]具体的,判断按键按下是否是否达到5s,是则表示有长按键操作,否则表示没有长按键操作。
[0113]步骤103:开启蓝牙广播,执行步骤105;
[0114]步骤104:置位配对模式标志,开启蓝牙广播,执行步骤105;
[0115]步骤105:等待蓝牙连接事件;
[0116]步骤106:当接收到蓝牙连接事件时,获取发起连接的主设备的MAC地址并保存;
[0117]例如,获取并保持的主设备的MAC地址为0χΑ1Α2Α3Α4Α5Α6。
[0118]步骤107:等待接收所述主设备发送的数据请求;
[0119]当接收到数据请求时,执行步骤108;
[0120]步骤108:判断接收到的数据请求的类型,若是配对交换请求则执行步骤109,若是配对确认请求则执行步骤116,若是随机数交换请求则执行步骤118;
[0121]具体的,判断接收到的数据请求的低位起的第一个八位组(octet),若为0x01则数据请求的类型为配对交换请求,若为0x03则数据请求的类型为配对确认请求,若为0x04则为随机数交换请求。
[0122]例如,收到的配对交换请求为:0x07071000000101。
[0123]配对确认请求为:0x0102 03 04 05 06 07 08 09 00 00 00 00 00 00 00 03。
[0124]随机数交换请求为:0x000F0E0D0C0B0A09112233445566778804。
[0125]步骤109:判断配对模式标志是否置位,是则执行步骤110,否则执行步骤113;
[0126]步骤110:判断是否支持所述配对交换请求中指定的密钥长度,是则执行步骤111,否则执行步骤112;
[0127]具体的,所述配对交换请求的数据组成结构,从低位到高位依次为:0x01、预设功能属性值(I个八位组)、00B data flag(l个八位组)、AuthReq(l个八位组)、最大密钥长度(I个八位组)、Initiator Key Distribut1n) I个八位组)、Responder Key Distribut1n(I个八位组),本步骤具体为,根据接收到的所述配对交换请求的低位起的第五个八位组确定指定的密钥长度,判断自身支持的最大密钥长度是否大于等于所述指定的密钥长度,是则执行步骤111,否则执行步骤112。
[0128]例如,接收到的配对交换请求为0x07071000000101,根据配对交换请求的低位起的第五个八位组10确定的指定的密钥长度为16个八位组,设备自身支持的最大密钥长度为8个八位组,则本步骤判断结果为设备不支持所述指定的密钥长度。
[0129]步骤111:根据自身支持的最大密钥长度和预设功能属性值组成配对交换响应并返回给所述主设备,返回步骤107;
[0130]具体的,配对交换响应的数据组成结构,从低位到高位依次为:0x02、预设功能属性值(I个八位组)、00B data flag(l个八位组)、AuthReq(l个八位组)、最大密钥长度(I个八位组)、Initiator Key Distribut1n) I个八位组)、Responder Key Distribut1n) I个八位组)。
[0131 ]例如,设备自身支持的密钥长度为8个八位组,预设功能属性值为0x03,则本步骤组成的配对交换响应可以为:0x05000800000302。
[0132]步骤112:向所述主设备返回表示密钥长度不支持的信息,返回步骤107;
[0133]例如,向所述主设备返回的错误信息为0x06 05,其中,05为错误字节码,06用于表示的错误原因是密钥长度不支持。
[0134]步骤113:向主设备返回预设数据;
[0135]例如,向所述主设备返回0x82000102。
[0136]步骤114:判断是否有长按键操作,是则返回执行步骤110,否则执行步骤115;
[0137]具体的,判断是否有按键按下且按键时间达到5s,是则表示有长按键操作,执行步骤110,否则执行步骤115。
[0138]步骤115:向所述主设备返回表示拒绝配对的信息,返回步骤107;
[0139]例如,向所述主设备返回Ox 07 05,其中05为错误字节码。
[0140]步骤116:从所述配对确认请求中获取第一确认值,生成第二随机数;
[0141]具体的,所述配对确认请求的数据格式为:第一确认值(16个八位组)+0x03。本步骤具体为,获取所述配对请求的高位起的第I至第16个八位组作为第一确认值,并生成长度为16个八位组的第二随机数。
[0142]例如,所述配对确认请求为0x0102 03 04 05 06 07 08 09 00 00 00 00 00 0000 03,则获取的第一确认值为0x01 02 03 04 05 06 07 08 09 00 00 00 00 00 00 00。生成第二随机数为0x010203040506070899AABBCCDDEEFF00。
[0143]步骤117:根据预设认证码、第二随机数、主设备的MAC地址和从设备自身的MAC地址计算出第二确认值,根据第二确认值生成配对确认响应并返回给所述主设备,然后返回步骤107;
[0144]具体的,使用AES-128加密算法对所述预设认证码、第二随机数、主设备的MAC地址和从设备自身的MAC地址计算得到第二确认值(Sconfirm)。
[0145]具体的,Sconfirm= e(k,e(k,r XOR pl)X0R p2),其中,k为预设认证码,r为第二随机数,pl=pres I |preq| |rat,| | iat,,p2 = padding| | ia |ra,其中pres为配对交换请求,preq为配对交换响应,rat ’为主设备地址类型,iat ’为从设备地址类型,ia为主设备MAC地址,ra为从设备MAC地址,padding为填充字节。
[0146]例如,k= 0x00000000000000000000000000000000,r =0x010203040506070899AABBCCDDEEFF00,pi=0x05000800000302070710000001010001,p2= 0χ00000000Α1Α2Α3Α4Α5Α6Β1Β2Β3Β4Β5Β6,计算得到的第二确认值为OxlE IE 3F EF878988EA D2A74D C5BE F13B 86。
[0147]优选的,将第二确认值作为配对确认响应返回给所述主设备。例如,向主设备返回OxlE IE 3F EF 878988 EA D2 A74D C5 BE F13B 86。
[0148]步骤118:从所述随机数交换请求中获取第一随机数;
[0149]具体的,随机数交换请求的数据格式为:第一随机数(16个八位组)+0x04,本步骤具体为,获取所述随机数交换请求的高位起的第I至第16个八位组作为第一随机数。
[0150]例如,随机数交换请求为0x000F0E0D0C0B0A09112233445566778804,获取的第一随机数为0x000F0E0D0C0B0A091122334455667788。
[0151]步骤119:根据所述第一随机数验证所述第一确认值,若通过验证则执行步骤120,若未通过验证则执行步骤123;
[0152]具体的,使用AES-128加密算法对所述第一随机数、预设认证码、当前保存的主设备的MAC地址和从设备自身的MAC地址计算得到第一比较值,比较所述第一比较值与所述第一确认值是否一致,是则通过验证,否则未通过验证。
[0153]例如,计算得到的第一比较值为OxlDID 3D EF 878988 EA D2 A74D C5 BE F13B86,与第一确认值0x01 02 03 04 05 06 07 08 09 00 00 00 00 00 00 00不一致,则本步骤判断结果为未通过验证。
[0154]步骤120:根据所述第二随机数组成随机数交换响应并返回给所述主设备;
[0155]具体的,将所述第二随机数按照数据结构:第二随机数+0x04,组成随机数交换响应并返回给所述主设备。
[0156]例如,返回给所述主设备的随机数交换响应为0x010203040506070899AABBCCDDEEFF00 04。
[0157]步骤121:根据预设认证码、第一随机数、第二随机数计算得到加密密钥;
[0158]具体的,使用AES-128加密算法对所述预设认证码、第一随机数、第二随机数计算得到加密密钥。
[0159]例如,预设认证码为0x00000000000000000000000000000000,第一随机数为0x000F0E0D0C0B0A091122334455667788,第二随机数为0x010203040506070899AABBCCDDEEFF00,计算得到的加密密钥为0x9A IF El FO E8 BOF49B 5B 4216 AE 796D A062。
[0160]步骤122:根据预置的第一数据、第二数据和第三数据组成链路加密数据,使用所述加密密钥加密所述链路加密数据得到链路加密请求并发送给所述主设备,复位配对模式标志,返回步骤107;
[0161]具体的,从设备依据从低位到高位依次为第一数据(16个八位组)、第二数据(2个八位组)、第三数据(8个八位组)的数据格式组成链路加密数据。
[0162]本步骤还可以包括:获取并存储所述主设备对应的配对信息,所述主设备对应的配对信息包括所述主设备的MAC地址、所述第一数据、所述第二数据和所述第三数据。当所述从设备设置有最多可绑定的设备个数时,所述配对信息还可以包括绑定个数,相应的,所述从设备存储所述配对信息之前还包括,根据已存储的配对信息中包含的绑定个数判断已绑定设备的个数是否已达到上限,是则清除已存储的配对信息中包含的绑定个数为初值的配对信息,设置当前的所述主设备对应的绑定个数为初值,获取并存储所述主设备对应的配对信息;否则设置当前的所述主设备对应的绑定个数为当前已存储的配对信息中包含的绑定个数的最大值加I,获取并存储所述主设备对应的配对信息。例如,绑定个数的初值为I,绑定个数等于8时表示已绑定设备的个数达到上限。
[0163]进一步的,本步骤还可以是:从设备生成第三随机数作为第三数据,将生成的第三数据与预置的第一数据、第二数据建立对应关系并保存,根据预置的第一数据、第二数据和生成的第三数据组成链路加密数据,使用所述加密密钥加密所述链路加密数据得到链路加密请求并发送给所述主设备,复位配对模式标志,获取并存储所述主设备对应的配对信息,返回步骤107。
[0164]例如,第一数据为0x4C68384139F574D836BCF34E9DFB01BF,第二数据为 0x0000,第三数据为0x00000000000000;加密密钥为0x9A IF El FO E8 BO F49B 5B 4216 AE 796DA062,则本步骤加密得到的链路加密请求为0X46EAB301AF6432F3C2055687905297EB。
[0165]本实施例中,从设备将所述第一数据作为链路加密密钥保存,所述第二数据和第三数据与所述链路加密密钥形成对应关系并一起保存。
[0166]进一步的,从设备将所述链路加密请求发送给主设备之后,还可以接收到主设备返回的链路加密请求响应,从设备判断所述链路加密请求响应中是否包含有第二数据和第三数据,是则链路加密密钥协商成功,否则链路加密密钥协商失败。
[0167]步骤123:向所述主设备返回错误信息,返回步骤107;
[0168]例如,向所述主设备返回的错误信息为0x04 05,其中,05为错误字节码,04用于表示的错误原因是确认值不匹配。
[0169]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
【主权项】
1.一种蓝牙设备的工作方法,包括所述设备与发起方之间的蓝牙连接过程、配对过程和数据通信过程,其特征在于,所述配对过程包括: 步骤SI:当所述设备接收到所述发起方发来的配对确认请求时,从所述配对确认请求中获取第一确认值,生成第二随机数;根据预设认证码、所述第二随机数、当前保存的发起方的MAC地址和设备自身的MAC地址计算出第二确认值,并向所述发起方返回所述第二确认值; 步骤S2:当所述设备接收到发起方发来的随机数交换请求时,从所述随机数交换请求中获取第一随机数;根据所述第一随机数验证所述第一确认值,若通过验证则执行步骤S3,若未通过验证则执行步骤S5 ; 步骤S3:所述设备向所述发起方返回所述第二随机数; 步骤S4:所述设备根据所述预设认证码、所述第一随机数、所述第二随机数计算得到加密密钥;根据预置的第一数据、第二数据和第三数据组成链路加密数据,使用所述加密密钥加密所述链路加密数据得到链路加密请求并发送给所述发起方,将所述第一数据作为链路加密密钥,配对过程结束; 步骤S5:所述设备向所述发起方返回错误信息,配对过程结束。2.如权利要求1所述的方法,其特征在于:所述根据所述第一随机数验证所述第一确认值具体为,根据所述第一随机数、所述预设认证码、当前保存的发起方的MAC地址和所述设备自身的MAC地址计算出第一比较值,比较所述第一比较值与所述第一确认值是否一致,是则通过验证,否则未通过验证。3.如权利要求1所述的方法,其特征在于:所述配对过程还包括,当所述设备接收到所述发起方发来的配对交换请求时,所述设备执行以下步骤: 步骤A:判断当前模式是否为配对模式,是则执行步骤B,否则执行步骤B ’ ; 步骤B:判断是否支持所述配对交换请求中指定的密钥长度,是则向所述发起方返回配对交换响应,否则向所述发起方返回表示密钥长度不支持的信息; 步骤B ’:向所述发起方返回预设数据,并判断是否有长按键操作,是则执行步骤B,否则向所述发起方返回表示拒绝配对的信息; 所述方法还包括:所述设备开机后设置当前模式为配对模式,所述步骤S4中配对过程结束时还包括:所述设备修改当前模式为非配对模式。4.如权利要求3所述的方法,其特征在于:所述设备开机后设置当前模式为配对模式具体包括:所述设备开机并判断开机方式,若是短按键开机则判断是否有长按键操作,是则置位配对模式标志,开启蓝牙广播,等待蓝牙连接,否则开启蓝牙广播,等待蓝牙连接;若是长按键开机则置位配对模式标志,开启蓝牙广播,等待蓝牙连接; 所述修改当前模式为非配对模式具体为:复位所述配对模式标志。5.如权利要求1所述的方法,其特征在于:所述蓝牙连接过程包括, 步骤1:当所述设备接收到蓝牙连接事件时,与发起连接的发起方建立蓝牙连接,获取所述发起方的MAC地址并保存; 步骤2:所述设备等待接收所述发起方发送数据请求,当接收到的数据请求为配对确认请求时执行所述步骤SI,当接收到的数据请求为随机数交换请求时执行所述步骤S2。6.如权利要求5所述的方法,其特征在于:所述步骤I中当所述设备获取所述发起方的MAC地址之后,还包括所述设备根据所述发起方的MAC地址判断所述发起方是否是已绑定设备,是则根据所述发起方的MAC地址,获取与所述发起方对应的配对信息,将所述配对信息中的第一数据作为链路加密密钥,进入所述数据通信过程;否则执行所述步骤2; 所述发起方对应的配对信息包括所述发起方的MAC地址、所述第一数据、所述第二数据和所述第三数据。7.如权利要求5所述的方法,其特征在于:所述步骤I中当所述设备获取所述发起方的MAC地址,且所述发起方的MAC地址的高位起的两个比特位为预设值时,还包括:所述设备接收所述发起方的身份解析密钥,根据所述发起方的身份解析密钥判断所述发起方是否是已绑定设备,是则根据所述发起方的身份解析密钥,获取与所述发起方对应的配对信息,将所述配对信息中的第一数据作为链路加密密钥,进入所述数据通信过程;否则执行所述步骤2; 所述发起方对应的配对信息包括所述发起方的MAC地址、所述第一数据、所述第二数据、所述第三数据和所述发起方的身份解析密钥。8.如权利要求1或6或7所述的方法,其特征在于:所述步骤S4中配对过程结束时还包括,所述设备为所述发起方存储与所述发起方对应的配对信息。9.如权利要求8所述的方法,其特征在于:所述配对信息还包括绑定个数,所述存储与所述发起方对应的配对信息之前还包括,根据设备中已存储的所有配对信息所包含的绑定个数判断当前已绑定设备的个数是否已达到上限值,是则根据所述上限值从当前已存储的配对信息中清除一个配对信息,否则根据当前已存储的所有配对信息中所包含的绑定个数设置与所述发起方对应的配对信息所包含的绑定个数。10.如权利要求1所述的方法,其特征在于:所述数据通信过程包括,当所述设备接收到所述发起方发送的操作数据时,使用所述链路加密密钥对所述操作数据进行解密,根据解密结果执行相应操作,并将经过所述链路加密密钥加密得到的操作响应返回给所述发起方。11.一种蓝牙设备,包括蓝牙连接模块、配对模块和数据通信模块,其特征在于,所述配对模块具体包括第一收发单元、第一计算单元、第二收发单元、验证单元、第二计算单元和链路加密单元: 所述第一收发单元,用于接收发起方发来的配对确认请求,从所述配对确认请求中获取第一确认值,生成第二随机数;还用于将所述第一计算单元计算出的所述第二确认值返回给所述发起方; 所述第一计算单元,用于根据预设认证码、所述第一收发单元生成的所述第二随机数、当前保存的发起方的MAC地址、所述蓝牙设备自身的MAC地址计算出第二确认值; 所述第二收发单元,用于接收所述发起方发来的随机数交换请求,从所述随机数交换请求中获取第一随机数;用于当所述验证单元的验证结果为通过验证时向所述发起方返回所述第一收发单元生成的所述第二随机数,并触发第二计算单元;还用于当所述验证单元的验证结果为未通过验证时向所述发起方返回错误信息; 所述验证单元,用于根据所述第二收发单元获取的所述第一随机数验证所述第一收发单元获取的所述第一确认值; 所述第二计算单元,用于根据所述预设认证码、所述第二收发单元获取的所述第一随机数、所述第一收发单元生成的所述第二随机数计算得到加密密钥; 所述链路加密单元,用于根据预置的第一数据、第二数据和第三数据组成链路加密数据,使用所述第二计算单元计算得到的所述加密密钥加密所述链路加密数据得到链路加密请求并发送给所述发起方,设置所述第一数据为链路加密密钥。12.如权利要求11所述的设备,其特征在于:所述验证单元,具体用于根据所述第一随机数、所述预设认证码、所述发起方的MAC地址和所述设备自身的MAC地址计算出第一比较值,比较所述第一比较值与所述第一确认值是否一致。13.如权利要求11所述的设备,其特征在于:所述配对模块还包括第三收发单元、第一判断单元、第二判断单元、第三判断单元和模式设置单元; 所述第三收发单元,用于接收所述发起方发来的配对交换请求,用于在收到所述第一判断单元的触发时向所述发起方返回预设数据,用于收到所述第二判断单元的触发时向所述发起方返回表示密钥长度不支持的信息,用于收到所述第三判断单元的触发时向所述发起方返回表示拒绝配对的信息; 所述第一判断单元,用于判断当前模式是否为配对模式,是则触发所述第二判断单元,否则触发所述第三收发单元和第三判断单元; 所述第二判断单元,用于判断设备是否支持所述配对交换请求中指定的密钥长度,是则向所述发起方返回配对交换响应,否则触发所述第三收发单元; 所述第三判断单元,用于判断是否有长按键操作,是则触发所述第二判断单元,否则触发所述第三收发单元; 所述模式设置单元,用于在所述设备开机后设置当前模式为配对模式,还用于在所述配对模块完成配对后设置当前模式为非配对模式。14.如权利要求13所述的设备,其特征在于:所述模式设置单元,具体用于在所述设备开机后判断开机方式,若是短按键开机则判断是否有长按键操作,是则置位配对模式标志,开启蓝牙广播,等待蓝牙连接,否则开启蓝牙广播,等待蓝牙连接;若是长按键开机则置位配对模式标志,开启蓝牙广播,等待蓝牙连接;还用于在所述配对模块完成配对后复位所述配对模式标志。15.如权利要求11所述的设备,其特征在于:所述蓝牙连接模块,具体用于当接收到蓝牙连接事件时,与发起连接的发起方建立蓝牙连接,获取所述发起方的MAC地址并保存。16.如权利要求15所述的设备,其特征在于:所述蓝牙连接模块,还用于当获取所述发起方的MAC地址之后,根据所述发起方的MAC地址判断所述发起方是否是已绑定设备,是则根据所述发起方的MAC地址,获取与所述发起方对应的配对信息,将所述配对信息中的第一数据作为链路加密密钥,并触发所述数据通信模块;否则触发所述配对模块; 所述发起方对应的配对信息包括所述发起方的MAC地址、所述第一数据、所述第二数据和所述第三数据。17.如权利要求15所述的设备,其特征在于:所述蓝牙连接模块,还用于当获取所述发起方的MAC地址,且所述发起方的MAC地址的高位起的两个比特位为预设值时,接收所述发起方的身份解析密钥,根据所述发起方的身份解析密钥判断所述发起方是否是已绑定设备,是则根据所述发起方的身份解析密钥,获取与所述发起方对应的配对信息,将所述配对信息中的第一数据作为链路加密密钥,并触发所述数据通信模块;否则触发所述配对模块; 所述发起方对应的配对信息包括所述发起方的MAC地址、所述第一数据、所述第二数据、所述第三数据和所述发起方的身份解析密钥。18.如权利要求11或16或17所述的设备,其特征在于:所述配对模块还包括存储单元,所述存储单元,用于为所述发起方存储与所述发起方对应的配对信息。19.如权利要求18所述的设备,其特征在于:所述配对信息还包括绑定个数; 所述存储单元,具体用于根据当前已存储的配对信息中包含的绑定个数判断已绑定设备的个数是否已达到上限值,是则根据所述上限值从当前已存储的配对信息中清除一个配对信息之后,为所述发起方存储与所述发起方对应的配对信息;否则根据当前已存储的所有配对信息中包含的绑定个数设置与所述发起方对应的配对信息中的绑定个数,并为所述发起方存储与所述发起方对应的配对信息。20.如权利要求11所述的设备,其特征在于:所述数据通信模块,具体用于接收所述发起方发送的操作数据,使用所述配对模块获得的链路加密密钥对所述操作数据进行解密,根据解密结果执行相应操作,并将经过所述链路加密密钥加密得到的操作响应返回给所述发起方。
【文档编号】H04W12/06GK105933039SQ201610471163
【公开日】2016年9月7日
【申请日】2016年6月24日
【发明人】陆舟, 于华章
【申请人】飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1