链上隐私数据保护

由于区块链各参与方可能存在利益冲突,不愿意将私有数据上链,催生了链上隐私数据的需求。对于不同的隐私等级存在相应的处理方式。

  1. 短期内隐私数据。指的是易变数据,一定期限后该数据的价值降低,例如波动的商品成交价。因为密码学破解在可预见的短期内无法达成,可以认为安全风险很小,因此可以使用流行的对称加密/非对称加密的方式,密文上链,相关方使用链下方式或者链上方式交换密钥。甚至可以单笔交易更换密钥,这样对于可变但是数值范围有限的数据,例如状态值,单价/数量等数值,则避免了统计学上破解。
  2. 长期固定隐私数据。例如身份证号码,企业社会信用代码等,该数据长期不变,存在若干年后由于量子计算或者相应的密码学被破解导致泄露(当然,随着破解方案的演进,加密方案也会相应的演进,但是对于链上的历史数据则极易受到新的破解方案的威胁)。因此,链上可以保存数值hash,具体的数据链下交换,使用链上的hash值作为验证。同时,对于数值类等取值空间有限的,可以针对每笔交易数据添加盐值后(同样通过链下交换),再做hash上链,避免彩虹表攻击。

Fabric的private data设计

1. transient data vs. transient data store vs. private data collection

  • transient data: 链码chaincode的输入数据,client发起交易时指定,endorser在背书过程中,将这些数据以gossip的方式点对点发送到其他的拥有权限的相关节点(例如同属于该private data collection的不同组织),链上block里的交易信息并不会包含有这些数据。
  • transient data store: 中间存储,存放transient data进行运算后的RW-set,方便后续的gossip交换到其他的authorized节点,在commit阶段,private data hash将会与该部分数据进行校验,无误后提交到private data collection,然后清除transient data store。
  • private data collection: 长期存储(由blockToLive参数控制生命)区块执行之后的world state世界状态里,包含有public state和private state,(分别对应着public RW-set和private RW-set)这部分是通过gossip协议从其他节点发送过来的,针对相关的org开放读写权限。包含原始数据和该数据的hash值组成,这样的hash值会被在commit阶段比较private RW-set,以及后续在chaincode里确认该笔数据或者交易的存在真实性。

Fig1. 隐私数据存储结构(摘自Ref.3)

Fig2. 隐私数据交互流程(摘自Ref.2)
  1. The transactions with the private data hashes get included in blocks as normal. The block with the private data hashes is distributed to all the peers.即private data hash会提交到orderer进行排序,对于没有权限的private data collection,只能获取到其hash作为存证和后续验证。
  2. Note that because gossip distributes the private data peer-to-peer across authorized organizations, it is required to set up anchor peers on the channel, and configure CORE_PEER_GOSSIP_EXTERNALENDPOINT on each peer, in order to bootstrap cross-organization communication.。意味着gossip协议会根据collection的json定义文件里的policy政策传播到符合条件的各个组织。

当前fabric提供的是hash校验的基本功能,只是数据的真实性校验和数据交换,对于更多的应用场景例如需要计算/比较的,将来可以扩展叠加零知识证明和同态加密运算等,会有更广的应用想象空间。

Ref:

  1. HyperLedger Fabric官网
  2. Demystifying Hyperledger Fabric (2/3): Private Data Collection
  3. Private Data and Transient Data in Hyperledger Fabric
  4. 视频 : IBM工程师介绍private data