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

一种用户端验证方法、系统、设备以及介质与流程

2021-12-18 02:33:00 来源:中国专利 TAG:


1.本发明涉及服务器领域,具体涉及一种用户端验证方法、系统、设备以及存储介质。


背景技术:

2.随着云计算技术的快速发展,越来越多的用户和企业将自己的数据和应用放在云计算平台上,降低自己对系统的开发和维护成本。用户在使用云计算平台时,客户端需要频繁的向服务器端请求数据。为了验证用户的合法性,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示。此种方法非常低效,且存在用户名和密码泄露风险。为此,token技术应运而生。
3.token是服务端生成的一串字符串,作为客户端进行请求的一个令牌,当用户第一次登录后,服务器生成一个token便将此token返回给客户端,以后客户端只需带上这个token来请求数据即可,无需再次带上用户名和密码。token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
4.目前token的种类有很多,例如uuid token、pki token、fernet token。uuid token简单易用,且长度仅为32byte。但是由于uuid token不携带其它信息,服务器收到该token后,既不能判断该token是否有效,更无法得知该token携带的用户信息。每当服务器收到用户请求,都需要与数据库进行交互,验证该token是否有效。pki token支持其余服务组件在本地认证,却需要ca颁发证书,但证书过大会造成请求失败。与uuid相比,pki token携带更多用户信息的同时还附上了数字签名,以支持本地认证。但是因为pki token携带了更多的信息,这些信息就包括service catalog,service catalog携带的endpoint数量越多,很容易超出http协议允许的最大http请求头大小(默认为8kb),导致http请求失败。fernet token是一种轻量级安全消息格式,它采用cryptography对称加密库加密token,不需要持久化token,且fernet token只加密必要的信息,长度一般不超过255字节,避免了pki token过大的问题。fernet token的缺点是用于加密token的对称加密密钥需要分发和旋转。
5.而且客户端每次直接使用token去访问云计算平台,存在token被劫持的风险,从而导致攻击者可以冒充正常用户去访问云计算平台。


技术实现要素:

