在区块链PKI下支持瘦客户端的隐私保护身份认证方法与流程

文档序号:15844920发布日期:2018-11-07 08:53阅读:466来源:国知局
在区块链PKI下支持瘦客户端的隐私保护身份认证方法与流程

本发明属于信息安全技术领域,具体涉及一种在区块链pki下支持瘦客户端的隐私保护身份认证方法。

背景技术

pki(publickeyinfrastructure,公钥基础设施)是一种使用公钥密码技术支持加密、认证、完整性和不可否认服务的安全基础设施,在互联网电子认证服务业中得到广泛应用。传统pki体系结构依赖于可信的第三方,即ca中心(certificateauthority,证书认证机构),只有信任某个ca,才信任该ca给用户签发的数字证书。但在实际应用中,pki技术存在:(1)单点故障问题,核心ca一旦被攻击者控制,所有证书均不可信;(2)多ca互信难问题,用户证书只能由所属ca的根证书进行验证,不同ca之间不能相互验证。

区块链技术(blockchain)使用分布式数据存储、共识机制等技术,提供了以去中心化方式建立信任关系的思路与方案,引起了众多行业的广泛关注。区块链是一种按照时间顺序将数据区块以链条的方式组合成特定数据结构,并以密码学方式保证的不可篡改和不可伪造的去中心化共享总账,能够安全存储简单的、有先后关系的、能在系统内验证的数据。

目前已有blockstack、certcoin等基于区块链的pki技术应用,可实现去中心化的认证方式,但大量的研究工作致力于设计基于区块链的pki协议,而未考虑区块链中瘦客户端(例如智能手机用户)问题。此类用户的存储能力和计算能力有限,无法下载整个区块链,难以完成基于区块链的pki身份认证服务。



技术实现要素:

本发明的目的是克服上述现有技术的缺陷,提供一种在区块链pki下支持瘦客户端的隐私保护身份认证方法。

本发明所提出的技术问题是这样解决的:

一种在区块链pki下支持瘦客户端的隐私保护身份认证方法,包括以下步骤:

步骤1.系统初始化:用户在本地生成公私密钥对,并将身份信息和公钥注册至区块链pki中;

步骤2.生成认证请求:在用户双方建立会话前,需互相验证对方身份的合法性。待认证用户将其身份信息和公钥封装成认证请求发送给验证方用户;

步骤3.生成查询请求:验证方用户随机选择出k-1个用户身份信息,与待认证用户身份信息一同进行混淆,并利用pir(privateinformationretrieval,隐私信息检索)技术生成m个不同的查询请求,将其分别发送给m个全节点用户;

步骤4.查询阶段:全节点用户根据查询请求遍历区块链获取相应的公钥,并将公钥异或的结果返回给验证方用户;

步骤5.检测阶段:验证方用户将全节点用户返回的数据进行异或后恢复出公钥,并鉴别待认证用户身份的合法性;

步骤6.确认阶段:待认证用户需检测验证方用户身份的合法性,通过上述步骤2-5后,即可检测验证方用户身份的合法性;

步骤7.会话建立:若用户双方的身份均合法,则用户双方可建立会话连接,进行数据交互。

本发明的有益效果是:

本发明所述方法利用pir等技术,使得其支持区块链中存储能力和计算能力有限的瘦客户端在去中心化的pki中完成用户身份认证,同时保护瘦客户端的查询隐私。本发明具有如下特点:使用基于区块链的pki技术,解决传统pki单点故障和多ca互信难等问题;利用pir技术,实现去中心化pki下瘦客户端的身份认证功能;利用pir技术,保护瘦客户端查询过程中的数据隐私;在认证过程中加入随机数,防止中间人攻击,确保认证过程中消息不被伪造篡改。

附图说明

图1为本发明所述方法的流程图;

图2为实施例采用的网格示意图。

具体实施方式

下面结合附图和实施例对本发明进行进一步的说明。

