一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于国密算法的Kerberos身份认证协议改进方法与流程

2021-11-06 07:01:00 来源:中国专利 TAG:

一种基于国密算法的kerberos身份认证协议改进方法
技术领域
1.本发明属于密码学中身份认证和隐私保护技术领域,具体涉及一种基于国密算法的kerberos身份认证协议改进方法。


背景技术:

2.身份认证是保障网络安全的基石,用于保障认证双方的真实性。kerberos协议作为最常用的身份认证协议,广泛应用于许多身份认证系统如银行系统、公安系统等等。因此,探讨kerberos协议的缺陷以及改进kerberos安全方案对保证计算机系统的安全性变得十分重要。同时,自从2012年我国发布商用密码以来,我国密码领域发展迅速,广泛应用于电子政务、电子商务、国民经济及公民生活等各个领域。
3.近年来,国内外许多学者都提出了针对kerberos协议的改进方案,例如基于混合加密体制和密钥协商协议的改进kerberos协议、使用diffie

hellman密钥取代用户口令加密需要传输的数据改进kerberos协议、weil对与kerberos协议结合、将视觉密码与kerberos协议相结合等。通过分析,虽然有效解决了原协议部分固有的安全问题,但同时也产生了其他诸如增大开销、密钥管理困难等问题。同时,如今国际经常使用的aes、rsa等算法,不排除有后门威胁,因此将商用密码算法与kerberos协议相结合,具有实际意义和应用价值。


技术实现要素:

4.本发明所要解决的技术问题是针对上述现有技术的不足,提供一种基于国密算法的kerberos身份认证协议改进方法,设计一种基于动态密钥的改进kerberos协议,并将基于国密算法的混合密码体制嵌入该协议中,本发明提出的改进kerberos协议可以解决弱口令导致的彩虹表攻击问题和时间同步导致的重放攻击等,本发明具有抵抗爆破攻击、假冒用户攻击、重放攻击、中间人攻击的能力,同时身份认证具备正确性。
5.为实现上述技术目的,本发明采取的技术方案为:
6.一种基于国密算法的kerberos身份认证协议改进方法,利用会话密钥动态化,以及基于国密算法的混合密码体制改进传统的kerberos协议,改进后的kerberos协议包括注册过程和认证过程;
7.所述认证过程包括三个阶段,分别为:
8.客户端与as互相认证;
9.客户端与tgs通信;
10.以及客户端与应用服务器通信;
11.客户端与as之间的共享密钥使用动态密钥;
12.认证过程中采用基于国密算法的混合密码体制进行加解密。
13.为优化上述技术方案,采取的具体措施还包括:
14.上述的基于国密算法的混合密码体制,其加密算法包括以下步骤:
15.步骤1:通过伪随机数生成器构建会话秘钥;
16.步骤2:会话密钥通过sm3杂凑,生成杂凑值;
17.步骤3:将杂凑值作为sm4的秘钥,同时也作为sm2加密的明文,首先使用sm2公钥对会话密钥进行加密,使用sm2私钥解密,实现数字签名;
18.步骤4:使用sm4算法和会话密钥对明文消息加密;
19.步骤5:将密文消息和加密后的会话密钥一同封装成报文发送给接收方。
20.上述的基于国密算法的混合密码体制,其解密算法包括以下步骤:
21.步骤1:服务器接收密文,包括密文消息和加密后的会话密钥;
22.接收方分离用sm4加密的消息和用sm2加密的会话密钥组合而成的密文;
23.步骤2:分离后得到秘钥加密部分,通过sm2中的私钥对秘钥加密部分进行解密,得到用sm3对会话密钥生成的杂凑值;
24.步骤3:经过解密拿到加密过程中的sm4的秘钥,然后对消息密文进行解密,解密完成成功拿到明文。
25.上述的所述客户端与as相互认证,认证过程包括以下步骤:
26.步骤1.1:客户端a向as发送认证请求as_req,包括用kdc公钥kkdc加密的时间戳timestamp,客户端a的账号usera,随机数nonce和挑战值iv;
27.步骤1.2:as收到后解密出时间戳,并与分离出的usera中时间对比,记录usera的登录信息,与上次usera的登录信息对比得到生命周期;
28.步骤1.3:若客户端a的请求服务合法,则as向客户端a响应as_rep,包括用a的公钥kclt加密会话密钥kclt

