|
转自:疏影杳渺 0 w( T' P! o* d& h8 A/ B0 Y" o& M
区块链技术的基本介绍这里就不再多说,前面的文章中有通俗易懂的介绍,喜欢的朋友可以去查阅。那么区块链作为一个分布式账本,我们的数据都会被记录在别人的账本中,如何保证数据的隐私安全呢?如果加密,又如何实现数据共享呢?加密与共享是否能共存?如何共存?下面介绍几种常用的解决方案。
A' I! A4 I* M4 f; c d, O
$ Z0 P0 T ]9 \" b
1.通过区块链成员属性的加密访问控制
3 j/ K* d& e/ |
9 w7 \* y# L/ r Q/ ]: R 在联盟链中,参与方是一定的,也可以说是可控的。那么参与方具备的各种属性我们可以通过区块链管理起来,形成一个属性集合。基于这个属性集合,可以算法(ABE)对信息进行加密传输。简单理解就是,一些需要特定用户才能查看的数据,我们可以根据这些用户的共同属性,制定一个访问策略,只有满足策略的用户才能解密查看到明文,其他用户无法查看。举个列子: ' y& D! {, v: P$ E) [/ k5 E% n
一个用区块链技术搭建的供应链金融业务,参与的企业为了能够快速的获得融资,需要将关键的四流数据开放给银行,但是又不能被参与的其他企业看到。这时,企业可以将上链的数据通过属性加密的方式进行加密存储,其中设置的访问策略为只有金融类机构(银行或可以提供贷款的金融机构)可见。
$ h3 \$ S0 @* Q$ T. p
当非金融类机构访问账本数据时,由于其自身的属性所产生的密钥是与策略不匹配,所以无法解密;金融机构则可以生成与之匹配的密钥,从而查看企业在区块链的核心业务数据,实现快速授信。
% l# h3 n$ ]& X7 ^1 V) x
, w# ]& U6 |' Z+ `0 v
2.采用多方安全计算算法+ _$ ?/ d# n0 e, F( ^4 O3 d
' |2 @+ c3 G1 d& v* ?3 E7 ~
上面提到的方法可以解决数据共享的问题,但前提是我们信任金融机构不会泄露我们的数据,因为他们拿到了明文数据。那么有什么方法既能保护参与方的数据隐私,又能将有效的信息传递给需要的用户手中呢?
) o! P. w: M3 R5 x: q/ `" U
零知识证明可以实现这个需求,这也是零知识证明在区块链领域比较流行的原因。零知识证明是一种加密算法,数据拥有者可以通过零知识证明算法将数据加密存储,当我们要进行融资申请时,只需要向银行证明自己具备了某项能力即可,不需要向其展示详细的数据。同时银行又能确信你的证明没有问题。这是一个很复杂的数学问题,前面的文章中我有过简单的介绍,感兴趣的可以去翻阅。
; X. D" c# E7 I3 C
同态加密同样也可以解决一定的数据隐私问题,所谓同态加密,举个简单的例子理解: 6 o1 S) O4 Q( B/ v% V$ a
数字 1 经过同态加密变成 aaa ;
3 Z8 j2 a- ~# M1 c# m
数字 2 经过同态加密变成 bbb ;
6 k9 o. ~( x7 h* s' ~
aaa + bbb = ccc; 9 Z/ P+ t! y. L4 b& q; ^
ccc经过解密可以得到结果3。 w% \1 g$ R- S, c0 l) U
也就是说,第三方可以对加密数据进行简单的计算并得到正确的结果,但是他不知道3是由0+3得来的,还是1+2得来的。通过这样的加密算法我们可以保护原始数据不被泄露,同时又可以进行特定的数据分析。比如政府可以通过医院统计某个社区60岁以上患癌症的老人数量,但是无法获取到老人的隐私信息;保险机构可以通过医院确认某个人是否患有大病住院历史,但却无法获取具体患病信息等等。
; O0 _" V6 N6 {3 ~ Z& h9 k
& P( j4 o# b. U3 W3 V D
3.数据哈希值上链,数据本地存储 % Q6 U$ @6 E+ [( M/ M( _
这是目前广泛应用于区块链存证系统的一种方式,就是说我们把需要上链的数据或文件,计算与之内容对应的唯一哈希值,将哈希值上链存储。哈希值的特点是唯一性,一旦数据或文件发生内容上的变更,哈希值也会随之变更,与区块链上的信息就无法匹配。
! @& }) @$ a* m# \0 m- E2 a1 p9 I+ ~& S* |$ s' N7 r9 ^
这个方法可以一定程度上的解决数据隐私的问题,但是需要一个安全的中心服务器存储原始数据,虽然原始数据更改后我们可以验证,但是一旦被删除,链上的哈希值也就没有了意义。 4 s; d. I4 U7 L7 i; }) y
4.中心化密钥管理 5 @3 P7 ^# Z Q# W, q
在区块链业务场景中,我们要考虑实际的执行效率,一些交易量比较大的业务场景,采用复杂繁琐的密码学技术就不是很实用,所以目前使用比较多的是找一个中心的服务终端,可以是一个大家公认的可信节点,存放所有密钥。这样区块链网络中我们可以使用加密算法上传加密数据,保证数据在链上的隐私安全,需要解密的时候只需向中心化服务申请密钥即可解密。中心化的服务同样可以设定各种策略,甚至是审核机制。
& i1 h4 Z. C5 C6 F: T2 ?. Q
这种方式特点是灵活,执行效率快,缺点是一旦中心服务器被攻破,密钥就会泄露,数据就会存在泄漏的风险。
. q0 l g5 w# @. S
, Q4 S( t3 m! @! ^
以上是目前常见的区块链保护数据隐私、实现数据共享的几种方式,所有的方法中都离不开密码学作为技术支撑,区块链要想有更好的发展和突破,就需要有更多执行效率高、安全稳定的算法。
# w' p' P" b: s8 L9 a, p& D |