一种基于区块链交易数据的身份实名认证方法与流程

文档序号:17792525发布日期:2019-05-31 20:29阅读:529来源:国知局
一种基于区块链交易数据的身份实名认证方法与流程

本发明涉及身份认证领域,具体涉及一种基于区块链交易数据的身份实名认证方法。



背景技术:

随着互联网的发展,尤其是近些年来移动互联网的发展,“互联网+”将社会各行各业或多或少融入了网络,为各行业的发展提供了新的舞台和契机,同时也大大的方便了人们的衣食住行,支付宝、微信支付即是这其中的典型应用。

在各种互联网应用为人们带来便利的同时,安全问题也成为应用提供者和用户所共同面临的一项重要问题。通过网络盗取用户信息乃至财产的事件时有发生。如何彻底解决互联网应用中的安全问题一直是人们普遍关注和业内重点研究的问题。

区块链技术是近年兴起的一项新技术,被认为是21世纪最值得期待的技术创新之一,它通过技术的方式为交易双方建立信用,而无需第三方机构参与,具有去中心化、开放性、匿名性和不可篡改等特性。区块链被人们寄予厚望,已被研究用于各种领域和业务场景。如何利用区块链技术解决互联网身份认证问题,人们也进行了广泛的研究,比如,申请号为201710132346.0的专利申请,请求保护“身份信息的生成方法和装置、身份审核的方法和装置”,申请号为201611049712.8的专利申请,请求保护“一种基于区块链的网络身份验证方法与系统”。然而,现有的研究大部分仅是将区块链作为一个数据库来集中存储身份信息,这和传统身份认证类似,虽然在一定程度上可以提高身份认证的安全性,但仍存在由于身份信息集中存储而容易导致信息泄露、构建新的身份认证系统需要进行批量的数据迁移而影响原有系统的运行等问题。



技术实现要素:

为解决现有技术中存在的问题,提供了一种基于区块链交易数据的身份实名认证方法,该系统能够对身份信息进行分散存储,特别是通过将其作为交易数据存储在区块链中,这样避免了信息泄露、以及构建新认证系统时数据迁移而影响原有系统的运行。

一种基于区块链交易数据的身份实名认证方法,包括

响应于身份验证请求指令,用户终端利用当前用户私钥对待验证用户身份特征进行加密,生成待验证的用户身份特征密文;

用户终端将身份验证信息提供给应用服务器;所述身份验证信息包括用户标识码和所述待验证的用户身份特征密文;

基于所述身份验证信息,所述应用服务器在区块链中查询是否存在所述用户身份认证对应的交易数据,若存在所述交易数据,则应用服务器基于所述交易数据生成区块链验证通过消息并结束当前用户身份认证过程;若不存在所述交易数据,则通过认证服务器完成当前用户的身份实名认证,且所述应用服务器将所述认证服务器内的前用户身份实名认证信息作为新的交易数据通过区块链交易操作写入到区块链中。

优选的,

身份实名认证过程,所述认证服务器获取所述用户的用户信息,应用服务器基于用户信息生成认证服务器验证通过消息,并结束身份认证过程;

所述应用服务器根据所述认证服务器验证通过消息触发对所述用户私钥和所述认证服务器中的所述用户公钥的更新操作;并进一步触发所述用户身份特征和更新后的所述用户公钥的数据迁移操作,向区块链发起交易请求,将认证服务器中的所述用户身份特征和更新后的所述用户公钥作为新的交易数据写入区块链中,同时删除所述认证服务器中的用户身份特征和更新后的所述用户公钥。

优选的,所述应用服务器基于所述交易数据生成区块链验证通过消息步骤为,

所述应用服务器基于所述身份验证信息,从区块链中获取所述用户的身份认证交易数据,并从所述交易数据中提取所述用户的用户身份特征和用户公钥;

所述应用服务器通过所述用户公钥对所述待验证的用户身份特征密文进行解密,获得解密后的待验证的用户身份特征;

当判定所述用户身份特征和所述解密后的待验证的用户身份特征相同时,生成区块链验证通过消息。

优选的,将认证服务器中的所述用户身份特征和更新后的所述用户公钥作为新的交易数据写入区块链中步骤包括:

