赵灵奇,宋宇波,张克落,胡爱群,罗 坚
1.东南大学网络空间安全学院,南京211189
2.浙江工贸职业技术学院图书信息中心,浙江温州325003
3.南京网络空间安全技术研究院,南京211189
在物流信息系统(logistics information system,LIS)中,为便于物流企业收件、配送、发件等工作,发件人需要在快递单上填写许多物流隐私数据.在整个物流过程中,这些物流隐私数据均处于明文可见的状态,会造成物流隐私数据泄露.一些网站明码标价快递单信息,并提供“生成底单”服务.发件人在使用物流服务过程中,防范物流隐私数据泄露也很被动,虽然发件人可以通过填写假名来防止姓名信息泄露,但其他物流隐私数据(如电话信息、地址信息)依旧没有办法得到保护.针对物流行业中存在物流隐私数据泄露问题的对策有:一方面从管理、制度、法规层面上着手;另一方面通过技术来保护物流用户隐私数据,如将二维码技术应用于信息分装中,物流企业工作人员在物流中转过程中通过专用的二维码扫描仪扫描二维码来获取物流隐私数据.但是扫描获得的数据依旧是快递单上的明文信息,物流隐私数据泄露的问题依旧没有完全解决.主要的原因有两点:1)物流企业并未重视用户的物流隐私数据的保护;2)在物流的中转过程中,还需靠人力完成中转过程,这使得物流企业的工作人员依然可以获得所有的明文信息.因此,研究物流中隐私数据保护技术十分重要.
在物流隐私数据保护领域,文献[2]提出了一种物流过程中不使用快递单的形式,设想将派件员当天需要派送包裹的收件人信息加密存储在Android手机中,并用家庭地址作为加密信息的文件名以配送至收件人地址,但该方案在实际应用中存在一些局限性,具体如下:1)放弃使用快递单,无法实现物流的中转功能;2)收件人的信息加密存储在手机中,依旧没有完全实现对物流隐私的隐藏加密.文献[3]提出了一个基于二维码技术的个人信息隐私保护物流系统(logistics information privacy protection system,LIPPS),该系统采用分段加密技术对物流用户隐私数据进行加密,并将加密后的密文存储到二维码中,设计了不同等级授权机制解密相应的信息,从而完成物流业务操作,但该系统并未给出具体的实现及分级加密技术实现细节.由上述研究可知,现有研究在物流用户隐私保护方面还存在如下不足:1)用户隐私数据依旧保存在非完全可信的第三方,用户隐私得不到保障;2)用户无法对物流隐私数据的访问权限进行控制管理,其控制过程缺乏透明性和追溯性,且无法控制第三方对隐私数据的部分读取.
在区块链访问控制研究领域,文献[4]解决了在使用第三方应用服务时存在的隐私问题,提出了一个去中心的个人数据管理系统,确保用户拥有并控制他们自己的隐私数据.文献[5]提出了一个医疗数据共享系统来解决医疗数据共享过程中存在的访问控制管理问题.在这个系统中,提出了一个基于区块链的应用程序框架,使用户轻松安全地拥有、控制、共享自己医疗数据的同时,保证自己的隐私不被侵犯,从而维护用户医疗数据的隐私性.以上研究都是通过区块链来解决不同领域中的访问权限控制管理问题,但仍然存在着一些问题:1)用户隐私存在泄露的风险;2)基于以太坊或比特币网络进行权限管理,存在吞吐量小、交易验证较慢的缺点.
本文提出了一种基于区块链的物流用户隐私数据保护方案,设计并实现了一个物流下单原型验证系统,并评估了该系统的安全性.主要工作如下:针对用户缺乏对物流隐私数据控制权的问题,提出了一种基于区块链和直接匿名证明(direct anonymous attestation,DAA)技术相结合的访问权限管理机制.该机制基于DAA匿名认证实现了成员身份管理,为区块链上的实体提供匿名可验证的身份,通过维护的一个交易公钥列表(transaction public key list,TPL)来实现对区块链节点的访问控制,解决了当前区块链技术存在的隐私泄露的风险;该方案通过分布式账本保存用户对隐私数据的访问权限,使用链码(即智能合约)来封装物流中各角色与隐私数据之间存在的业务逻辑,实现了用户对隐私数据的访问权限控制管理;针对物流用户隐私数据易被泄露和窃取的问题,提出了一种基于分层加密的隐私数据访问机制,通过嵌套访问控制树结构实现用户根据数据访问方属性确定其隐私数据的访问权限.将隐私数据密文上传至云存储平台保管,有效防止物流用户隐私数据在不可信第三方平台的泄露.
区块链起源于比特币,是用分布式数据库识别、传播和记载信息的智能化对等网络,它是一串使用密码学方法相关联产生的数据块,每一个数据块包含若干次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块[6].区块链可分为许可链和非许可链.本文提出的基于区块链和DAA匿名认证的访问权限管理机制所用的区块链属于许可链,许可链并不对外公开,用户需要注册才能参与区块链网络,也就是说,许可链仅限于已经验证身份的成员参与.许可链的共识过程是由预先选定的节点来完成的,一般适用于机构之间进行交易、清算或者结算的B2B场景.例如在银行之间进行清算、结算、支付的系统就可以使用许可链,将每个银行的网关节点作为结账节点,当区块链网络中超过2/3的节点确认了一个区块时,该区块中记录的交易就会得到全网的认可.因为许可链中参与到共识过程的节点比较少,许可链采用的共识机制一般是权益证明或PBFT(practical byzantine fault tolerant)、RAFT算法等共识算法.许可链对交易每秒交易数、确认时间都与非许可链有很大的区别,对安全和性能的要求比许可链要高.
超级账本(hyperledger)[7]属于许可链的架构.它是由Linux基金会在2015年发起的推进区块链数字技术和交易验证的开源项目,Fabric是其中的一个子项目,Hyperledger Fabric的架构属于许可链.本文提出的访问权限管理机制主要通过Fabric架构中的账本和链码(chaincode)实现数据拥有方根据自己的意愿对物流隐私数据进行访问权限控制管理的目的.数据拥有方和数据访问方都是区块链网络中的成员,数据拥有方在生成一个新的物流隐私数据时,在分布式账本的State数据库添加一个对应的以键值对(key-value)形式表示的数据权限状态,该数据权限状态中包含了物流隐私数据的基本信息(数据拥有方编号、数据存储路径、上传时间)以及数据访问方的权限数据集.
针对现有隐私数据访问权限管理方案存在的问题,本文结合区块链公开透明、无法篡改、便于追溯等特点,且许可链相较于非许可链来有吞吐量大和交易验证较快的优点,提出了基于区块链和DAA匿名认证的访问权限管理机制.
具体方案整体架构图如图1所示,主要可分为成员身份管理、访问权限管理、隐私数据访问3部分.成员身份管理是基于DAA匿名认证实现的,为数据访问方和数据拥有方提供匿名可验证的身份,并通过交易公钥列表TPL实现对区块链节点的访问控制;访问权限管理基于区块链实现了数据拥有方对物流隐私数据访问权限的控制,并记录数据访问方的访问记录;隐私数据访问是基于分层加密实现[8]的,为物流用户隐私数据提供安全性、完整性保证,并实现数据访问方对隐私数据的分层访问.
成员身份管理模块根据DAA匿名认证的方案为想要加入区块链网络的用户提供匿名可验证的身份.DAA方案中的用户是由TPM和相应的host组成的.用户首先在Issuer获得身份证书,然后通过该证书向Veri fier证明自己是经过Issuer认证过的合法用户,最后将自己用于区块链网络中交易签名的交易公钥tran_pub注册到Veri fier维护的交易公钥列表TPL中.在整个过程中,Veri fier不会接触到任何关于用户的身份信息,因为用户对Veri fier具有匿名性,所以Veri fier并不知道TPL中的各个交易公钥tran_pub所对应的真实用户身份.此外一个用户可以通过与Veri fier进行多次匿名认证,注册多个tran_pub到TPL中.这些tran_pub之间并没有任何关联性,故能解决区块链技术存在的隐私泄露风险的问题,即攻击者不可能根据区块链交易中存在的关联关系分析出区块链交易地址与节点身份之间的关联.成员身份管理模块的具体流程如图2所示.
图1 基于区块链的物流用户隐私数据保护方案整体架构图Figure 1 Architecture of blockchain based logistics information privacy protection
2.1.1 创建用户群
Issuer创建一个用户群,群中的成员也是区块链网络中的实体节点,该步骤会生成成员认证公钥KPG和成员发行私钥KMIPK,具体步骤如下:
步骤1 Issuer选取一个RSA模数n=pq,其中有p=2p′+1,q=2q′+1,p、q、p′、q′都是素数,并且p和q是长度相同的素数,n的长度为ln.
步骤2 Issuer选择QRN的一个随机生成员g′.
步骤3 Issuer选择随机整数:x0,x1,xz,xs,xh,xg∈[1,p′q′],并利用下列随机整数计算:
图2 成员身份管理模块工作流程图Figure 2 Member ship management module workflow
步骤4 提供一个非交互式的零知识证明发布方产生的g、h、S、Z、R0、R1都是正确计算出来的.具体的证明方法可参考文献[9].
步骤5 Issuer选择长度为lΓ的素数Γ和长度为lρ的素数ρ,Γ和ρ满足Γ=rρ+1.随机选择一个数γ′∈R使得γ′(Γ-1)/ρ/=1 modΓ,记γ:=γ′(Γ-1)/ρmodΓ.
步骤6 Issuer将(n,g′,g,h,S,Z,R0,R,γ,Γ,ρ)作为成员认证公钥KPG,并且将p′q′作为成员发行私钥KMIPK秘密保存起来.
2.1.2 传递成员认证公钥
Issuer将成员认证公钥KPG发送给验证方(Veri fier).Veri fier将在后续的步骤中使用KPG对匿名用户的身份进行认证.
2.1.3 用户申请加入用户群
用户加入Issuer创建的用户群.Issuer创建的群中成员也是区块链网络中的实体节点,用户为了加入区块链网络,必须在Issuer处注册获得身份证书.为了加入Issuer创建的用户群,用户首先发送一个请求给Issuer,请求中包含了用户的一些身份信息,如果Issuer验证用户信息之后确定用户可以加入到用户群中,才会执行下面的步骤为用户颁发身份证书.
1)首先用户中host计算ς1=(H(1||bsn1))(Γ-1)/ρmodΓ(其中bsn1为Issuer的基名),用户中TPM模块检查是否=1 mod Γ,记Issuer对KPG签名使用的公钥是,根据公式计算得到f,使f0=LSBlf(f),f1=CARlf(f),选择随机数计算将(U,N)发送给host,host转发给Issuer.I
2)用户TPM模块通过零知识证明协议向Issuer证明用户拥有f0、f1和v′(其中v′=协议具体的步骤如下所示:
4)host收到(A,e,v′′)后,计算然后将和发送给TPM.
2.1.4 生成区块链交易密钥对
用户获得DAA证书后,即加入到了区块链网络中,然后用户生成用户的区块链交易密钥对(tran_pub,tran_pri).
2.1.5 匿名认证身份
用户向Veri fier匿名证明自己的成员身份.用户在上面的步骤中已经加入到了Issuer创建的群中,即加入到区块链网络中,成为区块链网络中的一个节点.接下来用户需要向Veri fier证明自己是群中合法的成员,并且在认证过程中对Veri fier保持匿名.具体的步骤如下:
步骤1 首先用户向Veri fier发起一个匿名认证的请求.
步骤2 Veri fier收到用户发来的匿名认证请求之后,返回一个响应给用户,响应中包含了Veri fier的基名bsnV和一个消息m.
步骤3 用户使用2.1.3节3)中获得的身份证书(A,e,v′′)对消息m生成知识签名σ.具体步骤如下:
步骤3-1 host根据Veri fier提供的基名bsnV,根据公式ς=(HΓ(1||bsnV))(Γ-1)/ρmodΓ计算ς.
步骤3-2 host选择随机整数w,r∈{0,1}ln+lØ,然后计算T1=Ahwmodn和T2=gwhe(g′)rmodn.TPM计算NV=ςf0+f12lfmodΓ,TPM将计算得到的NV发送给host.
步骤3-3 host和TPM联合生成一个零知识证明,证明T1和T2来自Issuer办法的身份证书,并且计算NV时使用到的f为该身份证书的秘密值.具体过程如下:
1)TPM随机选择rv∈R{0,1}lv+lØ+lH,计算TPM将发送给host.
4)TPM计算sv=rv+cv,sf0=rf0+cf0,sf1=rf1+cf1,然后将sv、sf0和sf1发送给host.
5)平台计算se=re+c(e-2le-1),see=ree+ce2,sw=rw+cw,sew=rew+cwe,sr=rr+cr,ser=rer+cer和sv=sv1+2lssv2,最后输出对消息m的签名为:σ=(ς,(T1,T2),NV,c,nt,(sv,sf0,sf1,se,see,sw,sew,sr,ser)).
步骤4 Veri fier验证签名σ是否有效,如果Veri fier证明了σ是有效的,则将生成一个与该用户共享的对称密钥PSK,并通过安全的方式将PSK传送给发起匿名认证请求的用户.具体的Veri fier验证σ的步骤如下:
步骤4-1 首先Veri fier根据下面的公式
步骤4-2 验证
2.1.6 交易公钥注册
用户将交易公钥tran_pub注册交易公钥列表TPL中.用户在向Veri fier匿名证明了自己是群中有效的成员之后,为了在区块链网络中生成一个合法的交易来,必须将自己的交易公钥tran_pub添加到Veri fier维护的交易公钥列表TPL中,只有这样,共识机制在处理到该用户生成的交易时才能认为该交易是合法的,进而用户才能通过该交易完成对分布式账本的读取或更新操作.用户通过2.1.5节步骤4中从Veri fier处获得的共享对称密钥PSK对tran_pub加密处理后传送给Veri fier,然后Veri fier解密得到tran_pub,并将tran_pub添加到TPL中.
数据拥有方根据自己的意愿在分布式账本中为每个物流用户隐私数据生成一个对应的数据权限状态,该数据权限状态决定了每个数据访问方的访问权限.数据访问方必须通过应用程序构造一个交易访问该分布式账本来判断自己是否有权访问对应的物流用户隐私数据,如果有权访问,就能通过分布式账本获得对应的e_SK存储路径及隐私数据密文对应的云存储路径,进而解密获得相应部分的隐私数据,同时通过区块链上记录数据访问方访问该物流用户隐私数据的记录,实现隐私数据访问记录的可追溯性.具体的框架如图3所示.
其中区块链模块是基于Hyperledger Fabric建立的,由共识机制、分布式账本、链码组成.共识机制负责验证一批未确认交易的发生顺序、合法性以及多个节点是否对分布式账本状态的更新达成一致的观点,共识机制会根据成员管理模块中Veri fier维护的TPL来实现对区块链节点的访问权限控制;分布式账本记录了区块链网络中的所有交易的信息,其中State数据库保存了最新的账本数据状态;链码封装了数据拥有方、数据访问方与物流用户隐私数据之间存在的业务逻辑,在State数据库中添加新的状态信息或者更改已经存在的状态信息,数据拥有方在生成一个新的物流隐私数据时,会通过链码在State数据库中添加一个对应的数据权限状态.当数据访问方想要访问数据拥有方的一个物流隐私数据时,必须通过客户端程序构造一个交易,调用链码访问State数据库中隐私数据对应的数据权限状态,进而判断自己是否具有该隐私数据的访问权限.
图3 基于区块链和DAA匿名认证的访问权限管理机制整体架构Figure 3 Architecture of access permission management based on blockchain and DAA
区块链模块处理用户在区块链网络中产生的交易,节点中的共识机制会判断未处理的交易是否合法,并判断该未处理交易对应的交易公钥tran_pub是否存在于Veri fier维护的交易公钥列表TPL中;如果交易合法,那么该交易就会调用链码中相应的方法与分布式账本进行交互,例如数据拥有方向分布式账本State数据库中添加一个物流隐私数据对应的数据权限状态或数据访问方从分布式账本State数据库中读取e_SK存储路径信息等.下面介绍区块链模块中分布式账本的设计方法.
State数据库中存储的是物流用户隐私数据对应的数据权限状态,当数据拥有方产生一个新的物流隐私数据时,通过构造一个交易来调用链码中相应的方法向State数据库添加该隐私数据对应的数据权限状态.State数据库具体的数据结构如图4所示.
图4 State数据库数据权限状态的数据结构Figure 4 Data structure of permission state in state database
State数据库中的数据权限状态是以物流用户隐私数据的id标识的,即每一个物流用户隐私数据都在State数据中对应一个key为dataid的数据权限状态.数据权限状态包括两类:权限数据集和物理隐私数据信息.权限数据集是数据拥有方根据自己的意愿设置的,用来控制管理物流隐私数据的访问权限,数据拥有方可以在权限集中更改或添加一个新用户的权限数据,用户对应的权限数据中包含e_SK存储路径、读取时间的限制及读取次数的限制,用户可根据是否能读取出dataid下userid对应的权限数据来判断自己是否有权限访问编号为dataid的物流隐私数据.物流隐私数据信息包括数据拥有方的编号、隐私数据的上传时间、密文数据包的存储路径.数据拥有方的编号标识了dataid对应的隐私数据拥有方;隐私数据的上传时间是该隐私数据对应的数据权限状态添加到分布式账本State数据库中的时间;密文数据包存储路径是访问云存储平台上该物流隐私数据密文的URL,用于下载该隐私数据的密文数据包;物流状态信息记录了物流从发件人寄出到收件人签收整个过程的实时状态信息.
基于分层加密的隐私数据访问机制架构如图5所示,主要包括可信任的授权中心(TA)、客户端、云存储平台、用户4个参与方.
图5 隐私数据访问机制整体架构图Figure 5 Architecture of privacy data access
首先可信任的授权中心TA执行初始化操作,生成系统公钥PK和系统主密钥MK,TA将公钥PK公开,使系统中所有用户都能获得,主密钥MK由TA秘密保存;数据拥有方生成一个隐私数据之后将隐私数据按照3个安全级别分为low、mid、high三部分,并通过对称加密算法加密数据、HMAC算法保证数据的完整性,然后使用基于属性的分层加密方案加密3个对称密钥及HMAC密钥,格式化生成密文数据包并将其存储到云存储平台中;TA为数据访问方授予一个属性集,并根据该属性集生成用户的解密私钥SK;数据访问方从TA处请求得到e_SK,解密得到SK后从云存储平台取回密文数据包,并尝试解密获得相应部分的物流用户隐私数据.
本文测试操作系统为Ubuntu 16.04 64bit,系统开发工具为Eclipse Juno 23.0.2、Android Studio 2.2.2、MySQL WorkBench 6.3.8,Android版本为Android 6.0.
在成员身份管理模块中主要使用DAA匿名认证,其安全性主要包括隐私密钥的保密性、匿名性、签名不可伪造性.
1)隐私密钥的保密性
隐私密钥的安全性至关重要,如果隐私密钥发生了泄露,整个DAA协议失去了可信性.考虑到TPM所在的平台主机不一定可信,协议将可能暴露隐私密钥的所有运算均由TPM完成.在整个方案中,TPM始终以零知识证明的方式对外证明TPM拥有隐私密钥,确保了隐私密钥的绝对保密性.
2)匿名性
在签名协议阶段,Host先将Issuer发送的信任证书(A,e,v′′)盲化,然后利用它将消息m生成知识签名σ发送给Veri fier,使Veri fier和Issuer之间不存在相同的消息,即便Veri fier和Issuer合谋也无法识别出具体的TPM,防止了Veri fier和Issuer的合谋攻击,实现了平台的匿名性,保证了平台的隐私性.
3)签名不可伪造性
方案中签名的不可伪造性包含两层含义:一是在加入协议中,发布者不能伪造身份证书;二是在签名协议中,可信计算平台不能伪造签名.发布者在生成身份证书时使用了发布者的私钥,可信计算平台收到发布者的信任证书后以对应的公钥验证,进而确定发布者是否伪造了信任证书.可信计算平台收到发布者的信任证书后,对信任证书进行盲化并生成自己的签名,但签名验证协议需要通过零知识证明,使验证者确信可信计算平台拥有发布者颁发的信任证书.因此,可信计算平台在安全假设下无法伪造一个合法的签名.
在访问权限管理模块中主要是区块链技术,而区块链的安全性主要依靠非对称密钥算法和哈希算法的安全性保证.另外区块链模块处理用户在区块链网络中产生的交易,节点中的共识机制会判断未处理的交易是否合法,以及判断该未处理交易对应的交易公钥tran_pub是否存在于Veri fier维护的交易公钥列表TPL中,因此在保证DAA匿名认证的安全性也就能保证交易公钥tran_pub的正确性.
本文提出了一种基于区块链的物流隐私数据保护方案.该方案首先利用改进的CPABE算法实现基于属性的分层加密,拥有较高权限级别的数据访问方可以直接访问低级别的数据,确定了数据访问方可读取隐私数据的范围,同时将隐私数据密文上传至云存储平台保管.有效解决了物流派发时用户隐私数据访问方身份无法预先获知而难以授权的问题.其次提出了一种基于区块链和DAA匿名认证相结合的访问权限管理机制.有效解决了现有隐私数据访问权限管理方案中对隐私数据访问权限的管理难以做到用户可自主控制、授权过程可追溯及访问记录可审计的问题.最后设计并实现了一个物流下单原型验证系统,并对其进行了测试和评估.