Py学习  »  区块链

麦克阿瑟奖得主Dawn Song:区块链能保密和保护隐私?图样图森破!

区块链大本营 • 5 年前 • 238 次点击  


作者 | Oasis Labs

译者 | Guoxi

出品 | 区块链大本营(Blockchain_camp)



作为一种新事物,人们通常对区块链都存在或多或少的误解,其中最具争议的莫过于区块链的安全性。


有些人认为区块链是划时代的创造,通过一系列先进的密码学机制保障了整个系统的安全性;而有些人则认为,区块链只具有化名性而没有匿名性,所以区块链是不安全的。


为什么会产生这种撕裂呢?因为此“安全”非彼“安全”,这些人对区块链安全的定义是不同的,自然得不到统一的结论


那什么才是区块链的安全?区块链又是否安全,让“互联网安全教母”,加州大学伯克利分校计算机系教授 Dawn Song 为你揭开区块链安全的神秘面纱


Dawn Song,加州大学伯克利分校计算机系教授,Oasis Labs创始人兼CEO,被媒体誉为“互联网安全教母”。研究方向包括深度学习、机算机和网络安全、区块链等。


曾获麦克阿瑟奖 (MacArthur Fellowship),古根海姆奖(GuggenheimFellowship),斯隆研究奖 (Alfred P. Sloan Research Fellowship),《麻省理工科技评论》“35岁以下科技创新35人”奖 (TR-35 Award)等;是计算机安全领域中论文被引用次数最多的学者(AMinerAward)。



针对上文人们对于“安全”定义的感官撕裂,作为安全教母,Dawn Song和她的团队不久前发表了一篇博文,力求拨乱反正,让开发者真正了解区块链安全的本质


下面我们就一起跟着Dawn Song教授和她的团队,一起看看她的思考。原文虽然只有短短2000来字,却一语道破了区块链安全面临的尴尬处境


以下为原文。


安全是计算机科学体系中老生常谈的一个话题,尤其在区块链领域中。当一个项目大肆宣传安全性时,它提供了怎样的安全保证呢?换句话说,现有的区块链是否在核心的安全性方面仍存然很欠缺


要回答这些问题,首先我们需要清晰地定义什么是安全性。


在这篇文章中,我们主要讨论以下3个话题

  • 当前区块链的安全性;

  • 为什么说保密性和隐私性是当前区块链最核心但也是最欠缺的属性,以及,

  • 我们该如何来完善区块链。



安全性的经典定义


在安全性的经典定义中,我们假设 Alice 和 Bob 想要共同运行程序 f(x,y)。该程序的输入是保密的:其中 Alice 仅知道 x , Bob 仅知道 y 。


这里的挑战在于 Alice 和 Bob 都希望在不让对方知晓自己输入数据的情况下得到计算的结果。 


如果我们有一个想象中的可信第三方( Trusted Third Party,TTP )存在,这个问题就会简单地多,这个可信第三方会同时接收 Alice Bob 的输入数据,诚实地执行该程序,并可靠地向双方返回计算结果。


除了这些操作之外,这个可信第三方不会做任何其他事情,特别是,可信第三方不会告诉别人任何有关 x y 的信息。

 

Alice 和 Bob 在可信第三方(TTP)的帮助下使用保密的输入运行程序 f(x,y)


所以,定义协议安全性的一种方法,就是将其与这个可信第三方进行比较。上述可信第三方定义的安全性具有以下三个关键属性(有时它们被称为 CIA 属性):



  • 保密性( Confidentiality ):Alice 和 Bob 除了各自的输入数据和计算的结果之外,得不到任何有关计算的信息;

  • 诚实性( Integrity ):可信第三方返回的结果是程序 f(x,y) 在给定输入下的正确计算;

  • 可用性( Availability ):Alice 和 Bob 可以随时访问这个可信第三方。


但在现实世界中是否真的存在我们想象中的可信第三方呢?事实上,并不存在


但如果我们做出一些具体的假设,就可以近似得到一些可信第三方。比如说,银行和政府部门的声誉、社会地位以及其他相关因素,让许多人将他们视为可信第三方。


另一方面,智能合约是在不需要信任中心化实体的情况下实现可信第三方的核心手段。但智能合约并不是万能的,在有些情况下,智能合约面对某些情况也无能无力



智能合约的短板