创建环型单向链表a(a0a1…an-2an-1),链表节点a0的后续节点为a1,链表节点an-2的后续节点为an-1,链表节点an-1的后续节点为a0;其中n为整数,表示链表a的长度;

利用区块链密钥d对当前用户身份特征进行加密,得到加密后的当前用户身份特征,记为(当前用户身份特征)d,将(当前用户身份特征)d存放在节点a0中;使用随机函数f将密钥d随机变换为n-2份子密钥d1…dn-2,将子密钥d1…dn-2顺序存入链表节点a1…an-2中;

将更新后的所述当前用户公钥写入区块链中,并将当前用户公钥的存放地址存储在节点a0中;

将节点an-1的地址返回给用户终端。

优选的,将认证服务器中的所述用户身份特征和更新后的所述用户公钥作为新的交易数据写入区块链中步骤包括:

创建环型单向链表a(a0a1…an-2an-1),链表节点a0的后续节点为a1,链表节点an-2的后续节点为an-1,链表节点an-1的后续节点为a0;其中n为整数,表示链表a的长度;

将当前用户身份特征转化为数值序列s(s1s2…sm),其中m为整数,表示数值序列s的长度;

生成数值序列j(j1j2…jm),其中m为整数,表示数值序列j的长度;数值序列j的生成过程为:设计数值序列生成函数yi+1=2yimodp,y0=a(a<p),其中i为自然数,a、p均为整数,选择大于预设阈值的整数k,取序列(yk+1yk+2…yk+m)作为数值序列j(j1j2…jm);

使用数值序列j(j1j2…jm)与数值序列s(s1s2…sm)进行数学计算,得到处理后的数值序列f(f1f2…fm);

创建当前用户认证脚本,所述当前用户认证脚本的输入为当前用户身份特征,所述认证脚本中包含处理后的数值序列f(f1f2…fm);

利用区块链密钥d对当前用户认证脚本进行加密,得到加密后的当前用户认证脚本,记为(当前用户认证脚本)d,将(当前用户认证脚本)d存放在节点a0中;使用随机函数f将密钥d随机变换为n-2份子密钥d1…dn-2,将子密钥d1…dn-2顺序存入链表节点a1…an-2中;

将更新后的所述当前用户公钥写入区块链中,并将当前用户公钥的存放地址存储在节点a0中;

将节点an-1的地址返回给用户终端。

优选的,所述身份验证信息包括节点an-1的地址;

基于节点an-1的地址找到节点a0;

基于节点a0得到(当前用户身份特征)d和当前用户公钥;

基于节点a0进一步得到节点a1…an-2中的子密钥d1…dn-2;

基于随机函数f和子密钥d1…dn-2得到区块链密钥d;

基于(当前用户身份特征)d和区块链密钥d解密得到当前用户身份特征。

优选的,

所述身份验证信息包括节点an-1的地址;

基于节点an-1的地址找到节点a0;

基于节点a0得到(当前用户认证脚本)d和当前用户公钥;

基于节点a0进一步得到节点a1…an-2中的子密钥d1…dn-2;

基于随机函数f和子密钥d1…dn-2得到区块链密钥d;

基于(当前用户身份特征)d和区块链密钥d解密得到当前用户认证脚本;

利用所述当前用户公钥对所述待验证的用户身份特征密文进行解密,获得解密后的待验证的用户身份特征;

将待验证的用户身份特征作为当前用户认证脚本的输入并触发当前用户认证脚本执行;

将执行结果与数值序列f(f1f2…fm)进行比较,如一致,则生成区块链验证通过消息。

本发明是基于区块链中的交易数据生成区块链验证通过消息,实现对当前用户身份的认证,本发明用户的身份认证信息并不是集中存储在某个或某些区块中,而是以交易数据的形式分散的存储在区块链中,由于用户的交易数据是松散、随机的存储在区块链中,这种非集中的存储方式减少了身份信息泄露的风险。

本发明的身份认证方法并不需要在区块链中进行单独的注册过程,而现有的身份认证方法都需要在实现身份认证前进行单独的注册过程,或者将一个认证中心的身份认证信息迁移到新的系统中,无论哪种方式,都存在用户可用性差、体验不好的问题,而本发明的身份认证方法在进行身份认证时自动完成注册和数据迁移的过程,完全不影响现有数据和系统的使用,极大的提升了用户的体验。

