一种适用于MQTT‑SN协议的加密方法与流程

文档序号:13739779阅读:355来源:国知局
一种适用于MQTT‑SN协议的加密方法与流程

本发明属于通信领域,具体涉及一种适用于mqtt-sn协议的加密方法。



背景技术:

mqtt-sn(messagequeuingtelemetrytransportforsensornetworks)协议是由ibm专为无线传感器网络设计的一种轻量级基于代理的发布/订阅式消息传输协议。其设计目的主要是为大量计算能力有限且工作在低带宽、不可靠网络的无线传感器网络提供一种开放、精简、轻量级和容易实现的通信方法。有着协议消耗小、轻量级、耗电量低等适应于无线传感器网络的显著特点,且已经广泛应用于无线传感器等计算和存储资源受限的环境中。

mqtt-sn协议数据加密过程涉及3种实体:发布端、订阅端端以及代理服务器。

发布端:即消息发布者,在向代理服务器进行注册后,通过将数据按照主题分类的方式,将加密后的载荷发送至代理服务器。

订阅端:即消息订阅者,在向代理服务器进行注册后,发起订阅请求,通过代理服务器获得所订阅主题加密的载荷。

代理服务器:作为信任第三方,默认前提是安全可信的。主要功能是对发布/订阅端进行身份认证;生成发布/订阅端所需的公共参数,生成订阅端解密所需的私钥;接收发布端发布的加密载荷并转发给相应订阅端。

mqtt-sn协议采用基于代理的发布/订阅模式,发布端与订阅端并不直接相连,由代理服务器实现消息的过滤转发,从而实现了发布者和订阅者的解耦。mqtt-sn协议消息格式分为“固定报文头”、“可变报文头”以及“有效载荷”三部分,为了保持协议的轻量化,mqtt-sn协议本身并未对其“有效载荷”部分做安全处理。又由于无线传感器网络所在环境的复杂性,直接采用mqtt-sn协议使得无线传感器网络在安全方面面临威胁。其在无线传感器网络的应用面临着以下安全问题:

(1)认证问题:未实现发布端和订阅端认证,不能安全保证信源的合法性。

(2)数据机密性问题:不能保证发布端发布的有效载荷对外部而言是不可见的。

(3)数据完整性问题:不能保证发布的消息不被一个未经认证的,尤其是恶意的节点所修改。



技术实现要素:

有鉴于此,本发明的目的在于提供一种适用于mqtt-sn协议的加密方法,通过对有效载荷数据采用密文策略的基于属性的加密机制(cp-abe)进行加密处理,提升了数据在传输过程中的安全性,增强了现有mqtt-sn协议的安全特性,同时对mqtt-sn部署的无线传感器网络的安全性具有一定的提升。

为达到上述目的,本发明提供如下技术方案:

一种适用于mqtt-sn协议的加密方法,该方法包括以下步骤:

s1:初始化阶段:初始化阶段是发布端和订阅端注册,代理服务器生成并下发系统公共参数的过程;发布端、订阅端和代理服务器预配置初始密钥k,发布/订阅端向代理服务器进行注册,代理服务器验证发布/订阅端身份的合法性,代理服务器根据cp-abe算法生成系统公开参数pk及主密钥msk,并将公开参数pk发送给已注册的发布/订阅端;

s2:加密阶段:加密阶段是发布端对要发布的有效载荷进行加密预处理的过程;发布端首先制定访问结构然后根据代理服务器生成的公共参数pk、访问结构以及主题对应的有效载荷data,采用cp-abe加密算法生成加密载荷ct;

s3:发布阶段:发布阶段是发布端将加密载荷ct发送给代理服务器,代理服务器在接收到加密载荷ct后转发给相应订阅者的过程;发布端将加密载荷ct发送给代理服务器;代理服务器在接收到发布端发送的加密载荷ct后,验证该加密载荷的合法性,即判断该加密载荷是否为重放消息,是否经过篡改;最后,在确认加密载荷ct合法后,将其转发给相应的订阅端;

s4:解密阶段:解密阶段是订阅端在接收到代理服务器发送的加密载荷ct后,向代理服务器申请解密所需的私钥,然后对加密载荷ct进行解密提取文明的过程;订阅端在接收到加密载荷ct后,向代理服务器发起私钥生成请求并提供属性集合ai,代理服务器根据系统公共参数pk、属性集合ai以及主密钥msk采用cp-abe私钥生成算法生成私钥sk,然后将生成的私钥sk发送给对应的订阅端;订阅端根据系统的公共参数pk、私钥sk以及加密载荷ct,采用cp-abe解密算法得到明文载荷data;如果属性集合ai满足密文的访问结构则能成功解密密文,得到明文数据。

进一步,所述加密方法使用“0x1e”作为新的消息类型“spublish”,发布的有效载荷使用cp-abe算法加密。

