System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及网络安全,尤其涉及一种基于国密算法的用户身份认证方法及系统。
技术介绍
1、随着移动互联网的发展,带动了信息产业的发展,同时也带来了日益严重的信息安全问题,身份认证作为信息安全防护的第一关,承担了至关重要的作用。提高身份认证水平需要从认证技术和方法着手,采用更加先进的技术和方法。
2、传统验证用户身份的方式,大多为基于服务器验证的方式,即cookie+session的方式,由于http协议是无状态的,导致程序需要验证每一次请求,从而辨别客户端的身份,用户登录成功将其信息存入session中,用户每次请求都会将携带session id的cookie一起发送服务端进行校验,这种验证方式引发的问题比如用户增多导致内存开销较大、cors(跨域资源共享)以及csrf(跨站请求伪造)、频繁的查询数据库等,而此类问题对处于移动端的移动终端安全密码模块的影响尤其严重。
技术实现思路
1、为了解决传统验证用户身份应用场景下便利性、兼容性、安全性、计算性能等方面存在的不足,本专利技术提出一种基于国密算法的用户身份认证方法及系统,遵循jwt开源标准并基于sm4国家商用密码算法以及随机数发生器,通过国密sm4算法实现用户token数据的机密性以及完整性保护,并通过随机数发生器产生的真随机数参与用户token数据的计算保证token的唯一性,从而进一步提高了系统安全性。
2、本专利技术采用的技术方案如下:
3、一种基于国密算法的用户身份认证方法,包括:
>4、token生成:通过随机数发生器生成真随机数r,并通过身份认证服务模块计算得到真随机数r的2n字节杂凑值,作为身份密钥;以身份密钥的前n字节作为加密密钥,对token数据进行加密;以身份密钥的后n字节作为hmac密钥,计算消息验证码;通过身份认证服务模块获取操作系统的时间值并参与token数据的计算;
5、token校验:基于加密密钥对token数据进行解密,并解析token数据的hmac值和时间值,若解密失败则用户身份认证失败;计算消息验证码与token数据中的hmac值是否一致,若不一致则用户身份认证失败;计算操作系统的时间值与token数据中时间值的差值,若差值大于设定的最大保持登录时间,则用户身份认证失败;若前述三次用户身份认证均未失败,则用户身份认证通过。
6、进一步地,所述token生成中,计算真随机数r的杂凑值的方法包括国密sm3密码杂凑算法。
7、进一步地,所述token生成中,对token数据进行加密的方法包括:以身份密钥的前n字节作为加密密钥,采用国密sm4算法并使用ecb模式对token数据进行加密。
8、进一步地,所述token生成中,计算消息验证码的方法包括:以身份密钥的后n字节作为hmac密钥,采用国密sm3-hmac算法计算消息验证码。
9、进一步地,所述token生成中,通过身份认证服务模块获取操作系统的时间值包括:通过身份认证服务模块调用系统函数clock_gettime获取操作系统的纳秒级时间值。
10、一种基于国密算法的用户身份认证系统,包括:
11、token生成模块,被配置为通过随机数发生器生成真随机数r,并通过身份认证服务模块计算得到真随机数r的2n字节杂凑值,作为身份密钥;以身份密钥的前n字节作为加密密钥,对token数据进行加密;以身份密钥的后n字节作为hmac密钥,计算消息验证码;通过身份认证服务模块获取操作系统的时间值并参与token数据的计算;
12、token校验模块,被配置为基于加密密钥对token数据进行解密,并解析token数据的hmac值和时间值,若解密失败则用户身份认证失败;计算消息验证码与token数据中的hmac值是否一致,若不一致则用户身份认证失败;计算操作系统的时间值与token数据中时间值的差值,若差值大于设定的最大保持登录时间,则用户身份认证失败;若前述三次用户身份认证均未失败,则用户身份认证通过。
13、进一步地,所述token生成模块中,计算真随机数r的杂凑值的方法包括国密sm3密码杂凑算法。
14、进一步地,所述token生成模块中,对token数据进行加密的方法包括:以身份密钥的前n字节作为加密密钥,采用国密sm4算法并使用ecb模式对token数据进行加密。
15、进一步地,所述token生成模块中,计算消息验证码的方法包括:以身份密钥的后n字节作为hmac密钥,采用国密sm3-hmac算法计算消息验证码。
16、进一步地,所述token生成模块中,通过身份认证服务模块获取操作系统的时间值包括:通过身份认证服务模块调用系统函数clock_gettime获取操作系统的纳秒级时间值。
17、本专利技术的有益效果在于:
18、(1)区别于传统的用户token认证,本专利技术的实现遵循jwt开源标准并基于sm4国家商用密码算法以及随机数发生器,通过国密sm4算法实现用户token数据的机密性以及完整性保护,并通过随机数发生器产生的真随机数参与用户token数据的计算保证token的唯一性,从而进一步提高了系统安全性。
19、(2)本专利技术使用国密sm4算法保证token的完整性以及机密性,提高了系统安全性。
20、(3)本专利技术采用了http协议,实现了不同系统对身份认证服务的访问,提高了身份认证服务的兼容性、便利性。
21、(4)本专利技术采用随机数发生器生成的真随机数参与token的计算,可保证token数据的唯一性。
22、(5)本专利技术基于国密算法提高了系统安全性,无证书体系设计减少了数字证书管理的麻烦。
23、(6)本专利技术遵循jwt规范,实现了用户状态的分散,可以明显减轻服务器的内存压力,减少频繁的查询数据库,使服务器更加健壮。
24、(7)本专利技术可用于实现服务器对用户身份的认证,具体可应用于以http的web请求/响应模式对外提供密码服务以及协同签名服务的移动终端安全密码模块中。
本文档来自技高网...【技术保护点】
1.一种基于国密算法的用户身份认证方法,其特征在于,包括:
2.根据权利要求1所述的一种基于国密算法的用户身份认证方法,其特征在于,所述Token生成中,计算真随机数R的杂凑值的方法包括国密SM3密码杂凑算法。
3.根据权利要求1所述的一种基于国密算法的用户身份认证方法,其特征在于,所述Token生成中,对Token数据进行加密的方法包括:以身份密钥的前N字节作为加密密钥,采用国密SM4算法并使用ECB模式对Token数据进行加密。
4.根据权利要求1所述的一种基于国密算法的用户身份认证方法,其特征在于,所述Token生成中,计算消息验证码的方法包括:以身份密钥的后N字节作为HMAC密钥,采用国密SM3-HMAC算法计算消息验证码。
5.根据权利要求1所述的一种基于国密算法的用户身份认证方法,其特征在于,所述Token生成中,通过身份认证服务模块获取操作系统的时间值包括:通过身份认证服务模块调用系统函数clock_gettime获取操作系统的纳秒级时间值。
6.一种基于国密算法的用户身份认证系统,其特征在于,包括:
>7.根据权利要求6所述的一种基于国密算法的用户身份认证系统,其特征在于,所述Token生成模块中,计算真随机数R的杂凑值的方法包括国密SM3密码杂凑算法。
8.根据权利要求6所述的一种基于国密算法的用户身份认证系统,其特征在于,所述Token生成模块中,对Token数据进行加密的方法包括:以身份密钥的前N字节作为加密密钥,采用国密SM4算法并使用ECB模式对Token数据进行加密。
9.根据权利要求6所述的一种基于国密算法的用户身份认证系统,其特征在于,所述Token生成模块中,计算消息验证码的方法包括:以身份密钥的后N字节作为HMAC密钥,采用国密SM3-HMAC算法计算消息验证码。
10.根据权利要求6所述的一种基于国密算法的用户身份认证系统,其特征在于,所述Token生成模块中,通过身份认证服务模块获取操作系统的时间值包括:通过身份认证服务模块调用系统函数clock_gettime获取操作系统的纳秒级时间值。
...【技术特征摘要】
1.一种基于国密算法的用户身份认证方法,其特征在于,包括:
2.根据权利要求1所述的一种基于国密算法的用户身份认证方法,其特征在于,所述token生成中,计算真随机数r的杂凑值的方法包括国密sm3密码杂凑算法。
3.根据权利要求1所述的一种基于国密算法的用户身份认证方法,其特征在于,所述token生成中,对token数据进行加密的方法包括:以身份密钥的前n字节作为加密密钥,采用国密sm4算法并使用ecb模式对token数据进行加密。
4.根据权利要求1所述的一种基于国密算法的用户身份认证方法,其特征在于,所述token生成中,计算消息验证码的方法包括:以身份密钥的后n字节作为hmac密钥,采用国密sm3-hmac算法计算消息验证码。
5.根据权利要求1所述的一种基于国密算法的用户身份认证方法,其特征在于,所述token生成中,通过身份认证服务模块获取操作系统的时间值包括:通过身份认证服务模块调用系统函数clock_gettime获取操作系统的纳秒级时间值。
6...
【专利技术属性】
技术研发人员:李欣,李元正,余飞,黄维林,
申请(专利权)人:北京国泰网信科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。