附图说明

图1为本发明一种基于区块链交易数据的身份实名认证方法一实施例的流程图;

图2为本发明一种基于区块链交易数据的身份实名认证方法一实施例的流程图;

图3为本发明一种基于区块链交易数据的身份实名认证方法一实施例的流程图;

图4为本发明将交易数据写入区块链的一实施例的流程图;

图5为本发明将交易数据写入区块链的一实施例的流程图;

具体实施方式

下面将结合本发明的附图,对本发明的技术方案进行清楚、完整地描述。这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

用户使用各种互联网应用时,比如支付应用、即时通信、出行购票、旅游等等,都需要对用户进行实名认证,通过网络进行实名认证时,现有技术一般是通过采集用户特定的身份信息,比如指纹、人脸等特征,通过权威的第三方认证服务器来进行比较认证。但是第三方认证的方式是将个人身份信息集中存储,这种中心化存储的方式一旦存储服务器被攻击或发生故障,将导致大量个人身份信息的泄露或者影响业务的处理。

参见图1,本发明提出的一种基于区块链交易数据的身份实名认证方法,包括:

s110:应用服务器从用户终端获得身份验证信息;

所述身份验证信息包括用户标识码和所述待验证的用户身份特征密文;其中,所述用户身份特征包括用户指纹信息、用户人脸信息、用户虹膜信息、用户声纹信息中的一种或几种组合;所述用户标识码是用于唯一标识用户的编码,例如可以是用户身份证号码或其他唯一编码;

s120:基于身份验证信息,应用服务器在区块链中查询用户的身份认证交易数据;

本发明中的用户身份信息是以交易数据的形式存储在区块链中的,并不是集中存储在某个数据库中,与现有利用区块链进行身份认证的技术不同,本发明不是仅将区块链作为一个存储的载体,将身份信息集中存储在某个或某些区块中,本发明是在用户发起身份认证请求时以交易的形式将当前用户的身份信息以交易数据的形式写入区块链中的,这种方式并不是将身份数据集中存储,也不同与数据的分布式存储,该方式具有一定的随机性,用户信息不易泄露,更加安全。

s130:应用服务器基于所述交易数据生成区块链验证通过消息;

应用服务器接收用户终端提供的身份验证信息。

s190:结束当前用户身份认证过程。

本实施例中,基于区块链中的交易数据生成区块链验证通过消息,实现对当前用户身份的认证,由于用户的交易数据是松散、随机的存储在区块链中,这种非集中的存储方式减少了身份信息泄露的风险。

图2是本发明一种基于区块链交易数据的身份实名认证方法的又一实施例,包括:

s210:响应于身份验证请求指令,用户终端利用当前用户私钥对待验证用户身份特征进行加密,生成待验证的用户身份特征密文;

在用户使用各种互联网应用时,比如支付应用、即时通信、出行购票、旅游等等,都需要对用户进行实名认证,用户利用用户终端在请求某一应用时,应用会向用户终端发出身份验证请求指令,用户终端在接收到身份验证请求指令后,利用当前用户私钥对待验证用户身份特征进行加密,生成待验证的用户身份特征密文;其中,所述用户身份特征包括用户指纹信息、用户人脸信息、用户虹膜信息、用户声纹信息中的一种或几种组合。

s220:用户终端将身份验证信息提供给应用服务器;所述身份验证信息包括用户标识码和所述待验证的用户身份特征密文;其中,所述用户身份特征包括用户指纹信息、用户人脸信息、用户虹膜信息、用户声纹信息中的一种或几种组合;所述用户标识码是用于唯一标识用户的编码,例如可以是用户身份证号码或其他唯一编码;

用户终端在生成待验证的用户身份特征密文后,将用户标识码和所述待验证的用户身份特征密文作为身份验证信息提供给应用服务器。

s230:所述应用服务器从用户终端获得所述身份验证信息;

应用服务器接收用户终端提供的身份验证信息。

s240:基于所述身份验证信息,所述应用服务器在区块链中查询是否存在所述用户的身份认证交易数据,若不存在所述用户的交易数据,则执行s260;若存在所述用户的交易数据,继续执行s250;

