本发明涉及蓝牙通讯加密技术,具体涉及一种低功耗蓝牙设备通讯加密方法及系统。
背景技术:
低功耗蓝牙设备(BLE)可实现超低的峰值、均衡和空闲模式的功耗,通信距离长达100米左右,设备占空比低可节省更多电能,使用纽扣电池甚至可以运行多年。
目前低功耗蓝牙设备的应用范围越来越广,涉及医疗,智能穿戴等领域,在物联网生态系统中也将扮演重要的角色。同时,iOS、安卓、Windows 10、Linux等主流操作系统均开始原生支持BLE低功耗蓝牙。
目前蓝牙通讯的安全性主要依赖基带层的E0算法,受制于线性反馈移位寄存器(LFSR)资源能力有限,安全性相对来说比较弱。对于安全性要求较高的场景(如支付),需要有更高的安全通讯机制来保证蓝牙通讯的安全。
RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ronald Rivest在1987年设计的密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节。该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性。
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致,是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。
技术实现要素:
针对现有技术中所存在的问题,本发明的目的在于提供一种低功耗蓝牙设备通讯加密方法及系统,实现通讯安全性,保证蓝牙设备通讯的安全。
为达到上述发明目的,本发明的技术方案如下:
低功耗蓝牙设备通讯加密方法,包括:
(1)生成蓝牙设备的密钥;
(2)蓝牙设备和配对设备根据上述密钥信息完成配对;
(3)蓝牙设备和配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯。
进一步地,上述低功耗蓝牙设备通讯加密方法,步骤(1)中,生成蓝牙设备密钥的方法包括:
(101)获取蓝牙设备的相关标识;
(102)根据相关标识生成keySource,
(103)对keySource进行MD5运算生成密钥;
所述相关标识为蓝牙标识或者所述相关标识为蓝牙标识和国际移动设备辨识码。
进一步地,上述低功耗蓝牙设备通讯加密方法,步骤(2)中,蓝牙设备和配对设备根据上述密钥信息完成配对,包括:
(201)蓝牙设备和配对设备建立蓝牙层连接;
(202)蓝牙设备发送携带步骤(1)中密钥信息的第一连接指令给配对设备;
(203)蓝牙设备接收配对设备的第一连接指令反馈信息;
若第一连接指令反馈信息为确认,则(204)第一连接指令中携带的密钥信息作为配对设备的密钥信息,完成蓝牙设备与配对设备的配对。
进一步地,上述低功耗蓝牙设备通讯加密方法,步骤(203)中,若第一连接指令反馈信息不为确认,则(205)拒绝所述蓝牙设备与配对设备之间通讯连接。
进一步地,上述低功耗蓝牙设备通讯加密方法,步骤(3)中,蓝牙设备和配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯的方法包括:
步骤(204)的配对完成后,(301)蓝牙设备发送第一认证指令给配对设备;
(302)蓝牙设备接收配对设备的第一认证指令反馈信息;
若第一认证指令反馈信息为通过,则(303)蓝牙设备与配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯。
进一步地,上述低功耗蓝牙设备通讯加密方法,步骤(302)中,若第一认证指令反馈信息为不通过,则(205)拒绝所述蓝牙设备与配对设备之间通讯连接。
进一步地,上述低功耗蓝牙设备通讯加密方法,判断所述第一认证指令是否通过的方法为,蓝牙设备和配对设备分别对第一指令认证指令中的相同内容做加密运算,运算结果一致即为通过;该加密运算中,所述蓝牙设备采用步骤(1)方法生成的本蓝牙设备的密钥信息,所述配对设备采用配对设备的密钥信息。
进一步地,上述低功耗蓝牙设备通讯加密方法,步骤(3)中,对于采用步骤(1)中密钥信息完成过与所述蓝牙设备配对的配对设备,蓝牙设备和该配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯的方法包括:
(401)蓝牙设备和配对设备建立蓝牙层连接;
(402)蓝牙设备发送第二认证指令给配对设备;
(403)蓝牙设备接收配对设备的第二认证指令反馈信息;
若第二认证指令反馈信息为通过,则(404)蓝牙设备与配对设备完成通讯连接以进行基于密钥信息的RC4加密通讯。
进一步地,上述低功耗蓝牙设备通讯加密方法,步骤(403)中,若第二认证指令反馈信息为不通过,则(405)蓝牙设备发送携带密钥信息的第二连接指令给配对设备;
(406)蓝牙设备接收配对设备的第二连接指令反馈信息;
若第二连接指令反馈信息为确认,则(407)将第二连接指令中携带的密钥信息作为配对设备的密钥信息,返回步骤(402)。
进一步地,上述低功耗蓝牙设备通讯加密方法,步骤(406)中,若第二连接指令反馈信息不为确认,则拒绝所述蓝牙设备与配对设备之间通讯连接。
进一步地,上述低功耗蓝牙设备通讯加密方法,判断所述第二认证指令是否通过的方法为,蓝牙设备和配对设备分别对第二指令认证指令中的相同内容做加密运算,运算结果一致即为通过;该加密运算中,所述蓝牙设备采用步骤(1)方法生成的本蓝牙设备的密钥信息,所述配对设备采用配对设备的密钥信息。
相应地,本发明还提供了低功耗蓝牙设备通讯加密系统,包括:
密钥生成单元,用于生成蓝牙设备的密钥;
配对单元,用于蓝牙设备和配对设备建立蓝牙层连接后根据密钥生成单元生成的密钥完成蓝牙设备与配对设备之间的配对;
连接单元,用于建立蓝牙设备与配对设备之间的通讯连接以进行基于上述密钥信息的RC4加密通讯。
进一步地,上述低功耗蓝牙设备通讯加密系统,所述密钥生成单元包括:
标识获取模块,用于从蓝牙设备获取蓝牙标识;或者用于从蓝牙设备获取蓝牙标识和国际移动设备辨识码;
keySource生成模块,用于根据蓝牙标识生成keySource或根据蓝牙标识和国际移动设备辨识码生成keySource;
密钥生成模块,对keySource进行MD5运算生成密钥。
进一步地,上述低功耗蓝牙设备通讯加密系统,所述蓝牙标识为MAC或UUID。
进一步地,上述低功耗蓝牙设备通讯加密系统,所述配对单元包括:
第一连接指令收发模块,设置于蓝牙设备,用于发送携带密钥生成单元所生成密钥信息的第一连接指令给第二连接指令收发模块和接收来自第二连接指令收发模块的第一连接指令反馈信息;
第二连接指令收发模块,设置于配对设备,用于接收来自第一连接指令收发模块的第一连接指令和根据用户选择发送第一连接指令反馈信息给第一连接指令收发模块;
配对确认模块,用于判断第一连接指令反馈信息是否为确认,若是,则完成配对,若否,则提示用户拒绝连接。
进一步地,上述低功耗蓝牙设备通讯加密系统,所述连接单元包括:
第一认证指令收发模块,设置于所述蓝牙设备,用于完成配对后发送第一认证指令给第二认证指令收发模块和接收来自第二认证指令收发模块的第一认证指令反馈信息;
第二认证指令收发模块,设置于所述配对设备,用于接收来自第一认证指令收发模块的第一认证指令和根据认证结果发送第一认证指令反馈信息给第一认证指令收发模块;
认证判定模块,用于判定第一认证指令是否通过,若通过则蓝牙设备与配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯,若否,则提示用户拒绝连接。
进一步地,上述低功耗蓝牙设备通讯加密系统,所述认证判定模块包括:
第一加密运算模块,设置于所述蓝牙设备,用于对第一认证指令中的内容进行加密运算;
第二加密运算模块,设置于所述配对设备,用于对第一认证指令中的相同内容进行加密运算;
运算结果比对模块,用于第一加密运算模块的加密结果和第二运算模块的加密结果进行比对,若二者相同,则判定认证结果为通过,若二者不同则判定认证结果为不通过。
进一步地,上述低功耗蓝牙设备通讯加密系统,
第一认证指令收发模块,还用于完成配对、蓝牙设备和配对设备再次建立蓝牙层连接后发送第二认证指令给第二认证指令收发模块和接收来自第二认证指令收发模块的第二认证指令反馈信息;
第二认证指令收发模块,还用于接收来自第一认证指令收发模块的第二认证指令和根据认证结果发送第二认证指令反馈信息给第一认证指令收发模块;
认证判定模块,还用于判定第二认证指令是否通过,若通过则蓝牙设备与配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯,若否,则给第一连接指令收发模块发送请求信息。
进一步地,上述低功耗蓝牙设备通讯加密系统,
第一连接指令收发模块,还用于接收所述请求信息后,发送第二连接指令给第二连接指令收发模块和接收来自第二连接指令收发模块的第二连接指令反馈信息;
第二连接指令收发模块,还用于接收来自第一连接指令收发模块的第二连接指令和根据用户选择发送第二连接指令反馈信息给第一连接指令收发模块;
配对确认模块,用于判断第二连接指令反馈信息是否为确认,若是,则完成配对,若否,则提示用户拒绝连接。
进一步地,上述低功耗蓝牙设备通讯加密系统,所述认证判定模块包括:
第一加密运算模块,设置于所述蓝牙设备,用于对第二认证指令中的内容进行加密运算;
第二加密运算模块,设置于所述配对设备,用于对第二认证指令中的相同内容进行加密运算;
运算结果比对模块,用于第一加密运算模块的加密结果和第二运算模块的加密结果进行比对,若二者相同,则判定认证结果为通过,若二者不同则判定认证结果为不通过。
本发明具有以下有益效果:
1、本发明的技术方案采用md5码根据相关标识生成密钥,安全性高;
2、基于手机终端、可穿戴设备等BLE低功耗蓝牙设备,采用上述密钥进行加密通讯的连接时,通过用户参与配对确认(或连接时确认)的过程完成密钥的交换,密钥生成依赖于手机终端的蓝牙标识(MAC或UUID)通过MD5运算最终得到密钥,而后使用RC4加密方式保护所有的蓝牙通讯报文;每次连接会进行加密信息的认证工作,使用户认可连接的设备能够安全的进行蓝牙通讯;
3、权限许可的前提下,密钥的生成还可以配合手机的唯一标识(IMEI),进一步提高密钥的安全性。
附图说明
图1为本发明低功耗蓝牙设备通讯加密方法的流程框图。
图2为本发明低功耗蓝牙设备通讯加密系统的结构框图。
图3为本发明密钥生成方法的流程图。
图4为本发明密钥生成单元的结构框图。
图5为本发明配对单元的结构框图。
图6为本发明连接单元的结构框图。
图7为本发明认证判定模块的结构框图。
图8为本发明低功耗蓝牙设备通讯加密方法首次进行配对连接的一个实施例的流程图。
图9为本发明低功耗蓝牙设备通讯加密方法再次进行配对连接的一个实施例的流程图。
具体实施方式
下面结合附图和实施例对本发明进行详细的描述。
如图1所示,本发明提供了一种低功耗蓝牙设备通讯加密方法,包括:生成蓝牙设备的密钥,S1;蓝牙设备和配对设备根据上述密钥信息完成配对,S2;蓝牙设备和配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯,S3。
对应的,本发明提供的低功耗蓝牙设备通讯加密系统如图2所示,包括密钥生成单元、配对单元和连接单元。密钥生成单元,用于生成蓝牙设备的密钥;配对单元,用于蓝牙设备和配对设备建立蓝牙层连接后根据密钥生成单元生成的密钥完成蓝牙设备与配对设备之间的配对;连接单元,用于建立蓝牙设备与配对设备之间通讯连接以进行基于上述密钥信息的RC4加密通讯。通过上述技术方案,能够利用密钥信息完成蓝牙设备。配对单元在所述密钥生成单元生成密钥后利用该密钥信息完成蓝牙设备与配对设备的配对,而后通过连接单元实现蓝牙设备与配对设备的通讯连接,以进行基于上述密钥信息的加密通讯。
本发明的密钥生成单元如图4所示,包括:标识获取模块,用于从蓝牙设备获取蓝牙标识;或者用于从蓝牙设备获取蓝牙标识和国际移动设备辨识码(IMEI);keySource生成模块,用于根据蓝牙标识生成keySource或根据蓝牙标识和国际移动设备辨识码生成keySource;密钥生成模块,对keySource进行MD5运算生成密钥。标识获取模块至少包括用于获取蓝牙标识的第一获取子模块,还可以包括用于获取国际移动设备辨识码的第二获取子模块;keySource生成模块将第一获取子模块的蓝牙标识和第二获取子模块获取到的国际移动设备辨识码组合成keySource;密钥生成模块对所述keySource进行MD5运算生成密钥。
根据密钥生成单元生密钥的方法如图3所示,包括:
获取蓝牙设备的相关标识,S101;在本实施例中,获取蓝牙设备的相关标识步骤包括获取蓝牙标识和获取国际移动设备辨识码的步骤,这两个步骤无时序性要求;蓝牙标识为基于蓝牙芯片的MAC或UUID,由于蓝牙设备必定使用蓝牙芯片,则所述蓝牙标识一定能够被获取。现阶段蓝牙设备主要为手机,在实际情况中,由于目前主流系统Android和ios系统的权限不同,对于ios系统和一些不包含国际移动设备辨识码的蓝牙设备,会出现无法获取到国际移动设备辨识码的情况。因此,根据相关标识生成keySource的步骤S102具体流程为:
判断是否获取到国际移动设备辨识码,若获取到,则将蓝牙标识和国际移动设备辨识码组合成为keySource;在本实施例中,该组合方式为蓝牙标识+国际移动设备辨识码,本领域技术人员也可采用其他不同于此的组合方式实现。若未获取到,则将蓝牙标识作为keySource。
对keySource进行MD5运算生成的最终密钥,S103。
本具体实施方式的配对单元如图5所示,包括:
第一连接指令收发模块,设置于蓝牙设备,用于发送携带密钥信息的连接指令和接收连接指令反馈信息;第二连接指令收发模块,设置于配对设备,用于接收连接指令和根据用户选择发送连接指令反馈信息;配对确认模块,用于判断连接指令反馈信息是否为确认,若是,则完成配对,若否,则提示用户拒绝连接。
本具体实施方式的连接单元如图6所示,包括:
第一认证指令收发模块,设置于所述蓝牙设备,用于发送认证指令和接收认证指令反馈信息;
第二认证指令收发模块,设置于所述配对设备,用于接收认证指令和根据认证结果发送认证指令反馈信息;
认证判定模块,用于判定认证指令是否通过,若通过则蓝牙设备与配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯,若否,则提示用户拒绝连接或发送请求信息给第一连接指令收发模块。
本具体实施方式的认证判定模块的结构如图7所示,包括:第一加密运算模块,设置于所述蓝牙设备,用于对认证指令中的内容进行加密运算;第二加密运算模块,设置于所述配对设备,用于对认证指令中的相同内容进行加密运算;
运算结果比对模块,用于加密运算模块的加密结果和运算模块的加密结果进行比对,若二者相同,则判定认证结果为通过,若二者不同则判定认证结果为不通过。该运算结果比对模块可设置于蓝牙设备,第二加密运算模块的加密结果随认证指令反馈信息传递至蓝牙设备,从而被运算结果比对模块获取。
实施例1
在取得密钥的基础上,蓝牙设备与配对设备进行初次配对而后进行通讯连接的流程如图8所示。
蓝牙设备和配对设备根据密钥信息完成配对,S2;具体步骤为:
蓝牙设备和配对设备建立蓝牙层连接,S201;
蓝牙设备发送携带步骤S1中密钥信息的第一连接指令给配对设备,S202;
蓝牙设备接收配对设备的第一连接指令反馈信息,S203;
若第一连接指令反馈信息为确认,则第一连接指令中携带的密钥信息作为配对设备的密钥信息,S204,完成蓝牙设备与配对设备的配对。
若第一连接指令反馈信息不为确认,则拒绝所述蓝牙设备与配对设备之间通讯连接,S205。
蓝牙设备和配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯,S3;具体步骤如下:
步骤S204的配对完成后,蓝牙设备发送第一认证指令给配对设备,S301;
蓝牙设备接收配对设备的第一认证指令反馈信息,S302;
若第一认证指令反馈信息为通过,则蓝牙设备与配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯,S303;
若第一认证指令反馈信息为不通过,则拒绝所述蓝牙设备与配对设备之间通讯连接,S205。
判断所述第一认证指令是否通过的方法为,蓝牙设备和配对设备分别对第一指令认证指令中的相同内容做加密运算,运算结果一致即为通过;该加密运算中,所述蓝牙设备采用步骤S1方法生成的本蓝牙设备的密钥信息,所述配对设备采用配对设备的密钥信息。
采用本实施例的方法时,相应的系统各个模块作用如下:
配对单元:
第一连接指令收发模块,用于发送携带密钥生成单元所生成密钥信息的第一连接指令给第二连接指令收发模块和接收来自第二连接指令收发模块的第一连接指令反馈信息;
第二连接指令收发模块,用于接收来自第一连接指令收发模块的第一连接指令和根据用户选择发送第一连接指令反馈信息给第一连接指令收发模块;
配对确认模块,用于判断第一连接指令反馈信息是否为确认,若是,则完成配对,若否,则提示用户拒绝连接。
连接单元:
第一认证指令收发模块,用于完成配对后发送第一认证指令给第二认证指令收发模块和接收来自第二认证指令收发模块的第一认证指令反馈信息;
第二认证指令收发模块,用于接收来自第一认证指令收发模块的第一认证指令和根据认证结果发送第一认证指令反馈信息给第一认证指令收发模块;
认证判定模块,用于判定第一认证指令是否通过,若通过则蓝牙设备与配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯,若否,则提示用户拒绝连接。
认证判定模块:
第一加密运算模块,设置于蓝牙设备,对第一认证指令中的内容进行加密运算;
第二加密运算模块,设置于配对设备,对第一认证指令中的相同内容进行加密运算;
运算结果比对模块,用于第一加密运算模块的加密结果和第二运算模块的加密结果进行比对,若二者相同,则判定认证结果为通过,若二者不同则判定认证结果为不通过。
上述技术方案,能够顺利完成蓝牙设备与配对设备的初次加密通讯连接,实现RC4形式的通讯加密,采用RC4算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性,使有限的硬件计算能力获得高级别的加密;同时为穿戴设备等BLE蓝牙设备提供一个安全可行的加密通讯机制,弥补目前蓝牙基带层通用加密的不足。
在上述步骤S203中,若第一连接指令反馈信息不为确认,则拒绝所述蓝牙设备与配对设备之间通讯连接。若第一认证指令反馈信息为不通过,则拒绝所述蓝牙设备与配对设备之间通讯连接。确认连接指令给配对设备的用户提供了选择空间,在连接过程中充分满足用户需求。而认证指令通过与否能够确保蓝牙设备与配对设备采用同一套密钥信息进行加密,实现加密通讯的完整性和可靠性。
实施例2
为了在保证通讯安全性的前提下使得连接更加快捷方便,本发明还提供了另外一种低功耗蓝牙设备加密通讯连接方案,此方案针对采用步骤S1中密钥信息完成过与所述蓝牙设备配对的配对设备,由于该蓝牙设备与配对设备曾经采用过密钥信息完成过配对,若密钥信息无误,则直接进行连接即可,节约时间流程,具体方法如图9所示:
蓝牙设备和配对设备建立蓝牙层连接,S401;
蓝牙设备发送第二认证指令给配对设备,S402;
蓝牙设备接收配对设备的第二认证指令反馈信息,S403;
若第二认证指令反馈信息为通过,则蓝牙设备与配对设备完成通讯连接以进行基于密钥信息的RC4加密通讯,S404。
当然,由于蓝牙设备和配对设备存在配对后断开而后再次连接的情况,加密密钥可能发生改变,在此情况下,第二认证指令反馈信息为不通过,则蓝牙设备发送携带密钥信息的第二连接指令给配对设备,S405;
蓝牙设备接收配对设备的第二连接指令反馈信息,S406;
若第二连接指令反馈信息为确认,则将第二连接指令中携带的密钥信息作为配对设备的密钥信息,返回步骤S402进行再次发送第二认证指令。
若第二连接指令反馈信息不为确认,则拒绝所述蓝牙设备与配对设备之间通讯连接,S205。
本实施例中,判断所述第二认证指令是否通过的方法为,蓝牙设备和配对设备分别对第二指令认证指令中的相同内容做加密运算,运算结果一致即为通过;该加密运算中,所述蓝牙设备采用步骤S1方法生成的本蓝牙设备的密钥信息,所述配对设备采用配对设备的密钥信息。
采用本实施例的方法时,相应的系统各个模块作用如下:
连接单元:
第一认证指令收发模块,蓝牙设备和配对设备再次建立蓝牙层连接后发送第二认证指令给第二认证指令收发模块和接收来自第二认证指令收发模块的第二认证指令反馈信息;
第二认证指令收发模块,接收来自第一认证指令收发模块的第二认证指令和根据认证结果发送第二认证指令反馈信息给第一认证指令收发模块;
认证判定模块,判定第二认证指令是否通过,若通过则蓝牙设备与配对设备完成通讯连接以进行基于上述密钥信息的RC4加密通讯,若否,则给第一连接指令收发模块发送请求信息。
配对单元:
第一连接指令收发模块,接收到所述请求信息后,发送第二连接指令给第二连接指令收发模块和接收来自第二连接指令收发模块的第二连接指令反馈信息;
第二连接指令收发模块,接收来自第一连接指令收发模块的第二连接指令和根据用户选择发送第二连接指令反馈信息给第一连接指令收发模块;
配对确认模块,判断第二连接指令反馈信息是否为确认,若是,则完成配对,若否,则提示用户拒绝连接。
认证判定模块:
第一加密运算模块,设置于蓝牙设备,对第二认证指令中的内容进行加密运算;
第二加密运算模块,设置于配对设备,对第二认证指令中的相同内容进行加密运算;
运算结果比对模块,用于第一加密运算模块的加密结果和第二运算模块的加密结果进行比对,若二者相同,则判定认证结果为通过,若二者不同则判定认证结果为不通过。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。