一种基于区块链的零知识证明数字身份管理方法技术

技术编号:34953864 阅读:15 留言:0更新日期:2022-09-17 12:31
一种基于区块链的零知识证明数字身份管理方法,优化主流的数字身份管理技术存在的比如密码传递过程中的泄露、对网络实时性要求高、数字证书颁发机构不够权威等问题,满足各行业对数字身份管理技术愈发苛刻的要求,具有更高的验证效率以及更高的安全性;本方法基于零知识证明算法,采用零知识证明优化数字身份管理过程,实现无需密码的身份验证,杜绝密码泄露的风险。泄露的风险。泄露的风险。

【技术实现步骤摘要】
一种基于区块链的零知识证明数字身份管理方法


[0001]本专利技术属于数字身份管理领域,具体涉及一种基于区块链的零知识证明数字身份管理方法。

技术介绍

[0002]区块链技术由于其出色的安全特性在工业界与学术界被广泛研究,在未来将被不断应用于改进现有的各类技术架构,以实现各行各业的技术转型与升级。
[0003]目前,主流的区块链系统大多数是在公有链或者联盟链的基础上搭建的。大多数区块链系统用地址表示交易的主体单位,利用假名技术来将账户和账户的真实身份的关系切断,目的是加强交易的匿名性与安全性。然而,在大多数区块链交易中,链上的信息虽然是匿名的,但是与链上信息相关联的链下信息并非匿名,比如支付宝账户,银行账户,甚至是现实中的地址。一旦这些信息泄露,攻击者可以很轻易的追溯真实世界的交易双方,使得本该具有的信息安全荡然无存。
[0004]由于需达到不可篡改的目的,区块链的账本数据在全网保持一致。因此,区块链在本质上透明度非常高,在区块链网络中运行的任何用户和企业都有权限查询并保存所有存储在公共账本上的信息。同时,在登陆访问环节,当用户登录访问区块链应用时,或者当应用连接到区块链节点时,其账号密码信息也很容易遭到攻击,导致密码泄露。

技术实现思路

[0005]针对传统数字身份管理技术的缺点,本专利技术提出一种基于区块链的零知识证明数字身份管理方法,使用Fiat

Shamir交互式零知识证明算法,通过零知识算法思想优化网站登录过程,同时迁移零知识证明算法到连接区块链网络部分,实现安全连接。
[0006]一种基于区块链的零知识证明数字身份管理方法,包括以下几个步骤:
[0007]S1、采用交互式零知识证明对用户的系统登录进行身份验证,使用户无需密码即可登录应用系统,访问系统功能;
[0008]S2、采用MVC应用架构实现Web应用;
[0009]S3、采用fabric配置文件启动区块链生产网络,配置区块链网络架构。Web应用后端通过SDK与区块链ChainCode进行交互,进行数据的上链、查询、更新。
[0010]进一步地,步骤S1包括以下几个子步骤:
[0011]S1.1、约定过程;首先,客户端和服务端就一个素数n和一个模n群的生成元g达成一致,即公共参数;在注册阶段,需要登录网站的客户机求出自己设定密码的哈希值x=int(hash(password)),然后将y=g
x mod n发送到服务器上进行存储;
[0012]S1.2、T值生成过程;即交互式零知识证明的登录过程的第一步,客户端生成一个随机数v,计算t=g^v mod n并将t发送给服务端;
[0013]S1.3、R值生成过程;即交互式零知识证明登录过程的第二步。服务端生成随机数c,发送到客户端;客户端计算r=(v

cx)mod(n

1)发送到服务端;可改为客户端计算c=H
(g,y,t)发往服务端,代替原本的随机数交互,H()是一个基于随机ORACLE模型的哈希函数;
[0014]S1.4、服务端计算res=(g^r mod n)(y^c mod n)mod n,并验证res是否与t相等,如果相等,则登陆成功,允许客户端访问网站。
[0015]进一步地,步骤S2包括以下几个子步骤:
[0016]S2.1、使用MVC架构将模型、视图、控制器三者相互分离,使开发中的需求变动更容易实现;
[0017]S2.2、使用fabric

sdk

go简化后端程序与区块链网络的交互,系统中内置的sdk封装了节点的RPC协议,使用Client类作为入口,每次接入网络都需要明确的身份标识;同时,sdk也在Channel类中封装了所有通道操作,能进行更为便捷的链码访问。
[0018]进一步地,步骤S3为了实现与区块链网络的交互,进行了生产网络的搭建、智能合约的编写等,其中主要包括以下几个子步骤:
[0019]S3.1、区块链生产网络的构建。每一个fabric网络中,都包含多个peer节点、一个或多个orderer节点以及一个或多个通道;采用HYPERLEDGER FABRIC中自带的生产网络部署工具进行生产网络部署,包括:编写生产网络的配置模板文件crypto

