计算机安全教母宋晓冬解密区块链的安全性

计算机安全教母宋晓冬解密区块链的安全性

 

在日常生活中,我们经常听到人们说“安全”这个词,在区块链领域这俩字更为普遍,也更为重要。但是当一个项目要求安全性时,它究竟为用户提供了什么保证呢?也许更重要的是,现有区块链领域是否存在安全缺失的问题?要回答这些问题,我们需要有一个更清晰的定义。在这篇文章中,我们旨在澄清目前区块链领域中对安全属性的误解,机密性和隐私性是如何成为一个关键的缺失特性,以及我们打算如何填补这一空白。

“安全”一词的古典定义

假设Alice和Bob想运行一个程序f(x,y),这个程序的输入是私有的:Alice知道x ,Bob知道y,现有的挑战在于,在不让其他人知道他们各自的机密输入的前提下,他们想要知道计算的结果。如果我们有一个(虚构的)可信第三方(TTP),它能够接受Alice和Bob的机密输入,忠实地执行程序,并可靠地返还结果,就可以实现这一点。这个可信任的第三方不会做任何超出规定范围的事情——特别是,它不会告诉其他人有关x和y的任何消息。

 

计算机安全教母宋晓冬解密区块链的安全性

 

Alice和Bob在可信的第三方(TTP)的帮助下使用机密输入计算f(x, y)

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

1. 机密性

Alice和Bob无法获得这个程序f(x, y)以外的内容(他们只能获得各自机密输入的内容)。

2. 完整性

来自可信第三方TTP的计算结果是对f(x, y)计算结果的正确评价。

3. 有效性

Alice和Bob可一直访问可信第三方TTP。

 

计算机安全教母宋晓冬解密区块链的安全性

 

其实,虚拟的可信第三方TTP在现实世界中并不存在。但如果我们做一些具体的假设,例如,许多人将银行和政府视为TTP,基于他们的声誉、社会地位和其他因素。另一方面,智能合约是一种实现TTP的一些关键程序的方法,而不需要信任中心化的实体组织的情况下——然而,重点是智能合约在违约情况下并不能实现这些关键程序。

智能合约在“安全”上缺失了什么?

当人们谈论比特币和以太坊的安全性时,他们实际上只是在谈论完整性和有效性,而不是机密性和隐私性。

例如,智能契约平台以太坊拥有一个由数千个节点组成的网络,每个节点运行以太坊区块链的完整副本。当你在以太坊网络上的某个地址执行一个智能合约时,它的执行在记录之前会被所有的挖矿节点验证。因此,如果大多数计算(哈希)能力是由诚实执行并遵循以太坊协议的节点控制的,那么你的智能契约评估将是正确的;这种正确性实现了完整性。

以太坊网络还提供了一些有效性保障:与中心化的实体组织(可能在单个数据中心拥有服务器)不同,以太坊网络分布在全球各地。因此,尽管某些节点的子节点可能会在任何时候退出,但不太可能每个节点都会退出。

但是,以太坊和其他许多区块链项目缺乏机密性和隐私性。

有一个常见的误区是,因为参与区块链网络不需要用户的姓名和社会保险号,它是私有的。不幸的是,这是一种误区,而且是一种非常危险的误解。人们使用假名并不意味着他们的链上活动是隐形的,不受监管的。事实上,由于每一个交易活动(在以太坊上:地址、金额、天然气价格等)都被记录并显示在公共账本上,因此可以推断出大量的信息,并在侵犯个人隐私的情况下使用(例如,使用交易网络结构来检索明文交易信息)。

此外,随着越来越复杂的DApps的开发,用户数据正慢慢成为信用评分、保险和身份管理等应用程序的重要燃料。在以太坊中,智能合约输入数据需要在区块链上公开,因为这是所有节点执行验证的方式。

在过去几年中,一些加密货币项目试图通过使用加密技术(如零知识证明)来解决数据机密性的缺乏问题。但其中很多项目只专注于简单的支付交易,而不是机器学习和数据分析能力等更复杂的应用。

如何实现数据隐私性?

上述机密属性是实现数据隐私的重要前提,但需要指出的是,对于数据隐私来说,只有机密性通常是不够的。具体来说,机密性关注的是保护计算过程以免泄露敏感信息。它保证除了计算输出额结果之外,不会透露任何有关计算过程的信息。但是,它并没有说明计算输出过程中可能出现的潜在的数据泄漏情况。换句话说,绝对保密的计算可能仍然会泄露其输出的机密信息。

可以回看上述列举的范例,机密性意味着Alice和Bob只知道结果f(x, y),而攻击者什么也不知道。 数据隐私性还要求,结果f(x, y)不能用来推断x或y或x和y。举一个简单的反例,f(x, y) = x+y,其中Alice(知道她的输入x)可以立即知道Bob的输入从而给出x+y的结果。举个现实的例子,我们最近的研究(与谷歌和UC Berkeley的合作者一起)表明,机器学习模型可以泄露他们所训练的敏感数据的信息。我们将那些通过计算结果不会泄漏机密输入的计算称为隐私保护。例如,差异隐私是实现这一点的一种机制。

在Oasis项目中,我们正在区块链上构建一个隐私性优先的云计算平台。为了实现数据隐私性,Oasis在平台的每一层都建立了隐私化程序。我们在计算层实现机密性智能合约执行,保护计算过程不泄露敏感信息;在应用层实现隐私保护数据分析和机器学习(包括差异隐私),保护计算输出结果不泄露有关输入的敏感信息。我们还设计和开发了一个新的区块链体系结构,以支持具有去中心化信任的高度扩展性。