一种基于区块链公钥数字签名的Web认证方法、系统和装置与流程

文档序号:23175007发布日期:2020-12-04 14:05阅读:138来源:国知局
一种基于区块链公钥数字签名的Web认证方法、系统和装置与流程

本发明涉及区块链技术领域,尤其是涉及一种基于区块链公钥数字签名的web认证方法、系统和装置。



背景技术:

目前,web系统中,对用户进行身份认证主要有5种方式:

1.httpbasicauth:客户端在请求头提供用户名和密码,由服务端检查密码是否正确。这种方式中,密码是明文传输的,容易泄漏。

2.oauth2:客户端按照协议,最终从服务端获取accesstoken,后续请求种都附带accesstoken,由服务端根据accesstoken实现用户身份的认证。

3.cookiesessionauth:客户端提供有效的身份证明信息(如用户名密码),服务端为访问者创建session对象,客户端通过cookie保存sessionid,后续请求都附带cookie信息,服务端匹配session对象,实现对用户身份的认证。

4.tokenauth:客户端提供有效的身份证明信息(如用户名密码),服务端为客户端分配token,客户端后续请求都附带token,服务端验证token,实现对用户身份的认证。

5.jwtauth:客户端提供有效的身份证明信息(如用户名密码),服务端构造符合jwt规范的header和payload,对其进行签名,得到token,发送给客户端,客户端后续请求都附带token,服务端验证token由自身签发并解析出token中的身份信息,实现对用户身份的认证。

在以上的方法2-5中,存在如下问题:token均由服务端生成,服务端可以不经客户端允许生成token;在服务端集中管理,一旦泄漏,会出现大批用户的请求可能被伪造;在一段时间内,token不会变化,如果token被第三方截获,第三方很容易伪造客户端的请求;token和请求数据没有关系,数据传输途中即使被篡改,服务端也无法发现。

而且,随着区块链技术的发展,在一些去中心化系统中,用户的身份信息并不是由中心服务器管理,而是通过用户持有非对称加密的私钥体现的,在基于这种系统构建的web系统的,上述web认证方式均不可使用。

因此,设计一种安全且应用广泛的web认证方式,是目前亟待解决的问题。



技术实现要素:

本发明的目的是提供一种基于区块链公钥数字签名的web认证方法、系统和装置,客户端发出注册或请求,系统根据设定的非对称签名算法,生成公私钥对,将注册或请求信息生成相应的有效载荷数据,基于私钥进行签名,将公钥、有效载荷数据、签名结果生成注册或请求数据,服务端对注册或请求数据进行解析,获取注册或请求信息,执行相应操作。

第一方面,本发明的上述发明目的通过以下技术方案得以实现:

一种基于区块链公钥数字签名的web认证方法,客户端在注册过程中,生成公钥私钥对;或根据注册信息生成注册有效载荷数据,结合密钥进行运算获得签名结果,将公钥、注册有效载荷数据、签名结果结合成注册请求数据;在请求响应过程中,基于密钥生成请求数据发送给服务器。

本发明进一步设置为:在不需要注册信息的注册过程中,客户端自行生成公钥pk、私钥sk对,并存储。

本发明进一步设置为:在需要注册信息的注册过程中,客户端工作包括以下步骤:

s1、自行生成公钥pk、私钥sk对,并存储;

s2、接收用户注册信息,并生成注册有效载荷数据;

s3、基于私钥sk,对注册有效载荷数据签名,得到注册签名结果;

s4、将公钥pk、注册有效载荷数据、注册签名结果结合,得到注册请求数据,发送给服务端;

s5、接收服务端返回的注册结果信息。

本发明进一步设置为:客户端向服务端发出读请求,包括以下步骤:

a1、接收读业务请求信息,生成第一请求有效载荷数据;

a2、基于私钥sk,对第一请求有效载荷数据签名,得到第一请求签名结果;

a3、将公钥pk、第一请求有效载荷数据、第一请求签名结果结合,得到第一读请求数据,发送给服务端;

a4、接收服务端返回的第一读请求结果;

a5、接收服务端的业务执行结果。

本发明进一步设置为:客户端向服务端发出读或写请求,包括以下步骤:

b1、获取一次性随机数信息、第二读或写业务请求信息,生成第二请求有效载荷数据;

b2、基于私钥sk,对第二请求有效载荷数据签名,得到第二请求签名结果;

b3、将公钥pk、第二请求有效载荷数据、第二请求签名结果结合,得到第二读或写请求数据,发送给服务端;

b4、接收服务端返回的第二读或写请求结果;

b5、接收服务端的业务执行结果。

本发明进一步设置为:获取一次性随机数信息,包括以下步骤:

p1、生成请求一次性随机数的第三请求有效载荷数据;