6.有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种用户端验证方法,包括以下步骤:
7.响应于服务器端接收到用户端发送的登录请求,根据所述登录请求中携带的用户名和密码确定访问权限;
8.获取所述用户端对应的注册信息,利用所述注册信息和所述访问权限生成令牌,并将所述令牌返回所述用户端;
9.响应于所述用户端接收到所述令牌,利用生成的随机数和所述令牌生成挑战信息,并将所述挑战信息返回所述服务器端;
10.响应于所述服务器端接收到所述挑战信息,利用所述服务器端的令牌、所述挑战信息和所述注册信息验证所述用户端的合法性。
11.在一些实施例中,获取所述用户端对应的注册信息,进一步包括:
12.所述用户端向所述服务器端发送用户名和密码以进行用户注册,并接收所述服务器端返回的椭圆曲线参数;
13.根据所述椭圆曲线参数生成第一基点和第二基点;
14.计算密码对应的哈希值以作为私钥,并利用所述私钥分别乘以第一基点和第二基点得到第一公钥和第二公钥;
15.所述用户端将所述第一基点、所述第二基点、所述第一公钥和所述第二公钥作为注册信息发送给服务器端以使所述服务器端保存所述注册信息。
16.在一些实施例中,根据所述椭圆曲线参数生成第一基点和第二基点,进一步包括:
17.判断所述第一基点和所述第二基点是否相等;
18.响应于所述第一基点和所述第二基点相等,重新生成第一基点和第二基点。
19.在一些实施例中,所述服务器端利用所述注册信息和所述访问权限生成令牌,进一步包括:
20.利用所述用户名、所述访问权限、所述椭圆曲线参数、所述第一基点、所述第二基点、所述第一公钥和所述第二公钥生成所述令牌;
21.计算所述令牌的第一哈希值;
22.将所述令牌、所述第一哈希值、所述第一基点、所述第二基点、所述第一公钥和所述第二公钥保存在缓存中。
23.在一些实施例中,还包括:
24.将所述缓存运行在可信执行环境中。
25.在一些实施例中,所述用户端利用生成的随机数和所述令牌生成挑战信息,进一步包括:
26.计算所述令牌的第二哈希值;
27.利用生成的随机数减去所述第二哈希值与所述密码对应的哈希值的乘积以得到第一挑战信息,并利用所述随机数分别乘以第一基点和第二基点,以得到第二挑战信息和第三挑战信息。
28.在一些实施例中,利用所述服务器端的令牌、所述挑战信息和所述注册信息验证所述用户端的合法性,进一步包括:
29.从所述缓存中获取到所述令牌、所述第一哈希值、所述第一基点、所述第二基点、所述第一公钥和所述第二公钥;
30.判断所述第一挑战信息与所述第一基点的乘积加上所述第一哈希值与所述第一公钥的乘积是否等于所述第二挑战信息,以及判断所述第一挑战信息与所述第二基点的乘积加上所述第一哈希值与所述第二公钥的乘积是否等于所述第三挑战信息;
31.响应于所述第一挑战信息与所述第一基点的乘积加上所述第一哈希值与所述第一公钥的乘积等于所述第二挑战信息且所述第一挑战信息与所述第二基点的乘积加上所
述第一哈希值与所述第二公钥的乘积等于所述第三挑战信息,确定所述用户端合法。
32.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种用户端验证系统,包括:
33.确定模块,配置为响应于服务器端接收到用户端发送的登录请求,根据所述登录请求中携带的用户名和密码确定访问权限;
34.令牌模块,配置为获取所述用户端对应的注册信息,利用所述注册信息和所述访问权限生成令牌,并将所述令牌返回所述用户端;
35.挑战信息模块,配置为响应于所述用户端接收到所述令牌,利用生成的随机数和所述令牌生成挑战信息,并将所述挑战信息返回所述服务器端;
36.验证模块,配置为响应于所述服务器端接收到所述挑战信息,利用所述服务器端的令牌、所述挑战信息和所述注册信息验证所述用户端的合法性。
37.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
38.至少一个处理器;以及
39.存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种用户端验证方法的步骤。
40.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种用户端验证方法的步骤。
41.本发明具有以下有益技术效果之一:本发明提出的方案通过用户端在接收到token后,不是直接采用token对服务器端进行资源访问请求,而是构造token挑战信息进行资源访问请求,保证了token的机密性。并且在构造挑战信息时采用了随机化技术,每次向服务器端发送的token挑战信息都不一样,保证了token在使用过程中的动态性,从而使得对用户端的验证更加可靠。
附图说明
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
43.图1为本发明的实施例提供的用户端验证方法的流程示意图;
44.图2为本发明的实施例提供的用户端验证方法的流程图;
45.图3为本发明的实施例提供的用户端验证系统的结构示意图;
46.图4为本发明的实施例提供的计算机设备的结构示意图;
47.图5为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
48.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
49.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
50.在本发明的实施例中,sgx为指令集扩展(software guard extensions),旨在以硬件安全为强制性保障,不依赖于固件和软件的安全状态,提供用户空间的可信执行环境,保障用户关键代码和数据的机密性与完整性不受恶意软件的破坏。
51.根据本发明的一个方面,本发明的实施例提出一种用户端验证方法,如图1所示,其可以包括步骤:
52.s1,响应于服务器端接收到用户端发送的登录请求,根据所述登录请求中携带的用户名和密码确定访问权限;
53.s2,获取所述用户端对应的注册信息,利用所述注册信息和所述访问权限生成令牌,并将所述令牌返回所述用户端;
54.s3,响应于所述用户端接收到所述令牌,利用生成的随机数和所述令牌生成挑战信息,并将所述挑战信息返回所述服务器端;
55.s4,响应于所述服务器端接收到所述挑战信息,利用所述服务器端的令牌、所述挑战信息和所述注册信息验证所述用户端的合法性。
56.本发明提出的方案通过用户端在接收到token后,不是直接采用token对服务器端进行资源访问请求,而是构造token挑战信息进行资源访问请求,保证了token的机密性。并且在构造挑战信息时采用了随机化技术,每次向服务器端发送的token挑战信息都不一样,保证了token在使用过程中的动态性,从而使得对用户端的验证更加可靠。
57.在一些实施例中,获取所述用户端对应的注册信息,进一步包括:
58.所述用户端向所述服务器端发送用户名和密码以进行用户注册,并接收所述服务器端返回的椭圆曲线参数;
59.根据所述椭圆曲线参数生成第一基点和第二基点;
60.计算密码对应的哈希值以作为私钥,并利用所述私钥分别乘以第一基点和第二基点得到第一公钥和第二公钥;
61.所述用户端将所述第一基点、所述第二基点、所述第一公钥和所述第二公钥作为注册信息发送给服务器端以使所述服务器端保存所述注册信息。
62.在一些实施例中,根据所述椭圆曲线参数生成第一基点和第二基点,进一步包括:
63.判断所述第一基点和所述第二基点是否相等;
64.响应于所述第一基点和所述第二基点相等,重新生成第一基点和第二基点。
65.具体的,如图2所示,在注册阶段,用户端的用户可以选择相应的用户名n和密码s,向服务器端的服务器或云服务器发起用户注册请求。然后可以通过加密协议ssl将用户名n和密码s发送到服务器端。服务器端接收用户注册请求。服务器端的登录验证模块验证用户的用户名和密码的合规性。如果用户名和密码符合系统要求,对该用户进行注册。服务器端可以预先设置一个非对称加密的椭圆曲线,生成相应的椭圆曲线参数。当用户注册完成后,服务器端将椭圆曲线发送给用户端,请求生成基点。用户端可以根据椭圆曲线,生成椭圆曲线上的第一基点g和第二基点h,并验证两个基点g,h是否相等。如果相等,重新生成。用户根据密码s计算相应hash值sk=hash(s),将sk作为用户的私钥。用户根据私钥sk计算用户第
一公钥和第二公钥,其中第一公钥为pk1=sk*g,第二公钥为pk2=sk*h。用户通过加密协议ssl将两个基点g和h、两个公钥pk1=sk*g,pk2=sk*h发送给服务器端。服务器端保存用户名n、加密后的密码s、公钥pk1、公钥pk2、两个基点g,h。
66.在一些实施例中,所述服务器端利用所述注册信息和所述访问权限生成令牌,进一步包括:
67.利用所述用户名、所述访问权限、所述椭圆曲线参数、所述第一基点、所述第二基点、所述第一公钥和所述第二公钥生成所述令牌;
68.计算所述令牌的第一哈希值;
69.将所述令牌、所述第一哈希值、所述第一基点、所述第二基点、所述第一公钥和所述第二公钥保存在缓存中。
70.在一些实施例中,还包括:
71.将所述缓存运行在可信执行环境中。
72.具体的,如图2所示,当用户端请求登录时,用户选择相应的用户名n和密码s,并将sk=hash(s)缓存在客户端的token挑战生成模块中,同时向服务器发送登录请求。用户通过加密协议ssl将用户名n和密码s发送到服务器。服务器接收用户的用户名n和密码s,验证用户的合法性和访问权限,并为用户生成相应的token。token可以包括用户名、角色、项目、创建时间、超期时间、可访问项目、椭圆曲线参数、两个基点g,h等。服务器计算token的hash值ht1=hash(token),并将token的hash值ht1和token、两个基点g,h、两个公钥pk1、pk2作为键值保存在memcached(缓存)中。memcached服务模块运行在sgx可信执行环境中,负责对用户token的机密保护。服务器通过加密协议ssl将token发送给用户。
73.在一些实施例中,所述用户端利用生成的随机数和所述令牌生成挑战信息,进一步包括:
74.计算所述令牌的第二哈希值;
75.利用生成的随机数减去所述第二哈希值与所述密码对应的哈希值的乘积以得到第一挑战信息,并利用所述随机数分别乘以第一基点和第二基点,以得到第二挑战信息和第三挑战信息。
76.具体的,如图2所示,用户端接收服务器发送来的token,将token传入到挑战生成模块中。挑战生成模块解析token,接收两个基点g,h。挑战生成模块计算token的hash值,ht2=hash(token),并创建随机数v。挑战生成模块计算第一挑战信息r=v

