区块链 · 数据
区块链账本是由一个个区块构成,后一个区块包含了前一个区块的Hash,多个参与方通过共识保证各个参与方的数据一致。区块之间的链式结构和多份的数据冗余很大程度上保证了数据的透明性和不可篡改性。在联盟链中,结合区块链上数据的透明性和不可篡改性,确保链上数据可信,利用可信数据,减少中间流程,降低风险,从而加速整个业务流程的运转。区块链上数据透明性是一把双刃剑,透明保证可信,但是在很多商业场景中,数据具有隐私的特性。如何在透明性和隐私性之间平衡,是区块链需要解决的一大问题。链上的数据隐私可以从两个层面考虑,一个是账本数据传播范围,一个是业务数据上链方式。
一、账本层面的数据隐私保护
在账本数据传播范围方面,Fabric通过引入通道和私有数据集来解决数据传播范围。Fabric通过通道物理的隔离了数据在组织间的流转范围,通过私有数据集又进一步限制了数据明文在通道内组织的流转范围。
在底层数据存储上Fabric创造性地在联盟链中引入了通道的概念。每个通道可以理解为独立的区块链网络。在同一个通道上的组织,可以存储这个通道上的数据。不属于这个通道上的组织,对于这个通道没有任何的数据访问权限。通道的引入,极大地方便了组织用户从分布式账本上限制数据的传播范围。在同一个Fabric联盟网络里,组织可以根据自己的业务需要,创建多个不同的通道,从而保证数据只在特定的组织范围内流转。
在同一个通道上,有些场景中,用户的特定数据原文只需要通道内的特定组织访问,其他组织只需要确保数据可信可验证。基于以上的需求,Fabric引入了私有数据集的概念。私有数据集可以让用户根据需求定义出数据在通道内原文可见的范围。对于可见范围内的组织, 可以存储用户的原文数据。对于不在私有数据集范围内的组织,不具有访问原文数据的权限。这些不在私有数据集可见范围内的组织,分布式账本上存储的数据仅仅原文的Hash。通过私有数据集的引入,Fabric很好地解决了同一个通道上的数据流转范围。
二、业务上链过程中的数据隐私保护
Fabric底层链中数据流转范围的设定,可以让用户方便的设置区块链组织参与方对于数据的访问权限。在实际区块链业务场景中,用户还需要结合业务上数据隐私特性,在业务层设置数据上链方式。业务层的数据上链方式主要包含Hash、 对称加密、非对称加密、同态加密等方式。不同的上链方式,可以在不同的程度上保证数据的隐私,可操作和透明性。
在区块链业务场景中,最直接的业务类型是存证业务。利用链上数据的透明,不可篡改和多方可见,确保存证业务的数据可信。在存证业务场景中,数据隐私的处理方式相对比较简单。用户可以选择在链上存储原文数据的Hash。各个联盟参与方可以见证链上Hash的存在,但是无法知道用户存储的原文信息。当有法律纠纷的时候,用户可以提交原文和链上的Hash进行比对,证明数据在特定的时刻已经存储在链上。这样很好的解决数据隐私和链上透明性的问题。
在有些区块链业务场景中,比如结构化的小数据交互场景,需要使用链上的数据,但是又不存在线下原文数据的交换渠道。在这些场景中,如果业务层的用户单纯将数据Hash上链,其他业务层用户很难在链上获取到数据的原文。在这种场景中,用户可以采取对称加密或者非对称加密方式,确保链上存储的数据都是加密的数据,从而保证数据的隐私性。当有业务层用户需要使用特定数据的时候,可以向数据拥有方发起请求,数据拥有方可以自行决定是否授权申请方访问链上的数据。授权的方式可以是把加密的数据私钥传输给申请方。为了保证私钥传输的安全,一般用申请方的公钥对私钥进行加密,然后把对应的信息存储在链上完成授权。当授权通过后,申请方可以用自己的私钥来最终获取到数据加密的私钥,完成对链上数据的访问。通过以上的方式,可以很好的保证链上的数据的隐私性和可使用性,同时也很好的保证了数据拥有方的权利。
在有些需要做数据处理的场景中,单纯对数据直接加密很难满足场景的需要。比如在积分场景中,每个用户都有自己的积分,同时这些积分之间可以互相交换。在用户积分交换的场景里,智能合约需要对链上的数据进行加减操作,确保用户积分交换的正确性。单纯的对称加密或非对称加密的数据,智能合约都很难直接对数据进行运算操作。为了解决数据可操作性,可以引入同态加密的方案。同态加密可以让加密数据和加密数据或者明文数据直接运算,最终解密的结果和原文数据直接运算一致。通过同态加密的引入,可以很好的解决数据隐私性,链上数据透明性和可操作性之间的问题。
三、 小结
在区块链业务开发过程中,用户根据自己的需求,选择一个合适的解决方案。解决方案既需要满足数据的隐私性需求,同时也需整合区块链的透明性特征。随着区块链数据隐私业务需求的不断涌现,越来越多的前沿技术被引入实践,零知识证明,联邦学习和可信安全计算等。随着相关技术越来越成熟,用户链上数据隐私性需求和区块链的数据透明性将得到更好的平衡。