本发明中的用户身份信息是以交易数据的形式存储在区块链中的,应用服务器在接收用户终端提供的身份验证信息后,在区块链中查询是否存在所述用户的身份认证交易数据,据此判断如何进行用户身份的认证操作。

s250:应用服务器基于所述交易数据生成区块链验证通过消息;执行s290;

交易数据符合认证规则时,验证通过,生成区块链验证通过消息。

s260:应用服务器基于所述身份验证信息,从认证服务器中获取所述用户的当前用户信息;

s270:应用服务器基于当前用户信息生成认证服务器验证通过消息;

当前用户信息符合认证规则时,说明当前用户是待验证的用户本人,这时验证通过,生成认证服务器验证通过消息。

s290:结束当前用户身份认证过程。

本发明是基于区块链中的交易数据生成区块链验证通过消息,实现对当前用户身份的认证,本发明用户的身份认证信息并不是集中存储在某个或某些区块中,而是以交易数据的形式分散的存储在区块链中,由于用户的交易数据是松散、随机的存储在区块链中,这种非集中的存储方式减少了身份信息泄露的风险。

本发明的身份认证方法并不需要在区块链中进行单独的注册过程,而现有的身份认证方法都需要在实现身份认证前进行单独的注册过程,或者将一个认证中心的身份认证信息迁移到新的系统中,无论哪种方式,都存在用户可用性差、体验不好的问题,而本发明的身份认证方法在进行身份认证时自动完成注册和数据迁移的过程,完全不影响现有数据和系统的使用,极大的提升了用户的体验。

图3是本发明一种基于区块链交易数据的身份实名认证方法的又一实施例,包括:

s310:响应于身份验证请求指令,用户终端利用当前用户私钥对待验证用户身份特征进行加密,生成待验证的用户身份特征密文;

在用户使用各种互联网应用时,比如支付应用、即时通信、出行购票、旅游等等,都需要对用户进行实名认证,用户利用用户终端在请求某一应用时,应用会向用户终端发出身份验证请求指令,用户终端在接收到身份验证请求指令后,利用当前用户私钥对待验证用户身份特征进行加密,生成待验证的用户身份特征密文;其中,所述用户身份特征包括用户指纹信息、用户人脸信息、用户虹膜信息、用户声纹信息中的一种或几种组合。

s320:用户终端将身份验证信息提供给应用服务器;所述身份验证信息包括用户标识码和所述待验证的用户身份特征密文;其中,所述用户身份特征包括用户指纹信息、用户人脸信息、用户虹膜信息、用户声纹信息中的一种或几种组合;所述用户标识码是用于唯一标识用户的编码,例如可以是用户身份证号码或其他唯一编码;

用户终端在生成待验证的用户身份特征密文后,将用户标识码和所述待验证的用户身份特征密文作为身份验证信息提供给应用服务器。

s330:所述应用服务器从用户终端获得所述身份验证信息;

应用服务器接收用户终端提供的身份验证信息。

s340:基于所述身份验证信息,所述应用服务器在区块链中查询是否存在所述用户的身份认证交易数据,若不存在所述用户的交易数据,则执行s361;若存在所述用户的交易数据,继续执行s351;

本发明中的用户身份信息是以交易数据的形式存储在区块链中的,应用服务器在接收用户终端提供的身份验证信息后,在区块链中查询是否存在所述用户的身份认证交易数据,据此判断如何进行用户身份的认证操作。

s351:所述应用服务器基于所述身份验证信息,从区块链中获取所述用户的身份认证交易数据,并从所述交易数据中提取所述用户的当前用户身份特征和所述用户的当前用户公钥;

应用服务器基于所述身份验证信息,例如可以是基于所述用户标识码,从区块链中获取当前用户的交易数据,区块链中可能存在当前用户的多份交易数据,可以将用于进行用户身份认证的交易数据存在特定的地址,或者以特殊标识进行标识;然后从身份认证交易数据中提取所述用户的当前用户身份特征和所述用户的当前用户公钥。

s352:所述应用服务器利用所述当前用户公钥对所述待验证的用户身份特征密文进行解密,获得解密后的待验证的用户身份特征;