kdc,时间戳timestamp,随机数nonce和挑战值iv,再用kkdc加密usera和tgs会话密钥kclt

kdc产生tgt;
29.步骤1.4:客户端a收到as_rep响应后,解密出kclt

kdc,timestamp和nonce,并保存tgt。
30.上述的所述kdc的公钥kkdc和客户端a的公钥kclt基于国密sm2算法加密。
31.上述的客户端与tgs通信,通信过程包括以下步骤:
32.步骤2.1:客户端a生成tgs_req请求发送给tgs,包括缓存的tgt,会话密钥kclt

kdc加密usera和时间戳timestamp,应用服务器resourceb;
33.步骤2.2:tgs收到请求后用kkdc解密出tgt中的会话密钥,再用kclt

kdc解密得到usera和时间戳timestamp,并与数据库中对比验证,保存resourceb;
34.步骤2.3:若验证合法,则tgs向客户端a响应tgs_rep,包括用kclt

kdc加密的客户端与应用服务器会话密钥kclt

ksrv,和票据ticket;
35.所述ticket由应用服务器的公钥ksrv加密usera和客户端与应用服务器会话密钥kclt

ksrv生成;
36.步骤2.4:客户端a收到tgs_rep后用kclt

kdc解密出kclt

srv,并保存票据ticket,在后序客户端a凭借ticket访问应用服务器以获取资源。
37.上述的会话密钥kclt

kdc使用的对称加密算法为国密sm4算法。
38.上述的客户端与应用服务器通信,通信过程包括以下步骤:
39.步骤3.1:客户端a向应用服务器s发送cs_req,包括用kclt

srv加密的usera,timestamp和nonce,以及票据ticket;
40.步骤3.2:应用服务器s收到后解密ticket,解密数据enc_data,并与数据库中对比验证完成动态密钥协商,再向客户端a响应cs_rep,即用kclt

srv加密的timestamp和nonce;
41.步骤3.3:客户端a收到cs_rep后使用kclt

srv解密出timestamp和nonce,完成身份认证。
42.上述的应用服务器s用私钥解密ticket由基于国密sm2公钥算法生成,客户端a与应用服务器s用会话密钥kclt

