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