p2、基于私钥sk,对第三请求有效载荷数据签名,得到第三请求签名结果;

p3、将公钥pk、第三请求有效载荷数据、第三请求签名结果结合,得到第三随机数请求数据,发送给服务端;

p4、接收服务端发送的响应随机数信号。

第二方面,本发明的上述发明目的通过以下技术方案得以实现:一种基于区块链公钥数字签名的web认证方法,服务端在注册过程中,接收客户端发送的注册请求数据,对密钥或注册请求数据进行验证,并发送验证结果给客户端;在请求响应过程中,接收客户端的读业务请求、读或写业务请求、随机数业务请求,获得业务请求信息、用户身份id,根据业务请求信息执行业务逻辑,返回业务执行结果给客户端。

本发明进一步设置为:服务端在注册过程中,接收客户端发送的注册请求数据,包括以下步骤:

d1、接收客户端发送的注册请求数据;

d2、对注册请求数据进行解析,得到公钥pk、注册有效载荷数据、注册签名结果;

d3、验证注册签名结果是否正确,若是,进入下一步,若否,转d8;

d4、解密注册有效载荷数据,得到用户注册信息;

d5、根据公钥pk计算用户身份id;

d6、将用户注册信息、用户身份id进行关联,并保存;

d7、发送注册成功信息给客户端,转d9;

d8、发送验证错误信息给客户端;

d9、注册结束。

本发明进一步设置为:服务端在请求响应过程中,接收客户端发送的第一读请求数据,包括以下步骤:

e1、接收客户端发送的第一读请求数据;

e2、解析第一读请求数据,得到公钥pk、第一请求有效载荷数据、第一请求签名结果;

e3、验证第一请求签名结果是否正确,若是,进入下一步,若否,转e8;

e4、解析第一请求有效载荷数据,得到第一业务请求信息;

e5、根据公钥pk计算用户身份id;

e6、根据用户身份id、第一业务请求信息执行业务逻辑;

e7、发送业务执行结果信息给客户端,转e9;

e8、发送验证错误信息给客户端;

e9、请求结束。

本发明进一步设置为:服务端在请求响应过程中,接收客户端发送的第二读或写请求数据,包括以下步骤:

w1、接收客户端发送的第二读或写请求数据;

w2、解析第二读或写请求数据,得到公钥pk、第二请求有效载荷数据、第二请求签名结果;

w3、验证第二请求签名结果是否正确,若是,进入下一步,若否,转w10;

w4、解析第二请求有效载荷数据,得到一次性随机数信息、第二读或写业务请求信息;

w5、根据公钥pk计算用户身份id;

w6、将服务端保存的用户身体id对应的一次性随机数信息,与解析得到的一次性随机数信息进行比较,若相同,进入下一步,若不同,转w11;

w7、将服务端保存的用户身体id对应的一次性随机数信息设置为失效;

w8、根据用户身份id、第二读或写业务请求信息,执行业务逻辑;

w9、发送业务执行结果信息给客户端,转w12;

w10、发送验证错误信息给客户端,转w12;

w11、发送一次性随机数验证错误信息给客户端;

w12、请求结束。

本发明进一步设置为:服务端在请求响应过程中,接收客户端发送的第三随机数请求数据,包括以下步骤:

q1、接收客户端发送的第三随机数请求数据;

q2、解析第三随机数请求数据,得到公钥pk、第三请求有效载荷数据、第三请求签名结果;

q3、验证第三请求签名结果是否正确,若是,进入下一步,若否,转q8;

q4、解析第三请求有效载荷数据,得到获取一次性随机数业务请求信息;

q5、根据公钥pk计算用户身份id;

q6、生成一次性随机数,并与用户身份id关联后保存;

q7、发送一次性随机数给客户端,转q9;

q8、发送验证错误信息给客户端;

q9、请求结束。

第三方面,本发明的上述发明目的通过以下技术方案得以实现:

一种基于区块链公钥数字签名的web认证系统,包括算法模块、注册模块、请求模块,算法模块分别与注册模块、请求模块连接,算法模块用于在注册与请求过程中,采用非对称签名算法和摘要算法,对注册模块中的用户注册信息序列化,对注册有效载荷数据进行注册签名;对请求模块中的业务请求进行序列化、反序列化,对请求有效载荷数据进行请求签名,注册模块用于执行如权利要求1-6任意一项所述方法,请求模块用于执行如权利要求7-11任意一项所述方法。

第四方面,本发明的上述发明目的通过以下技术方案得以实现:一种基于区块链公钥数字签名的web认证装置,包括存储器和处理器,存储器存储有能够被处理器加载并执行的如权利要求1-11任意一项所述方法的计算机程序。

与现有技术相比,本发明的有益技术效果为:

