身份验证方法、装置及系统与流程

文档序号:30428387发布日期:2022-06-15 15:59阅读:94来源:国知局
身份验证方法、装置及系统与流程

1.本技术涉及信息安全技术领域,具体涉及身份验证方法、装置和系统,用户注册方法和装置,以及电子设备。


背景技术:

2.在互联网时代,用户密码泄露会对用户造成巨大的影响。对于用户密码信息的维护,如账号口令(password)、云计算平台的用户隐私数据ak/sk,需要通过密码存储体系来保证用户密码数据不被泄漏。
3.目前,一种典型的密码存储体系是服务端的密码存储体系,具体实施时主要采用以下三种方案:1)存储密码明文:将用户密码保存在后端服务器集群;2)存储不可逆的密码散列值:通过md5/sha256存储用户密码的散列值;3)存储可逆的密码密文:经由特定密钥加密后将用户密码的密文存储于数据库。以登录口令为例,服务端会在用户注册时计算并存储账号口令的散列值,以备用户下次登录时进行身份验证。对于云计算平台内部一些需要使用用户ak/sk来调用其他云产品的服务平台,服务端通常是以密文的方式将sk保存在该平台数据库,在用户访问云产品时平台会对数据库中的密文进行解密得到真实sk,并与请求体中发送的实际sk进行对比以验证用户身份,随后通过ak/sk向指定云产品发起调用。
4.然而,在实现本发明过程中,发明人发现上述技术方案均存在如下问题:1)用户密码会进入公网,在传输过程中存在用户密码泄漏风险:2)服务端可感知用户隐私数据,在服务端内部存在泄漏风险。例如,上述方案一在数据库中采用明文存储,对于应用研发人员或数据库管理员dba来说很容易在不经意间暴露用户密码;上述方案二中的密码往往存储于应用配置文件或数据库中,也很容易被他人得到进而破解出用户密码;上述方案三尽管规避了以上风险,但部分产品的域名或许不具备tls加密能力,即在用户注册消息在公网传输的过程中就有可能被窃取到请求体中的密钥。
5.综上所述,现有服务端密码存储体系存在用户密码泄漏风险,如何提升用户密码存储的安全性,成为本领域技术人员迫切需要解决的问题。