srv加密传输采用国密sm4对称密码算法。
43.本发明具有以下有益效果:
44.本发明基于动态密钥认证和国密算法技术的改进kerberos身份认证协议可有效抵抗弱口令导致的彩虹表攻击、爆破攻击、假冒用户攻击、时间同步导致的重放攻击、中间人攻击等。本发明提高了kerberos身份认证协议的安全性和效率,并将我国密码算法切实贯彻到常用的身份认证协议中,实现商用密码技术的国产化自主化。
附图说明
45.图1为本发明的原理图。
46.图2为本发明的身份认证过程图。
47.图3为基于国密算法的混合密码体制加密流程图。
48.图4为基于国密算法的混合密码体制解密流程图。
49.图5为本发明的客户端与as认证过程图。
50.图6为本发明的客户端与tgs通信过程图。
51.图7为本发明的客户端与应用服务器通信过程图。
具体实施方式
52.以下结合附图对本发明的实施例作进一步详细描述。
53.本发明的一种基于国密算法的kerberos身份认证协议改进方法,利用会话密钥动态化,以及基于国密算法的混合密码体制改进传统的kerberos协议,改进后的kerberos协议包括注册过程和认证过程;
54.所述认证过程保留传统kerberos认证的三个阶段,分别为:
55.客户端与认证服务器(authentication server,as)互相认证:客户端向as发送as_req,请求as认证,as收到向客户端发送一个挑战值,客户端收到后响应as,接着as返回给客户端as_rep;
56.客户端与票据授权服务器(ticket

granting server,tgs)通信:客户端生成tgs_req请求发送给tgs,如果客户端请求的服务通过认证,则tgs返回给客户端tgs_rep;
57.以及客户端与应用服务器通信:客户端发送给应用服务器的信息为cs_req,应用服务器返回给客户端cs_rep;
58.认证过程中采用基于国密算法的混合密码体制进行加解密;
59.客户端与as之间的共享密钥使用动态密钥,是传统kerberos认证协议中没有的。
60.动态密钥由动态随机数、时间戳以及数据库中客户端的口令通过sm3哈希算法生成。
61.在初始认证中新增了用来协商更新动态会话密钥的随机数。
62.本发明的原理及认证过程如图1和2所示,包括:
63.1、初始认证。
64.客户端c向kdc中的as申请初始认证,as给予初始认证的响应。
65.(1)初始认证请求(as_bre_req)
66.c向as发送初始认证请求报文,使用会话密钥kc加密随机数n1、用来更新本地密钥keynum的rndnum和数据库存储的用户口令pwd,与cid一起封装成报文发送给as,报文为{k
c
[n1,rndnum,pwd],c
id
}。
[0067]
(2)初始认证响应(as_bre_rep)
[0068]
as根据请求报文,向c发送响应报文。响应报文的内容为{k
c
[n1 1,n2]}。
[0069]
2、tgt票据请求与响应。
[0070]
(1)tgt票据请求(as_req)
[0071]
c向as发送请求,获取tgt。
[0072]
该请求包括c的账号cid、ip地址cip、票据授权服务器账号tgsid、时间戳timestamp1、生存时间lifetime1、随机数n3,请求报文的内容为{k
c
[n2 1,c
id
,c
ip
,tgs
id
,timestamp1,lifetime1,n3]}。
[0073]
(2)响应tgt和会话密钥(as_rep)
[0074]
as收到c的请求,as通过kdc中存储的客户端密钥kc,生成tgs与c的会话密钥skc,tgs、访问tgs的票据tc,tgs、时间戳timestamp2、生存时间lifetime2、随机数n3,其中t
c,tgs
=k
tgs
{c
id
,c
ip
,tgs
id
,lifetime2,n2,sk
c,tgs
}。
[0075]
然后as使用客户端密钥kc加密skc,tgs、tc,tgs、timestamp2、随机数和tgsid,并将加密报文响应给c。
[0076]
响应报文的内容为
[0077]
{k
c
[sk
c,tgs
,t
c,tgs
,tgs
id
,timestamp2,n2 1,n3,sk
c,tgs
]}。
[0078]
c收到响应后,用kc解密as响应报文,若为合法用户,则正确解密得到访问tgs的票据和会话密钥,进行下一阶段。若为非法用户,则无法解密。
[0079]
3、st票据请求与响应。
[0080]
c使用tgt票据向tgs申请访问应用服务器的st票据。
[0081]
(1)请求st票据(tgs_req)
[0082]
c向tgs发送请求,该请求包括应用服务器sid、第一阶段中获得的tgs票据tc,tgs、生存周期lifetime3、认证符号ac,tgs和随机数n4,其中ac,tgs只有c和tgs才有权解密。此外,由第一阶段可知只有tgs可解密tc,tgs。请求报文内容具体为{s
id
,t
c,tgs
,lifetime3,a
c,tgs
,n3 1,n4},其中
[0083]
a
c,tgs
=sk
c,tgs
{c
id
,c
ip
,timestamp2,lifetime2}。
[0084]
tgs收到请求后,解密得到c与tgs会话密钥skc,tgs,并验证报文有效期,检查ip地址是否相同。并解密ac,tgs验证c是否为合法用户。若tgs只有tc,tgs无法验证c真实身份,而加上ac,tgs的验证可防止攻击者对客户身份的盗用,其中ac,tgs中包含时间戳和生命周期且有效时间很短。
[0085]
(2)响应st票据(tgs_rep)
[0086]
tgs验证身份后向c发送响应报文,报文中包含应用服务器sid,c与s会话密钥skc,s,c访问s的票据tc,s,时间戳timestamp5和随机数n5,并用skc,tgs加密,响应报文内容为{sk
c,tgs
[s
id
,sk
c,s
,timestamp5,n4 1,n5,t
c,s
]},其中
[0087]
t
c,s
=k
s
{s
id
,c
id
,c
ip
,sk
c,s
,lifetime4,n5}。
[0088]
4、服务器资源请求与响应。
[0089]
c使用st票据访问相应的服务。
[0090]
(1)请求s(ap_req)
[0091]
c使用skc,tgs解密响应报文,获取会话密钥skc,s和准入s的票据tc,s。请求报文包括授权票据tc,s和认证符ac,s,其中a
c,s
=sk
c,s
{c
id
,c
ip
,lifetime6,n6}。认证符ac,s是由skc,s加密的,包含用户id、ip、生存周期、随机数。
[0092]
(2)s响应(ap_rep)
[0093]
服务器s收到请求报文后,验证c身份的真实性,确认c合法后,将时间戳timestamp5加1,与ac,s中的随机数n6封装成响应报文,并用skc,s加密发送给c,响应报文的内容为{sk
c,s
[timestamp5 1,n6]}。
[0094]
实施例中,所述基于国密算法的混合密码体制,其加密算法流程图如图3所示,包括以下步骤:
[0095]
步骤1:通过伪随机数生成器构建会话秘钥;
[0096]
步骤2:会话密钥通过sm3杂凑,生成杂凑值;
[0097]
步骤3:将此杂凑值作为sm4的秘钥,同时也作为sm2加密的明文。首先使用sm2公钥对会话密钥进行加密,使用sm2私钥解密,这一步的作用是数字签名;
[0098]
步骤4:使用sm4算法和会话密钥对明文消息加密;
[0099]
步骤5:将密文消息和加密后的会话密钥一同封装成报文发送给接收方。此时公钥密码的私钥还未进行任何的工作,它会用于后面的解密工作中。
[0100]
实施例中,基于国密算法的混合密码体制,其解密算法流程图如图4所示,包括以下步骤:
[0101]
步骤1:服务器收到的密文由两部分组成,密文消息和加密后的会话密钥。接收方需要分离“用sm4加密的消息”和“用sm2加密的会话密钥”组合而成的密文;
[0102]
步骤2:经过分离后拿到秘钥加密部分,通过sm2中的私钥对这部分进行解密,得到用sm3对会话密钥生成的杂凑值;
[0103]
步骤3:经过解密拿到加密过程中的sm4的秘钥。拿到sm4秘钥后就可以对右半部分的消息密文进行解密,解密完成成功拿到明文。
[0104]
实施例中,所述客户端与as相互认证,认证过程如图5所示,包括以下步骤:
[0105]
步骤1.1:客户端a向as发送认证请求as_req,包括用kdc公钥kkdc加密的时间戳timestamp,客户端a的账号usera,随机数nonce和挑战值iv;
[0106]
步骤1.2:as收到后解密出时间戳,并与分离出的usera中时间对比,记录usera的登录信息,与上次usera的登录信息对比得到生命周期;
[0107]
步骤1.3:若客户端a的请求服务合法,则as向客户端a响应as_rep,包括用a的公钥kclt加密会话密钥kclt

kdc,时间戳timestamp,随机数nonce和挑战值iv,再用kkdc加密usera和tgs会话密钥kclt

kdc产生tgt,客户端a无法解密tgt,主要是缓存下来与tgs进行
通信;
[0108]
步骤1.4:客户端a收到as_rep响应后,解密出kclt

kdc,timestamp和nonce,并保存tgt。
[0109]
此过程中,所述kdc的公钥kkdc和客户端a的公钥kclt基于国密sm2算法加密;
[0110]
客户端a的私钥a_pwd、kdc的私钥kdc_pwd均用国密sm3哈希算法生成后保存,更好地体现协议的安全性和高效性。
[0111]
实施例中,所述客户端与tgs通信,获取票据ticket,通信过程如图6所示,包括以下步骤:
[0112]
步骤2.1:客户端a生成tgs_req请求发送给tgs,包括缓存的tgt,会话密钥kclt

kdc加密usera和时间戳timestamp,应用服务器resourceb;
[0113]
步骤2.2:tgs收到请求后用kkdc解密出tgt中的会话密钥,再用kclt

kdc解密得到usera和时间戳timestamp,并与数据库中对比验证,保存resourceb;
[0114]
步骤2.3:若验证合法,则tgs向客户端a响应tgs_rep,包括用kclt