当人们谈论比特币和以太坊的安全性时,实际上他们只是在谈论区块链的诚实性( integrity  )和可用性( availability ),而不是保密性( confidentiality  )和隐私性( privacy )。


比如说,以太坊拥有一个由数千个节点组成的区块链网络,每个节点都独立维护着以太坊区块链的完整备份。当你通过以太坊网络上的某一账户执行智能合约时,在智能合约被记录在区块链中之前,它的执行将被所有挖矿节点验证。


因此,如果大多数的哈希算力都由遵守以太坊协议的诚实节点掌控,那么你智能合约的运行结果将会是正确的,这种正确计算实现了区块链的诚实性。


以太坊网络还提供了一些可用性保证:与中心化实体(多台服务器可能位于同一个数据中心中)不同,以太坊网络的“服务器”去中心化地分布在世界各地。因此,虽然说某些节点可能会因为某些突发情况宕机,但所有节点同时宕机的情况不太可能发生。


但以太坊和许多其他区块链项目缺乏的都是保密性和隐私性


人们通常都对区块链存在一个错误的认识,就是说因为参与到区块链网络中不需要提供姓名和身份证号,所以它是隐私的。不幸的是,这是一种极具误导性甚至是危险性的谬论


仅仅因为人们使用假名并不意味着他们在区块链上的活动是不可见的。实际上,由于交易活动中的每一个数据(例如在以太坊上:交易双方的地址,交易金额,燃料价格等信息)都被记录在公共账本之上并向所有人公开,因此有一些方法可以用来推断出用户的隐私信息(就比如说,使用交易网络结构来检索明文交易信息)。


此外,随着越来越多复杂的去中心化应用程序的上线,用户的数据逐渐成为信用评分,保险业务和身份管理等去中心化应用的重要推动力,而在以太坊上,智能合约的输入数据需要被保存在区块链上并向所有人公开,因为只有这样所有节点才可以执行交易的验证。


在过去的几年中,许多加密货币项目试图通过使用诸如零知识证明之类的密码学技术来解决区块链上数据保密性不足的问题。但其中许多项目都聚焦于简单的支付交易,而不是像机器学习和数据分析这类更为复杂的应用



数据隐私性如何实现?


上文中提到的保密性是实现数据隐私性的重要先决条件,但需要指出的一点是保密性通常不足以实现数据的隐私性。


具体而言,保密性侧重于保护在计算过程中不泄漏敏感信息,它保证除了计算的输出之外,计算过程中不会泄露任何内容。但是它并没有解决计算输出中存在的潜在数据泄漏


换句话说,即使有完全保密的计算过程,攻击者仍可能会从其输出中复原出有关敏感输入的信息。


再回到上文中提到的 Alice 和 Bob 的例子,保密性意味着 Alice 和 Bob 只能得到计算的结果 f(x,y) ,而攻击者什么都得不到。 除此之外,数据的隐私性还要求,不能从计算结果 f(x,y) 中复原出 x 和/或 y 。


一个简单的反例是 f(x,y)= x + y ,其中 Alice (知道她的输入 x )可以在给定结果 x + y 的情况下立即推算出 Bob 的输入 y 。举一个我们最近和Google一起研究的例子,机器学习模型可能会泄漏出训练数据中的敏感信息。我们将那些不会通过计算结果泄漏出输入数据的计算称为隐私性的计算例如,差分隐私( Differential Privacy ,  DP )是实现隐私性计算的一种方法


那么区块链上的数据隐私性该如何实现呢?一个想法是,在区块链上构建一个隐私第一的云计算平台。为了实现数据的隐私性,开发者可以在云计算平台的每一层都建立了隐私保护措施,在计算层中启用了保密性措施保护智能合约的执行,以防止在计算过程中泄漏任何敏感信息,并在应用层中实现了隐私保护的数据分析和机器学习,包括差分隐私,以防止在计算输出中泄露敏感的输入信息。


关于这一点,Oasis Labs专门设计了一种新的区块链架构,以实现具有高可扩展性的去中心化信任。


关于此架构,营长会在团队下一次更新时,一并奉献给大家。




 — END —

扫码报名 | 免费技术公开课

技术架构 | 应用架构 | 安全 | 隐私



推荐阅读:


点击“阅读原文”,打开 APP 获取更多干货哟!


好文!点好看」哟~
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/29914
 
238 次点击