进一步,所述代理服务器完成发布/订阅端的身份认证,完成发布/订阅端注册,并生成系统公共参数;

所述发布端采用cp-abe算法完成对明文载荷的加密,再将加密载荷发送给所述代理服务器,然后代理服务器再转发给一个或多个订阅端;

所述订阅端向代理服务器申请私钥,利用私钥完成对加密载荷的解密,得到明文。

进一步,所述步骤s1具体为:

s101:发布/订阅客户端向所述代理服务器发送注册请求,提供身份认证信息;

s102:代理服务器验证所述发布/订阅客户端身份的合法性,如果身份认证成功,返回注册成功响应,并进行下一步操作;

s103:代理服务器执行cp-abe算法生成系统公共参数pk以及主密钥msk,并将系统公共参数pk发送给所述发布/订阅客户端。

进一步,所述步骤s2具体为:

s201:发布端制定访问策略

s202:发布端利用访问策略公开参数pk以及主题对应的载荷信息data,采用cp-abe加密算法生成加密载荷ct。

进一步,所述步骤s3具体为:

s301:发布端将加密载荷ct与消息认证码mac发送给代理服务器;

s302:代理服务器验证发布端发布数据的合法性,如果消息合法,则执行下一步操作;否则,结束发布流程;

s303:订阅端如果成功接收到加密载荷ct,返回发布成功响应;如果未成功接收到加密载荷ct,返回发布失败响应。

进一步,所述步骤s4具体为:

s401:订阅端在接收到所述代理服务器发送的加密载荷ct后,向所述代理服务器发送私钥生成请求;

s402:代理服务器判断该消息是否为重放消息;若判断为重放消息,则返回私钥请求失败响应;否则,所述代理服务器执行下一步操作;

s403:代理服务器利用属性集合ai、系统公共参数pk以及主密钥msk采用cp-abe私钥生成算法生成属性对应的私钥skabe,并将生成的私钥skabe发送给所述订阅端,并返回私钥请求成功响应;

s404:订阅端在接收到代理服务器发送的私钥skabe后,利用系统公共参数pk、私钥skabe以及加密载荷ct采用cp-abe解密算法解密得到明文载荷data。

本发明的有益效果在于:本发明的创新性在于将密文策略的基于属性的加密机制(cp-abe)引入mqtt-sn的通信过程,实现了广播加密通信。发布端不需要在加密前获取订阅端列表,不需要了解订阅端的数量和身份,更加灵活方便,并可不泄露订阅端的身份,很好地保护了订阅端的隐私。在初始化阶段实现了对发布/订阅端的认证,解决了mqtt-sn协议适用于无线传感器网络的认证问题;在加密阶段实现了对明文数据的加密,解决了mqtt-sn协议适用于无线传感器网络的数据机密性问题;在发布阶段实现了数据完整性校验,解决了mqtt-sn协议适用于无线传感器网络的数据完整性问题。本发明很好的解决了mqtt-sn协议在无线传感器网络应用面临的安全问题,对mqtt-sn部署的无线传感器网络的安全性具有一定的提升。

附图说明

为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:

图1本发明流程示意图;

图2本发明中发布/订阅端注册流程示意图;

图3本发明中发布端构造访问树结构示意图;

图4本发明中加密载荷发布流程示意图;

图5本发明中订阅端解密流程示意图。

具体实施方式

下面将结合附图,对本发明的优选实施例进行详细的描述。

本发明使用“0x1e”作为新的消息类型,表示发布的载荷数据使用cp-abe算法加密,总体流程如图1所示,具体包括初始化、加密、发布、解密四个阶段。

1.初始化阶段:

在发布/订阅客户端进行正常通信之前,首先需要进行初始化,即发布/订阅客户端在代理服务器完成注册,与代理服务器建立连接。注册流程如图2所示。

步骤1-1:发布/订阅客户端向代理服务器发送注册请求,即提供身份认证信息。发布端提交的身份认证信息格式为:idpi||macpi。式中,idpi表示发布端pi的身份标识。macpi=hash(idpi,k),表示使用密钥为k的hash算法产生的消息认证码,密钥k为预配置密钥,具体采用的hash算法不做规定。

订阅端提交的身份认证信息格式为:idsi||macsi。式中,idsi表示订阅端si的身份标识。macsi=hash(idsi,k),表示使用密钥为k的hash算法产生的消息认证码,密钥k为预配置密钥,具体采用的hash算法不做规定。

步骤1-2:代理服务器验证发布/订阅客户端身份的合法性。以发布端认证为例(订阅端认证方法一致),代理服务器在接收到发布端的身份认证信息后,计算macpi*=hash(idpi,k),然后与接收到的认证码macpi相比较。若不相等,返回注册失败响应,结束注册流程;若相等,则认证成功,返回注册成功响应,并进行下一步操作。