技术实现要素:

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.获取第二区块链节点存储的与服务端接收的用户名密文和密码密文对应的一次性登录密码,作为目标登录密码;
42.判断目标登录密码与服务端接收的一次性登录密码是否相同;若判断结果为是,则服务端判定通过身份验证。
43.可选的,所述服务端包括云平台服务端,所述密码包括用户用于加密认证字符串和云厂商用来验证认证字符串的密钥sk。
44.所述方法还包括:
45.若云平台服务端判定通过身份验证,则所述云平台服务端向云产品服务端发送用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;
46.在云产品服务端本地网络中,根据云产品服务端接收的登录用户信息和一次性登录密码、及云产品服务端本地网络的第三区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
47.可选的,还包括:
48.设置一次性登录密码的有效时长和生成时间;
49.所述根据服务端接收的登录用户信息和一次性登录密码、及第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证,包括:
50.获取第二区块链节点存储的与服务端接收的登录用户信息对应的一次性登录密码,作为目标登录密码;
51.根据目标登录密码的生成时间和有效时长,判断目标登录密码是否有效;
52.若判定目标登录密码有效,则判断目标登录密码与服务端接收的一次性登录密码是否相同;若判断结果为是,则服务端判定通过身份验证。
53.本技术还提供一种用户注册方法,用于客户端,包括:
54.获取网络服务的用户注册信息,所述用户注册信息包括注册用户名和注册密码;
55.将注册用户名和注册密码发送至客户端本地网络的第一区块链节点,以通过第一区块链节点,根据注册用户名和注册密码,生成第一登录信息密文;将第一登录信息密文存储至区块链,将注册密码以外的注册用户信息存储至网络服务端。
56.本技术还提供一种用户注册方法,用于客户端本地网络的第一区块链节点,包括:
57.接收客户端发送的网络服务注册用户的用户名和密码;
58.根据用户名和密码,生成第一登录信息密文;
59.将第一登录信息密文存储至区块链,将注册密码以外的注册用户信息存储至网络服务端。
60.本技术还提供一种身份验证方法,用于客户端,包括:
61.获取登录用户名和登录密码;
62.将登录用户名和登录密码发送至客户端本地网络的第一区块链节点,以通过第一区块链节点,根据登录用户名和登录密码,生成第二登录信息密文;根据第二登录信息密文和第一区块链节点存储的第一登录信息密文集,对登录用户进行身份验证;若第一区块链节点判定通过身份验证,则为登录用户分配一次性登录密码,并将一次性登录密码存储至区块链;通过公有网络向服务端发送用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;在服务端本地网络的第二区块链节点中,根据服务端接收的登录用户信息和一次性登录密码、及第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
63.本技术还提供一种身份验证方法,用于服务端,包括:
64.接收用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;
65.将服务端接收的登录用户信息和一次性登录密码发送至服务端本地网络的第二区块链节点,以通过第二区块链节点,根据服务端接收的登录用户信息和一次性登录密码、及服务端本地网络的第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
66.本技术还提供一种身份验证方法,用于服务端本地网络的第二区块链节点,所述方法包括:
67.接收服务端发送的登录用户信息和一次性登录密码;
68.根据服务端接收的登录用户信息和一次性登录密码、及第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
69.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各种方法。
70.本技术还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各种方法。
71.与现有技术相比,本技术具有以下优点:
72.本技术实施例提供的身份验证方法,通过在区块链中存储网络服务注册用户的第一登录信息密文,在服务端存储不包括用户隐私数据的注册用户信息;在用户提交登录请求后,获取登录用户名和登录密码,生成第二登录信息密文;在客户端本地网络中,根据第二登录信息密文和客户端本地网络的第一区块链节点存储的第一登录信息密文集,对登录
用户进行身份验证;若在客户端本地网络中判定通过身份验证,则为登录用户分配一次性登录密码,并将一次性登录密码存储至区块链;通过公有网络向服务端发送用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;在服务端本地网络中,根据服务端接收的登录用户信息和一次性登录密码、及服务端本地网络的第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。采用这种处理方式,使得用户登录信息明文只在登录客户端本域内传输,并不进入公网,服务端不再感知用户隐私数据,这样既避免了在公网传输过程中泄漏用户隐私数据,又消除了服务端内部泄漏风险;因此,可以有效提升用户隐私数据的安全性。
附图说明
73.图1本技术提供的身份验证方法的实施例的流程示意图;
74.图2本技术提供的身份验证方法的实施例的场景示意图;
75.图3本技术提供的身份验证方法的实施例的交互示意图;
76.图4本技术提供的身份验证方法的实施例的另一场景示意图。
具体实施方式
77.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。
78.在本技术中,提供了身份验证方法、装置和系统,用户注册方法和装置,以及电子设备。在下面的实施例中逐一对各种方案进行详细说明。
79.第一实施例
80.请参考图1,其为本技术的身份验证方法的流程示意图。在本实施例中,所述方法可包括如下步骤:
81.步骤s101:在区块链中存储网络服务注册用户的第一登录信息密文集,在服务端存储不包括用户隐私数据的注册用户信息。
82.所述网络服务,可以是web应用服务(如线上购物服务、邮箱服务等),api接口服务,云平台服务,等等。服务端为注册用户提供网络服务,如服务端为购物网站,向买家用户提供在线购物服务等。
83.所述第一登录信息密文是对与身份验证相关的注册隐私信息进行加密得到的密文。所述注册隐私信息至少包括用户密码,此外还可包括用户名。所述第一登录信息密文,可以是基于用户注册时输入的隐私数据生成的密文,也可以是基于用户修改密码时生成的密文。
84.本技术实施例提供的方法,将网络服务注册用户的第一登录信息密文存储在区块链中,区块链中可存储至少一个网络服务的多个注册用户的第一登录信息密文。服务端不存储用户隐私数据,只存储其它不涉及用户隐私的信息。这样,服务端不再感知用户隐私数据,消除了服务端内部泄漏风险。
85.区块链是去中心化的分布式数据库,存储于其中的网络服务注册用户的第一登录信息密文,具有不可伪造、全程留痕、可以追溯、公开透明、集体维护”等特征。区块链不依托
于一个中心化的服务器,是由千千万万个“节点”组成。如图2所示,采用本实施例提供的方法的身份验证系统包括客户端(如clienta、clientb等)、服务端(server)和多个区块链节点(blockchain node,bc node)。每个区块链节点位于不同的私有网络,所述私有网络可以是一个局域网,简称为私网或者内网。所有区块链节点中均存储网络服务注册用户的第一登录信息密文,区块链节点之间通过区块链(blockchain)来同步第一登录信息密文。客户端与服务端之间通过公有网络(internet)进行通信,如发送用户登录请求、传输网络服务数据等。
86.一个安装有区块链客户端的服务器就是一个区块链节点。区块链节点需具备以下特性:1)计算能力,如能够对用户隐私数据进行加密/散列,同时还需要参与区块链的一致性共识;2)存储空间,需要维护网络服务的多个注册用户的用户隐私数据的密文,维护全量账本数据,可追溯历史记录;3)具备公网能力,用于连接全网所有区块链节点,通过共识机制保证数据一致性。
87.所述登录信息密文可以是可逆密文,如通过移位加密、置换加密等加密算法获得的密文。所述登录信息密文也可以是不可逆密文,这样区块链也不存在用户隐私数据的泄漏风险。例如,可通过消息摘要算法生成不可逆的登录信息密文。消息摘要算法在加密过程不需要密钥,不存在密钥的管理与分发问题,并且经过加密的数据无法被解密,输入相同的明文数据经过相同的消息摘要算法能得到相同的密文。
88.由于可逆密文可能会被破解,且长度不等的可逆密文会占用较多存储空间及检索速度较慢,因此本实施例采用不可逆的登录信息密文。在本实施例中,登录信息密文为登录信息的散列值(hash value),散列算法可以是sha(secure hash algorithm,安全散列算法)、md5(mesage-digest algorithm)等。
89.所述登录信息密文可以是对由用户名和密码构成的组合字符串进行加密得到密文,如对用户名和密码的连接字符串进行加密。所述登录信息密文也可以包括对用户名和密码分别进行加密得到的用户名密文和密码密文。所述登录信息密文还可以是仅对密码进行加密得到的密码密文。
90.具体实施时,不同私有网络可采用同一加密算法生成登录信息密文,这样用户可以通过任意私有网络登录服务端。不同私有网络也可以采用不同的加密算法生成登录信息密文,这样用户只能通过注册时使用的私有网络登录服务端。例如,私有网络1计算由用户名和密码构成的组合字符串的散列值;私有网络2采用移位加密算法计算密码密文;私有网络3采用移位加密算法计算密码密文,并计算用户名的散列值。
91.在一个示例中,所述第一登录信息密文是由注册客户端所在本地网络的区块链节点根据用户名和密码的组合字符串生成的散列值,可将该散列值写入该节点的区块链账本,经由区块链采用分布式共识机制同步至全网所有区块链节点。区块链节点可存储至少一个网络服务的所有用户的第一登录信息密文,如下表1所示。
[0092][0093]
表1、区块链节点存储的用户隐私数据
[0094]
由表1可见,采用这种处理方式的区块链节点在存储用户名和密码时,不记录用户名和密码本身,只记录用户名和密码连接字符串的不可逆密文(散列值),只有用户自己知道用户名和密码的明文,即使数据库被盗,也无法将密文反推出用户名和密码的明文是什么,使用户隐私数据保存更安全。该处理方式不仅可以减少用户密码的泄露风险,还可以减少用户名的泄露风险。
[0095]
在另一个示例中,所述第一登录信息密文还是根据用户名和密码的组合字符串生成的散列值,此外注册客户端所在本地网络的区块链节点还存储与第一登录信息密文对应的注册密码密文,以及存储用于将注册密码密文解密为明文的私钥,并将该散列值和对应的注册密码密文写入该节点的区块链账本,经由区块链采用分布式共识机制同步至全网所有区块链节点,但该私钥并不存储在其它区块链节点中,如下表2所示。
[0096][0097]
表2、第一登录信息密文和对应的注册密码密文
[0098]
由表2可见,这种处理方式的区块链节点在存储用户名和密码时,不记录密码用户名和本身,只记录用户名和密码连接字符串的散列值,以及记录密码的可逆密文,只有用户自己知道用户名和密码的明文,即使数据库被盗,也无法将密文反推出用户名和密码的明文是什么,使用户隐私数据保存更安全。同样的,该处理方式不仅可以减少用户密码的泄露风险,还可以减少用户名的泄露风险。
[0099]
在又一个示例中,所述第一登录信息密文还是根据用户名和密码的组合字符串生成的散列值,将该散列值和对应的用户名写入该节点的区块链账本,经由区块链采用分布式共识机制同步至全网所有区块链节点,如下表3所示。
[0100][0101]
表3、第一登录信息密文和对应的用户名
[0102]
由表3可见,这种处理方式的区块链节点在存储密码时,不记录密码本身,而是记录用户名和密码连接字符串的散列值,以及记录用户名明文,只有用户自己知道密码的明文,即使数据库被盗,也无法将密文反推出密码的明文是什么,使用户隐私数据保存较为安全。
[0103]
在又一个示例中,所述第一登录信息密文是密码的散列值,将该散列值和对应的用户名写入该节点的区块链账本,经由区块链采用分布式共识机制同步至全网所有区块链节点,如下表4所示。
[0104][0105][0106]
表4、第一登录信息密文和对应的用户名
[0107]
由表4可见,该处理方式的区块链节点在存储密码时,不记录密码本身,只记录密码的散列值,以及记录用户名明文,只有用户自己知道密码的明文,即使数据库被盗,也无法将密文反推出密码的明文是什么,使用户隐私数据保存较为安全。
[0108]
在又一个示例中,所述第一登录信息密文包括:密码的散列值(对密码加密得到的
第一密码密文)和用户名的散列值(对用户名加密得到的第一用户名密文),将密码的散列值和对应的用户名的散列值写入该节点的区块链账本,经由区块链采用分布式共识机制同步至全网所有区块链节点,如下表5所示。
[0109][0110]
表5、用户名密文和密码密文
[0111]
由表5可见,该处理方式的区块链节点在存储用户名和密码时,不记录用户名和密码本身,只记录用户名的散列值和密码的散列值,只有用户自己知道密码的明文,即使数据库被盗,也无法将密文反推出用户名和密码的明文是什么,使用户隐私数据保存更安全。
[0112]
在本实施例中,各个网络服务端存储注册用户信息,在注册用户信息表中只包括注册用户的基本信息,并不包括用户隐私数据,至少不包括用户密码,如下表6-1和表6-2所示。
[0113]
用户名邮箱地区