ht2*sk,第二挑战信息v*g,第三挑战信息v*h。最后通过加密协议ssl将挑战信息r,vg,vh发送给服务器。
77.在一些实施例中,利用所述服务器端的令牌、所述挑战信息和所述注册信息验证所述用户端的合法性,进一步包括:
78.从所述缓存中获取到所述令牌、所述第一哈希值、所述第一基点、所述第二基点、所述第一公钥和所述第二公钥;
79.判断所述第一挑战信息与所述第一基点的乘积加上所述第一哈希值与所述第一公钥的乘积是否等于所述第二挑战信息,以及判断所述第一挑战信息与所述第二基点的乘积加上所述第一哈希值与所述第二公钥的乘积是否等于所述第三挑战信息;
80.响应于所述第一挑战信息与所述第一基点的乘积加上所述第一哈希值与所述第一公钥的乘积等于所述第二挑战信息且所述第一挑战信息与所述第二基点的乘积加上所
述第一哈希值与所述第二公钥的乘积等于所述第三挑战信息,确定所述用户端合法。
81.具体的,如图2所示,服务器接收用户的token挑战信息,将挑战信息发送到token验证模块。token验证模块运行在sgx可信执行环境中,负责对用户token的有效性进行验证。token验证模块与memcached服务模块建立可信连接,从memcached服务模块获取用户对应的ht1和token、两个基点g,h、两个公钥pk1、pk2。token验证模块根据用户发送的挑战信息和从memcached服务模块获取用户token相应的信息对用户token的合法性进行验证。token验证模块计算v*g是否等于r*g ht1*pk1,v*h是否r*h ht1*pk2。如果两个公式都相等,说明用户拥有token,可以访问云计算平台,允许用户访问相应的云计算资源。
82.本发明实施例提出的方案,针对token使用过程中存在泄漏、伪造等情况,在用户端接收到token后,不是直接采用token对云服务器进行资源访问请求,而是采用构造token挑战信息进行资源访问请求,保证了token的机密性。并且在构造挑战信息时采用了随机化技术,每次请求云服务生成的token挑战信息都不一样,保证了token在使用过程中的动态性。用户端在构造token过程中将用户私钥与token挑战信息相结合,保证了无法有效伪造token。同时,服务器中memcached服务模块、token验证模块两个模块运行在sgx的可信执行环境中,保证机密数据无法被窃取。
83.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种用户端验证400,如图3所示,包括:
84.确定模块401,配置为响应于服务器端接收到用户端发送的登录请求,根据所述登录请求中携带的用户名和密码确定访问权限;
85.令牌模块402,配置为获取所述用户端对应的注册信息,利用所述注册信息和所述访问权限生成令牌,并将所述令牌返回所述用户端;
86.挑战信息模块403,配置为响应于所述用户端接收到所述令牌,利用生成的随机数和所述令牌生成挑战信息,并将所述挑战信息返回所述服务器端;
87.验证模块404,配置为响应于所述服务器端接收到所述挑战信息,利用所述服务器端的令牌、所述挑战信息和所述注册信息验证所述用户端的合法性。
88.在一些实施例中,获取所述用户端对应的注册信息,进一步包括:
89.所述用户端向所述服务器端发送用户名和密码以进行用户注册,并接收所述服务器端返回的椭圆曲线参数;
90.根据所述椭圆曲线参数生成第一基点和第二基点;
91.计算密码对应的哈希值以作为私钥,并利用所述私钥分别乘以第一基点和第二基点得到第一公钥和第二公钥;
92.所述用户端将所述第一基点、所述第二基点、所述第一公钥和所述第二公钥作为注册信息发送给服务器端以使所述服务器端保存所述注册信息。
93.在一些实施例中,根据所述椭圆曲线参数生成第一基点和第二基点,进一步包括:
94.判断所述第一基点和所述第二基点是否相等;
95.响应于所述第一基点和所述第二基点相等,重新生成第一基点和第二基点。
96.在一些实施例中,所述服务器端利用所述注册信息和所述访问权限生成令牌,进一步包括:
97.利用所述用户名、所述访问权限、所述椭圆曲线参数、所述第一基点、所述第二基
点、所述第一公钥和所述第二公钥生成所述令牌;
98.计算所述令牌的第一哈希值;
99.将所述令牌、所述第一哈希值、所述第一基点、所述第二基点、所述第一公钥和所述第二公钥保存在缓存中。
100.在一些实施例中,还包括:
101.将所述缓存运行在可信执行环境中。
102.在一些实施例中,所述用户端利用生成的随机数和所述令牌生成挑战信息,进一步包括:
103.计算所述令牌的第二哈希值;
104.利用生成的随机数减去所述第二哈希值与所述密码对应的哈希值的乘积以得到第一挑战信息,并利用所述随机数分别乘以第一基点和第二基点,以得到第二挑战信息和第三挑战信息。
105.在一些实施例中,利用所述服务器端的令牌、所述挑战信息和所述注册信息验证所述用户端的合法性,进一步包括:
106.从所述缓存中获取到所述令牌、所述第一哈希值、所述第一基点、所述第二基点、所述第一公钥和所述第二公钥;
107.判断所述第一挑战信息与所述第一基点的乘积加上所述第一哈希值与所述第一公钥的乘积是否等于所述第二挑战信息,以及判断所述第一挑战信息与所述第二基点的乘积加上所述第一哈希值与所述第二公钥的乘积是否等于所述第三挑战信息;
108.响应于所述第一挑战信息与所述第一基点的乘积加上所述第一哈希值与所述第一公钥的乘积等于所述第二挑战信息且所述第一挑战信息与所述第二基点的乘积加上所述第一哈希值与所述第二公钥的乘积等于所述第三挑战信息,确定所述用户端合法。
109.本发明实施例提出的方案,针对token使用过程中存在泄漏、伪造等情况,在用户端接收到token后,不是直接采用token对云服务器进行资源访问请求,而是采用构造token挑战信息进行资源访问请求,保证了token的机密性。并且在构造挑战信息时采用了随机化技术,每次请求云服务生成的token挑战信息都不一样,保证了token在使用过程中的动态性。用户端在构造token过程中将用户私钥与token挑战信息相结合,保证了无法有效伪造token。同时,服务器中memcached服务模块、token验证模块两个模块运行在sgx的可信执行环境中,保证机密数据无法被窃取。
110.基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机设备501,包括:
111.至少一个处理器520;以及
112.存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种用户端验证方法的步骤。
113.基于同一发明构思,根据本发明的另一个方面,如图5所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行如上的任一种用户端验证方法的步骤。
114.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取
存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
115.此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
116.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
117.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
118.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
119.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
120.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
121.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
再多了解一些

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

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

相关文献