步骤1-3:代理服务器执行cp-abe算法生成系统公共参数pk以及主密钥msk,并将系统公共参数pk发送给发布/订阅客户端。

2.加密阶段

发布端在发布消息前,需要先对要发布主题对应的载荷进行加密处理,具体流程如下所示。

步骤2-1:发布端制定访问策略如图3所示为构建的一种访问树结构示例。

步骤2-1所提及的访问策略是由一系列属性集合和一定逻辑规则(与、或、非等布尔结构)构建的n元访问树结构。访问树的每一个非叶子节点是一个门限,用kx表示,0<=kx<=num(x),num(x)表示其孩子节点数。当kx=num(x)时,非叶子节点代表与门;当kx<num(x)时,非叶子节点代表或门;访问树的每一个叶子节点代表一种属性。其中具体属性与逻辑规则由发布端自定义,例如,若发布端为温度传感器,其制定的访问策略中的具体属性可以包括订阅温度数据主题的传感器所具有属性。

步骤2-2:发布端利用访问策略公开参数pk以及主题对应的有效载荷信息data,采用cp-abe加密算法生成加密载荷

3.发布阶段

如图4所示,发布端将加密载荷ct发送给代理服务器,代理服务器在接收到加密载荷ct后验证其合法性,然后转发给相应订阅者,具体流程如下图所示。

步骤3-1:发布端将加密载荷ct发送给代理服务器,消息格式为:idpi||npi||ct||mac。式中,mac=hash(npi||ct),表示使用hash算法生成的消息认证码,npi为发布端产生的随机数。

步骤3-2:代理服务器对比前后两次收到的随机数npi,判断该消息是否为重放消息。若前后两次收到的随机数相等,则判断为重放消息,丢弃该加密数据包并返回发布失败响应,发布阶段结束;若前后两次收到的随机数不相等,表示非重放消息,代理服务器执行下一步操作。

步骤3-3:代理服务器计算mac*=hash(npi||ct),然后与接收到的消息认证码mac相比较。若不相等,丢弃该加密数据包并返回发布失败响应;若相等,返回发布成功响应,并将该加密载荷ct转发至相应的订阅端。

步骤3-4:订阅端如果成功接收到加密载荷ct,返回发布成功响应;如果未成功接收到加密载荷ct,返回发布失败响应。

4.解密阶段:

订阅端在接收到代理服务器发送的加密载荷ct后,无法直接解密得到有效载荷,必须向代理服务器发起私钥生成请求,然后利用得到的私钥解密出明文载荷data,具体流程如图5所示。

步骤4-1:订阅端在接收到代理服务器发送的加密载荷ct后,向代理服务器发送私钥生成请求,附加其属性集合ai,私钥生成请求消息格式为:idsi||nsi||ai。式中,nsi为订阅端产生的随机数。

在步骤4-1提及的属性集合ai表示订阅端i的属性信息,可以是订阅端的特征信息、位置信息、身份标识等,为全局集合u={a1,a2,…,an}的一个子集(具体的属性信息本发明不做规定,由使用者自定义)。全局集合u表示所有订阅端属性的集合。

订阅端不必在每一次接收到加密载荷ct后都向代理服务器发送私钥生成请求,如果其属性集合ai未发生改变,则使用第一次私钥请求得到的私钥进行解密操作;如果其属性集合ai发生改变,则接收到加密载荷ct后,重新向代理服务器发送私钥生成请求。

步骤4-2:代理服务器对比前后两次收到的随机数nsi,判断该消息是否为重放消息。若判断为重放消息,返回私钥请求失败响应;否则,代理服务器执行下一步操作。

步骤4-3:代理服务器利用属性集合ai、系统公共参数pk以及主密钥msk采用cp-abe私钥生成算法生成属性对应的私钥skabe=keygen(pk,ai,msk),并将生成的私钥skabe发送给对应的订阅端,并返回私钥请求成功响应。

步骤4-4:订阅端在接收到代理服务器发送的私钥skabe后,利用系统公共参数pk、私钥skabe以及加密载荷ct采用cp-abe解密算法解密得到明文载荷data=decrypt(pk,skabe,ct)。

在步骤4-4中,若订阅端的属性集合满足发布端制定的访问策略,则能成功解密。属性集合满足一个访问树结构可以定义为:设t是以r为根节点的访问树,tx是以x为根节点的t的子树。如果tx(s)=1,则说明属性集合s满足访问结构tx。如果节点x是叶子节点,当且仅当叶子节点x关联的属性att(x)是属性集合s的元素时,tx(s)=1。若节点x是非叶子节点时,至少kx个子节点z满足tz(s)=1时,tx(s)=1。

最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明权利要求书所限定的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1