一种基于国密的CoAP协议身份认证和数据加密方法
未命名
09-10
阅读:82
评论:0

一种基于国密的coap协议身份认证和数据加密方法
技术领域
1.本发明属于报文传输技术领域,特别是涉及一种基于国密的coap协议身份认证和数据加密方法。
背景技术:
2.随着物联网的快速发展,物联网环境中的安全性也变得至关重要。coap协议是一种基于请求/响应模型的物联网传输协议,因其轻量化、非长连接通信的特点,适用于低功耗物联网环境。由于传统coap协议在设计时并没有考虑安全问题,后续在rfc7252标准中规定coap在通信过程中需要额外引入单独的协议层,导致会产生过多计算开销,因此提出一种轻量级的coap协议保护方法具有重要研究意义。
3.国密算法是国家密码局认定的国产密码算法标准及其应用规范,是我国自主研发的一套数据加密处理算法。目前已经公布的算法有sm2(对称加密算法)、sm3(散列密码算法)、sm4(对称加密算法)、sm9(非对称加密算法),未公布的算法有sm1(对称加密算法)、sm7(分组加密算法)。过去的加密算法都是由别的国家制定的,所以很难保证我们使用这些算法是否真的安全,因此国密算法的推广对提升我国网络安全水平具有重要的意义。
4.coap(constrained application protocol)是ietf的core工作组提出的一种受限环境下的应用层协议,所谓资源受限环境主要是指物联网设备只具有有限的存储空间、计算能力和通信带宽。为了适配资源受限环境,coap的设计足够轻量,采用二进制形式来定义数据包内容,因此相比http协议来说,数据包更加小巧,最小只需要4个字节,就可以实现一个coap数据包。coap的设计初衷就是想让资源受限型设备也能够使用类似http的应用层完成数据交互,因此coap也实现了restful的资源访问方式,即coap协议是一种基于请求/响应模型的消息传输协议,属于udp/ip协议之上的应用层协议。但目前针对于coap的保护方案基本都需要大量的网络资源,这与coap协议的设计理念相悖。在传统的coap协议中,规定基于dtls协议来进行身份认证和数据加密,但是这种方法需要额外引入单独的协议层,并且需要使用计算复杂且消耗大量资源的密码套件,显然对资源受限的网络是不可取的,与coap协议的设计初衷不符。
技术实现要素:
5.本发明的目的是提供一种基于国密的coap协议身份认证和数据加密方法,以解决上述现有技术存在的问题。
6.为实现上述目的,本发明提供了一种基于国密的coap协议身份认证和数据加密方法,包括:
7.对客户端与服务端的身份认证数据进行预配置;客户端与服务端根据所述身份认证数据进行身份认证,判断客户端与服务器的安全性,同时进行密钥协商,获得会话密钥,若判断安全性符合要求,则基于所述会话密钥完成数据传输。
8.可选的,身份认证数据进行预配置的过程包括:
9.根据每个客户端的自身设备标识符、与服务器预共享的sm4对称密钥、会话密钥构建第一身份认证表,其中,所述第一身份认证表中的会话密钥初始值为空;
10.根据每个客户端的自身设备标识符、与标识符对应的预共享的sm4对称密钥、会话密钥、许可状态构建第二身份认证表,其中,所述第二身份认证表中会话密钥初始值为空,许可状态默认值为0。
11.可选的,所述身份认证包括服务器对客户端的身份认证、客户端对服务器的身份认证。
12.可选的,服务器对客户端的身份认证过程包括:
13.客户端请求数据时,记录请求时间,并生成与请求时间位数相同的第一随机数,提取发出请求的客户端存储在所述第一身份认证表中的信息,计算第一随机数、请求时间、自身设备标识符对应的sm4对称密钥连接后的第一哈希值,对所述第一哈希值进行截取,获得第一明文;将所述第一明文、请求时间、sm4对称密钥连接后加密获得第一密文;将所述第一密文、请求时间、自身设备标识符连接存储为有效载荷;将所述请求时间标识为con类型,将带有所述有效载荷的请求发送至目标服务器;
14.目标服务器接收请求后,判断接收时间与请求时间的差值是否在预设范围内,若在预设范围内,将有效载荷中包含的自身设备标识符与所述第二身份认证表进行匹配,采用匹配结果中与标识符对应的sm4对称密钥对所述第一密文进行解密,得到第一明文与新的随机数,将请求时间、新的随机数、与标识符对应的sm4对称密钥连接后计算第二哈希值,对所述第二哈希值进行截取后,判断是否其与所述第一明文相等,完成服务端对客户端的身份认证。
15.可选的,客户端对服务器的身份认证及密钥协商过程包括:
16.服务端对客户端的身份认证通过后,生成第二随机数与第一随机数连接获得会话密钥并对所述第二身份认证表进行更新;将第二随机数、第一随机数、接收时间连接后计算第三哈希值,对第三哈希值截取获得第二明文,将第二随机数与第二明文,结合sm4对称密钥进行加密的获得第二密文,将第二密文与接收时间连接后,作为发送给客户端的响应信息;
17.客户端接收到响应信息后获取当前时间,判断当前时间与接收时间的差值是否处于预设范围内,若是,则采用sm4对称密钥对第二密文进行解密,获得第二明文与新的随机数,将第一随机数、新的随机数、接收时间连接后计算获得第四哈希值,对第四哈希值进行截取并判断是否与第二明文相等,完成客户端对服务器的身份认证过程;
18.将所述第一随机数与第二随机数连接后获得会话密钥,对所述第一身份认证表进行更新。
19.可选的,数据传输过程包括:
20.服务端接收客户端数据请求时,根据许可状态判断是否通过身份认证,若已通过身份认证,则获取客户端对应的会话密钥,将请求的资源与请求时间连接后计算哈希值并截取获得第三明文,基于所述会话密钥对请求的资源与第三明文连接后得到的值进行加密获得第三密文,将第三密文与请求时间连接后作为服务器的响应信息;
21.客户端接收响应信息后,记录接收时间,判断请求时间与接收时间的差值是否在预设范围内,若是,则根据会话密钥对所述第三密文进行解密获得第三明文与资源,计算资
源与请求时间的哈希值,根据哈希值判断资源是否正确。
22.可选的,哈希值的计算均基于sm3算法,加密均采用sm4算法,哈希值的截取长度为64位。
23.可选的,当服务器资源改变时,服务器重新发送一个con请求报文,将改变后的资源再次发给客户端,客户端接收到该报文后返回一个空的响应报文。
24.本发明的技术效果为:
25.本发明针对客户端和服务器各自建立了身份表,重要数据只能由双方查表才能得到;利用预共享密钥的方式,采用sm4和sm3算法在客户端和服务器进行数据传输之前完成了双向身份认证及密钥协商,仅使用两个握手消息,仍能够保证身份认证时重要数据的机密性以及消息的完整性;使用了时间戳及随机数防止了重放攻击;采用coap实际应用中最节省开销的观察者模式进行数据的传输。
附图说明
26.构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
27.图1为本发明实施例中的方法流程示意图。
具体实施方式
28.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
29.需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
30.实施例一
31.如图1所示,本实施例中提供一种基于国密的coap协议身份认证和数据加密方法,包括:
32.一次性设备配置阶段。在进行身份认证之前将所需数据进行预配置,保证客户端和服务器顺利完成身份认证。
33.步骤1:每个客户端存储一个由自身设备标识符(idi,i=1,2,3...)、与服务器预共享的sm4对称密钥(k
mi
,i=1,2,3...)以及协商后的会话密钥(k
si
,i=1,2,3...)组成的表,在身份认证之前,该表中的会话密钥为空。服务器则会存储一个由每个客户端的设备标识符、标识符对应的sm4预共享密钥、协商后的会话密钥以及字段authorized组成的身份表,在身份认证之前,该表中的会话密钥为空并且authorized默认为0。客户端id1身份表如表1所示,服务器身份表如表2所示。
34.表1
35.36.表2
[0037][0038]
身份认证及密钥协商阶段。在进行数据传输之前增加身份认证和密钥协商功能,保证数据传输时coap协议的客户端和服务器是可信任的,并且用协商的密钥进行之后的数据传输。
[0039]
步骤2:客户端id1记录当前时间t1,t1大小为64bits,再生成64bits随机数nc,利用sm3算法计算nc、t1、以及id1的预共享密钥k
m1
连接后的哈希值h1,取h1的前64bits为明文p1,将nc与p1连接,并取出表中的预共享密钥k
m1
利用sm4算法对连接后的明文进行加密得到密文c1,将c1、t1和id1连接并放入payload字段中,将uri设为/localhost:5683/authorize,把协议头部中t字段标识为con类型,并将该消息以post请求的形式发送给服务器。
[0040]
步骤3:服务器接收到该请求后,记录当前时间t2,接着取出payload字段中的有效值,计算|t
2-t1|,检查该值是否在规定的时间范围内,如果是,则通过服务器中的身份表查询是否有相同的设备标识符,如果有,则取出对应的预共享密钥k
m1
,接着利用k
m1
解密c1得到明文nc'和p1,利用sm3算法计算nc'、t1与k
m1
连接后的哈希值h2,如果h2的前64bits与p1相等,则表明客户端通过payload传来的信息是正确的,服务器验证了该客户端的身份。服务器生成64bits随机数ns,将nc与ns连接得到k
s1
作为新的会话密钥存储在服务器表中,并将表中该客户端对应的authorized字段由0改为1。服务器即将从客户端id1得来的nc、自身生成的ns以及记录的t2连接并使用sm3算法计算哈希值得到h3,取h3的前64bits为明文p2,将ns与p2连接,并用k
m1
以及sm4算法对连接后的明文进行加密得到密文c2,将c2和t2连接并放入payload字段中,发送响应给客户端。
[0041]
步骤4:客户端接收到该响应后,记录当前时间t3,取出payload字段中的有效值,计算|t
3-t2|,检查该值是否在规定的时间范围内,如果是,则使用预共享密钥k
m1
解密c2得到明文ns'和p2,将nc、ns'、t2进行连接并使用sm3算法计算哈希值得到h4。如果h4的前64bits与p2相等,则表明服务器通过payload传来的随机数ns等信息是正确的,并且客户端也验证了服务器的身份,将nc与ns连接得到k
s1
作为新的会话密钥存储在客户端表中。身份认证及密钥协商阶段结束。
[0042]
数据传输阶段。
[0043]
步骤5:客户端id1将协议头部中t字段标识为con类型,uri设为/localhost:5683/observe,标识id1存入创建的256号选项中,把observe选项字段设为0,以表明向服务器提出观察资源的请求,并且向服务器发出get请求。
[0044]
步骤6:服务器接收到客户端发来的get请求后,记录当前时间t4,并检查请求中的observe字段是否为0,如果为0,服务器取出256号选项中的设备标识符,通过服务器中的身份表查询是否是正确的id1,若正确,则检查该设备标识符对应的authorized字段是否为1,
如果为1,则表明该设备此前已经经过了身份认证,是合法设备,将id1存入观察者列表,并取出身份表中对应的会话密钥k
s1
。将64bits的资源m1与t4进行连接并用sm3算法计算哈希值得到h5,取h5的前64bits为明文p3,使用k
s1
和sm4算法对m1与p3连接后的值进行加密得到密文c3,将c3与t4连接放入payload中,发送响应给客户端。
[0045]
步骤7:客户端收到消息后,记录当前时间t5,取出payload中的有效值,计算|t
5-t4|,检查该值是否在规定的时间范围内,如果是,则取出表中对应的会话密钥k
s1
解密c3得到m1'和p3,使用sm3算法计算m1'与t4连接后的哈希值h6,如果h6的前64bits与p3相等,则说明客户端收到服务器发来的资源m1'是正确的。
[0046]
步骤8:当服务器资源改变时,服务器重新发送一个con请求报文,将改变后的资源再次发给客户端,具体步骤类似于步骤7。
[0047]
步骤9:客户端接收到该报文后返回一个空的响应报文。
[0048]
本发明各符号含义如表3所示。
[0049]
表3
[0050][0051]
本发明针对客户端和服务器各自建立了身份表,重要数据只能由双方查表才能得到;利用预共享密钥的方式,采用sm4和sm3算法在客户端和服务器进行数据传输之前完成了双向身份认证及密钥协商,仅使用两个握手消息,仍能够保证身份认证时重要数据的机密性以及消息的完整性;使用了时间戳及随机数防止了重放攻击;采用coap实际应用中最节省开销的观察者模式进行数据的传输。
[0052]
以上所述,仅为本技术较佳的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。
技术特征:
1.一种基于国密的coap协议身份认证和数据加密方法,其特征在于,包括以下步骤:对客户端与服务端的身份认证数据进行预配置;客户端与服务端根据所述身份认证数据进行身份认证,判断客户端与服务器的安全性,同时进行密钥协商,获得会话密钥,若判断安全性符合要求,则基于所述会话密钥完成数据传输。2.根据权利要求1所述的基于国密的coap协议身份认证和数据加密方法,其特征在于,身份认证数据进行预配置的过程包括:根据每个客户端的自身设备标识符、与服务器预共享的sm4对称密钥、会话密钥构建第一身份认证表,其中,所述第一身份认证表中的会话密钥初始值为空;根据每个客户端的自身设备标识符、与标识符对应的预共享的sm4对称密钥、会话密钥、许可状态构建第二身份认证表,其中,所述第二身份认证表中会话密钥初始值为空,许可状态默认值为0。3.根据权利要求2所述的基于国密的coap协议身份认证和数据加密方法,其特征在于,所述身份认证包括服务器对客户端的身份认证、客户端对服务器的身份认证。4.根据权利要求3所述的基于国密的coap协议身份认证和数据加密方法,其特征在于,服务器对客户端的身份认证过程包括:客户端请求数据时,记录请求时间,并生成与请求时间位数相同的第一随机数,提取发出请求的客户端存储在所述第一身份认证表中的信息,计算第一随机数、请求时间、自身设备标识符对应的sm4对称密钥连接后的第一哈希值,对所述第一哈希值进行截取,获得第一明文;将所述第一明文、请求时间、sm4对称密钥连接后加密获得第一密文;将所述第一密文、请求时间、自身设备标识符连接存储为有效载荷;将所述请求时间标识为con类型,将带有所述有效载荷的请求发送至目标服务器;目标服务器接收请求后,判断接收时间与请求时间的差值是否在预设范围内,若在预设范围内,将有效载荷中包含的自身设备标识符与所述第二身份认证表进行匹配,采用匹配结果中与标识符对应的sm4对称密钥对所述第一密文进行解密,得到第一明文与新的随机数,将请求时间、新的随机数、与标识符对应的sm4对称密钥连接后计算第二哈希值,对所述第二哈希值进行截取后,判断是否其与所述第一明文相等,完成服务端对客户端的身份认证。5.根据权利要求4所述的基于国密的coap协议身份认证和数据加密方法,其特征在于,客户端对服务器的身份认证及密钥协商过程包括:服务端对客户端的身份认证通过后,生成第二随机数与第一随机数连接获得会话密钥并对所述第二身份认证表进行更新;将第二随机数、第一随机数、接收时间连接后计算第三哈希值,对第三哈希值截取获得第二明文,将第二随机数与第二明文,结合sm4对称密钥进行加密的获得第二密文,将第二密文与接收时间连接后,作为发送给客户端的响应信息;客户端接收到响应信息后获取当前时间,判断当前时间与接收时间的差值是否处于预设范围内,若是,则采用sm4对称密钥对第二密文进行解密,获得第二明文与新的随机数,将第一随机数、新的随机数、接收时间连接后计算获得第四哈希值,对第四哈希值进行截取并判断是否与第二明文相等,完成客户端对服务器的身份认证过程;将所述第一随机数与第二随机数连接后获得会话密钥,对所述第一身份认证表进行更新。
6.根据权利要求2所述的基于国密的coap协议身份认证和数据加密方法,其特征在于,数据传输过程包括:服务端接收客户端数据请求时,根据许可状态判断是否通过身份认证,若已通过身份认证,则获取客户端对应的会话密钥,将请求的资源与请求时间连接后计算哈希值并截取获得第三明文,基于所述会话密钥对请求的资源与第三明文连接后得到的值进行加密获得第三密文,将第三密文与请求时间连接后作为服务器的响应信息;客户端接收响应信息后,记录接收时间,判断请求时间与接收时间的差值是否在预设范围内,若是,则根据会话密钥对所述第三密文进行解密获得第三明文与资源,计算资源与请求时间的哈希值,根据哈希值判断资源是否正确。7.根据权利要求1-6中任一项所述的基于国密的coap协议身份认证和数据加密方法,其特征在于,哈希值的计算均基于sm3算法,加密均采用sm4算法,哈希值的截取长度为64位。8.根据权利要求1所述的基于国密的coap协议身份认证和数据加密方法,其特征在于,当服务器资源改变时,服务器重新发送一个con请求报文,将改变后的资源再次发给客户端,客户端接收到该报文后返回一个空的响应报文。
技术总结
本发明公开了一种基于国密的CoAP协议身份认证和数据加密方法,包括:对客户端与服务端的身份认证数据进行预配置;并根据预配置信息进行身份认证,判断客户端与服务器的安全性,同时进行密钥协商,获得会话密钥,若判断安全性符合要求,则基于会话密钥完成数据传输。本发明针对客户端和服务器各自建立了身份表,重要数据只能由双方查表才能得到;利用预共享密钥的方式,采用SM4和SM3算法在客户端和服务器进行数据传输之前完成了双向身份认证及密钥协商,仅使用两个握手消息,仍能够保证身份认证时重要数据的机密性以及消息的完整性;使用了时间戳及随机数防止了重放攻击;采用最节省开销的观察者模式进行数据的传输。省开销的观察者模式进行数据的传输。省开销的观察者模式进行数据的传输。
技术研发人员:刘泽超 孙若尘 蔡成涛 王巍 贺玉珍 王小芳 程雪蕾 陈征平 陈志远 初妍 何鸣 李熔盛 郑文琪 吴伟宁 杨悦
受保护的技术使用者:哈尔滨工程大学三亚南海创新发展基地 价值链技术(深圳)有限公司
技术研发日:2023.06.29
技术公布日:2023/9/7
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/