应用服务器利用当前用户公钥对所述待验证的用户身份特征密文进行解密,获得解密后的待验证的用户身份特征;所述用户公钥对应用户私钥,所述公钥和私钥是预先分配好的。

s353:当判定所述当前用户身份特征和所述解密后的待验证的用户身份特征相同时,生成区块链验证通过消息;

所述当前用户身份特征和所述解密后的待验证的用户身份特征相同时,说明当前用户是待验证的用户本人,这时验证通过,生成区块链验证通过消息。

s354:所述应用服务器根据所述区块链验证通过消息触发对所述当前用户私钥和所述区块链中的所述当前用户公钥的更新操作;执行s390;

应用服务器根据所述区块链验证通过消息触发对所述当前用户私钥和所述区块链中的所述当前用户公钥的更新操作,由于长期使用固定的密钥会导致密钥被破解的风险,因此本发明在每次身份认证后都会更新密钥,进一步争强了身份信息认证的安全性。验证通过后,即身份认证过程结束了。

s361:所述应用服务器基于所述身份验证信息,从认证服务器中获取所述用户的当前用户身份特征和所述用户的当前用户公钥;

在区块链中还不存在用户的身份认证交易数据时,无法通过区块链实现用户的身份认证,这时还是从原始的第三方认证服务器中提取用户的认证信息来实现对用户身份的实名认证。

s362:所述应用服务器利用所述当前用户公钥对所述待验证的用户身份特征密文进行解密,获得解密后的待验证的用户身份特征;

应用服务器利用当前用户公钥对所述待验证的用户身份特征密文进行解密,获得解密后的待验证的用户身份特征;所述用户公钥对应用户私钥,所述公钥和私钥是预先分配好的。

s363:当判定所述当前用户身份特征和所述解密后的待验证的用户身份特征相同时,生成认证服务器验证通过消息;

所述当前用户身份特征和所述解密后的待验证的用户身份特征相同时,说明当前用户是待验证的用户本人,这时验证通过,生成认证服务器验证通过消息。

s364:所述应用服务器根据所述认证服务器验证通过消息触发对所述当前用户私钥和所述认证服务器中的所述当前用户公钥的更新操作;并进一步触发所述当前用户身份特征和更新后的所述当前用户公钥的数据迁移操作,向区块链发起交易请求,将认证服务器中的当前用户身份特征和更新后的所述当前用户公钥作为交易数据写入区块链中,同时删除认证服务器中的当前用户身份特征和更新后的所述当前用户公钥;

应用服务器根据所述认证服务器验证通过消息触发对所述当前用户私钥和所述区块链中的所述当前用户公钥的更新操作,由于长期使用固定的密钥会导致密钥被破解的风险,因此本发明在每次身份认证后都会更新密钥,进一步争强了身份信息认证的安全性。通过本发明实现的身份认证方法,当发现区块链中不存在身份认证交易数据时,首先通过认证服务器完成当前用户的身份实名认证,同时,发起身份认证信息的数据迁移操作,将当前用户身份特征和更新后的所述当前用户公钥的数据,通过区块链交易,作为交易数据写入区块链中,同时删除认证服务器中的当前用户身份特征和更新后的所述当前用户公钥。迁移后的身份信息数据存储在区块链中,避免了集中存储带来的各种风险。然后,结束身份认证过程。

s390:结束当前用户身份认证过程。

本发明是基于区块链中的交易数据生成区块链验证通过消息,实现对当前用户身份的认证,本发明用户的身份认证信息并不是集中存储在某个或某些区块中,而是以交易数据的形式分散的存储在区块链中,由于用户的交易数据是松散、随机的存储在区块链中,这种非集中的存储方式减少了身份信息泄露的风险。

本发明的身份认证方法并不需要在区块链中进行单独的注册过程,而现有的身份认证方法都需要在实现身份认证前进行单独的注册过程,或者将一个认证中心的身份认证信息迁移到新的系统中,无论哪种方式,都存在用户可用性差、体验不好的问题,而本发明的身份认证方法在进行身份认证时自动完成注册和数据迁移的过程,完全不影响现有数据和系统的使用,极大的提升了用户的体验。