本实施例提供一种在区块链pki下支持瘦客户端的隐私保护身份认证方法,包括以下步骤:

步骤1.系统初始化:用户在本地生成公私密钥对,并将身份信息和公钥注册至区块链pki中;具体包括以下步骤:

步骤1-1.用户x根据其身份信息idx在本地生成公私秘钥对(pkx,skx),其中私钥skx安全存储在本地,公钥pkx和身份信息idx为向区块链pki注册的信息;

步骤1-2.用户计算私钥skx和身份信息idx的数字签名σx,并向区块链中发布注册信息,(idx,register,values),其中σx=sig(skx,idx),sig为数字签名算法,register为用户注册标志信息,values=(pkx,σx);

步骤1-3.矿工获取注册信息后,首先区块链检查公钥pkx和身份信息idx是否已在区块链pki中注册,若已注册,矿工直接丢弃该注册信息;若尚未注册,矿工使用公钥pkx来计算数字签名σx的正确性,若签名错误,矿工直接丢弃该注册信息;若签名正确,矿工将信息加入区块链pki中,用户注册完成。

步骤2.生成认证请求:在用户双方建立会话前,需互相验证对方身份的合法性。待认证用户将其身份信息和公钥封装成认证请求发送给验证方用户;

待认证用户alice将其身份信息ida和公钥pka封装成认证请求{ida,pka}发送给验证方用户bob,等待验证方用户鉴别其身份的合法性。

步骤3.生成查询请求:验证方用户随机选择出k-1个用户身份信息,与待认证用户身份信息一同进行混淆,并利用pir生成m个不同的查询请求,将其分别发送给m个全节点用户;

步骤3-1.验证方用户随机选择k-1个用户的身份信息id1,id2,...,idk-1,与待认证用户身份信息ida进行混淆,并将k个身份信息随机填充至维度为的网格中,d为网格的维数,l为网格每一维上的维度,k=ld

步骤3-2.验证方用户根据待认证用户的身份信息ida在网格中的位置,生成一个1×d维的位置向量,即身份信息ida可由一个唯一的d元组(i1,i2,...,id)表示,其中in为网格内第n个维度的位置坐标,1≤n≤d;

步骤3-3.验证方用户生成d个1×l维的随机向量其中向量中的每个分量以1/2的概率取值为1,即满足令向量与整数f的δ运算为:

其中,为向量的第f个分量;验证方用户通过进行δ运算得到d个新的1×l维的向量并将2d个向量配对组成d个向量对

步骤3-4.验证方用户向m个全节点用户发送m个不同的查询请求,其中m=2d;具体地,对于任意全节点用户cβ,0≤β≤m-1,β的二进制表示为b1b2…bd∈{0,1}d,验证方用户从d个向量对中选出d个向量并连同维度为的网格一起作为查询请求发送给全节点用户cβ。

步骤4.查询阶段:全节点用户根据查询请求遍历区块链获取相应的公钥,并将公钥异或的结果返回给验证方用户;

步骤4-1.对于任意全节点用户cβ,cβ根据查询请求中值为1的向量分量的位置,按向量顺序依次构建l1×l2×...×ld个维度为1×d的位置向量,其中表示第n个向量中值为1的向量分量个数;具体地,对于任意向量根据求解出每个向量中jn的值,通过组合(j1,j2,...,jd)得到所有需查询的位置向量

步骤4-2.全节点用户cβ根据位置向量从维度为的网格中选取出与位置向量对应的l1×l2×...×ld个身份信息

步骤4-3.全节点用户cβ根据身份信息遍历区块链,获取对应的l1×l2×...×ld个公钥

步骤4-4.全节点用户cβ计算异或结果并将异或结果xβ返回给验证方用户。

步骤5.检测阶段:验证方用户将全节点用户返回的数据进行异或后恢复出公钥,并鉴别待认证用户身份的合法性;

