本发明属于国密算法进行jwt签名,尤其涉及一种通过国密算法进行jwt签名的方法。
背景技术:
1、访问页面需要在多个系统或应用之间切换,由于调用链条比较长,使用jwt token的轻量化方式鉴权,加快签名调用加载的速度,然后获取相应的资源,用到核心就是jwt签名的防篡改特性。
2、经检索,相关技术中,公开了一种基于jwt的单点登录实现方法及装置,包括:根据用户登录信息生成jwt令牌,jwt令牌中包含id;在jwt令牌验签通过后,获取与jwt令牌存在对应关系的原系统会话;利用原系统会话进行单点登录。本申请将现有技术中的验签环节进行扩展,采用了jwt令牌这种技术将验签环节扩展成一个集成jwt验签登录环节,实现了无需搭建统一的验证中心即可实现单点登录的功能。
3、经检索,相关技术中,公开了一种uboot下基于国密算法的系统镜像签名校验方法,包括以下步骤:s1、接收系统镜像文件,并进行镜像签名打包,生成签名镜像文件;s2、在uboot中,使用国密算法中的sm2和sm3对签名镜像文件进行校验。本发明中将国密算法移植进uboot中,使设备支持了sm2数字签名算法和sm3密码杂凑算法;本方法中支持的sm2数字签名算法比主流的rsa算法更加安全、快速和可靠;本发明中在嵌入式设备启动内核过程中,对系统镜像的签名检验,提高了设备的安全性和可靠性。
4、但是,以往使用的签名算法大都是hs256(hmac with sha-256)、rs256(rsassa-pkcs1-v1_5with sha-256)。
5、因此,有必要提供一种新的通过国密算法进行jwt签名的方法解决上述技术问题。
技术实现思路
1、本发明解决的技术问题是提供一种通过将国密算法sm2及sm3签名算法应用到jwt签名当中,实现国家电子认证服务与页面签名轻量化调用的结合,解决页面签名加载及加密认证的难题,便捷实现单点登录验证的应用集成的通过国密算法进行jwt签名的方法。
2、为解决上述技术问题,本发明提供的通过国密算法进行jwt签名的方法包括:jwt签名应用系统,所述jwt签名应用系统包括以下步骤:
3、步骤一:基于sm3withsm2的jwt签名生成,具体如下:
4、(1).用户通过系统输入需要进行签名的内容;
5、(2).将算法类型设计到签名的头部;
6、(3).将待加密内容与过期时间设置到载荷(payload)中;
7、(4).拼接头部说载荷,然后使用sm3算法对拼接内容进行加密得出加密串;
8、(5).使用sm2公钥把生成的加密串通过sm2算法进行非对称加密成本校验签名(signature);
9、(6).基于jwt转换工具对把jwt描述信息进行编码生成;
10、步骤二:对基于sm3withsm2生成的jwt进行校验,具体如下:
11、(1).用户通过系统输入jwt签名的内容;
12、(2).基于jwt工具对jwt签名进行解析取得头部、载荷、校验签名;
13、(3).获取荷载中的过期时间信息并校验签名是否过期,如果过期则判定签名无效;
14、(4).拼接头部说载荷,然后使用sm3算法对拼接内容进行加密得出加密串;
15、(5).使用sm2私钥对校验签名进行sm2算法解密并得出校验加密串;
16、(6).将校验加密串与此前基础头部与载荷拼接的加密串进行比对,一致则判定校验通过,不一致则判定签名无效。
17、作为本发明的进一步方案,所述sm2算法为sm2公钥密码算法,所述sm2公钥密码算法是基于椭圆曲线ecc算法的改进实现的,所述ecc算法是一类基于离散对数问题建立并实现的椭圆曲线。
18、作为本发明的进一步方案,所述sm3算法为sm3杂凑密码算法,所述sm3杂凑密码算法的数学原理是哈希函数,将不定长度的消息迭代压缩成固定长度的摘要,使其可以满足多种安全应用的需求。
19、作为本发明的进一步方案,所述sm2算法通过借用miracle密码算法库来实现sm2算法的签名验签功能,所述miracle密码算法库可提供高精度大整数的各种数学运算以及sm2算法所需的椭圆曲线底层运算单元模块,从而实现签名验签应用,并且miracle库底层运算的实现采用了一部分汇编代码,使得运行速度较快。
20、作为本发明的进一步方案,所述sm2算法基于sm2模块进行运行,所述sm3算法基于sm3模块进行运作,所述sm2模块和sm3模块均用于实现底层运算。
21、作为本发明的进一步方案,所述sm2模块包含sm2硬件电路模块,所述sm2电路模块主要实现有限域的模加、模减、模乘和模逆运算及曲线域的点加、倍点和多倍点运算。
22、作为本发明的进一步方案,所述sm3模块包含sm3硬件电路模块,所述sm3电路模块采用控制器和数据通路分离设计,所述控制器主要负责控制电路的执行进程,并提供控制信号,所述数据通路分离主要实现sm3的加密,由若干个子电路模块组成,所述控制器和数据通路分离包括sm3接口模块、sm3控制模块、sm3数据扩展模块、sm3数据压缩模块、sm3数据输入输出模块。
23、作为本发明的进一步方案,所述jwt签名应用系统还包括处理器(cpu),amba高性能总线(ahb)、amba外设总线(apm)接口模块、只读存储器(rom)和静态随机存储器(sram)。
24、作为本发明的进一步方案,所述处理器的型号为ck802-32位嵌入式处理器,所述sm2硬件电路模块和sm3硬件电路模块属于高性能模块,所述sm2硬件电路模块和sm3硬件电路模块挂载在amba高性能总线上。
25、作为本发明的进一步方案,所述sm2硬件电路模块和sm3硬件电路模块通过访问amba高性能总线接口实现与处理器的通信。
26、与相关技术相比较,本发明提供的通过国密算法进行jwt签名的方法具有如下有益效果:
27、1、本发明通过将国密算法sm2及sm3签名算法应用到jwt签名当中,实现国家电子认证服务与页面签名轻量化调用的结合,解决页面签名加载及加密认证的难题,便捷实现单点登录验证的应用集成;
28、2、本发明无状态、可扩展、支持移动设备、可跨程序调用、安全,基于标准化,采用标准化的json web token(jwt),基于json,方便解析,可以在令牌中自定义丰富内容,易扩展;
29、3、本发明通过国密算法sm2、sm3非对称加密及数字签名技术,可以防止篡改、安全性高,可以不依赖认证服务就可以完成授权。
1.一种通过国密算法进行jwt签名的方法,其特征在于,包括:
2.根据权利要求1所述的通过国密算法进行jwt签名的方法,其特征在于:所述sm2算法为sm2公钥密码算法,所述sm2公钥密码算法是基于椭圆曲线ecc算法的改进实现的,所述ecc算法是一类基于离散对数问题建立并实现的椭圆曲线。
3.根据权利要求1所述的通过国密算法进行jwt签名的方法,其特征在于:所述sm3算法为sm3杂凑密码算法,所述sm3杂凑密码算法的数学原理是哈希函数,将不定长度的消息迭代压缩成固定长度的摘要,使其可以满足多种安全应用的需求。
4.根据权利要求1所述的通过国密算法进行jwt签名的方法,其特征在于:所述sm2算法通过借用miracle密码算法库来实现sm2算法的签名验签功能,所述miracle密码算法库可提供高精度大整数的各种数学运算以及sm2算法所需的椭圆曲线底层运算单元模块,从而实现签名验签应用,并且miracle库底层运算的实现采用了一部分汇编代码,使得运行速度较快。
5.根据权利要求1所述的通过国密算法进行jwt签名的方法,其特征在于:所述sm2算法基于sm2模块进行运行,所述sm3算法基于sm3模块进行运作,所述sm2模块和sm3模块均用于实现底层运算。
6.根据权利要求5所述的通过国密算法进行jwt签名的方法,其特征在于:所述sm2模块包含sm2硬件电路模块,所述sm2电路模块主要实现有限域的模加、模减、模乘和模逆运算及曲线域的点加、倍点和多倍点运算。
7.根据权利要求5所述的通过国密算法进行jwt签名的方法,其特征在于:所述sm3模块包含sm3硬件电路模块,所述sm3电路模块采用控制器和数据通路分离设计,所述控制器主要负责控制电路的执行进程,并提供控制信号,所述数据通路分离主要实现sm3的加密,由若干个子电路模块组成,所述控制器和数据通路分离包括sm3接口模块、sm3控制模块、sm3数据扩展模块、sm3数据压缩模块、sm3数据输入输出模块。
8.根据权利要求1所述的通过国密算法进行jwt签名的方法,其特征在于:所述jwt签名应用系统还包括处理器(cpu),amba高性能总线(ahb)、amba外设总线(apm)接口模块、只读存储器(rom)和静态随机存储器(sram)。
9.根据权利要求8所述的通过国密算法进行jwt签名的方法,其特征在于:所述处理器的型号为ck802-32位嵌入式处理器,所述sm2硬件电路模块和sm3硬件电路模块属于高性能模块,所述sm2硬件电路模块和sm3硬件电路模块挂载在amba高性能总线上。
10.根据权利要求8所述的通过国密算法进行jwt签名的方法,其特征在于:所述sm2硬件电路模块和sm3硬件电路模块通过访问amba高性能总线接口实现与处理器的通信。