如图4所示,在一实施例中,所述将认证服务器中的当前用户身份特征和更新后的所述当前用户公钥作为交易数据写入区块链中进一步包括以下步骤:

s410:创建环型单向链表a(a0a1…an-2an-1),链表节点a0的后续节点为a1,链表节点an-2的后续节点为an-1,链表节点an-1的后续节点为a0;其中n为整数,表示链表a的长度;

本发明设计了环型单向链表的存储结构,每个链表节点可以寻址到其后续的链表节点。

s420:利用区块链密钥d对当前用户身份特征进行加密,得到加密后的当前用户身份特征,记为(当前用户身份特征)d,将(当前用户身份特征)d存放在节点a0中;使用随机函数f将密钥d随机变换为n-2份子密钥d1…dn-2,将子密钥d1…dn-2顺序存入链表节点a1…an-2中;

本发明为了进一步提高存储信息的安全性,将密钥进行了随机变换,并存入特定的环型单向链表存储结构中,这样,即使某一个或几个子密钥被有意或无意破解了,即使获取了加密的当前用户身份特征,也无法获得完整的当前用户身份特征。而且,本发明设计的环型单向链表的存储结构可以方便快速的提取到子密钥,提升了运算速度。

s430:将更新后的所述当前用户公钥写入区块链中,并将当前用户公钥的存放地址存储在节点a0中;

本发明在每次身份认证后,都会重新生成当前用户的私钥和公钥,更新后的公钥写入区块链中,作为下一次该用户进行身份认证时的公钥,同时将该公钥的存储地址放在节点a0中。

s440:将节点an-1的地址返回给用户终端。

本发明返回的是节点an-1的地址,并没有直接返回节点a0的地址,这样,即使节点an-1的地址被攻击者获得,也并不能直接获取到用户的信息,进一步增加了安全性。

本实施例采用了特定的环型单向链表的存储结构,用于存储加密的当前用户身份特征、用户公钥地址,不仅增加了信息的安全性,同时也不会影响到运算速度。

如图5所示,在又一实施例中,所述将认证服务器中的当前用户身份特征和更新后的所述当前用户公钥作为交易数据写入区块链中进一步包括以下步骤:

s510:创建环型单向链表a(a0a1…an-2an-1),链表节点a0的后续节点为a1,链表节点an-2的后续节点为an-1,链表节点an-1的后续节点为a0;其中n为整数,表示链表a的长度;

本发明设计了环型单向链表的存储结构,每个链表节点可以寻址到其后续的链表节点。

s520:将当前用户身份特征转化为数值序列s(s1s2…sm),其中m为整数,表示数值序列s的长度;

本实施例中为了对用户身份特征进行处理,首先将其转化为预定长度的数值序列;

s530:生成数值序列j(j1j2…jm),其中m为整数,表示数值序列j的长度;数值序列j的生成过程为:设计数值序列生成函数yi+1=2yimodp,y0=a(a<p),其中i为自然数,a、p均为整数,选择大于预设阈值的整数k,取序列(yk+1yk+2…yk+m)作为数值序列j(j1j2…jm);

本发明该实施例设计了一数值序列生成函数,用于生成随机的数值序列,当k的取值充分大时,(yk+1yk+2…yk+m)为一随机序列,由此提高认证的安全性。

s540:使用数值序列j(j1j2…jm)与数值序列s(s1s2…sm)进行数学计算,得到处理后的数值序列f(f1f2…fm);所述数学计算包括与、或、异或;

本发明该实施例中通过随机数值序列j(j1j2…jm)对用户身份特征数值序列s(s1s2…sm)进行数学加工处理,可得与用户身份特征相关的f(f1f2…fm)。

s550:创建当前用户认证脚本,所述当前用户认证脚本的输入为当前用户身份特征,所述认证脚本中包含处理后的数值序列f(f1f2…fm);

本发明该实施例利用区块链可执行脚本的特性,将认证过程以脚本的形式来实现,当前用户认证脚本的输入为当前用户身份特征,所述认证脚本中包含处理后的数值序列f(f1f2…fm),当输入用户身份特征,执行脚本后,将结果与数值序列f(f1f2…fm)进行比较,根据比较结果即可实现身份认证。