1.本申请通过将注册或请求信息转换为有效载荷数据,并基于公钥、私钥生成注册或请求数据发送给服务端,服务端将认证信息与注册或请求数据关联,防止了服务端处理被篡改的请求;

2.进一步地,本申请通过服务端接收注册或请求数据后,才进行相应操作,避免了不经客户端构成认证信息的可能;

3.进一步地,本申请的服务端不需要管理敏感信息,降低了泄漏风险;

4.进一步地,本申请生成的注册或请求数据不能重复使用,避免了万一被截获后伪造客户端请求的可能性。

附图说明

图1是本发明的一个具体实施例的注册过程流程示意图;

图2是本发明的一个具体实施例的请求响应过程流程示意图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

具体实施例一

本申请的一种基于区块链公钥数字签名的web认证系统,包括算法模块、注册模块、请求模块,算法模块分别与注册模块、请求模块连接,在算法模块中设定有非对称签名算法和摘要算法,用于在注册或请求过程中,采用设定算法进行相应计算;生成公私钥对,对注册模块中的用户注册信息序列化,生成有效载荷数据;基于私钥,对用户注册信息或请求信息进行签名,得到签名结果;对请求模块中的业务请求进行序列化、反序列化,对请求有效载荷数据进行请求签名;注册模块用于根据用户注册信息,生成注册数据,完成注册;请求模块用于根据用户请求,生成请求数据,并执行相应的请求操作。

具体实施例二

本申请的一种基于区块链公钥数字签名的web认证方法,在去中心化系统中,不需要用户额外提供信息进行注册,客户端根据系统设定的非对称签名算法,自行生成公钥(pk)、私钥(sk)对,并保存,注册过程完成。

具体实施例三

本申请的一种基于区块链公钥数字签名的web认证方法,系统需要用户额外提供信息进行注册,客户端根据注册信息生成注册有效载荷数据,结合密钥进行运算获得签名结果,将公钥、注册有效载荷数据、签名结果结合成注册请求数据,发送给服务端,并接收服务端返回的信息。

具体地,包括以下步骤:

s1、基于非对称签名算法,自行生成公钥(pk)、私钥(sk)对,并存储;

s2、接收用户注册信息,将用户注册信息序列化,生成注册有效载荷数据(registerpayload),数据采用与服务端约定的任意数据序列化格式,包括json,urlencode,xml格式;

s3、基于私钥(sk),对注册有效载荷数据签名,采用设定的非对称签名算法和摘要算法,对注册有效载荷数据进行签名,得到注册签名结果(registersig);

s4、将公钥(pk)、注册有效载荷数据、注册签名结果进行拼接结合,得到注册请求数据,发送给服务端;

s5、接收服务端返回的注册结果信息。

服务端在注册过程中,接收客户端发送的注册请求数据,对密钥或注册请求数据进行验证,并发送验证结果给客户端。

具体地,包括以下步骤:

d1、接收客户端发送的注册请求数据;

d2、对注册请求数据进行解析,得到公钥pk、注册有效载荷数据、注册签名结果;

d3、采用系统设定的非对称签名算法和摘要算法,验证注册签名结果是否正确,若是,进入下一步,若否,转d8;

d4、按照约定的数据序列化格式,对注册有效载荷数据进行反序列化,得到用户注册信息;

d5、根据公钥pk,计算用户身份id,采用的方法包括:对公钥进行hash后,截取子字符串;

d6、将用户注册信息、用户身份id进行关联,并保存;

d7、发送注册成功信息给客户端,转d9;

d8、发送验证错误信息给客户端;

d9、注册结束。

具体实施例四

本申请的一种基于区块链公钥数字签名的web认证方法,在请求响应过程中,客户端基于密钥生成请求数据发送给服务器;服务端接收客户端的读业务请求,获得业务请求信息、用户身份id,根据业务请求信息执行业务逻辑,返回业务执行结果给客户端。

客户端向服务端发出读请求,包括以下步骤:

a1、接收读业务请求信息,进行序列化,生成第一请求有效载荷数据(firstrequestpayload);

a2、基于私钥sk,采用系统设定的非对称签名算法和摘要算法,对第一请求有效载荷数据签名,得到第一请求签名结果(firstrequestsig);

a3、将公钥pk、第一请求有效载荷数据、第一请求签名结果进行拼接结合,得到第一读请求数据,发送给服务端;

a4、接收服务端返回的第一读请求结果;

a5、接收服务端的业务执行结果。

服务端在读请求响应过程中,接收客户端发送的第一读请求数据并进行相应操作,包括以下步骤:

e1、接收客户端发送的第一读请求数据;

e2、解析第一读请求数据,得到公钥pk、第一请求有效载荷数据、第一请求签名结果;

e3、利用系统设定的非对称签名算法和摘钥算法,验证第一请求签名结果是否正确,若是,进入下一步,若否,转e8;

e4、按照约定的数据序列化格式,对第一请求有效载荷数据进行反序列化,得到第一业务请求信息;

e5、根据公钥pk计算用户身份id;

e6、根据用户身份id、第一业务请求信息执行业务逻辑;

e7、发送业务执行结果信息给客户端,转e9;

e8、发送验证错误信息给客户端;

e9、请求结束。

具体实施例五

本申请的一种基于区块链公钥数字签名的web认证方法,在请求响应过程中,客户端发送请求一次性随机数,用于写请求或读请求。

获取一次性随机数信息,包括以下步骤:

p1、生成请求一次性随机数的第三请求有效载荷数据(thirdrequestpayload);

p2、基于私钥sk,利用系统设定的非对称签名算法和摘要算法,对第三请求有效载荷数据签名,得到第三请求签名结果(thirdrequestsig);

p3、将公钥pk、第三请求有效载荷数据、第三请求签名结果结合,得到第三随机数请求数据,发送给服务端;

p4、接收服务端发送的响应随机数信号。

服务端接收客户端的随机数业务请求,获得业务请求信息、用户身份id,根据业务请求信息执行业务逻辑,返回业务执行结果给客户端。

具体地,包括以下步骤:

q1、接收客户端发送的第三随机数请求数据;

q2、解析第三随机数请求数据,得到公钥pk、第三请求有效载荷数据、第三请求签名结果;

q3、利用系统设定的非对称签名算法和摘要算法,验证第三请求签名结果是否正确,若是,进入下一步,若否,转q8;

q4、按照约定的数据序列化格式,对第三请求有效载荷数据进行反序列化,得到获取一次性随机数业务请求信息;

q5、根据公钥pk计算用户身份id;

q6、生成一次性随机数(nonce),并与用户身份id关联后保存;

q7、发送一次性随机数给客户端,转q9;

q8、发送验证错误信息给客户端;

q9、请求结束。

具体实施例六

本申请的一种基于区块链公钥数字签名的web认证方法,在请求响应过程中,基于随机数,客户端发送读或写业务请求,服务端接收客户端的读或写业务请求,获得业务请求信息、用户身份id,根据业务请求信息执行业务逻辑,返回业务执行结果给客户端。

客户端向服务端发出读或写业务请求,包括以下步骤:

b1、获取一次性随机数信息、第二读或写业务请求信息,进行结合,然后进行序列化,生成第二请求有效载荷数据(secondrequestpayload);

b2、基于私钥sk,利用系统设定的非对称签名算法和摘要算法,对第二请求有效载荷数据签名,得到第二请求签名结果(secondrequestsig);

b3、将公钥pk、第二请求有效载荷数据、第二请求签名结果拼接结合,得到第二读或写请求数据,发送给服务端;

b4、接收服务端返回的第二读或写请求结果;

b5、接收服务端的业务执行结果。

服务端接收客户端的读或写业务请求,获得业务请求信息、用户身份id,根据业务请求信息执行业务逻辑,返回业务执行结果给客户端。

具体地,包括以下步骤:

服务端在请求响应过程中,接收客户端发送的第二读或写请求数据,包括以下步骤:

w1、接收客户端发送的第二读或写请求数据;

w2、解析第二读或写请求数据,得到公钥pk、第二请求有效载荷数据、第二请求签名结果;

w3、用系统设定的非对称签名算法和摘钥算法,验证第二请求签名结果是否正确,若是,进入下一步,若否,转w10;

w4、按照约定的数据序列化格式,对第二请求有效载荷数据进行反序列化,得到一次性随机数信息、第二读或写业务请求信息;

w5、根据公钥pk计算用户身份id;

w6、将服务端保存的用户身体id对应的一次性随机数信息,与解析得到的一次性随机数信息进行比较,若相同,进入下一步,若不同,转w11;

w7、将服务端保存的用户身体id对应的一次性随机数信息设置为失效;

w8、根据用户身份id、第二读或写业务请求信息,执行业务逻辑;

w9、发送业务执行结果信息给客户端,转w12;

w10、发送验证错误信息给客户端,转w12;

w11、发送一次性随机数验证错误信息给客户端;

w12、请求结束。

具体实施例七

本申请的一种基于区块链公钥数字签名的web认证装置,包括存储器和处理器,存储器存储有能够被处理器加载并执行的基于区块链公钥数字签名的web认证方法的计算机程序。

本具体实施方式的实施例均为本发明的较佳实施例,并非依此限制本发明的保护范围,故:凡依本发明的结构、形状、原理所做的等效变化,均应涵盖于本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1