一种基于区块链的同步调用用户身份认证方法与流程

文档序号:26595341发布日期:2021-09-10 22:15阅读:161来源:国知局
一种基于区块链的同步调用用户身份认证方法与流程

1.本发明公开一种方法,涉及安全认证领域,具体地说是一种基于区块链的同步调用用户身份认证方法。


背景技术:

2.现有技术中区块链的用户登录认证方法中利用区块链智能合约及智能合约事件机制,实现基于区块链的非交互式增强认证。但这种方式依赖区块链的事件消息订阅机制,即区块链交易确认后才能发出事件通知,使得认证系统的响应时间比传统“用户+口令”方式要长,认证延迟时间长,并且系统架构也比较复杂。


技术实现要素:

3.本发明针对现有技术的问题,提供一种基于区块链的同步调用用户身份认证方法,具有通用性强、实施简便等特点,具有广阔的应用前景。
4.本发明提出的具体方案是:
5.一种基于区块链的同步调用用户身份认证方法,通过用户端基于区块链注册用户注册智能合约,
6.根据可验证随机数,通过用户端进行数字签名,
7.根据区块链的用户认证智能合约,通过身份认证服务端调用用户认证智能合约验证数字签名的有效性以及用户是否存在于用户注册智能合约中,
8.通过身份认证服务端获取验证结果。
9.进一步,所述的一种基于区块链的同步调用用户身份认证方法中通过区块链将注册到用户注册智能合约的用户加入白名单,通过用户认证智能合约利用白名单中的公钥验证用户的数字签名。
10.进一步,所述的一种基于区块链的同步调用用户身份认证方法中通过用户端生成可验证随机数,其中可验证随机数v=hash(时间戳t,用户公钥)。
11.进一步,所述的一种基于区块链的同步调用用户身份认证方法中通过用户端进行数字签名,其中数字签名s=sig(v,用户私钥),sig()表示数字签名算法。
12.进一步,所述的一种基于区块链的同步调用用户身份认证方法中通过身份认证服务端利用可验证随机数v、时间戳t及数字签名s作为参数调用用户认证智能合约,进行数字签名的有效性以及用户是否存在于用户注册智能合约中的验证。
13.进一步,所述的一种基于区块链的同步调用用户身份认证方法中调用用户认证智能合约:判断用户公钥是否存在于白名单中,判断可验证随机数的数字签名是否有效,判断可验证随机数中时间戳是否超时,若用户公钥存在于白名单中,数字签名有效,且时间戳未超时,则验证通过,否则验证失败。
14.一种基于区块链的同步调用用户身份认证系统,用户端交互模块及身份认证服务端交互模块,
15.用户端交互模块根据用户端指示基于区块链注册用户注册智能合约,根据可验证随机数,生成用户端的数字签名,
16.根据区块链的用户认证智能合约,身份认证服务端交互模块根据身份认证服务端指示调用用户认证智能合约,验证数字签名的有效性以及用户是否存在于用户注册智能合约中,并将验证结果返回至身份认证服务端。
17.一种基于区块链的同步调用用户身份认证装置,包括:至少一个存储器和至少一个处理器;
18.所述至少一个存储器,用于存储机器可读程序;
19.所述至少一个处理器,用于调用所述机器可读程序,执行所述的一种基于区块链的同步调用用户身份认证方法。
20.本发明的有益之处是:
21.本发明提供一种基于区块链的同步调用用户身份认证方法,通过用户端可验证随机数进行数字签名,并基于区块链注册用户注册智能合约,通过身份认证服务端调用用户认证智能合约验证数字签名的有效性以及用户是否存在于用户注册智能合约中,通过身份认证服务端获取验证结果,即能够通过身份认证服务端调用智能合约检查数字签名的有效性以及用户是否存在于用户注册智能合约中时,没有等待区块链交易的确认,而是直接采信智能合约对规则的校验结果,使得异步调用变化为同步调用,减少了延迟和降低了实现复杂度。
附图说明
22.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1是本发明方法应用流程示意图。
具体实施方式
24.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
25.本发明提供一种基于区块链的同步调用用户身份认证方法,通过用户端基于区块链注册用户注册智能合约,
26.根据可验证随机数,通过用户端进行数字签名,
27.根据区块链的用户认证智能合约,通过身份认证服务端调用用户认证智能合约验证数字签名的有效性以及用户是否存在于用户注册智能合约中,
28.通过身份认证服务端获取验证结果。
29.本发明方法通过用户端可验证随机数进行数字签名,并基于区块链注册用户注册智能合约,通过身份认证服务端调用用户认证智能合约验证数字签名的有效性以及用户是否存在于用户注册智能合约中,通过身份认证服务端获取验证结果,即通过身份认证服务端调用智能合约检查数字签名的有效性以及用户是否存在于用户注册智能合约中时,没有
等待区块链交易的确认,而是直接采信智能合约对规则的校验结果,使得异步调用变化为同步调用,减少了延迟和降低了实现复杂度。
30.具体应用中,在本发明方法的一些实施例中,利用本发明方法以用户端app同步调用身份认证服务器端证明自身身份和取得访问令牌为例,通过身份认证服务器直接调用智能合约来验证用户端的数字签名是否有效和用户身份是否有效,利用区块链实现用户身份的全局共享和统一身份认证的同时,实现了低延迟的认证响应和轻量化的用户认证架构。具体过程为:
31.步骤1:通过用户端注册到区块链的用户注册智能合约,并加入链上白名单。其中用户将自身公钥注册到用户注册智能合约,后续可以利用用户认证智能合约在用户身份验证时,利用白名单中的公钥验证用户的数字签名。
32.步骤2:通过用户端生成可验证随机数,代替交互式验证方式中验证方,如身份认证服务器生成的随机数,利用可验证随机数进行数字签名并发送至验证方,即利用可验证随机数申请访问令牌。其中可验证随机数v=hash(时间戳t,用户公钥);通过用户端对v进行数字签名,数字签名s=sig(v,用户私钥),函数sig()表示数字签名算法,如sm2。
33.步骤3:通过身份认证服务器端调用用户认证智能合约验证用户身份。其中以“v+时间戳t+数字签名s”作为参数调用用户认证智能合约,该智能合约验证数字签名有效性和用户是否存在于用户注册智能合约中,无论验证是否通过都会将验证结果写入区块链。利用用户认证智能合约验证过程如下:
34.判断用户公钥是否存在于白名单,即用户是否在用户注册智能合约中;
35.判断可验证随机数的数字签名是否有效;
36.判断可验证随机数的时间戳是否超时,即超时时间小于约定值。
37.如果上述三个逻辑都通过,则返回给身份认证服务器端用户身份验证通过,否则返回验证失败。
38.针对时间戳超时检验:时间戳是否超时由各区块链共识节点根据自己的系统时间独立检查。由于各个节点的系统时间可能存在差异,因此考虑了冗余容错。只要用户端app和各个节点的系统时钟的时间差小于阈值(即超时时间)就可以。例如,阈值设置为5分钟,用户端app利用本地系统时间生成可验证随机数,各个节点检查自己的系统时间与可验证随机数中的时间戳差额,只要差额小于5分钟就算是验证通过。
39.通过身份认证服务器检查调用用户认证智能合约的返回值,如果验证通过(true),则在本地生成访问令牌。
40.步骤4:将生成访问令牌返回给用户端app。其中常用的访问令牌格式是jwt,有一个类似数字签名的字段,与选择的加密方式有关,加密算法可以选择非对称、对称或哈希等。而身份认证服务器按事先约定的格式、加密方式生成访问令牌,如利用sm2数字签名签署jwt令牌。
41.身份认证服务器将访问令牌返回给用户app,是对申请访问令牌调用的响应。身份认证服务器屏蔽了对区块链的访问,对于用户端app来说,如同利用区块链私钥对身份认证服务器进行了一次同步调用。
42.通过本发明方法,在用户端app登录一次,则对身份认证服务器的同步调用,就让用户app利用区块链私钥“换取”了访问令牌,并可以支持对身份认证过程的链上留痕,和用
户身份的抗伪造验证以及登录行为的无法抵赖。
43.用户身份认证过程不再依赖区块链交易的确认,使得基于区块链私钥的用户身份认证的响应时间得到极大缩短,去除异步机制使得软件架构得到大大简化。
44.同时本发明还提供一种基于区块链的同步调用用户身份认证系统,用户端交互模块及身份认证服务端交互模块,
45.用户端交互模块根据用户端指示基于区块链注册用户注册智能合约,根据可验证随机数,生成用户端的数字签名,
46.根据区块链的用户认证智能合约,身份认证服务端交互模块根据身份认证服务端指示调用用户认证智能合约,验证数字签名的有效性以及用户是否存在于用户注册智能合约中,并将验证结果返回至身份认证服务端。上述系统内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。同样地,本发明系统可以通过用户端交互模块根据用户端可验证随机数进行数字签名,并基于区块链注册用户注册智能合约,通过身份认证服务端交互模块调用用户认证智能合约验证数字签名的有效性以及用户是否存在于用户注册智能合约中,并将验证结果返回身份认证服务端,即身份认证服务端交互模块通过身份认证服务端指示调用智能合约检查数字签名的有效性以及用户是否存在于用户注册智能合约中时,没有等待区块链交易的确认,而是直接采信智能合约对规则的校验结果,使得异步调用变化为同步调用,减少了延迟和降低了实现复杂度。
47.本发明还提供一种基于区块链的同步调用用户身份认证装置,包括:至少一个存储器和至少一个处理器;
48.所述至少一个存储器,用于存储机器可读程序;
49.所述至少一个处理器,用于调用所述机器可读程序,执行所述的一种基于区块链的同步调用用户身份认证方法。
50.上述装置内的处理器的信息交互、执行可读程序过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。同样地,本发明装置处理器执行可读程序时可以通过用户端可验证随机数进行数字签名,并基于区块链注册用户注册智能合约,通过身份认证服务端调用用户认证智能合约验证数字签名的有效性以及用户是否存在于用户注册智能合约中,通过身份认证服务端获取验证结果,即通过身份认证服务端调用智能合约检查数字签名的有效性以及用户是否存在于用户注册智能合约中时,没有等待区块链交易的确认,而是直接采信智能合约对规则的校验结果,使得异步调用变化为同步调用,减少了延迟和降低了实现复杂度。
51.需要说明的是,上述较佳实施例中各流程和各系统结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
52.以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1