步骤5-1.验证方用户将m个全节点用户返回的m个异或结果x0,x1,...,xm-1进行异或操作恢复出公钥pk′a,即

步骤5-2.验证方用户通过判断pka与pk′a是否相等,检测待认证用户的合法性;若相等,则验证方用户判断待认证用户的身份合法,进入确认阶段;若不相等,则验证方用户判定待认证用户的身份非法,并终止会话连接。

步骤6.确认阶段:待认证用户需检测验证方用户身份的合法性,通过上述步骤2-5后,即可检测验证方用户身份的合法性;

步骤6-1.验证方用户随机生成一个随机数nb,使用待认证用户的公钥pka加密{idb,pkb,nb},即其中enc为公钥加密函数,idb为验证方用户的身份信息,pkb为验证方用户的公钥,将加密后的消息发送给待认证用户;

步骤6-2.待认证用户获得消息后,使用其私钥ska进行解密恢复出{idb,pkb,nb},即dec为私钥解密函数;如果待认证用户是瘦客户端,通过步骤1-5检测验证方用户的合法性;如果待认证用户是全节点用户,其可自行检测验证方用户身份的合法性;若验证方用户身份合法,则执行步骤6-3;若验证方用户身份非法,则终止会话连接;

步骤6-3.待认证用户生成一个随机数na,用验证方用户的公钥pkb加密{na,nb,ida},即将加密后的消息发送给验证方用户;

步骤6-4.验证方用户获得消息后,用其私钥skb进行解密恢复出{na,nb,ida},即若解密消息中存在nb,则执行步骤6-5;若解密消息中没有nb,则说明消息被伪造篡改,验证方用户终止会话连接;

步骤6-5.验证方用户使用待认证用户的公钥pka加密{na},即将加密后的消息发送给待认证用户;

步骤6-6.待认证用户获得消息后,使用其私钥ska进行解密恢复出{na},即若解密消息等于na,则整个确认阶段完成;若解密消息不等于na,则说明消息被伪造篡改,待认证用户终止会话连接。

步骤7.会话建立:若用户双方的身份均合法,则用户双方可建立会话连接,进行数据交互。

实施例

瘦客户端bob需验证身份信息为ida,令d=2,l=3,有k=9,m=4。bob任意选择8个身份id,分别是idb,idc,...,idi。如图2所示,将9个身份信息ida,idb,...,idi混淆后放入3×3的网格中,使用位置向量(1,2)表示ida在网格中的位置。接着,bob产生两个随机向量通过计算ida的位置向量(1,2)与的异或来获得两个新向量随后,bob对4个全节点用户均发送相同的3×3的网格以及2个互不相同的向量,具体地,向c00发送向量向c01发送向量向c10发送向量向c11发送向量

全节点用户c00发现得到位置向量(3,1)。位置向量(3,1)对应于身份信息idh,故c00遍历区块链获取公钥pkh,并将结果x1=pkh返回给bob;c01发现得到位置向量(3,1)、(3,2)。位置向量(3,1)对应于身份信息idh,位置向量(3,2)对应于身份信息idd,故c01遍历区块链获取公钥pkh、pkd,将异或结果返回给bob;c10发现得到位置向量(1,1)、(3,1)。位置向量(1,1)对应于身份信息idr,位置向量(3,1)对应于身份信息idh,故c10遍历区块链获取公钥pkb、pkh,将异或结果返回给bob;c11发现得到位置向量(1,1)、(1,2)、(3,1)、(3,2)。位置向量(1,1)对应于身份信息idb,位置向量(1,2)对应于身份信息ida,位置向量(3,1)对应于身份信息idh,位置向量(3,2)对应于身份信息idd,故c11遍历区块链获取公钥pkb、pka、pkh、pkd,将异或结果返回给bob。

最终,bob通过计算恢复出公钥pka。

在上述认证过程中,全节点用户无法获知瘦客户端究竟想获取哪个身份信息对应的公钥,从而保护了瘦客户端的查询隐私。

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