本发明涉及网络安全和身份验证,尤其是指一种基于oauth2.0的令牌安全增强的资源访问方法。
背景技术:
1、随着web2.0的兴起,用户开始在多个网站和服务之间共享数据,这种数据共享需求促使开发者寻找一种安全、可靠的方法来管理用户授权。于是,oauth协议诞生了,首先是oauth1.0版本;oauth1.0虽然解决了部分授权问题,但它的缺点也很明显:签名和加密过程复杂,开发和实现难度较大,且不易扩展;为了改正这些缺点,oauth2.0应运而生。
2、oauth2.0相较于oauth1.0具有更简化的开发流程、支持多种授权方式、增强的安全性、广泛的适用性、强大的扩展性,且被社区支持与广泛采用。oauth2.0设计更加直观,减少了繁琐的签名和加密步骤,使开发者更容易实现和集成;oauth2.0提供了授权码模式、简化模式、密码模式和客户端凭证模式,灵活适应不同的应用场景,支持多种授权方式;通过正确的实现和配置,如使用https传输和管理令牌生命周期,oauth2.0能够提供更高的安全性;适用于各种类型的应用,包括web应用、移动应用、桌面应用和服务器端应用,通用性强;允许开发者根据需求进行扩展和定制,满足特定业务场景的需求。oauth2.0已成为行业标准协议,被众多知名平台和服务广泛采用,拥有强大的社区支持和丰富的文档资料;通过这些改进,oauth2.0成为了现代互联网环境下身份验证和授权的首选标准。
3、然而,现有的oauth2.0协议实施复杂、无认证措施、缺乏加密机制、令牌泄露风险高、刷新令牌管理难、跨域请求面临隐患、客户端存在信任问题、影响用户体验。在经典的oauth2.0架构中,授权码和令牌的传递过程通常发生在非安全环境中,易受到多种安全威胁。特别是在授权码模式中,授权码在客户端和授权服务器之间的传输容易被窃听或篡改,导致授权码被盗用或伪造。攻击者可以通过中间人攻击、钓鱼网站等方式获取授权码,并利用其生成访问令牌,从而实现未授权的资源访问。这种安全隐患对用户数据和系统安全构成了严重威胁。此外,授权服务器的身份验证机制若不严格,攻击者可能冒充授权服务器,诱骗用户将授权码发送至伪造服务器,进一步加剧了安全风险。在高动态和复杂的网络环境下,如何确保授权码和令牌的安全传输以及授权服务器的真实性验证,成为亟需解决的问题。
技术实现思路
1、为此,本发明所要解决的技术问题在于克服现有技术中基于oauth2.0协议的通信由于无认证措施且缺乏加密机制,导致令牌泄露,对用户造成安全隐患的问题。
2、为解决上述技术问题,本发明提供了一种基于oauth2.0的令牌安全增强的资源访问方法,应用于服务器,包括:
3、当接收到客户端发起的授权请求时,获取并返回授权码至客户端;所述客户端发起的授权请求在用户申请访问客户端中时触发;
4、接收客户端基于授权码提出的令牌申请请求,若该授权码校验无误,则生成初始访问令牌;
5、根据令牌安全漏洞选择对应的预设加密算法;基于预设加密算法,获取包含公钥与私钥的密钥对;
6、利用私钥,对初始访问令牌进行数字签名,将生成的数字签名附加到初始访问令牌的预设位置处,获取目标访问令牌;
7、将目标访问令牌发送至客户端,以便客户端基于公钥,利用预设加密算法,对目标访问令牌中的数字签名进行验证,若验证成功,则认为该目标访问令牌安全,并将该目标访问令牌附加到授权请求中,请求访问用户拥有的待访问资源。
8、优选地,所述根据令牌安全漏洞选择对应的预设加密算法,包括当令牌安全漏洞包括中间人攻击与重放攻击时,选择椭圆曲线公钥密码算法sm2为预设加密算法:
9、基于椭圆曲线公钥密码算法sm2,利用sm2.keygen(λ)生成包括一个公钥和一个私钥的密钥对;
10、基于sm2.sign(m),利用私钥,对初始访问令牌进行数字签名,将生成的数字签名附加到初始访问令牌的预设位置处,获取目标访问令牌;
11、将目标访问令牌发送至客户端,以便客户端基于公钥,利用椭圆曲线公钥密码算法sm2,对目标访问令牌中的数字签名进行验证,获取布尔值,若布尔值为true,则认为该目标访问令牌安全,并将该目标访问令牌附加到授权请求中,请求访问用户拥有的待访问资源。
12、优选地,所述利用sm2.keygen(λ)生成包括一个公钥和一个私钥的密钥对,包括:
13、预设椭圆曲线e是定义在有限域fp上的椭圆曲线,对于给定的安全参数λ,选取a,b,g=(xg,yg),a,b是椭圆曲线的方程参数,g是椭圆曲线e上的q阶基点,(xg,yg)是基点的坐标;
14、利用sm3哈希函数和随机数发生器,以服务器为签名者,随机生成私钥,表示为:ska=x,x∈[1,q-1],q表示椭圆曲线e的阶数;
15、基于私钥,利用预设椭圆曲线与基点,计算对应的公钥,表示为:pka=xg=(xa,ya)。
16、优选地,所述基于sm2.sign(m),利用私钥,对初始访问令牌进行数字签名,将生成的数字签名附加到初始访问令牌的预设位置处,获取目标访问令牌,包括:
17、s41:基于待访问资源m,获取长度为entlena比特的签名者标识ida,并转化为两个字节,得到两字节标识entla;
18、s42:服务器计算身份标识,表示为:za=h256(entla||ida||a||b||xg||yg||xa||ya);
19、s43:选择随机数k,与基点点乘,获取私钥kg=(x1,y1);
20、s44:利用sm3哈希函数,对身份标识za、待访问资源m,以及私钥的x坐标x1,计算获取哈希值,表示为:r=(e+x1)mod q,e=hv(za||m);
21、s45:若哈希值r满足r=0或r=q-k,则返回步骤s43,重新选择随机数k,直至哈希值r满足r≠0且r≠q-k,则计算签名值,表示为:s=(1+x)-1(k-rx)modq;
22、s46:若签名值s=0,则返回步骤s43,重新选择随机数k,直至签名值s≠0,
23、s47:将该签名值附加到初始访问令牌的头部位置,获取目标访问令牌。
24、优选地,所述将目标访问令牌发送至客户端,以便客户端基于公钥,利用椭圆曲线公钥密码算法sm2,对目标访问令牌中的数字签名进行验证,获取布尔值,若布尔值为true,则认为该目标访问令牌安全,并将该目标访问令牌附加到授权请求中,请求访问用户拥有的待访问资源,包括:
25、客户端接收目标访问令牌以及公钥;
26、利用sm2.verify(m',σ')验证目标访问令牌中的数字签名是否正确,包括:
27、对于待验证数字签名的待访问资源m',其签名内容σ'=(r',s'),若r',s'=0,则验证失败;
28、若r',s'≠0,则计算e'=hv(za||m'),t=(r'+s')mod q,若t=0,则验证失败;
29、若t≠0,则计算(x1',x2')=s'g+tx,r=(e'+x1')mod||q,若r=r',则验证通过,输出1,否则验证失败,输出0;
30、若验证成功,则认为该目标访问令牌安全,并将该目标访问令牌附加到授权请求中,请求访问用户拥有的待访问资源;
31、其中,m'表示待验证数字签名的待访问资源,σ'表示签名内容,包括两部分r'和s',表示为σ'=(r',s')。
32、优选地,所述根据令牌安全漏洞选择对应的预设加密算法,包括当令牌安全漏洞包括量子计算威胁时,以格签名算法为预设加密算法:
33、基于格签名算法,利用setup(λ)→pp生成公共参数;基于公共参数,利用keygen(pp)→(pk,sk)生成包括一个公钥和一个私钥的密钥对;
34、基于sign(m,pk)→sig,利用私钥,对初始访问令牌进行数字签名,将生成的数字签名附加到初始访问令牌的预设位置处,获取目标访问令牌;
35、将目标访问令牌发送至客户端,以便客户端基于公钥,利用格签名算法的verify(pk,m,sig)→0/1,对目标访问令牌中的数字签名进行验证,若验证匹配,则认为该目标访问令牌安全,并将该目标访问令牌附加到授权请求中,请求访问用户拥有的待访问资源。
36、优选地,所述基于格签名算法,利用setup(λ)→pp生成公共参数,包括:
37、预设正整数d、ω、κ、k≤n,随机选取一个素数q,满足q=2k+1mod4k且
38、计算:m2←dκ,m←m1+m2;
39、随机选取正整数m3,令计算
40、选取正整数t,计算:
41、
42、获取公共参数:pp=(d;g;λ,n,d,m1,m2,m3,q,ω,κ,σ,σ2,σ1);
43、其中,τ为集合sbin中的一个元素,表示在整数集合中随机抽样,r表示集合中任意一个元素,n表示自然数,d表示从集合中随机一致选取矩阵。
44、优选地,所述基于公共参数,利用keygen(pp)→(pk,sk)生成包括一个公钥和一个私钥的密钥对,包括:
45、基于公共参数,从中选取:
46、利用keygen(pp)→(pk,sk)获取公钥和私钥,分别表示为:pk=(a,b,u),sk=r;
47、其中,a表示从集合中随机一致选取矩阵,r表示从集合中随机一致选取矩阵。
48、优选地,所述基于sign(m,pk)→sig,利用私钥,对初始访问令牌进行数字签名,将生成的数字签名附加到初始访问令牌的预设位置处,获取目标访问令牌,包括:
49、输入明文公钥pk与整数st;
50、计算:c←ar+dm modqr,r←f(st);sampled()表示取样算法;st←st+1;
51、输出数字签名:sig=(τ,v);
52、将生成的数字签名附加到初始访问令牌的预设位置处,获取目标访问令牌。
53、优选地,所述将目标访问令牌发送至客户端,以便客户端基于公钥,利用格签名算法的verify(pk,m,sig)→0/1,对目标访问令牌中的数字签名进行验证,若验证匹配,则认为该目标访问令牌安全,并将该目标访问令牌附加到授权请求中,请求访问用户拥有的待访问资源,包括:
54、客户端接收目标访问令牌以及公钥;
55、输入公钥pk,明文数字签名sig和公共参数pp;
56、计算:
57、
58、输出b;
59、若b=0,则验证失败;若b=1,则验证匹配,则认为该目标访问令牌安全,并将该目标访问令牌附加到授权请求中,请求访问用户拥有的待访问资源。
60、本发明的上述技术方案相比现有技术具有以下有益效果:
61、本发明所述的基于oauth2.0的令牌安全增强的资源访问方法,基于预设加密算法,获取包含公钥与私钥的密钥对;利用私钥,对初始访问令牌进行数字签名,将生成的数字签名附加到初始访问令牌的预设位置处,获取目标访问令牌;服务器发送目标访问令牌给客户端,客户端接收后利用服务器的公钥和预设加密算法验证目标访问令牌中的数字签名,确保目标访问令牌来源真实,以保证授权码和令牌的安全传输以及待访问资源的访问安全性;
62、当本发明的预设加密算法为椭圆曲线公钥密码算法sm2时,使用sm2数字签名算法对初始访问令牌进行签名,通过生成和验证签名,确保令牌在传输过程中未被篡改或伪造,从而提高传输过程中的安全性,有效防止中间人攻击和重放攻击,确保自主可控,提高了资源访问的安全性;
63、当本发明的预设加密算法为格签名算法时,使用格签名算法对初始访问令牌进行签名,格签名算法基于格理论,具有更高的抗量子计算能力,在量子计算环境中提供额外的安全保障,确保系统在未来量子计算威胁下的安全性,进而提高了资源访问的安全性。
1.一种基于oauth2.0的令牌安全增强的资源访问方法,其特征在于,应用于服务器,包括:
2.根据权利要求1所述的基于oauth2.0的令牌安全增强的资源访问方法,其特征在于,所述根据令牌安全漏洞选择对应的预设加密算法,包括当令牌安全漏洞包括中间人攻击与重放攻击时,选择椭圆曲线公钥密码算法sm2为预设加密算法:
3.根据权利要求2所述的基于oauth2.0的令牌安全增强的资源访问方法,其特征在于,所述利用sm2.keygen(λ)生成包括一个公钥和一个私钥的密钥对,包括:
4.根据权利要求3所述的基于oauth2.0的令牌安全增强的资源访问方法,其特征在于,所述基于sm2.sign(m),利用私钥,对初始访问令牌进行数字签名,将生成的数字签名附加到初始访问令牌的预设位置处,获取目标访问令牌,包括:
5.根据权利要求4所述的基于oauth2.0的令牌安全增强的资源访问方法,其特征在于,所述将目标访问令牌发送至客户端,以便客户端基于公钥,利用椭圆曲线公钥密码算法sm2,对目标访问令牌中的数字签名进行验证,获取布尔值,若布尔值为true,则认为该目标访问令牌安全,并将该目标访问令牌附加到授权请求中,请求访问用户拥有的待访问资源,包括:
6.根据权利要求1所述的基于oauth2.0的令牌安全增强的资源访问方法,其特征在于,所述根据令牌安全漏洞选择对应的预设加密算法,包括当令牌安全漏洞包括量子计算威胁时,以格签名算法为预设加密算法:
7.根据权利要求6所述的基于oauth2.0的令牌安全增强的资源访问方法,其特征在于,所述基于格签名算法,利用setup(λ)→pp生成公共参数,包括:
8.根据权利要求7所述的基于oauth2.0的令牌安全增强的资源访问方法,其特征在于,所述基于公共参数,利用keygen(pp)→(pk,sk)生成包括一个公钥和一个私钥的密钥对,包括:
9.根据权利要求8所述的基于oauth2.0的令牌安全增强的资源访问方法,其特征在于,所述基于sign(m,pk)→sig,利用私钥,对初始访问令牌进行数字签名,将生成的数字签名附加到初始访问令牌的预设位置处,获取目标访问令牌,包括:
10.根据权利要求9所述的基于oauth2.0的令牌安全增强的资源访问方法,其特征在于,所述将目标访问令牌发送至客户端,以便客户端基于公钥,利用格签名算法的verify(pk,m,sig)→0/1,对目标访问令牌中的数字签名进行验证,若验证匹配,则认为该目标访问令牌安全,并将该目标访问令牌附加到授权请求中,请求访问用户拥有的待访问资源,包括: