1.本发明属于数据处理方法技术领域,具体涉及基于嵌入式平台的集成网关的根密钥升级方法。
背景技术:
2.《单片机与嵌入式系统应用》2019年第7期公开了《嵌入式linux的lorawan集成网关系统设计》,其针对小规模lora网络建设成本偏高的问题,提出了基于嵌入式平台的lorawan集成网关系统。该网关系统在单一嵌入式硬件(树莓派)上同时集成了网关的所有功能和lorawan服务器的功能,选用raspberry pi3作为系统核心处理器,在该嵌入式平台上搭建linux系统以运行网关所有的程序,避免了部署专门服务器,降低了系统成本,提高了部署灵活性。为了提高lora网络的覆盖范围和网络的稳定性,系统可同时部署多个集成网关,一个节点可同时被多个网关覆盖。该方案提出主从式集成网关的解决方案,每个从网关能分担系统的运算负荷,提升系统性能,且数据库备份于多个网关上,增强了数据库的安全性。
3.为了增强网络通信的安全性,lorawan采用128位元高级加密标准(aes-128 )来保护传输资料的安全性和完整性,并使用两个会话密钥:网络会话密钥(nwkskey)和应用程序会话密钥(appskey),加密终端设备(end-device) 、网络服务器(network server)和应用服务器(application server)彼此之间的资料。
4.终端设备位于远端位置,并存储有用于产生会话密钥所需的根密钥。根密钥长期存储在终端设备中。而终端设备是整个网络中最容易受到攻击的部分,导致长期储存在终端设备的根密钥容易被提取或是攻击,从而引发安全性问题。
5.因此,必要设计一种基于嵌入式平台的集成网关的根密钥升级方法,通过更新根密钥,来增加根密钥的安全性,使资料得以安全传输,并防止第三方的监控。
技术实现要素:
6.鉴于上述现有技术的不足之处,本发明的目的在于提供基于嵌入式平台的集成网关的根密钥升级方法。
7.为了达到上述目的,本发明采取了以下的技术方案。
8.基于嵌入式平台的集成网关的根密钥升级方法,当终端设备和链接服务器互相解开对方产生的封包之后,得到对方所产生的随机数;终端设备和链接服务器再用这2个随机数和随机参数和原本的根密钥计算并产生新的2把根密钥;以这2把新的根密钥取代原本的根密钥,并储存在终端设备和链接服务器中,然后重新产生会话密钥;最后,终端设备和链接服务器各自利用新的根密钥计算确认消息,确保双方均已完成密钥更新程序;每次传输时都会将传送方的时间参数加密,接收方解密并获取自身的时间参数,两组时间参数相减必须小于预设值,用来确认封包并未遭到窃取并重送;若两组时间参数差值大于预设的时间差,则中断密钥更新程序。
9.基于嵌入式平台的集成网关的根密钥升级方法,包括以下步骤:步骤s1,更新根密钥时,网络服务器执行:步骤s101,生成一个随机参数r
con
;步骤s102,获取网络服务器的系统时间参数 t
nonce,ns
;步骤s103,计算封包的消息验证码mic
ne = aes128_cmac (nwkskey , t
nonce,ns |joinnonce |joineui |devnonce | r
con ),其中 aes128_cmac 为 aes算法的一种;nwkskey是网络会话密钥;t
nonce,ns 是网络服务器的系统时间参数;joinnonce是链接服务器提供的计数值,初始值为0,随着发送入网成功次数的增加而增加;joineui是对链接服务器的唯一认证,它被嵌入到终端设备中,在注册过程中使用此认证;devnonce是终端设备的身份证;r
con
是网络服务器生成的随机参数,“|”表示连接资料;步骤s104,计算密文s
ne = aes128_encrypt (nwkskey , t
nonce,ns
|joinnonce |joineui |devnonce | r
con |mic
ne ),其中 aes128_ encrypt 表示 128位元aes对称加密算法;步骤s105,计算封包的消息验证码mic
nj
= aes128_cmac (k
js-ns
, t
nonce,ns |joinnonce |joineui |devnonce | r
con ),用aes128_cmac和 k
js-ns
计算传递给链接服务器的消息验证码; k
js-ns
表示网络服务器跟链接服务器的会话密钥;步骤s106,计算密文s
nj
= aes128_encrypt (k
js-ns
, t
nonce,ns |joinnonce |joineui |devnonce | r
con | mic
nj
);步骤s107,把密文s
ne
传输给终端设备;然后执行步骤s2;步骤s108,把密文s
nj
传输给链接服务器;然后执行步骤s3;步骤s2,终端设备接收到网络服务器传输的密文s
ne
后,执行:步骤s201,解密密文s
ne
,即,t
nonce,ns | joinnonce | joineui | devnonce | r
con | mic
ne
= aes128_decrypt (nwkskey , s
ne );aes128_decrypt 表示128位元aes对称解密算法;步骤s202,计算封包的消息验证码mic
ne’= aes128_cmac(nwkskey , t
nonce,ns |joinnonce |joineui |devnonce | r
con
);步骤s203,验证是否 mic
ne’= mic
ne
,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s204,获取终端设备的系统时间参数t
nonce,ed
;步骤s205,检验是否t
nonce,ed
ꢀ‑ꢀ
t
nonce,ns ≤
△
t
1 ;其中
△
t1= (t
ne
t
transmission,ed t
eds2
)*δ1,t
ne
是网络服务器在步骤s1 执行步骤s103、步骤s104、步骤s105、步骤s106所需的运算时间,t
transmission,ed
是网络服务器传输给终端设备所需的时间,t
eds2
是终端设备在步骤s2 执行步骤s201、步骤s202、步骤s203、步骤s204所需的运算时间,加总之后,乘上合理的时间延迟系数δ1;如果t
nonce,ed
ꢀ‑ꢀ
t
nonce,ns
超过
△
t1,终端设备停止密钥更新程序,并传输警示消息给网络服务器;步骤s206,解密资料封包并验证joinnonce、joineui、devnonce符合之后,得到随机参数r
con
,并产生一个随机数c;步骤s207,计算mic
ed = aes128_cmac (appkey, t
nonce,ed | r
con | c ) ;其中,appskey为应用程序会话密钥;
步骤s208,计算封包v
ed-js
=aes128_encrypt(appkey,t
nonce,ed
|r
con
|c|mic
ed
);步骤s209,传输封包v
ed-js
给链接服务器;步骤s3:链接服务器收到密文s
nj
消息后,执行:步骤s301,解密密文s
nj
,即,t
nonce,ns
|joinnonce|joineui|devnonce|r
con
|mic
nj
=aes128_decrypt(k
js-ns
,s
nj
);步骤s302,计算封包的消息验证码mic
nj’=aes128_cmac(k
js-ns
,t
nonce,ns
|joinnonce|joineui|devnonce|r
con
);步骤s303,验证mic
nj’=mic
nj
,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s304,获取链接服务器的系统时间参数t
nonce,js
;步骤s305,验证t
nonce,js-t
nonce,ns
≤
△
t2;
△
t2=(t
ne
t
transmission,js
t
jss3
)*δ2,t
ne
网络服务器在步骤s1执行步骤s103、步骤s104、步骤s105、步骤s106需所的运算时间,t
transmission,js
是网络服务器传输给链接服务器所需的时间,t
jss3
是链接服务器在步骤s3执行步骤s301、步骤s302、步骤s303、步骤s304所需的运算时间,加总之后,乘上合理的延迟系数δ2;如果t
nonce,js-t
nonce,ns
超过
△
t2,链接服务器停止密钥更新程序,并传输警示消息给网络服务器;步骤s306,解密资料封包并验证joinnonce、joineui、devnonce符合之后,得到随机参数r
con
,并产生一个随机数n;步骤s307,计算封包的消息验证码mic
js
=aes128_cmac(appkey,t
nonce,js
|r
con
|n);步骤s308,计算封包v
js-ed
=aes128_encrypt(appkey,t
nonce,js
|r
con
|n|mic
js
);步骤s309,传输封包v
js-ed
给终端设备。
10.基于嵌入式平台的集成网关的根密钥升级方法,还包括以下步骤:步骤s4,终端设备接收到封包v
js-ed
消息后,执行:步骤s401,解密封包v
js-ed
,即,t
nonce,js
|r
con
|n|mic
js
=aes128_decrypt(appkey,v
js-ed
);步骤s402,计算封包的消息验证码mic
js’=aes128_cmac(appkey,t
nonce,js
|r
con
|n|);步骤s403,验证mic
js’=mic
js
,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s404,验证r
con
是否与步骤s2接收到的值相等,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s405,重新获取终端设备的系统时间参数t
nonce,ed2
;步骤s406,验证t
nonce,ed2-t
nonce,js
≤
△
t3;
△
t3=(t
js-ed
t
transmission,js-ed
t
eds4
)*δ3,t
js-ed
是链接服务器在步骤s3执行步骤s305、步骤s306、步骤s307、步骤s308所需的运算时间,t
transmission,js-ed
是链接服务器传输v
js-ed
给终端设备所需的时间,t
eds4
是终端设备在步骤s4执行步骤s401、步骤s402、步骤
s403、步骤s404、步骤s405所需的运算时间,加总之后 ,乘上合理的延迟系数δ3;如果 t
nonce,ed2
ꢀ‑ꢀ
t
nonce,js
超过
△
t3,则停止密钥更新程序,并传输警示消息给网络服务器;步骤s407,计算新的网络会话密钥的根密钥 nwkkey
new
= ( r
con
c
⊕
n)
⊕
nwkkey;步骤s408,计算新的应用程序会话密钥的根密钥appkey
new
= ( r
con
⊕
c n)
⊕
appkey;步骤s409,以新的网络会话密钥的根密钥 nwkkey
new
产生终端设备确认消息ack
ed = aes128_encrypt (nwkkey
new
, n | c | r
con
);步骤s410,传输确认消息ack
ed
给链接服务器。
11.基于嵌入式平台的集成网关的根密钥升级方法,还包括以下步骤:步骤s5:链接服务器接收到终端设备传输的封包v
ed-js
消息后,执行:步骤s501,解密封包v
ed-js
, 即, t
nonce,ed | r
con | c | mic
ed
= aes128_decrypt (appkey , v
ed-js );步骤s502,计算封包的消息验证码mic
ed’= aes128_cmac(appkey, t
nonce,js
| r
con | c );步骤s503,验证 mic
ed’= mic
ed
,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s504,验证 r
con
是否与步骤s3接收到的值相等,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s505,获取链接服务器的系统时间参数t
nonce,js2
;步骤s506,验证t
nonce,js2
ꢀ‑ꢀ
t
nonce,ed ≤
ꢀ△
t4;
△
t4=( t
ed-js t
transmission, ed-js t
jss5
)* δ4,t
ed-js
是终端设备在步骤s2 执行步骤s205、步骤s206、步骤s207、步骤s208所需的运算时间,t
transmission, ed-js
是终端设备传输v
ed-js
给链接服务器所需的时间,t
jss5
是 join server在步骤s5执行步骤s501、步骤s502、步骤s503、步骤s504、步骤s505所需的运算时间,加总之后,乘上合理的延迟系数δ4;如果 t
nonce,js2
ꢀ‑ꢀ
t
nonce,ed
超过
△
t4,则停止密钥更新程序,并传输警示消息给网络服务器;步骤s507,计算新的网络会话密钥的根密钥 nwkkey
new
= ( r
con c
⊕
n)
⊕
nwkkey;步骤s508,计算新的应用程序会话密钥的根密钥 appkey
new
= ( r
con
⊕
c n)
⊕
appkey;步骤s509,以新的网络会话密钥的根密钥 nwkkey
new
产生链接服务器确认消息ack
js = aes128_encrypt (appkey
new
, c | n | r
con
);步骤s510,传输确认消息ack
js
给终端设备。
12.基于嵌入式平台的集成网关的根密钥升级方法,还包括以下步骤:步骤s6:终端设备接收到链接服务器传输的ack
js
消息后,执行:步骤s601,计算确认消息ack
js = aes128_encrypt (appkey
new
, c | n | r
con
);步骤s602,验证确认消息ack
js
,如果失败,重新根密钥更新机制;步骤s603,完成根密钥更新,并执行重新注册网络服务器;步骤s7:链接服务器接收到终端设备传输的ack
ed
消息后,执行:步骤s701,计算确认消息ack
ed = aes128_encrypt (nwkkey
new
, n | c | r
con
);步骤s702,验证确认消息ack
ed
,如果失败,重新根密钥更新机制。
13.本方案,通过更新根密钥,让攻击者不能确定所得到根密钥的使用期限,以保护资料的传输安全,当要执行密钥更新时,会由网络服务器主动发起,传输消息给终端设备和链接服务器,当终端设备和链接服务器都收到并且做完确认后,同时分别进行根密钥更新流程,确保传输参数的安全性,安全的执行根密钥更新机制。
附图说明
14.图1是本发明的流程图。
具体实施方式
15.下面结合附图,对本发明作进一步详细说明。
16.终端设备位于原注册网域时,则称终端设备位于本地端。此时终端设备可以通过网关和原注册的网络服务器连接,再由网络服务器将其资料传递至对应的应用服务器。
17.链接服务器为注册服务器,负责管理各个终端设备的注册程序及密钥分派等工作。
18.基于嵌入式平台的集成网关的根密钥升级方法,当终端设备和 链接服务器互相解开对方产生的封包(v
ed-js
、v
js-ed
)之后,得到对方所产生的随机数(c、n),终端设备和链接服务器再用这2个随机数和随机参数(r
con
)和原本的根密钥计算并产生新的2把根密钥;以这2把新的根密钥取代原本的根密钥,并储存在终端设备和链接服务器中,然后重新产生会话密钥;最后,终端设备和链接服务器各自利用新的根密钥计算确认消息(ack消息),确保双方均已完成密钥更新程序。
19.每次传输时都会将传送方得时间参数(t
nonce
)加密,接收方解密并获取自身的时间参数,两组时间参数相减必须小于预设值(
△
ti,i=1~4),用来确认封包并未遭到窃取并重送;若两组时间参数差值大于预设的时间差,则中断密钥更新程序。
20.图1是本发明的流程图。如图1所示,基于嵌入式平台的集成网关的根密钥升级方法,包括以下步骤:步骤s1,更新根密钥时,网络服务器执行:步骤s101,生成一个随机参数r
con
。
21.步骤s102,获取网络服务器的系统时间参数t
nonce,ns
。
22.步骤s103,计算封包的消息验证码mic
ne = aes128_cmac (nwkskey , t
nonce,ns |joinnonce |joineui |devnonce | r
con ),其中,aes128_cmac 为 aes算法的一种;nwkskey是网络会话密钥;t
nonce,ns
是网络服务器的系统时间参数;joinnonce是链接服务器提供的计数值,初始值为0,随着发送join-accept次数的增加而增加;joineui是对链接服务器的唯一认证,它被嵌入到终端设备中,在注册过程中使用此认证;devnonce是终端设备的身份证;r
con
是网络服务器生成的随机参数,“|”表示连接资料。
23.本步骤的 mic
ne 通过nwkskey加密。cmac的全名是 cypher-based message authentication code。由传送方生成一个mac值,附在消息后面,接收方计算收到消息的mac,如果和收到的mac一致,则说明没有被篡改,并能作为身份认证功能使用。
24.步骤s104,计算密文s
ne = aes128_encrypt (nwkskey , t
nonce,ns
|joinnonce |joineui |devnonce | r
con |mic
ne ),其中 aes128_ encrypt 表示 128位元aes对称加密
算法。
25.步骤s105,计算封包的消息验证码mic
nj
= aes128_cmac (k
js-ns
, t
nonce,ns |joinnonce |joineui |devnonce | r
con ),用aes128_cmac和 k
js-ns
计算传递给链接服务器的消息验证码; k
js-ns
表示网络服务器跟链接服务器的会话密钥。
26.步骤s106,计算密文s
nj
= aes128_encrypt (k
js-ns
, t
nonce,ns |joinnonce |joineui |devnonce | r
con | mic
nj
)。
27.步骤s107,把密文s
ne
传输给终端设备;然后执行步骤s2。
28.步骤s108,把密文s
nj
传输给链接服务器;然后执行步骤s3。
29.步骤s2,终端设备接收到网络服务器传输的密文s
ne
后,执行:步骤s201,解密密文s
ne
,即, t
nonce,ns | joinnonce | joineui | devnonce | r
con | mic
ne
= aes128_decrypt (nwkskey , s
ne );aes128_decrypt 表示128位元aes对称解密算法。
30.步骤s202,计算封包的消息验证码mic
ne’= aes128_cmac(nwkskey , t
nonce,ns |joinnonce |joineui |devnonce | r
con
)。
31.步骤s203,验证是否 mic
ne’= mic
ne
,若不相等,表示相关参数遭窜改,则停止密钥更新程序并丢弃已接收到的封包。
32.步骤s204,获取终端设备的系统时间参数t
nonce,ed
。
33.步骤s205,检验是否t
nonce,ed
ꢀ‑ꢀ
t
nonce,ns ≤
ꢀ△
t
1 ;其中
△
t1= (t
ne
t
transmission,ed t
eds2
)*δ1,t
ne
是网络服务器在步骤s1 执行步骤s103、步骤s104、步骤s105、步骤s106所需的运算时间,t
transmission,ed
是网络服务器传输给终端设备所需的时间,t
eds2
是终端设备在步骤s2 执行步骤s201、步骤s202、步骤s203、步骤s204所需的运算时间,加总之后,乘上合理的时间延迟系数δ1;如果t
nonce,ed
ꢀ‑ꢀ
t
nonce,ns
超过
△
t1,表示封包可能遭遇重送攻击,此时终端设备停止密钥更新程序,并传输警示消息给网络服务器。
34.步骤s206,解密资料封包并验证joinnonce、joineui、devnonce符合之后,得到随机参数r
con
,并产生一个随机数c。
35.步骤s207,计算封包的消息验证码mic
ed = aes128_cmac (appkey, t
nonce,ed | r
con | c ) ;其中,appskey为应用程序会话密钥。
36.步骤s208,计算封包v
ed-js =aes128_encrypt (appkey, t
nonce,ed | r
con | c |mic
ed
) 。
37.步骤s209,传输封包v
ed-js
给链接服务器。
38.步骤s3:链接服务器收到密文s
nj
后,执行:步骤s301,解密密文s
nj
,即,t
nonce,ns
| joinnonce | joineui | devnonce | r
con | mic
nj = aes128_decrypt (k
js-ns
, s
nj )。
39.步骤s302,计算封包的消息验证码mic
nj’=aes128_cmac(k
js-ns
, t
nonce,ns |joinnonce |joineui |devnonce | r
con )。
40.步骤s303,验证 mic
nj’= mic
nj
,若不相等,表示相关参数遭窜改,则停止密钥更新程序并丢弃已接收到的封包。
41.步骤s304,获取链接服务器的系统时间参数t
nonce,js
。
42.步骤s305,验证t
nonce,js
ꢀ‑ꢀ
t
nonce,ns
≤
△
t2;
△
t2= (t
ne t
transmission,js t
jss3
)*δ2,t
ne
网络服务器在步骤s1执行步骤s103、步骤s104、步骤s105、步骤s106需所的运算时间,t
transmission,js
是网络服务器传输给链接服务器所需的时间,t
jss3
是链接服务器在步骤s3执行步骤s301、步骤s302、步骤s303、步骤s304所需的运算时间,加总之后,乘上合理的延迟系数δ2;如果 t
nonce,js
ꢀ‑ꢀ
t
nonce,ns
超过
△
t2,表示封包可能遭遇重送攻击,此时链接服务器停止密钥更新程序,并传输警示消息给网络服务器。
43.步骤s306,解密资料封包并验证joinnonce、joineui、devnonce符合之后,得到随机参数r
con ,并产生一个随机数n。
44.步骤s307,计算封包的消息验证码mic
js = aes128_cmac (appkey, t
nonce,js | r
con | n ) 。
45.步骤s308,计算封包v
js-ed = aes128_encrypt (appkey, t
nonce,js | r
con | n | mic
js
)。
46.步骤s309,传输封包v
js-ed
给终端设备。
47.步骤s4,终端设备接收到封包v
js-ed
消息后,执行:步骤s401,解密封包v
js-ed
,即,t
nonce,js |r
con | n | mic
js =aes128_decrypt (appkey , v
js-ed )。
48.步骤s402,计算封包的消息验证码mic
js’= aes128_cmac(appkey, t
nonce,js
| r
con | n | )。
49.步骤s403,验证 mic
js’= mic
js
,若不相等,则停止密钥更新程序并丢弃已接收到的封包。
50.步骤s404,验证r
con
是否与步骤s2接收到的值相等,若不相等,则停止密钥更新程序并丢弃已接收到的封包。
51.步骤s405,重新获取终端设备的系统时间参数t
nonce,ed2
。
52.步骤s406,验证t
nonce,ed2
ꢀ‑ꢀ
t
nonce,js
≤
ꢀ△
t3;
△
t3=(t
js-ed
t
transmission,js-ed
t
eds4
)*δ3,t
js-ed 是链接服务器在步骤s3执行步骤s305、步骤s306、步骤s307、步骤s308所需的运算时间,t
transmission,js-ed
是链接服务器传输v
js-ed
给终端设备所需的时间,t
eds4
是终端设备在步骤s4执行步骤s401、步骤s402、步骤s403、步骤s404、步骤s405所需的运算时间,加总之后 ,乘上合理的延迟系数δ3;如果t
nonce,ed2
ꢀ‑ꢀ
t
nonce,js
超过
△
t3,则停止密钥更新程序,并传输警示消息给网络服务器。
53.步骤s407,计算新的网络会话密钥的根密钥 nwkkey
new
= ( r
con
c
⊕
n)
⊕
nwkkey。
54.步骤s408,计算新的应用程序会话密钥的根密钥appkey
new
= ( r
con
⊕
c n)
⊕
appkey。
55.步骤s409,以新的网络会话密钥的根密钥 nwkkey
new
产生终端设备确认消息ack
ed = aes128_encrypt (nwkkey
new
, n | c | r
con
)。
56.步骤s410,传输确认消息ack
ed
给链接服务器。
57.步骤s5:链接服务器接收到终端设备传输的封包v
ed-js
消息后,执行:步骤s501,解密封包v
ed-js
, 即, t
nonce,ed | r
con | c | mic
ed
= aes128_decrypt (appkey , v
ed-js )。
58.步骤s502,计算封包的消息验证码mic
ed’= aes128_cmac(appkey, t
nonce,js
| r
con | c )。
59.步骤s503,验证 mic
ed’= mic
ed
,若不相等,则停止密钥更新程序并丢弃已接收到的封包。
60.步骤s504,验证 r
con
是否与步骤s3接收到的值相等,若不相等,则停止密钥更新程序并丢弃已接收到的封包。
61.步骤s505,获取链接服务器的系统时间参数t
nonce,js2
。
62.步骤s506,验证t
nonce,js2
ꢀ‑ꢀ
t
nonce,ed ≤
ꢀ△
t4;
△
t4=( t
ed-js t
transmission, ed-js t
jss5
)* δ4,t
ed-js
是终端设备在步骤s2 执行步骤s205、步骤s206、步骤s207、步骤s208所需的运算时间,t
transmission, ed-js
是终端设备传输v
ed-js
给链接服务器所需的时间,t
jss5
是 join server在步骤s5执行步骤s501、步骤s502、步骤s503、步骤s504、步骤s505所需的运算时间,加总之后,乘上合理的延迟系数δ4;如果 t
nonce,js2
ꢀ‑ꢀ
t
nonce,ed
超过
△
t4,则停止密钥更新程序,并传输警示消息给网络服务器。
63.步骤s507,计算新的网络会话密钥的根密钥 nwkkey
new
= ( r
con c
⊕
n)
⊕
nwkkey。
64.步骤s508,计算新的应用程序会话密钥的根密钥 appkey
new
= ( r
con
⊕
c n)
⊕
appkey。
65.步骤s509,以新的网络会话密钥的根密钥 nwkkey
new
产生链接服务器确认消息ack
js = aes128_encrypt (appkey
new
, c | n | r
con
)。
66.步骤s510,传输确认消息ack
js
给终端设备。
67.步骤s6:终端设备接收到链接服务器传输的ack
js
消息后,执行:步骤s601,计算确认消息ack
js = aes128_encrypt (appkey
new
, c | n | r
con
)。
68.步骤s602,验证确认消息ack
js
,如果失败,重新根密钥更新机制。
69.步骤s603,完成根密钥更新,并执行重新注册网络服务器。
70.步骤s7:链接服务器接收到终端设备传输的确认消息ack
ed
后,执行:步骤s701,计算确认消息ack
ed = aes128_encrypt (nwkkey
new
, n | c | r
con
)。
71.步骤s702,验证确认消息ack
ed
,如果失败,重新根密钥更新机制。
72.使用scyther安全性分析工具评估,验证本方案的安全性。scyther结果显示:随机参数r
con 、随机参数c 、n,以及各自产生的时间参数,在不同角色当中都未受到攻击威胁,即这些参数在传输过程可被安全保护。
73.传输安全性分析:本方案把更新根密钥的数个参数以封包的方式传递,传输过程有aes
‑ꢀ
128以及密钥的保护,收到之后用mic验证封包的完整性,还有计数器可以防止重送攻击,最后终端设备、链接服务器收到时,用不同的算法得到新的根密钥:nwkkey
new = ( r
con c
⊕ꢀ
n)
⊕
nwkkey;appkey
new = (r
con
⊕
c n)
⊕
appkey。
74.如此一来,攻击者就算从传输过程中得到参数,也无法破解2把新的根密钥,终端设备最后传给链接服务器的确认消息ack
ed
= aes128_encrypt (nwkkey
new
, n | c | r
con
),是用nwkkey
new
加密,链接服务器回应给终端设备的确认消息ack
js
=aes128_encrypt (appkey
new
, c | n | r
con
),是用appkey
new
加密,攻击者必须要得到 2把新的根密钥,才可以破坏根密钥更新,确保传输参数的安全性,就可以安全的执行根密钥更新机制。
75.重送攻击保护分析:重送攻击是指攻击者复制了由发送方发送的有效消息,并假装合法传送方将该消息发送给接收方,试图窃取相关信息的攻击。在本方案中,由于每次传输时都会将传送方得时间参数t
nonce
加密,接收方解密并获取自身的时间参数,两组时间参数相减必须小于预设值(
△
ti,i=1~4),用来确认封包并未遭到窃取并重送。若两组时间参数差值大于预设的时间差,则表示原封包可能遭到窃取,且攻击者伪造成合法传送端身份重送原封包,意图使接收端误信攻击者为合法传送端,而使系统不安全。因此,若时间参数差值大于预设的时间差,则需中断密钥更新程序,以避免攻击者有机可乘。
76.模仿攻击保护分析:模仿攻击主要是由攻击者伪造合法的终端设备或网络服务器来传递资料给另一方。本方案中,只有真正的终端设备及网络服务器才具有正确的 joinnonce与devnonce,这两个数值在每次会话密钥更新后递增,因此攻击者无法猜测这两个参数,进而模仿合法的使用者。再者,只有合法的终端设备及网络服务器才拥有正确的加密密钥nwkskey,因此攻击者无法以此密钥加密消息,进而制造模仿攻击。
77.窃听攻击抵抗分析:当攻击者从底层网络捕获大量消息时,可能会从中提取重要信息。但由于根密钥更新程序并非经常执行,且每次执行时,均会串接系统时间参数t
nonce
在欲加密的消息中,随着系统时间参数改变,即使其他加密的内容不变,aes128加密出来的结果也会不同。因此,攻击者除非得知aes加密密钥,否则无法捕获的大量消息得知重要参数。
78.参数释意汇总如下:nwkskey:网络会话密钥。
79.appskey:应用程序会话密钥。
80.r
con
:网络服务器生成的随机参数。
81.t
nonce,ns
、t
nonce,ns2
:网络服务器的系统时间参数。
82.t
nonce,ed
、t
nonce,ed2
:终端设备的系统时间参数。
83.aes128_cmac:aes算法的一种。
84.joinnonce:链接服务器提供的计数值,初始值为0,随着发送join-accept次数的增加而增加。
85.joineui:对链接服务器的唯一认证,它被嵌入到终端设备中,在注册过程中使用此认证。
86.devnonce:代表终端设备的身份证。
[0087]“|”:表示连接资料。
[0088]
mic
ne
、mic
nj
、mic
ed
、mic
js
、mic
ne’mic
nj’、mic
ed’、mic
js’:封包的消息验证码,用以检测消息完整性。
[0089]
aes128_ encrypt :128位元aes对称加密算法。
[0090]
aes128_decrypt :128位元aes对称解密算法。
[0091]kjs-ns
:网络服务器跟链接服务器的会话密钥。
[0092]
△
ti:不同系统时间参数间的时间差,i=1~4。
[0093]
δj:合理的时间延迟系数,j=1~4。
[0094]
c:随机数。
[0095]
n:随机数。
[0096]
ack
ed
:终端设备传送给链接服务器的确认消息。
[0097]
ackjs:链接服务器传送给终端设备的确认消息。
[0098]ved-js
:终端设备发送给链接服务器的封包。
[0099]vjs-ed
:链接服务器发送给终端设备的封包。
[0100]
t
ne
:网络服务器在步骤s1 执行步骤s103、步骤s104、步骤s105、步骤s106所需的运算时间。
[0101]
t
eds2
:终端设备在步骤s2 执行步骤s201、步骤s202、步骤s203、步骤s204所需的运算时间。
[0102]
t
ed-js
:终端设备在步骤s2 执行步骤s205、步骤s206、步骤s207、步骤s208所需的运算时间。
[0103]
t
jss3
:链接服务器在步骤s3执行步骤s301、步骤s302、步骤s303、步骤s304所需的运算时间。
[0104]
t
js-ed
:链接服务器在步骤s3执行步骤s305、步骤s306、步骤s307、步骤s308所需的运算时间。
[0105]
t
eds4
:终端设备在步骤s4执行步骤s401、步骤s402、步骤s403、步骤s404、步骤s405所需的运算时间。
[0106]
t
jss5
: join server在步骤s5执行步骤s501、步骤s502、步骤s503、步骤s504、步骤s505所需的运算时间。
[0107]
t
transmission,js
:网络服务器传输给链接服务器所需的时间。
[0108]
t
transmission,js-ed
:链接服务器传输v
js-ed
给终端设备所需的时间。
[0109]
t
transmission, ed-js
:终端设备传输v
ed-js
给链接服务器所需的时间。
[0110]
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。
技术特征:
1.基于嵌入式平台的集成网关的根密钥升级方法,其特征在于,当终端设备和链接服务器互相解开对方产生的封包之后,得到对方所产生的随机数;终端设备和链接服务器再用这2个随机数和随机参数和原本的根密钥计算并产生新的2把根密钥;以这2把新的根密钥取代原本的根密钥,并储存在终端设备和链接服务器中,然后重新产生会话密钥;最后,终端设备和链接服务器各自利用新的根密钥计算确认消息,确保双方均已完成密钥更新程序;每次传输时都会将传送方的时间参数加密,接收方解密并获取自身的时间参数,两组时间参数相减必须小于预设值,用来确认封包并未遭到窃取并重送;若两组时间参数差值大于预设的时间差,则中断密钥更新程序。2.根据权利要求1所述的基于嵌入式平台的集成网关的根密钥升级方法,其特征在于,包括以下步骤:步骤s1,更新根密钥时,网络服务器执行:步骤s101,生成一个随机参数r
con
;步骤s102,获取网络服务器的系统时间参数 t
nonce,ns
;步骤s103,计算封包的消息验证码mic
ne = aes128_cmac (nwkskey , t
nonce,ns |joinnonce |joineui |devnonce | r
con ),其中 aes128_cmac 为 aes算法的一种;nwkskey是网络会话密钥;t
nonce,ns 是网络服务器的系统时间参数;joinnonce是链接服务器提供的计数值,初始值为0,随着发送入网成功次数的增加而增加;joineui是对链接服务器的唯一认证,它被嵌入到终端设备中,在注册过程中使用此认证;devnonce是终端设备的身份证;r
con
是网络服务器生成的随机参数,“|”表示连接资料;步骤s104,计算密文s
ne = aes128_encrypt (nwkskey , t
nonce,ns
|joinnonce |joineui |devnonce | r
con
|mic
ne ),其中 aes128_ encrypt 表示 128位元aes对称加密算法;步骤s105,计算封包的消息验证码mic
nj
= aes128_cmac (k
js-ns
, t
nonce,ns |joinnonce |joineui |devnonce | r
con ),用aes128_cmac和 k
js-ns
计算传递给链接服务器的消息验证码; k
js-ns
表示网络服务器跟链接服务器的会话密钥;步骤s106,计算密文s
nj
= aes128_encrypt (k
js-ns
, t
nonce,ns |joinnonce |joineui |devnonce | r
con | mic
nj
);步骤s107,把密文s
ne
传输给终端设备;然后执行步骤s2;步骤s108,把密文s
nj
传输给链接服务器;然后执行步骤s3;步骤s2,终端设备接收到网络服务器传输的密文s
ne
后,执行:步骤s201,解密密文s
ne
,即,t
nonce,ns | joinnonce | joineui | devnonce | r
con | mic
ne
= aes128_decrypt (nwkskey , s
ne );aes128_decrypt 表示128位元aes对称解密算法;步骤s202,计算封包的消息验证码mic
ne’= aes128_cmac(nwkskey , t
nonce,ns |joinnonce |joineui |devnonce | r
con
);步骤s203,验证是否 mic
ne’= mic
ne
,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s204,获取终端设备的系统时间参数t
nonce,ed
;步骤s205,检验是否t
nonce,ed
ꢀ‑ꢀ
t
nonce,ns ≤
△
t
1 ;
其中
△
t1=(t
ne
t
transmission,ed
t
eds2
)*δ1,t
ne
是网络服务器在步骤s1执行步骤s103、步骤s104、步骤s105、步骤s106所需的运算时间,t
transmission,ed
是网络服务器传输给终端设备所需的时间,t
eds2
是终端设备在步骤s2执行步骤s201、步骤s202、步骤s203、步骤s204所需的运算时间,加总之后,乘上合理的时间延迟系数δ1;如果t
nonce,ed-t
nonce,ns
超过
△
t1,终端设备停止密钥更新程序,并传输警示消息给网络服务器;步骤s206,解密资料封包并验证joinnonce、joineui、devnonce符合之后,得到随机参数r
con
,并产生一个随机数c;步骤s207,计算mic
ed
=aes128_cmac(appkey,t
nonce,ed
|r
con
|c);其中,appskey为应用程序会话密钥;步骤s208,计算封包v
ed-js
=aes128_encrypt(appkey,t
nonce,ed
|r
con
|c|mic
ed
);步骤s209,传输封包v
ed-js
给链接服务器;步骤s3:链接服务器收到密文s
nj
消息后,执行:步骤s301,解密密文s
nj
,即,t
nonce,ns
|joinnonce|joineui|devnonce|r
con
|mic
nj
=aes128_decrypt(k
js-ns
,s
nj
);步骤s302,计算封包的消息验证码mic
nj’=aes128_cmac(k
js-ns
,t
nonce,ns
|joinnonce|joineui|devnonce|r
con
);步骤s303,验证mic
nj’=mic
nj
,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s304,获取链接服务器的系统时间参数t
nonce,js
;步骤s305,验证t
nonce,js-t
nonce,ns
≤
△
t2;
△
t2=(t
ne
t
transmission,js
t
jss3
)*δ2,t
ne
网络服务器在步骤s1执行步骤s103、步骤s104、步骤s105、步骤s106需所的运算时间,t
transmission,js
是网络服务器传输给链接服务器所需的时间,t
jss3
是链接服务器在步骤s3执行步骤s301、步骤s302、步骤s303、步骤s304所需的运算时间,加总之后,乘上合理的延迟系数δ2;如果t
nonce,js-t
nonce,ns
超过
△
t2,链接服务器停止密钥更新程序,并传输警示消息给网络服务器;步骤s306,解密资料封包并验证joinnonce、joineui、devnonce符合之后,得到随机参数r
con
,并产生一个随机数n;步骤s307,计算封包的消息验证码mic
js
=aes128_cmac(appkey,t
nonce,js
|r
con
|n);步骤s308,计算封包v
js-ed
=aes128_encrypt(appkey,t
nonce,js
|r
con
|n|mic
js
);步骤s309,传输封包v
js-ed
给终端设备。3.根据权利要求2所述的基于嵌入式平台的集成网关的根密钥升级方法,其特征在于,还包括以下步骤:步骤s4,终端设备接收到封包v
js-ed
消息后,执行:步骤s401,解密封包v
js-ed
,即,t
nonce,js
|r
con
|n|mic
js
=aes128_decrypt(appkey,v
js-ed
);步骤s402,计算封包的消息验证码mic
js’=aes128_cmac(appkey,t
nonce,js
|r
con
|n|);步骤s403,验证mic
js’=mic
js
,若不相等,则停止密钥更新程序并丢弃已接收到的封包;
步骤s404,验证r
con
是否与步骤s2接收到的值相等,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s405,重新获取终端设备的系统时间参数t
nonce,ed2
;步骤s406,验证t
nonce,ed2
ꢀ‑ꢀ
t
nonce,js
≤
ꢀ△
t3;
△
t3=(t
js-ed
t
transmission,js-ed
t
eds4
)*δ3,t
js-ed
是链接服务器在步骤s3执行步骤s305、步骤s306、步骤s307、步骤s308所需的运算时间,t
transmission,js-ed
是链接服务器传输v
js-ed
给终端设备所需的时间,t
eds4
是终端设备在步骤s4执行步骤s401、步骤s402、步骤s403、步骤s404、步骤s405所需的运算时间,加总之后 ,乘上合理的延迟系数δ3;如果 t
nonce,ed2
ꢀ‑ꢀ
t
nonce,js
超过
△
t3,则停止密钥更新程序,并传输警示消息给网络服务器;步骤s407,计算新的网络会话密钥的根密钥 nwkkey
new
= ( r
con
c
⊕
n)
⊕
nwkkey;步骤s408,计算新的应用程序会话密钥的根密钥appkey
new
= ( r
con
⊕
c n)
⊕
appkey;步骤s409,以新的网络会话密钥的根密钥 nwkkey
new
产生终端设备确认消息ack
ed
= aes128_encrypt (nwkkey
new
, n | c | r
con
);步骤s410,传输确认消息ack
ed
给链接服务器。4.根据权利要求3所述的基于嵌入式平台的集成网关的根密钥升级方法,其特征在于,还包括以下步骤:步骤s5:链接服务器接收到终端设备传输的封包v
ed-js
消息后,执行:步骤s501,解密封包v
ed-js
, 即, t
nonce,ed | r
con | c | mic
ed
= aes128_decrypt (appkey , v
ed-js );步骤s502,计算封包的消息验证码mic
ed’= aes128_cmac(appkey, t
nonce,js
| r
con
| c );步骤s503,验证 mic
ed’= mic
ed
,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s504,验证 r
con
是否与步骤s3接收到的值相等,若不相等,则停止密钥更新程序并丢弃已接收到的封包;步骤s505,获取链接服务器的系统时间参数t
nonce,js2
;步骤s506,验证t
nonce,js2
ꢀ‑ꢀ
t
nonce,ed ≤
ꢀ△
t4;
△
t4=( t
ed-js t
transmission, ed-js t
jss5
)* δ4,t
ed-js
是终端设备在步骤s2 执行步骤s205、步骤s206、步骤s207、步骤s208所需的运算时间,t
transmission, ed-js
是终端设备传输v
ed-js
给链接服务器所需的时间,t
jss5
是 join server在步骤s5执行步骤s501、步骤s502、步骤s503、步骤s504、步骤s505所需的运算时间,加总之后,乘上合理的延迟系数δ4;如果 t
nonce,js2
ꢀ‑ꢀ
t
nonce,ed
超过
△
t4,则停止密钥更新程序,并传输警示消息给网络服务器;步骤s507,计算新的网络会话密钥的根密钥 nwkkey
new
= ( r
con c
⊕
n)
⊕
nwkkey;步骤s508,计算新的应用程序会话密钥的根密钥 appkey
new
= ( r
con
⊕
c n)
⊕
appkey;步骤s509,以新的网络会话密钥的根密钥 nwkkey
new
产生链接服务器确认消息ack
js
= aes128_encrypt (appkey
new
, c | n | r
con
);步骤s510,传输确认消息ack
js
给终端设备。5.根据权利要求4所述的基于嵌入式平台的集成网关的根密钥升级方法,其特征在于,还包括以下步骤:步骤s6:终端设备接收到链接服务器传输的ack
js
消息后,执行:
步骤s601,计算确认消息ack
js = aes128_encrypt (appkey
new
, c | n | r
con
);步骤s602,验证确认消息ack
js
,如果失败,重新根密钥更新机制;步骤s603,完成根密钥更新,并执行重新注册网络服务器;步骤s7:链接服务器接收到终端设备传输的ack
ed
消息后,执行:步骤s701,计算确认消息ack
ed = aes128_encrypt (nwkkey
new
, n | c | r
con
);步骤s702,验证确认消息ack
ed
,如果失败,重新根密钥更新机制。
技术总结
基于嵌入式平台的集成网关的根密钥升级方法,属于数据处理方法技术领域,当终端设备和链接服务器互相解开对方产生的封包之后,得到对方所产生的随机数;终端设备和链接服务器再用这2个随机数和随机参数和原本的根密钥计算并产生新的2把根密钥;以这2把新的根密钥取代原本的根密钥,并储存在终端设备和链接服务器中,然后重新产生会话密钥;最后,终端设备和链接服务器各自利用新的根密钥计算确认消息,确保双方均已完成密钥更新程序。本方案,通过更新根密钥,让攻击者不能确定所得到根密钥的使用期限,以保护资料的传输安全。以保护资料的传输安全。以保护资料的传输安全。
技术研发人员:伊尚丰 方超 籍天亮 张路 郭洁
受保护的技术使用者:八维通科技有限公司
技术研发日:2022.04.21
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-9481.html