config.yaml,在网络中设置一个排序节点组织和一个peer节点组织;通过cryptogen命令生成组织;编写通道生成文件configtx.yaml,通过configtxgen的三个子命令输出创世块、配置通道以及配置锚节点;编写docker容器中peer节点和排序节点的配置文件docker

compose.yaml,运用此配置文件启动区块链网络中的节点,并将他们运行在容器中;
[0020]S3.2、设计编写了Go语言智能合约方法与区块链账本进行数据交互;首先,在智能合约中定义一个包含17种不同数据类型的结构体,用于保存后端应用捕捉到的数据或是链上查询到的数据;其次,本系统在智能合约中编写了一系列GO函数以供Web应用的后端调用,如下表;
[0021][0022]S3.3、一共部署两个peer节点,管理员和普通查询者分别接入节点进行相应操作,peer节点根据用户角色给予不同的权限。
[0023]本方法中应用程序与区块链网络的交互过程主要包括以下几个步骤:
[0024](1)应用程序请求与peer节点连接,此处运用fabric

node

sdk的API接口使连接操作变得更加简化;同时,此应用程序的连接过程可作为零知识证明算法的备用部署点;
[0025](2)应用程序向peer节点发出请求,希望调用链码来进行查询或更新操作;
[0026](3)peer节点调用链码向公共账本发出查询或更新的请求;
[0027](4)如果进行的是查询操作,公共账本将会向peer节点返回查询结果;如果进行的
是更新操作,链码将会生成一个更新操作的提案;
[0028](5)peer节点向应用程序应答,即返回查询结果或响应更新请求;
[0029]若进行的是查询操作,交互流程在此结束,若进行的是更新操作,还需要进行如下步骤:
[0030](6)应用程序从响应信息中创建交易单,然后将这笔交易发送给orderer排序节点进行排序;
[0031](7)orderer排序节点将收集到的交易打包形成区块,并发往网络中的各个peer节点;
[0032](8)peer节点对区块进行验证操作后,将区块更新到节点的公共账本上;
[0033](9)peer节点向应用程序播报账本更新事件,此时更新操作的交互流程也完全结束。
[0034]上述方法运用区块链技术实现数据的安全存储,不可篡改、匿名、可追溯;运用交互式零知识证明技术,实现无需密码的零知识证明身份验证,实现用户的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于区块链的零知识证明数字身份管理方法,其特征在于:包括以下步骤:S1、采用零知识证明对用户的系统登录进行身份验证,使用户无需密码登录应用系统,访问系统功能;S2、采用MVC应用架构实现Web应用;S3、编写智能合约进行账本交互,进行数据上链、查询、更新。2.根据权利要求1所述的一种基于区块链的零知识证明数字身份管理方法,其特征在于:步骤S1中,运用交互式零知识证明优化用户登陆管理;同时,运用fiat

shamir变换将将原本的交互式零知识证明转变为非交互式零知识证明。3.根据权利要求2所述的一种基于区块链的零知识证明数字身份管理方法,其特征在于:步骤S1包含以下子步骤:S1.1、约定过程;首先,客户端和服务端就一个素数n和一个模n群的生成元g达成一致,即公共参数;客户端求出设定密码的哈希值x=int(hash(password)),将y=g
x mod n发送到服务器上进行存储;S1.2、T值生成过程;客户端生成一个随机数v,计算t=g^v mod n并将t发送给服务端;S1.3、R值生成过程;服务端生成随机数c,发送到客户端;客户端计算r=(v

cx)mod(n

1)发送到服务端;S1.4、服务端计算res=(g^r mod n)(y^c mod n)mod n,并验证res是否与t相等,如果相等,则登陆成功,允许客户端访问网站。4.根据权利要求3所述的一种基于区块链的零知识证明数字身份管理方法,其特征在于:S1.3中,客户端计算c=H(g,y,t)发往服务端,代替随机数交互,H()是一个基于随机ORACLE模型的哈希函数。5.根据权利要求1所述的一种基于区块链的零知识证明数字身份管理方法,其特征在于:步骤S2包括以下子...

【专利技术属性】
技术研发人员:李鹏施译涵徐鹤王汝传张玉杰朱枫程海涛李友涛张结魁
申请(专利权)人:南京邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1