s560:利用区块链密钥d对当前用户认证脚本进行加密,得到加密后的当前用户认证脚本,记为(当前用户认证脚本)d,将(当前用户认证脚本)d存放在节点a0中;使用随机函数f将密钥d随机变换为n-2份子密钥d1…dn-2,将子密钥d1…dn-2顺序存入链表节点a1…an-2中;

本发明为了进一步提高存储信息的安全性,将密钥进行了随机变换,并存入特定的环型单向链表存储结构中,这样,即使某一个或几个子密钥被有意或无意破解了,即使获取了加密的用户认证脚本,也无法获得认证脚本,更无法获取用户信息。而且,本发明设计的环型单向链表的存储结构可以方便快速的提取到子密钥,提升了运算速度。

s570:将更新后的所述当前用户公钥写入区块链中,并将当前用户公钥的存放地址存储在节点a0中;

本发明在每次身份认证后,都会重新生成当前用户的私钥和公钥,更新后的公钥写入区块链中,作为下一次该用户进行身份认证时的公钥,同时将该公钥的存储地址放在节点a0中。

s580:将节点an-1的地址返回给用户终端;

本发明返回的是节点an-1的地址,并没有直接返回节点a0的地址,这样,即使节点an-1的地址被攻击者获得,也并不能直接获取到用户的信息,进一步增加了安全性。

本实施例采用了特定的环型单向链表的存储结构,用于存储加密的当前用户身份特征、用户公钥地址,不仅增加了信息的安全性,同时也不会影响到运算速度。同时,本实施例对用户身份特征进行了数值处理,区块链中并没有直接存储用户身份特征的任何内容,不存在用户身份特征泄露的风险。而且,该实施例是将认证处理的过程以脚本的形式存储在区块链中,利用区块链可以执行脚本的功能,在脚本执行过程中动态进行身份认证,极大的提高了身份认证的安全性。

在本发明的一实施例中,所述应用服务器基于所述身份验证信息,从区块链中获取所述用户的交易数据,并从所述交易数据中提取所述用户的当前用户身份特征和所述用户的当前用户公钥,进一步包括以下步骤:

所述身份验证信息包括节点an-1的地址;

基于节点an-1的地址找到节点a0;

基于节点a0得到(当前用户身份特征)d和当前用户公钥;

基于节点a0进一步得到节点a1…an-2中的子密钥d1…dn-2;

基于随机函数f和子密钥d1…dn-2得到区块链密钥d;

基于(当前用户身份特征)d和区块链密钥d解密得到当前用户身份特征;

在本发明的一实施例中,所述应用服务器基于所述交易数据生成区块链验证通过消息,进一步包括:

所述身份验证信息包括节点an-1的地址;

基于节点an-1的地址找到节点a0;

基于节点a0得到(当前用户认证脚本)d和当前用户公钥;

基于节点a0进一步得到节点a1…an-2中的子密钥d1…dn-2;

基于随机函数f和子密钥d1…dn-2得到区块链密钥d;

基于(当前用户身份特征)d和区块链密钥d解密得到当前用户认证脚本;

利用所述当前用户公钥对所述待验证的用户身份特征密文进行解密,获得解密后的待验证的用户身份特征;

将待验证的用户身份特征作为当前用户认证脚本的输入并触发当前用户认证脚本执行;

将执行结果与数值序列f(f1f2…fm)进行比较,如一致,则生成区块链验证通过消息。

本发明是基于区块链中的交易数据生成区块链验证通过消息,实现对当前用户身份的认证,本发明用户的身份认证信息并不是集中存储在某个或某些区块中,而是以交易数据的形式分散的存储在区块链中,由于用户的交易数据是松散、随机的存储在区块链中,这种非集中的存储方式减少了身份信息泄露的风险。

本发明的身份认证方法并不需要在区块链中进行单独的注册过程,而现有的身份认证方法都需要在实现身份认证前进行单独的注册过程,或者将一个认证中心的身份认证信息迁移到新的系统中,无论哪种方式,都存在用户可用性差、体验不好的问题,而本发明的身份认证方法在进行身份认证时自动完成注册和数据迁移的过程,完全不影响现有数据和系统的使用,极大的提升了用户的体验。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

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