kdc加密的客户端与应用服务器会话密钥kclt

ksrv,和票据ticket;
[0115]
所述ticket由应用服务器的公钥ksrv加密usera和客户端与应用服务器会话密钥kclt

ksrv生成,客户端a无法解密ticket;
[0116]
步骤2.4:客户端a收到tgs_rep后用kclt

kdc解密出kclt

srv,并保存票据ticket,在后序客户端a凭借ticket访问应用服务器以获取资源。
[0117]
此过程中,所述会话密钥kclt

kdc使用的对称加密算法为国密sm4算法,算法的安全性和效率性均有良好的体现,不亚于常见的aes算法。
[0118]
实施例中,所述客户端与应用服务器通信,通信过程如图7所示;
[0119]
客户端a与应用服务器s通信进行密钥协商,完成身份认证过程,包括以下步骤:
[0120]
步骤3.1:客户端a向应用服务器s发送cs_req,包括用kclt

srv加密的usera,timestamp和nonce,以及票据ticket;
[0121]
步骤3.2:应用服务器s收到后解密ticket,解密数据enc_data,并与数据库中对比验证完成动态密钥协商,再向客户端a响应cs_rep,即用kclt

srv加密的timestamp和nonce;
[0122]
步骤3.3:客户端a收到cs_rep后使用kclt

srv解密出timestamp和nonce,完成身份认证。
[0123]
此过程中,所述应用服务器s用私钥解密ticket由基于国密sm2公钥算法生成,客户端a与应用服务器s用会话密钥kclt

srv加密传输采用国密sm4对称密码算法,因此在改进kerberos协议过程中体现了基于国密算法的混合密码体制。
[0124]
综上所述,本发明提出的改进kerberos协议有效提高了传统kerberos协议的安全性,可以抵抗以下四种攻击方式。
[0125]
1、爆破攻击。kdc服务器中存储了用户与应用服务器的关键注册信息,都进行了sm4和sm2加密处理,非法攻击者最多只能获得加密后的注册信息,很难通过解密得到明文注册信息。并且,该注册信息很难被穷举,攻击者很难用爆破的方式的获取明文。同时,算法中的kerberos协议在进行身份认证前加了两个阶段用来协商随机数,这大大增加密码穷举攻击的难度。攻击者如果想要通过穷举密钥攻击本算法,不仅要穷举密钥,还要穷举算法中
增加的随机数。并且可以通过增加随机数的长度来增加本算法的安全性,这使得即使用户使用弱口令,也可以在一定程度上保护算法的安全性。
[0126]
2、假冒用户攻击。在网络中传输的报文数据经过sm4加密,密钥数据经过sm2公钥加密处理,注册信息中的口令都通过sm3哈希处理,攻击者在没有破解出明文之前,无法得到密钥。
[0127]
3、重放攻击。传统的kerberos协议使用固定的加密密钥,而改进kerberos协议中使用的是动态密钥,增加了协议中报文的随机性。攻击者只能在当前一轮的协议通信中实施重放攻击,而且攻击者只能在图2的第7、8过程进行重放。改进协议通过加入序列号,大大增加了攻击者重放报文的难度,提高了kerberos协议的安全性。
[0128]
4、中间人攻击。在改进的kerberos协议中,即使攻击者通过了初始认证,后面的认证过程用户还会不断地向服务器发送随机数和时间戳,并且用户与服务器通信的认证信息都是通过用户或服务器的公钥加密的,这就保证了即使攻击者截取了网络中传输的报文,也无法实施中间人攻击。
[0129]
此外,本发明实现了服务器与用户的双向认证,攻击者难以冒充kdc服务器或者应用服务器进行攻击。
[0130]
kerberos协议是常见的身份认证方式,本发明利用会话密钥动态化,以及基于国密算法的混合密码体制改进了传统的kerberos协议,不仅有效解决传统协议中的爆破攻击和重放攻击问题,增强kerberos协议的安全性,还可避免国际密码算法标准可能存在的后门问题,进一步推广国产密码技术的应用前景,具有实际意义。
[0131]
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献