一种基于区块链技术的身份信息管理方法及系统
技术领域
本发明涉及访问控制技术领域和区块链技术领域,尤其涉及一种基于区块链技术的身份信息管理方法及系统。
背景技术
访问控制的主要作用是控制用户和系统如何与其他系统和资源进行通信和交互。访问控制是信息安全管理的第一道防线,是其他安全机制的基础。访问控制的核心是身份管理。参考“AAA”设计要求(Authentication、Authorization、Accounting),身份管理主要涉及4个关键步骤:身份标识、身份验证、授权和审计问责。其中,主要的身份标识技术有:静态密码认证、令牌认证(U盾、短信验证码等)、Challenge/Respond认证、生物特征认证(指纹、虹膜等)等。主要的身份验证和授权技术有:Kerberos、SESAME、单点登录(SSO,SingleSign-On)等。
Kerberos是一种常用的身份验证和授权技术,Kerberos主要解决在分布网络环境中用户访问网络资源时的安全问题。Kerberos工作在Client/Server模式下,以可信赖的第三方KDC(密钥分配中心)实现用户身份认证。Kerberos基于对称加密实现认证,会对每一个用户分配一个密钥对,如果网络中存在N个用户,则Kerberos系统会保存和维护N个密钥对。但是,Kerberos存在如下风险:(1)个人信息安全性。个人身份标识信息存储在KDC数据库端,存在个人信息泄露风险。(2)密钥安全风险。用户及资源服务器的秘密密钥存储在KDC数据库端,存在泄露风险。(3)单点脆弱性。KDC的安全性成为单点要害,如果KDC发生故障,则Kerberos无法正常运转。(4)暴力攻击风险。如果密钥过短,容易遭受暴力破解攻击,且KDC并不知道是否存在暴力破解攻击。
PKI(Public Key Infrastructure)是一种使用公钥密码学和X.509标准的ISO身份验证框架。PKI通过使用可信任第三方颁发公钥证书的形式来绑定公钥和身份信息,开展身份认证,从而保证信息传递的安全、真实、完整和不可抵赖。但是,PKI存在如下风险:(1)单点脆弱性。CA的安全性成为单点要害。(2)个人信息安全性。个人密码、身份等信息存在RA数据库端,存在个人信息泄露风险。(3)证书安全性。证书仿冒、恶意添加假证书。(4)CRL管理难。CRL更新频度、证书撤销到CRL发布之间的时延、CRL的存储及管理。
零知识证明(Zero-Knowledge Proofs,ZKP)是一种信息保护机制,主要解决的问题是:在保护秘密信息安全的条件下,证明者和验证者开展证明和验证活动,其中,证明者向验证者出示证据,但不需要告诉验证者具体的执行内容(秘密信息);验证者能够直接验证计算的正确性,而不必执行计算过程,甚至不用知道证明者到底执行了什么(秘密信息)。简单讲,就是要达到“既不告诉你,又要让你相信”的效果。
发明内容
本发明的目的在于提供一种基于区块链技术的身份信息管理方法及系统。,解决现有技术中身份验证和授权技术所存在隐私保护若、安全性低、缺少审计问责机制等问题。
本发明的技术方案实现如下:
一方面,本发明提供一种基于区块链技术的身份信息管理方法,包括:
通过区块链网络标识用户身份以保护个人隐私信息;
通过区块链网络及用户模块依据所标识的用户身份对用户进行身份验证。
在本发明所述的身份信息管理方法中,所述通过区块链网络标识用户身份以保护个人隐私信息,包括:
通过用户前端接收用户提交的身份注册申请及用户的个人信息,通过区块链网络的身份注册模块依据个人隐私信息生成IC信息,其中,区块链网络不保存个人隐私信息,所述个人信息包括个人隐私信息;
区块链网络的身份管理模块接收所述IC信息以依据多个网络资源对用户的访问权限定义,从而维护访问控制列表;
在维护访问控制列表之后,向所述用户前端反馈注册成功信息。
在本发明所述的身份信息管理方法中,所述通过区块链网络及用户模块依据所标识的用户身份对用户进行身份验证,包括:
通过所述用户前端接收访问多个所述网络资源的其中之一的资源访问请求,并通过用户模块的身份管理客户端向所述区块链网络的身份管理模块转发所述资源访问请求;
通过区块链网络的身份管理模块于所述访问控制列表中搜索以确定所需访问的网络资源是否允许所述用户访问,若是,则生成RespondMsg信息并返回至用户模块的身份管理客户端,若否,则生成RefuseMsg信息并返回至用户模块的身份管理客户端;
用户模块的身份管理客户端将RespondMsg信息发送至用户模块的身份证明模块,将RefuseMsg信息发送至用户前端;
用户模块的身份证明模块依据所述IC信息计算零知识证明信息;
用户模块的身份证明模块将零知识证明信息发送至区块链网络的身份验证模块;
区块链网络的身份验证模块向区块链网络的身份管理模块发送用户的个人信息中的UserID及ResourceID,其中,所述个人信息还包括UserID及ResourceID;
区块链网络的身份管理模块依据UserID及ResourceID向区块链网络的身份验证模块发送RespondMsg信息中的Challenge信息,其中,所述RespondMsg信息包括Challenge信息;
区块链网络的身份验证模块依据Challenge信息、IC信息、UserID及零知识证明信息验证用户身份;
若验证成功,区块链网络的身份验证模块将UserID及ResourceID发送至区块链网络的网络资源端,由所述网络资源端通知所需访问的网络资源所述用户身份验证成功;若验证失败,区块链网络的身份验证模块通知用户模块的身份证明模块所述用户身份验证失败。
在本发明所述的身份信息管理方法中,还包括:
授权身份验证成功的用户以建立所述用户与所需访问的网络资源的通信连接。
在本发明所述的身份信息管理方法中,所述授权身份验证成功的用户以建立所述用户与所需访问的网络资源的通信连接,包括:
用户模块的身份管理客户端按照预设的第一规则产生非对称密钥对,所述非对称密钥对包括私钥和公钥,其中所述私钥在本地保存,将所述公钥发送至区块链网络的网络资源端;
在所述用户授权身份验证成功之后,区块链网络的网络资源端按照预设的第二规则产生Ticket信息,并依据所述公钥对所述Ticket信息进行加密,将加密后的Ticket信息发送至用户模块的身份管理客户端;
用户模块的身份管理客户端依据所述私钥对获取所述Ticket信息,并依据所述Ticket信息建立所述用户与所需访问的网络资源的通信连接。
在本发明所述的身份信息管理方法中,还包括:
记录所述用户对访问多个所述网络资源的其中之一的资源访问请求、验证用户身份的过程及多个所述网络资源的访问信息以建立审计问责流程。
在本发明所述的身份信息管理方法中,所述记录所述用户对访问多个所述网络资源的其中之一的资源访问请求、验证用户身份的过程及多个所述网络资源的访问信息以建立审计问责流程,包括:
在所述通过区块链网络及用户模块依据所标识的用户身份对用户进行身份验证的步骤中,记录所述用户对访问多个所述网络资源的其中之一的资源访问请求,并生成所述用户对应的访问意图信息,所述访问意图信息包括UserID及RespondMsg信息或RefuseMsg信息;
通过区块链网络的身份验证模块记录零知识证明信息及相关信息,所述零知识证明信息的相关信息包括Challenge信息、IC信息、UserID及用户身份的验证结果;
通过区块链网络的网络资源端记录多个所述网络资源的访问信息,所述访问信息包括UserID及ResourceID。
另一方面,提供一种基于区块链技术的身份信息管理系统,包括如上所述的基于区块链技术的身份信息管理方法的区块链网络及与所述区块链网络连接的用户模块。
在本发明所述的身份信息管理系统中,还包括用户前端,所述用户前端分别连接于所述区块链网络及所述用户模块。
在本发明所述的身份信息管理系统中,所述区块链网络包括身份注册模块、身份管理模块、访问控制列表、身份验证模块及网络资源端;
所述用户模块包括身份管理客户端及身份证明模块。
因此,本发明的有益效果是,基于区块链网络构建强隐私保护、强安全防护、强审计问责的统一身份管理基础设施,提供身份标识、身份验证、授权和审计问责等服务。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明一实施例提供的一种基于区块链技术的身份信息管理方法的流程图;
图2为本发明一实施例提供的一种基于区块链技术的身份信息管理方法的信息流向示意图;
图3为本发明一实施例提供的ACL访问控制列表示意图;
图4为本发明一实施例提供的一种基于区块链技术的身份信息管理方法的技术架构示意图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,以下将对照附图详细说明本发明的具体实施方式。应当理解,以下说明仅为本发明实施例的具体阐述,不应以此限制本发明的保护范围。
本发明的主要目的在于本基于区块链、零知识证明等技术,构建强隐私保护的身份管理基础设施(Privacy Preserving Identification Management Infrastructure,简称PPIMI)。
参见图1,图1为本发明一实施例提供的一种基于区块链技术的身份信息管理方法的流程图,身份信息管理方法包括步骤S1-S2:
S1、通过区块链网络标识用户身份以保护个人隐私信息;参见图2,图2为本发明一实施例提供的一种基于区块链技术的身份信息管理方法的信息流向示意图,步骤S1包括步骤S11-S13:
S11、通过用户前端接收用户提交的身份注册申请及用户的个人信息,通过区块链网络的身份注册模块依据个人隐私信息生成IC信息,其中,区块链网络不保存个人隐私信息,所述个人信息包括个人隐私信息;参见图2,用户前端为用户Alice,区块链网络为BlockChain,身份注册模块为Registration Authority(RA),以下简称RA。
Registration Authority(RA),身份注册模块,负责按照规范化流程对用户身份进行审核,并生成IC(Identity Commitment)信息,以下简称IC。RA可以是一个用户身份审核的实体化机构。
其中,步骤S11对应于图2中的1,例如:Alice向RA(Registration Authority)提交身份注册申请。RA按照标准化流程审核Alice的个人信息,并依据Alice的隐私有效信息生成IC(Identity Commitment)。一种可选的IC生成方法为:
IC=CRH(UserID+PW+Name+IDNum+PhoneNum+BiometricsInfo+PrivateInfo)
CRH:抗冲突的散列函数。
UserID:用户ID。
PW:用户设定的密码。
Name:用户真实姓名。
IDNum:用户身份证号。
PhoneNum:用户手机号码。
BiometricsInfo:生物特征信息,例如血型、指纹、视网膜、虹膜、语音、面部等。
PrivateInfo:其他隐私信息,例如暗语、对某设定问题的私密回答等。
其中,PW、Name、IDNum、PhoneNum、BiometricsInfo、PrivateInfo均属于用户的个人隐私信息。将其转化为IC信息可以达到保护个人隐私信息的目的。
更一般的,RA针对不同网络资源(Resource)的身份认证要求,可以选取一种统一的,或者多种不同的方法开展IC运算。也就是说,若Alice想访问多个网络资源,可以按需使用单一的IC,或不同的网络资源使用不同的IC。
S12、区块链网络的身份管理模块接收所述IC信息以依据多个网络资源对用户的访问权限定义,从而维护访问控制列表;参见图2,身份管理模块为AuthenticationManager(AM),以下简称AM;多个网络资源为Resource1、Resource2……ResourceN;访问控制列表为Access Control List(ACL),以下简称ACL。
Authentication Manager(AM),身份管理模块,负责将用户IC记录上区块链,并管理ACL(Access Control List)。
步骤S12对应于图2中的2,例如:RA将IC交AM(Authentication Manager),AM根据不同Resource对Alice访问权限的定义,维护ACL(Access Control List)。ACL为记录在区块链上的一个列表,利用区块链的防篡改特性,保障ACL的安全。ACL的数据结构示意如附图3所示,图3为本发明一实施例提供的ACL访问控制列表示意图。图3记录了每个网络资源所允许访问的用户,其中,Resourcel保存了Alice的UserID及IC,因此Alice可以访问Resourcel,此外,Resourcel还保存了Bob和Emily的UserID及IC,即允许AliceBob和Emily访问Resourcel,其余Resource以此类推。
S13、在维护访问控制列表之后,向所述用户前端反馈注册成功信息。步骤S12对应于图2中的3和4,例如:AM将Alice的IC更新到ACL后,向RA反馈注册成功。RA收到AM的消息后,反馈Alice。
S2、通过区块链网络及用户模块依据所标识的用户身份对用户进行身份验证。参见图2,步骤S2包括步骤S21-S29:
S21、通过所述用户前端接收访问多个所述网络资源的其中之一的资源访问请求,并通过用户模块的身份管理客户端向所述区块链网络的身份管理模块转发所述资源访问请求;参见图2,用户模块为ClientComponent,身份管理客户端为Authentication Client(LocalComponent.AC),以下简称AC。
Authentication Client(AC),身份管理客户端,负责接收连接用户和PPIMI平台。
步骤S21对应于图2中的5,例如:Alice拟访问网络资源Resourcel。Alice通过AC(Authentication Client)向AM发送资源访问请求RequestMsg。
RequestMsg={“PPIMIRequestMsg”+UserID+ResourceID}
S22、通过区块链网络的身份管理模块于所述访问控制列表中搜索以确定所需访问的网络资源是否允许所述用户访问,若是,则生成RespondMsg信息并返回至用户模块的身份管理客户端,若否,则生成RefuseMsg信息并返回至用户模块的身份管理客户端。
步骤S22对应于图2中的6,例如:AM在ACL搜索,若在资源Resourcel用户列表中找到Alice的UserID,则生成Challenge(32位随机数),并向AC返回RespondMsg;否则向AC返回RefuseMsg。
RespondMsg={“PPIMIRespondMsg”+Challenge}
RefuseMsg={“PPIMIRefuseMsg”}
S23、用户模块的身份管理客户端将RespondMsg信息发送至用户模块的身份证明模块,将RefuseMsg信息发送至用户前端;参见图2,身份证明模块为Identity Prover(LocalComponent.IP),以下简称IP。
Identity Prover(IP),身份证明模块,负责按照零知识证明方法生成用户身份零知识证据。
步骤S23对应于图2中的7,例如:AC收到AM返回信息,若为RefuseMsg,则向Alice返回错误信息。若为RespondMsg,则将RespondMsg提交IP。
S24、用户模块的身份证明模块依据所述IC信息计算零知识证明信息;步骤S24对应于图2中的8,例如:IP(Identity Prover)按照在RA进行身份识别时的方法,计算IC及零知识证明ZKProof。假设IC运算方法为:
IC=CRH(UserID+PW+Name+IDNum+PhoneNum+BiometricsInfo+PrivateInfo)
则ZKProof计算方法为:
ZKProof=ZKProve(Challenge,IC,UserID,ResourceID,PW,Name,IDNum,PhoneNum,BiometricsInfo,PrivateInfo)
ZKProve是一种零知识证明方法,其输出为一个零知识证据ZKProof。
S25、用户模块的身份证明模块将零知识证明信息发送至区块链网络的身份验证模块;如图2,身份验证模块为Identity Verifier(IV),以下简称IV。
Identity Verifier(IV),身份验证模块,负责按照零知识证明方法对用户身份进行验证。
步骤S25对应于图2中的9,例如:IP将UserID、ResourceID,以及计算得到的ZKProof发IV(Identity Verifier)。
S26、区块链网络的身份验证模块向区块链网络的身份管理模块发送用户的个人信息中的UserID及ResourceID,其中,所述个人信息还包括UserID及ResourcelD;步骤S26对应于图2中的10,例如:IV向AM发送UserID、ResourceID。
S27、区块链网络的身份管理模块依据UserID及ResourceID向区块链网络的身份验证模块发送RespondMsg信息中的Challenge信息,其中,所述RespondMsg信息包括Challenge信息;步骤S27对应于图2中的11,例如:AM根据UserID、ResourceID,向IV返回6(即步骤S22)产生的Challenge。
S28、区块链网络的身份验证模块依据Challenge信息、IC信息、UserID及零知识证明信息验证用户身份;步骤S28对应于图2中的12,例如:IV通过零知识证明方法开展验证:
VerifierResult=ZKVerifier(Challenge,IC,UserID,ZKProof)
S29、若验证成功,区块链网络的身份验证模块将UserID及ResourceID发送至区块链网络的网络资源端,由所述网络资源端通知所需访问的网络资源所述用户身份验证成功;若验证失败,区块链网络的身份验证模块通知用户模块的身份证明模块所述用户身份验证失败。网络资源端为Network Resource Stub(NRS),以下简称NRS。
Network Resource Stub(NRS),网络资源端,连接各类网络、服务、系统等资源,负责接收身份验证指令,进行访问控制。
步骤S29对应于图2中的13,例如:若VerifierResult为true,则验证成功。IV将UserID、ResourceID发NRS(Network Resource Stub),由NRS通知相关Resource用户身份认证成功。同时,IV反馈IP身份认证成功。
若VerifierResult为false,则验证失败。IV反馈IP身份认证失败。
优选的,该身份信息管理方法还包括步骤S3:
S3、授权身份验证成功的用户以建立所述用户与所需访问的网络资源的通信连接。步骤S3包括子步骤S31-S33:
S31、用户模块的身份管理客户端按照预设的第一规则产生非对称密钥对,所述非对称密钥对包括私钥和公钥,其中所述私钥在本地保存,将所述公钥发送至区块链网络的网络资源端;例如:AC按某种规则产生非对称密钥对PrivateKey、PublicKey,其中,PrivateKey本地保存,PublicKey发布到NRS。PrivateKey为私钥,PublicKey为公钥。
S32、在所述用户授权身份验证成功之后,区块链网络的网络资源端按照预设的第二规则产生Ticket信息,并依据所述公钥对所述Ticket信息进行加密,将加密后的Ticket信息发送至用户模块的身份管理客户端;例如:通过身份验证后,NRS按某种规则产生身份授权凭证Ticket。NRS利用PublicKey对Ticket进行加密,并发送给AC。
S33、用户模块的身份管理客户端依据所述私钥对获取所述Ticket信息,并依据所述Ticket信息建立所述用户与所需访问的网络资源的通信连接。例如:AC利用PrivateKey对报文解密,得到Ticket。AC将Ticket作为后续资源访问的凭据。
结合图2,本发明提供如下实施场景:Alice拟通过网络资源Resourcel的身份认证授权,并与Resourcel间建立加密通信线路。则可通过如下方式协商对称加密密钥:
①NRS利用Alice的PublicKey对Ticket和CommKey进行加密,并发送给AC。
②AC利用PrivateKey对报文解密,得到Ticket和CommKey。
③AC与Resourcel利用CommKey开展加密通信,必要时可在通信报文中添加访问凭证Ticker。
优选的,该身份信息管理方法还包括步骤S4:
S4、记录所述用户对访问多个所述网络资源的其中之一的资源访问请求、验证用户身份的过程及多个所述网络资源的访问信息以建立审计问责流程。步骤S4包括步骤S41-S43:
S41、在所述通过区块链网络及用户模块依据所标识的用户身份对用户进行身份验证的步骤中,记录所述用户对访问多个所述网络资源的其中之一的资源访问请求,并生成所述用户对应的访问意图信息,所述访问意图信息包括UserID及RespondMsg信息或RefuseMsg信息;例如:在图2的6(即步骤S22)中,AM收到AC发出的请求后,会在区块链上记录所有用户的资源访问请求,具体包括:
UserID+RespondMsg/RefuseMsg
S42、通过区块链网络的身份验证模块记录零知识证明信息及相关信息,所述零知识证明信息的相关信息包括Challenge信息、IC信息、UserID及用户身份的验证结果;例如:在图2的12(即步骤S28)中,IV会在区块链上记录用户的零知识证明验证信息,具体包括:
Challenge+IC+UserID+ZKProof+VerifierResult
S43、通过区块链网络的网络资源端记录多个所述网络资源的访问信息,所述访问信息包括UserID及ResourceID。例如:在图2的12(即步骤S28)中,NRS会在区块链上记录资源访问信息,具体包括:
UserID+ResourceID
上述过程完整记录了用户访问意图、身份认证情况、资源访问情况的全链条,并结合区块链防篡改抗丢失的特性,为身份管理审计提供有效支撑。
参见如4,图4为本发明一实施例提供的技术架构示意图,步骤S1-S4为访问控制的4个关键步骤,对应的,PPIMI定义了4组协议:
(1)Identification Protocol,身份标识协议,审核用户身份,建立用户在物理世界、数字世界之间的身份映射。对应于步骤S1。
(2)Authentication Protocol,身份验证协议,根据用户提交的证据,对用户身份进行验证。对应于步骤S2。
(3)Authorization Protocol,授权协议,依据身份验证结果,向用户开放相应的网络资源服务。对应于步骤S3。
(4)Accounting Protocol,审计协议,对用户的资源请求、身份验证、资源访问等行为进行全流程记录,支持全周期追溯。对应于步骤S4。
如附图1所示,AC、IP离线部署在UserComponent,用于接收用户隐私数据、开展零知识证明运算、产生零知识证据。RA、AM、IV、NRS模块在线部署在BlockChain,基于区块链网络连接各类网络、服务、系统等资源。
更一般的,RA、AM、IV、NRS模块可以在区块链网络上进行多节点部署,通过POS、DPOS等共识机制协同工作。
综上所述,本发明基于区块链、零知识证明等技术,构建强隐私保护的身份管理基础设施(Privacy Preserving Identification Management Infrastructure)。本发明采用的主要技术路径为:
1.本发明利用散列加密方法,对用户身份验证相关的隐私信息进行散列运算,生成身份数字凭据。
2.本发明对用户的身份数字凭证存储在区块链网络,并根据不同网络资源对用户访问权限的定义,维护访问控制列表。利用区块链的防篡改特性,保障身份数字凭证、访问控制列表的安全。
3.若用户准备访问某网络资源,本发明利用零知识证明方法,根据用户身份隐私信息、身份数字凭证,生成用户身份零知识证据,并发送给区块链网络。
4.区块链网络利用零知识证明方法对用户身份零知识证据进行验证,若证据验证通过,则身份验证通过。
5.本发明利用非对称加密方法,在网络资源和用户间进行访问凭证传输。
6.本发明利用区块链网络对用户的身份验证、资源访问行为进行记录,为审计问责提供支撑。
另一方面,本发明提供一种基于区块链技术的身份信息管理系统,参见图2,该身份信息管理系统包括如上所述的基于区块链技术的身份信息管理方法的区块链网络及与所述区块链网络连接的用户模块。
优选的,该身份信息管理系统还包括用户前端,所述用户前端分别连接于所述区块链网络及所述用户模块。
其中,所述区块链网络包括身份注册模块、身份管理模块、访问控制列表、身份验证模块及网络资源端;所述用户模块包括身份管理客户端及身份证明模块。即BlockChain包括ACL、RA、AM、IV及NRS,ClientComponent包括AC及IP。NRS用于连接外网(Network)。
因此,本发明与现有技术相比,本发明提供了一种基于零知识证明技术的强隐私保护的身份管理基础设施设计方法,相较传统的身份认证管理技术,本发明具备以下有益效果:
1.强隐私保护:基于零知识证明技术,支持多因素认证且保护用户隐私信息,用户身份标识、验证过程不泄漏用户隐私。
2.抗单点攻击:基于区块链技术,关键功能模块可以在区块链网络多节点部署,降低遭受单点攻击风险。
3.去密码证书:不需要用户密码、证书等登录凭证,降低由于私钥、证书丢失导致的安全风险。
4.强安全审计:基于区块链技术,身份认证和访问控制行为可审计、可追溯,抗篡改、抗抵赖,可对网络行为(正常的、异常的)进行有效记录和审计。
5.统一认证管理:构建身份认证管理统一平台,支持单点登录,便于用户身份、权限的统一管理,提升多资源、多权限条件下用户身份管理效率。同时,PPIMI具有较强的可扩展性,前端可扩展身份识别的多因素方式,后端可扩展平台支持的各类网络资源。
本发明是一套统一的身份管理基础设施,可能的应用模式有:
1.面向大型企事业单位,提供体系化的身份认证管理解决方案。
2.面向中小企业和个人用户,提供类似身份认证即服务(IDaaS,Identity as aservice)。
3.与DApp捆绑部署,为Dapp提供身份认证管理服务。
综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。