a001
ꢀꢀꢀ
a002
ꢀꢀꢀ…ꢀꢀꢀ
[0114]
表6-1、购物平台a的注册用户信息表
[0115][0116][0117]
表6-2、购物平台b的注册用户信息表
[0118]
如图3所示,本实施例在用户注册阶段,客户端获取注册用户名(username)和注册密码(password)的明文,并将注册用户名和注册密码的明文发送至本地网络的区块链节点;客户端本地网络的区块链节点生成注册用户名和注册密码的连接字符串,并生成散列值(hash=sha(username&password)),以及使用用户密钥对注册密码明文加密,得到注册密码密文(code=encode(password)),并生成一次性密码(number),将散列值(第一登录信息密文)和注册密码密文发送至其它区块链节点,并向客户端返回散列值和一次性密码;客户端向服务端发送用户注册请求,该请求包括散列值和一次性密码;服务端将散列值和一次性密码发送至本地网络的区块链节点,在服务端本域区块链节点存储的散列值中查询是否包括服务端接收的散列值,以求证该注册用户的存在性;如果注册用户存在,再根据一次性密码求证用户注册请求的真实性,如果一次性密码一致,服务端本地网络的区块链节点
将验证结果(成功或者失败)回送给服务端,服务端就可以将注册用户的基本信息存储至服务端,如上表6-1和6-2所示。采用这种处理方式,使得用户密码的生命周期仅存在于注册客户端所在的本地网络,没有经由公网传播至服务端,也没有提交到区块链。此时服务端不再感知用户密钥,只需验证该注册请求是否来自真实用户即可(前提是用户所在网络需部署bc node);同时也消除了用户密钥在公网传播流转过程中被窃听与泄漏风险。再者,通过区块链存储用户隐私数据的散列值和密码密文,使得用户密码实现防篡改,记录可追溯。
[0119]
步骤s103:获取登录用户名和登录密码。
[0120]
在本实施例中,用户在登录客户端上输入登录用户名和登录密码,登录客户端获得登录用户名和登录密码后,可将登录用户名和登录密码发送至登录客户端本地网络的区块链节点。
[0121]
所述登录客户端包括但不限于移动通讯设备,即:通常所说的手机或者智能手机,还包括个人电脑、pad、ipad等终端设备。所述登录客户端可以与注册客户端位于同一私有网络,也可以位于不同私有网络,在每个私有网络中均部署区块链节点。
[0122]
步骤s105:根据登录用户名和登录密码,生成第二登录信息密文。
[0123]
在本实施例中,由登录客户端本地网络的区块链节点采用与生成第一登录信息密文同样的方式,根据登录用户名和登录密码,生成第二登录信息密文。例如,所述第二登录信息密文是对用户名和密码的组合字符串进行加密得到的密文,或者所述第二登录信息密文包括对用户名和密码分别进行加密得到的用户名密文和密码密文,或者所述第二登录信息密文只包括对密码进行加密得到的密码密文。
[0124]
步骤s107:在客户端本地网络中,根据第二登录信息密文和客户端本地网络的第一区块链节点存储的第一登录信息密文集,对登录用户进行身份验证。
[0125]
本技术实施例提供的方法,在通过区块链存储用户隐私数据密文(代替现有的服务端维护用户隐私数据明文)的基础上,采用用户区块链本域验证方式代替跨公网服务器验证,使得用户隐私数据不入公网。具体而言,可以是在用户区块链本域检测登录时生成的第二登录信息密文和注册时生成的第一登录信息密文是否一致,在一致情况下,用户区块链本域可判定通过身份验证;如果不一致,则在用户区块链本域判定未通过身份验证。
[0126]
在一个示例中,登录信息密文是对用户名和密码的组合字符串进行加密得到的密文,如上表1所示。在这种情况下,步骤s107可采用如下方式实现:判断第一区块链节点存储的第一登录信息密文集中是否包括第二登录信息密文;若判断结果为是,则判定通过身份验证;若判断结果为否,则判定未通过身份验证。采用这种处理方式,使得区块链中并不存储用户名明文,可以有效消除用户名泄露风险。
[0127]
然而,在实现本发明过程中,发明人发现采用哈希函数生成登录信息密文会存在哈希碰撞问题,即如果有两个输入串的哈希函数的值一样,则称这两个串是一个碰撞。在实际应用中,可能会存在基于同一用户名但不同的密码却得到同一散列值的情况,如根据用户名a+密码1(正确密码)和用户名a+密码2(错误密码)分别得到的散列值是相同的。在这种情况下,如果在登录时输入错误的密码,但因哈希碰撞导致基于错误密码获得的散列值却与第一登录信息密文相同时,仅将登录信息密文是否一致作为身份验证的判断依据,会导致错误的身份验证结果。
[0128]
为了解决上述问题,在一个示例中,登录信息密文为根据用户名和密码的组合字
符串生成的散列值,在区块链中还存储与第一登录信息密文对应的注册密码密文,如上表2所示。第一区块链节点还存储用于将注册密码密文解密为明文的密钥,位于其他网络中的区块链节点没有用户本域的区块链节点加密密钥,所以无法通过广播收到的散列值与注册密码密文破解出用户密码,因此要求登录客户端和注册客户端在同一网络中。在这种情况下,步骤s107可采用如下方式实现:判断第一区块链节点存储的第一登录信息密文集中是否包括第二登录信息密文;若判断结果为是,则通过所述密钥,将与第二登录信息密文对应的注册密码密文解密为注册密码明文;若登录密码明文和注册密码明文相同,则判定通过身份验证;如果第一登录信息密文集中不包括第二登录信息密文、或者登录密码明文和注册密码明文不相同,则判定未通过身份验证。采用这种登录信息密文和密码密文双重验证的处理方式,不仅使得区块链中不存储用户名明文,可以有效消除用户名泄露风险,还使得在登录密码出现错误但因哈希碰撞导致获得的散列值与第一登录信息密文相同时,可进一步通过密码明文进行验证,以发现登录密码错误的问题,因此,可以有效提升身份验证的准确性。
[0129]
在实现本发明过程中,发明人还发现可能会存在不同用户名对应的前述组合字符串的散列值相同,或者不同用户名对应的密码散列值相同的情况,如根据用户名a+密码1和用户名b+密码2分别得到的散列值是相同的。可见,因哈希碰撞导致不同用户的第一登录信息密文相同时,仅将登录信息密文是否一致作为身份验证的判断依据,也会导致错误的身份验证结果。
[0130]
为了解决上述问题,在一个示例中,所述登录信息密文是对用户名和密码的组合字符串或者密码进行加密得到的密文;在区块链中还存储与第一登录信息密文对应的用户名,如上表4所示。在这种情况下,步骤s107可采用如下方式实现:判断第一区块链节点存储的与登录用户名对应的第一登录信息密文和第二登录信息密文是否一致;若判断结果为是,则判定通过身份验证。采用这种处理方式,使得将登录用户名和第二登录信息密文共同作为查询条件,在区块链节点保存的登录信息密文数据表中查找匹配的记录,这样即使不同用户名对应的登录信息密文存在哈希碰撞,也能准确地识别具体是哪一个登录用户,从而得到准确的身份验证结果。并且,由于这种处理方式不存在私钥问题,因此注册客户端与登录客户端可以在不同网络中。
[0131]
在另一个示例中,所述登录信息密文包括:对用户名加密得到的用户名密文,对密码加密得到的密码密文,如上表5所示。在这种情况下,所述第一登录信息密文包括:对注册用户名加密得到的第一用户名密文,对注册密码加密得到的第一密码密文;所述第二登录信息密文包括:对登录用户名加密得到的第二用户名密文,对登录密码加密得到的第二密码密文;相应的,步骤s107可采用如下方式实现:判断第一区块链节点存储的第一用户名密文与第一密码密文之间的对应关系集是否包括第二用户名密文与第二密码密文之间的对应关系;若判断结果为是,则判定通过身份验证。采用这种处理方式,使得只有在用户名密文和密码密文同时匹配时,才能判定通过身份验证。由于分别加密得到的两个密文同时产生哈希碰撞的可能性极小,因此可以更加准确地确定登录用户。这种处理方式既解决了因哈希碰撞导致的错误登录密码也能通过身份验证问题,又解决了因哈希碰撞导致的错误登录用户名也能通过身份验证问题。并且,由于区块链中并不存储用户名明文,因此,可以有效消除用户名泄露风险。此外,这种处理方式下注册客户端与登录客户端可以在不同网络
中。
[0132]
具体实施时,可以由客户端将登录用户名和登录密码发送至本地网络的第一区块链节点,通过第一区块链节点执行步骤s105和s107;也可以先通过客户端从本地网络的第一区块链节点获取第一登录信息密文集,然后在客户端执行步骤s105和s107,再将判断结果返回给第一区块链节点。其中,通过第一区块链节点执行步骤s105和s107得到的本地身份验证结果可信度更高。
[0133]
步骤s109:若在客户端本地网络中判定通过身份验证,则为登录用户分配一次性登录密码,并将一次性登录密码存储至区块链;通过公有网络向服务端发送用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码。
[0134]
本技术实施例提供的方法在用户区块链本域基于登录信息密文对用户进行身份验证并判定通过身份验证后,会跨公网向服务端发送用户登录请求。服务端采用令牌认证机制,需要识别接收的请求是否为经过区块链验证通过的真实用户的登录请求,服务端只有在确定接收到的用户登录请求为真实用户的请求时,才能判定通过身份验证。为此,用户区块链本域向服务端发送的用户登录请求中要包括对已经通过用户区块链本域身份验证的登录用户设置的一次性登录密码,并将该一次性登录密码对应登录用户信息存储至区块链。
[0135]
所述一次性登录密码,又称为一次性口令或者令牌(临时),用来区分用户登录请求是经过用户区块链本域验证通过的真实用户的登录请求,还是未经过用户区块链本域验证通过的非法用户发起的非法请求。具体实施时,可采用随机数生成方式获得一次性登录密码,该密码只对用户区块链本域本次通过身份验证的登录用户有效。
[0136]
以前述表2为例,在一个示例中,在区块链节点中存储的用户数据中还可包括一次性登录密码及其状态数据,如下表7-1所示。
[0137][0138]
表7-1、区块链节点存储的用户隐私数据
[0139]
由表7-1可见,在本实施例中,在通过用户区块链本域的第一区块链节点为本次通过身份验证的登录用户设置一次性登录密码后,还可设置该一次性登录密码的状态,在服务端未验证前,该一次性登录密码的状态为有效状态,在服务端验证后,该一次性登录密码的状态为失效状态。
[0140]
在另一个示例中,所述方法还可包括如下步骤:设置一次性登录密码的有效时长和生成时间,如有效时长为10秒,这样如果服务端在10秒后还没有对该一次性登录密码进行验证,则该一次性登录密码失效。采用这种处理方式,使得即使恶意用户盗取了区块链存储的一次性登录密码,但由于该密码在有效时长方面有限制,因此恶意用户也无法使用该密码成功通过服务端的身份验证。以前述表2为例,在区块链节点中存储的用户数据中还可包括一次性登录密码及生成时间,如下表7-2所示。
[0141][0142]
表7-2、区块链节点存储的用户隐私数据
[0143]
所述登录用户信息是可以确定登录用户的信息,具体可以是登录用户名、第二登录信息密文、用户名密文。如果采用第二登录信息密文或者用户名密文,则用户登录名不入公网,避免了在公网传输过程中泄漏用户名,可以有效消除用户名泄露风险。
[0144]
具体实施时,可以由客户端本地网络的第一区块链节点向服务端发送所述用户登录请求;也可以是第一区块链节点先将一次性登录密码发送至客户端,由客户端向服务端发送所述用户登录请求。
[0145]
步骤s111:在服务端本地网络中,根据服务端接收的登录用户信息和一次性登录密码、及服务端本地网络的第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
[0146]
本技术实施例提供的方法,在服务端本地网络中采用令牌认证方式,将服务端接收的登录用户的一次性登录密码与服务端本地网络的第二区块链节点存储的与该用户对应的一次性登录密码进行对比,只有两个密码一致,才表示服务端接收的请求为真实用户的登录请求,判定通过身份验证。如果密码不一致,则表示是来自恶意用户的非法请求,不能通过身份验证。
[0147]
具体而言,当在公网中传输经过用户区块链本域通过身份验证的用户登录请求时,即使恶意用户拦截了该请求,但由于该请求携带的密码是一次性密码,因此即使恶意用户根据该请求包括的登录用户信息和一次性登录密码向服务端发起请求,也无法在服务端通过身份验证,这样可以有效防止重放攻击。
[0148]
此外,基于区块链特性,恶意用户也无法篡改区域链中存储的第一登录信息密文,这样即使恶意用户篡改用户登录请求中携带的登录用户信息,也无法在服务端通过身份验证。
[0149]
在一个示例中,在服务端本地网络中,可先根据服务端接收的登录用户信息,在服务端本域区块链节点存储的用户数据中查询该登录用户是否存在;如果登录用户存在,再根据一次性登录密码求证用户登录请求的真实性,如果一次性登录密码一致,就表示通过身份验证,客户端可以使用服务端提供的服务。
[0150]
具体实施时,可以由服务端将接收的登录用户信息和一次性登录密码发送至本地网络的第二区块链节点,通过第二区块链节点执行步骤s111;也可以先通过服务端从本地网络的第二区块链节点获取与登录用户对应的一次性登录密码,然后在服务端执行步骤s111。
[0151]
在一个示例中,所述登录用户信息包括第二登录信息密文,步骤s111可采用如下
方式实现:获取第二区块链节点存储的与服务端接收的登录信息密文对应的一次性登录密码,作为目标登录密码;判断目标登录密码与服务端接收的一次性登录密码是否相同;若判断结果为是,则服务端判定通过身份验证。
[0152]
具体实施时,在服务端本地网络中,可先查询服务端本域区块链节点存储的第一登录信息密文集是否包括服务端接收的登录信息密文,以求证登录用户的存在性;如果登录用户存在,再根据一次性登录密码求证用户登录请求的真实性,如果一次性登录密码一致,就表示通过身份验证。
[0153]
在本实施例中,在区块链中还存储与第一登录信息密文对应的注册密码密文,第一区块链节点还存储用于将注册密码密文解密为明文的密钥。对应上述图3的用户注册处理方式,在登录阶段,可采用如下登录处理流程。客户端获取登录用户名和登录密码的明文,并将登录用户名和登录密码的明文发送至本地网络的区块链节点;客户端本地网络的区块链节点生成登录用户名和登录密码的连接字符串,并生成散列值(第二登录信息密文),以及使用只在本地存储的用户密钥对该散列值对应的注册密码密文进行解码,得到注册密码明文,如果注册密码明文和登录密码明文一致,则生成一次性登录密码,并将该一次性登录密码发送至其它区块链节点,并向客户端返回该散列值和一次性登录密码;客户端向服务端发送用户登录请求,该请求包括散列值和一次性登录密码;服务端将散列值和一次性登录密码发送至本地网络的区块链节点,服务端本地网络的区块链节点进行身份验证,将身份验证结果回送给服务端。采用这种处理方式,使得传输给服务端的用户登录请求只包含散列值与一个一次性登录密码,保证用户隐私数据不会进入公网,只在内网中传输,因此不会在传输过程中导致泄漏。
[0154]
在另一个示例中,所述登录用户信息包括登录用户名,步骤s111可采用如下方式实现:获取第二区块链节点存储的与服务端接收的登录用户名对应的一次性登录密码,作为目标登录密码;判断目标登录密码与服务端接收的一次性登录密码是否相同;若判断结果为是,则服务端判定通过身份验证。
[0155]
在又一个示例中,所述登录用户信息包括:第二用户名密文和第二密码密文;步骤s111可采用如下方式实现:获取第二区块链节点存储的与服务端接收的用户名密文和密码密文对应的一次性登录密码,作为目标登录密码;判断目标登录密码与服务端接收的一次性登录密码是否相同;若判断结果为是,则服务端判定通过身份验证。
[0156]
在一个示例中,所述服务端是云平台服务端,如图4所示,所述云平台服务端是为多种云产品服务提供用户管理服务的平台,不同云产品服务部署在不同的服务端。在云平台服务端中存储各种云产品服务的注册用户信息,用户在使用云产品服务时,向云平台服务端发送登录请求,云平台服务端进行用户身份验证处理,在用户通过身份验证后,云平台服务端递归调用用户要使用的云产品服务,向云产品服务端发送用户登录请求。在这种情况下,注册用户的密码包括用户用于加密认证字符串和云产品厂商用来验证认证字符串的密钥sk;所述方法还可包括如下步骤:若云平台服务端判定通过身份验证,则所述云平台服务端向云产品服务端发送用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;在云产品服务端本地网络中,根据云产品服务端接收的登录用户信息和一次性登录密码、及云产品服务端本地网络的第三区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
[0157]
具体实施时,云平台服务端在验证登录用户为合法用户后,可生成一次性登录密码,并同步至区块链的所有节点,云平台服务端向云产品服务端发送的用户登录请求中携带的是该一次性登录密码,而由客户端本地网络的区块链节点生成的一次性登录密码已失效。
[0158]
例如,对于阿里云内部需要存储用户ak/sk然后调用其他云产品服务的平台,采用本技术实施例提供的方法可以让平台侧在完全不感知用户sk的情况下实现云产品的调用,在实现递归访问其他云产品的同时,避免了用户sk的不必要传播,真正意义上做到隐私数据的保护。
[0159]
从上述实施例可见,本技术实施例提供的身份验证方法,通过在区块链中存储网络服务注册用户的第一登录信息密文,在服务端存储不包括用户隐私数据的注册用户信息;在用户提交登录请求后,获取登录用户名和登录密码,生成第二登录信息密文;在客户端本地网络中,根据第二登录信息密文和客户端本地网络的第一区块链节点存储的第一登录信息密文集,对登录用户进行身份验证;若在客户端本地网络中判定通过身份验证,则为登录用户分配一次性登录密码,并将一次性登录密码存储至区块链;通过公有网络向服务端发送用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;在服务端本地网络中,根据服务端接收的登录用户信息和一次性登录密码、及服务端本地网络的第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。采用这种处理方式,使得用户登录信息明文只在登录客户端本域内传输,并不进入公网,服务端不再感知用户隐私数据,这样既避免了在公网传输过程中泄漏用户隐私数据,又消除了服务端内部泄漏风险;因此,可以有效提升用户隐私数据的安全性。
[0160]
第二实施例
[0161]
在上述的实施例中,提供了一种身份验证方法,与之相对应的,本技术还提供一种身份验证装置。该装置是与上述方法的实施例相对应。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
[0162]
本技术另外提供一种身份验证装置,包括:
[0163]
信息存储单元,用于在区块链中存储网络服务注册用户的第一登录信息密文集,所述第一登录信息密文是对与身份验证相关的注册隐私信息进行加密得到的密文,并在服务端存储不包括用户隐私数据的注册用户信息;
[0164]
登录信息获取单元,用于获取登录用户名和登录密码;
[0165]
登录信息加密单元,用于根据登录用户名和登录密码,生成第二登录信息密文;
[0166]
第一验证单元,用于在客户端本地网络中,根据第二登录信息密文和客户端本地网络的第一区块链节点存储的第一登录信息密文集,对登录用户进行身份验证;
[0167]
第一验证通过单元,用于若在客户端本地网络中判定通过身份验证,则为登录用户分配一次性登录密码,并将一次性登录密码存储至区块链;通过公有网络向服务端发送用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;
[0168]
第二验证单元,用于在服务端本地网络中,根据服务端接收的登录用户信息和一次性登录密码、及服务端本地网络的第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
[0169]
第三实施例
[0170]
在上述的实施例中,提供了一种身份验证方法,与之相对应的,本技术还提供一种电子设备。该装置是与上述方法的实施例相对应。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。
[0171]
本实施例的一种电子设备,该电子设备包括:处理器和存储器;存储器,用于存储实现身份验证方法的程序,该设备通电并通过所述处理器运行该方法的程序后,执行下述步骤:在区块链中存储网络服务注册用户的第一登录信息密文集,所述第一登录信息密文是对与身份验证相关的注册隐私信息进行加密得到的密文,并在服务端存储不包括用户隐私数据的注册用户信息;获取登录用户名和登录密码;根据登录用户名和登录密码,生成第二登录信息密文;在客户端本地网络中,根据第二登录信息密文和客户端本地网络的第一区块链节点存储的第一登录信息密文集,对登录用户进行身份验证;若在客户端本地网络中判定通过身份验证,则为登录用户分配一次性登录密码,并将一次性登录密码存储至区块链;通过公有网络向服务端发送用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;在服务端本地网络中,根据服务端接收的登录用户信息和一次性登录密码、及服务端本地网络的第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
[0172]
第四实施例
[0173]
与上述的身份验证方法相对应,本技术还提供一种用户注册方法,该方法的执行主体为注册用户使用的设备,也成为注册客户端。本实施例与第一实施例内容相同的部分不再赘述,请参见实施例一中的相应部分。
[0174]
在本实施例中,所述用户注册方法可包括如下步骤:
[0175]
步骤1:获取网络服务的用户注册信息,所述用户注册信息包括注册用户名和注册密码;
[0176]
步骤2:将注册用户名和注册密码发送至客户端本地网络的第一区块链节点,以通过第一区块链节点,根据注册用户名和注册密码,生成第一登录信息密文;将第一登录信息密文存储至区块链,将注册密码以外的注册用户信息存储至网络服务端。
[0177]
第五实施例
[0178]
与上述的身份验证方法相对应,本技术还提供一种用户注册方法,该方法的执行主体为客户端本地网络的第一区块链节点。本实施例与第一实施例内容相同的部分不再赘述,请参见实施例一中的相应部分。
[0179]
在本实施例中,所述用户注册方法可包括如下步骤:
[0180]
步骤1:接收客户端发送的网络服务注册用户的用户名和密码;
[0181]
步骤2:根据用户名和密码,生成第一登录信息密文;
[0182]
步骤3:将第一登录信息密文存储至区块链,将注册密码以外的注册用户信息存储至网络服务端。
[0183]
第六实施例
[0184]
与上述的身份验证方法相对应,本技术还提供一种身份验证方法,该方法的执行主体为登录客户端。本实施例与第一实施例内容相同的部分不再赘述,请参见实施例一中
的相应部分。
[0185]
在本实施例中,所述身份验证方法可包括如下步骤:
[0186]
步骤1:获取登录用户名和登录密码;
[0187]
步骤2:将登录用户名和登录密码发送至客户端本地网络的第一区块链节点,以通过第一区块链节点,根据登录用户名和登录密码,生成第二登录信息密文;根据第二登录信息密文和第一区块链节点存储的第一登录信息密文集,对登录用户进行身份验证;若第一区块链节点判定通过身份验证,则为登录用户分配一次性登录密码,并将一次性登录密码存储至区块链;通过公有网络向服务端发送用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;在服务端本地网络的第二区块链节点中,根据服务端接收的登录用户信息和一次性登录密码、及第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
[0188]
第七实施例
[0189]
与上述的身份验证方法相对应,本技术还提供一种身份验证方法,该方法的执行主体为服务端。本实施例与第一实施例内容相同的部分不再赘述,请参见实施例一中的相应部分。
[0190]
在本实施例中,所述身份验证方法可包括如下步骤:
[0191]
步骤1:接收用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;
[0192]
步骤2:将服务端接收的登录用户信息和一次性登录密码发送至服务端本地网络的第二区块链节点,以通过第二区块链节点,根据服务端接收的登录用户信息和一次性登录密码、及服务端本地网络的第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
[0193]
第八实施例
[0194]
与上述的身份验证方法相对应,本技术还提供一种身份验证方法,该方法的执行主体为服务端本地网络的第二区块链节点。本实施例与第一实施例内容相同的部分不再赘述,请参见实施例一中的相应部分。
[0195]
在本实施例中,所述身份验证方法可包括如下步骤:
[0196]
步骤1:接收服务端发送的登录用户信息和一次性登录密码;
[0197]
步骤2:根据服务端接收的登录用户信息和一次性登录密码、及第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
[0198]
第九实施例
[0199]
与上述的身份验证方法相对应,本技术还提供一种身份验证系统。本实施例与第一实施例内容相同的部分不再赘述,请参见实施例一中的相应部分。
[0200]
在本实施例中,所述身份验证系统可包括:注册客户端,客户端本地网络的第一区块链节点,登录客户端,服务端,服务端本地网络的第二区块链节点。其中,注册客户端和登录客户端可以部署在同一台设备上。
[0201]
注册客户端,用于获取网络服务的用户注册信息,所述用户注册信息包括注册用户名和注册密码;将注册用户名和注册密码发送至客户端本地网络的第一区块链节点。
[0202]
第一区块链节点,用于接收注册客户端发送的注册用户名和注册密码;根据注册
用户名和注册密码,生成第一登录信息密文;将第一登录信息密文存储至区块链,将注册密码以外的注册用户信息存储至网络服务端。
[0203]
登录客户端,用于获取登录用户名和登录密码;将登录用户名和登录密码发送至客户端本地网络的第一区块链节点。
[0204]
第一区块链节点,还用于接收登录客户端发送的登录用户名和登录密码;根据登录用户名和登录密码,生成第二登录信息密文;根据第二登录信息密文和第一区块链节点存储的第一登录信息密文集,对登录用户进行身份验证;若第一区块链节点判定通过身份验证,则为登录用户分配一次性登录密码,并将一次性登录密码存储至区块链;通过公有网络向服务端发送用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码。
[0205]
服务端,用于接收用户登录请求,所述用户登录请求包括登录用户信息和一次性登录密码;将服务端接收的登录用户信息和一次性登录密码发送至服务端本地网络的第二区块链节点。
[0206]
第二区块链节点,用于接收服务端发送的登录用户信息和一次性登录密码;根据服务端接收的登录用户信息和一次性登录密码、及第二区块链节点存储的与注册用户对应的一次性登录密码,对登录用户进行身份验证。
[0207]
本技术虽然以较佳实施例公开如上,但其并不是用来限定本技术,任何本领域技术人员在不脱离本技术的精神和范围内,都可以做出可能的变动和修改,因此本技术的保护范围应当以本技术权利要求所界定的范围为准。
[0208]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0209]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0210]
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0211]
2、本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1