区块链网站|NFTS Zcash(ZEC) 区块链上的隐私

区块链上的隐私

广告位

区块链上的隐私

区块链的隐私保护协议有两个挑战:一个是统计,第二个是开发者体验。

很多人对比特币和区块链有误解,以为比特币解决了隐私问题,其实不然。比特币是一个公开透明的账本。v明确梳理了目前区块链隐私的几种解决方案,未来还有很长的路要走。

许多人认为区块链是一项强大的技术。它们允许对大量交互进行编码和实现,提高可靠性,消除与中央实体管理的流程相关的商业和政治风险,并减少对信任的需求。

他们创建了一个平台,来自不同公司甚至不同类型的应用程序可以一起运行,允许极其高效和无缝的交互,并留下审计线索,任何人都可以检查以确保所有处理都是正确的。

然而,当我与其他公司谈论如何在区块链上构建应用程序时,总会遇到两个主要问题:可扩展性和隐私。

可伸缩性是一个严重的问题。目前的区块链每秒处理3-20笔交易,与运行主流支付系统或金融市场所需的处理能力相差几个数量级,更不用说去中心化的论坛或物联网的全球小额支付平台了。幸运的是,有一个解决办法,我们正在积极努力执行路线图计划。

区块链的另一个主要问题是隐私。尽管区块链的其他优势也很吸引人,但无论是公司还是个人都不热衷于将所有信息发布到公共数据库中,这些信息可以被本国政府、外国政府、家人、同事和商业竞争对手不受限制地自由阅读。

与可伸缩性不同,隐私解决方案在某些情况下更容易实现(尽管在其他情况下要困难得多)。它们中的许多与现有的区块链兼容,但是它们也不是非常令人满意。

创造一种“圣杯”技术要难得多,这种技术允许用户在区块链上做他们现在能做的一切,但同时又有隐私;相反,在许多情况下,开发人员将不得不面对部分解决方案、启发和机制,其目的是为特定应用程序带来隐私。

圣盘

首先,让我们从“圣杯”技术开始,因为它们实际上提供了将任何应用程序转换为具有完全隐私保护的应用程序的承诺,允许用户受益于区块链的安全性,使用分布式网络处理交易和“加密”数据。虽然一切都是公开可见的,但信息的潜在“意义”却完全混乱。

当然,把握方向最有力的技术是密码安全困惑。一般来说,混淆是将任何程序变成程序等价“黑盒”的一种方式,即程序仍然具有相同的“内部逻辑”,仍然为相同的输入提供相同的输出,但无法确定这个程序内部操作的细节。

(把它想象成“加密”盒子里面的电线,这样加密就可以自己抵消掉,最后对输出没有影响,但是它确实让你完全看不到里面发生了什么。)

不幸的是,绝对完美的黑盒混淆在数学上是不可能的;事实证明,总有一些线索可以从程序中提取出来,可以通过提供输出和一个特定的输入集来实现。

但是,我们能满足的是一个更低的标准:不可区分的混淆。本质上,给定两个被该算法混淆的等价程序(例如X=(a b)*c和X=(a*c) (b*c)),不可能确定哪个输出来自哪个原始源。

为了理解这对于我们的应用程序仍然足够强大,请考虑以下两个程序:

Y=0y=sign (privkey,0) -sign(privkey,0)一个只返回零,另一个使用内部私钥对消息进行加密和签名。下一次,做同样的操作,互相减去(明显相同的)结果,返回结果,保证为零。

即使一个程序只返回零,而另一个程序返回包含并使用加密的私钥,如果能满足不可区分性,那么这两个混淆的程序就无法区分。

所以,拥有混淆器的人是无法提取私钥的,否则,这将是一种区分两个程序的方法。这是一个相当强大的困惑——我们知道如何做已经有两年了!

那么,我们如何在区块链上使用它呢?这里有一个简单的数字令牌方法。我们用私钥创建一个令人困惑的智能契约,并接受指令用相应的公钥加密。

加密契约的账户余额,如果契约要读取存储,则在内部解密,如果契约要写入存储,则在写入之前加密所需的结果。

如果有人想要读取帐户的余额,那么他们会将请求编码为事务,并在自己的机器上模拟它;混淆的智能合约代码会检查交易的签名,看用户是否有权读取余额,如果有权读取余额,则返回解密后的余额;否则,代码将返回错误,用户将无法提取信息。

然而,像其他几种这样的技术一样,有一个问题:这种令人困惑的机制效率极低。几十亿美元很正常,甚至还不够;最近论文估计在同一个cpu上执行【2位乘法】电路需要1.3 * 108年以上。

另外,为了防止读写存储成为数据泄露向量,必须设置契约,使得读写操作总是修改契约整体状态的很大一部分,这也是一个很大的开销。

最重要的是,当你在区块链上运行代码时,应该有数百个节点在运行代码,这可以很快看到技术是如何工作的。不幸的是,这项技术不会很快改变任何事情。

退一步说

然而,尽管对安全模型有重要的妥协,但有两种分支技术可能会让您感到困惑。首先是安全多方计算。安全多方计算允许程序(及其状态)在N个参与方之间进行划分,因此您需要M(例如,N=9,M=5)个参与方进行合作,以便完成计算,或者显示程序或状态中的任何内部数据。

因此,如果你能相信大多数参与者是诚实的,那么这个方案就和混淆一样好。如果不能,那就一文不值。

安全多方计算背后的数学原理很复杂,但比混淆简单得多。SMPC也比混淆更有效,你实际上可以用它来计算,但效率仍然很低。加法运算可以非常快速地处理,但是每当SMPC实例执行一些非常小的固定数量的乘法运算时,它需要执行“降阶”步骤,这涉及到从网络中的每个节点向每个节点发送消息。

最近的工作已经将通信开销从二次降低到线性,但即使是每次乘法运算也会带来一些不可避免的网络延迟。

要求信任对参与者来说也是一项艰巨的任务;请注意,像许多其他应用程序一样,参与者有保存数据的能力,然后他们可以在未来的任何时间点进行勾结。另外,也不可能知道他们这样做了,所以不可能激励参与者去维护系统的隐私。

因此,与公链相比,安全多方计算可能更适合私有区块链。在这种情况下,激励机制可能来自协议之外。

另一个特点很强的技术是零知识证明,尤其是SNARKs的最新发展。知识的零证明允许用户构造一个数学证明,当给定的程序在用户已知的一些(可能隐藏的)输入上执行时,该数学证明具有特定的(公共的)输出,同时不暴露任何其他信息。

有许多类型的特殊零知识证明相当容易实现;例如,您可以将数字签名视为零知识证明。你知道私钥的值,在标准算法处理的时候可以转换成特定的公钥。ZK-斯纳克斯允许你对任何函数做这样的证明。

首先,我们通过一些案例来说明一下。这项技术的一个自然用例是身份系统。比如,假设你想向系统证明你是(I)某国公民,(ii)19岁以上。

假设您的政府技术先进,签发带有加密签名的数字护照,其中包括个人的姓名和出生日期以及私钥和公钥。您需要构建一个函数,将数字护照和由护照中的私钥签名的签名作为输入。如果(I)出生日期在1996年之前,(ii)护照签署了政府的公钥,(iii)签名是正确的,否则输出0。

然后,你会做一个零知识证明,证明你有输入。当通过此函数时,返回1并用另一个私钥对证明进行签名,您希望在将来与此服务进行交互时使用该私钥。该服务将验证证书,如果证书正确,它将接受由您的私钥签名的消息为有效。

你也可以用同样的方案来验证更复杂的陈述,比如“我是这个国家的公民,我的身份证号不在这套已经使用过的身份证号里”,或者“我从一些商家那里购买了价值至少1万美元的产品后,得到了他们的好评”,或者“我持有价值至少25万美元的资产”。

这项技术的另一个应用是数字令牌所有权。为了建立一个有效的数字令牌系统,你不需要严格地拥有可见的账户和余额;事实上,你需要的只是一个“双重支付”问题的解决方案——如果你有100个单位的资产,你应该能够花掉这100个单位,但不是两次。

零知识证明,我们当然可以做到这一点;你会有零知识证明的说法,就像“我知道这组账户中某个账户背后的一个秘密数,与任何一个已经公开的秘密数都不匹配”。

该方案中的账户变成一次性使用:每次发送资产时创建一个“账户”,发送者的账户被完全消耗。

如果你不想完全消费一个给定的账户,那么你必须创建两个账户,一个由接收者控制,另一个由发送者自己控制,用于剩余的“变化”。这其实是ZCash的计划。

对于涉及双方的智能合同(例如,想象金融衍生合同是双方协商的),零知识证明的应用相当容易理解。第一次谈判合同时,不要用一个实际的最终会释放资金的公式(例如,在二元期权中,公式是“如果一个数据源释放的指数I大于X,则全部发送给A,否则全部发送给B”)创建一个智能合同,而是用公式创建一个哈希。

合同终止时,任何一方都可以自己计算出A和B应该得到的金额,并将结果连同零知识证明一起提供,即哈希正确的公式提供结果。区块链可以查到A和B各自投了多少,拿了多少,但是不知道为什么投了或者拿了这个数额。

这个模型可以应用于N方智能合约,Hawk项目正在尝试这样做。

从另一端开始:低技术方法

当试图增加区块链的隐私时,另一种方法是从一种非常低技术含量的方法开始,除了简单的哈希、加密和公钥加密之外,不使用密码。这是2009年比特币的起步方式;虽然它在实践中提供的隐私级别很难量化和限制,但它显然仍然提供了一些价值。

比特币增加私密性最简单的一步就是使用一次性账户(类似于zcash)存储资金。就像zcash一样,每笔交易都必须完全清空一个或多个账户,并创建一个或多个新账户。建议用户为他们打算接收资金的每个新账户生成一个新的私钥(尽管可能有多个账户具有相同的私钥)。

这样做的主要好处是,默认情况下用户的资金是不相关的:如果你从A源收到50个币,从B源收到50个币,其他用户不会知道这些资金属于同一个人。

另外,如果你给别人的账户C发了13个币,从而创建了第四个账户D,你把其中一个账户里剩下的37个币作为“余钱”发出去,其他用户甚至分不清交易的两个输出哪个是“支付”,哪个是“余钱”。

但是,有一个问题。如果你在未来的任何时候同时从两个账户进行交易,那么你将不可撤销地“链接”这些账户,从而让所有人很容易发现它们属于同一个用户。

而且,这些联系是传递性的:如果在任何时候,你把A和B联系在一起,然后在其他任何时候把A和C联系起来,那么你就创造了很多证据,统计分析可以把你所有的资产联系起来。

比特币开发者迈克赫恩(Mike Hearn)提出了缓解策略,降低了这种情况发生的可能性。这被称为“避免合并”:本质上,通过同时花费账户来最小化连接在一起的次数。

这是绝对有帮助的,但即便如此,比特币系统内部的隐私已经被证明是高度漏洞和启发式的,离高质量的隐私保障有点远。

一种更先进的技术叫做CoinJoin。基本上,CoinJoin协议的工作方式如下:

n方聚集在一些匿名渠道,比如Tor。它们各自提供目的地址D [1] … D [N]。一方创建交易,并向每个目的地地址发送1枚硬币。n,然后分别登录渠道,每人提供1币到支出账户。如果有n个硬币存入帐户,它们被分配到目的地地址,否则将被退还。如果所有参与者都老老实实提供1个硬币,那么每个人都会投入1个硬币,得到1个硬币,但是没有人会知道哪个输入映射到哪个输出。如果至少有一个参与者没有投入1枚硬币,该过程将失败,1枚硬币将被退回,所有参与者可以再试一次。

Amir Taaki和Pablo Martin为比特币实现了类似的算法,Gavin Wood和Vlad Gluhovsky为以太坊实现了类似的算法。

到目前为止,我们只讨论了令牌的匿名性。双方的智能合约呢?在这里,我们使用与Hawk相同的机制,但是我们使用更简单的密码经济学而不是密码学——即“可审计计算”技术。

将参与者的资金发送到一个存储代码哈希的合同中。在发送资金时,任何一方都可以提交结果。另一方可以发送一个事务来同意结果,允许发送资金,或者可以将实际代码发布到合同中,此时代码将正确运行和分配。

保证金可以用来鼓励各方诚实参与。所以系统是私有的,只有发生纠纷的时候,任何信息都不能泄露给外界。

这种技术经过抽象后称为状态通道,在保护隐私方面也是可扩展的。

环签名

一种环签名,具有中等的技术复杂度,但在令牌匿名和身份认证应用中非常有前途。环本质上是一个签名,证明签名者有一个私钥对应于特定的公钥之一,但不透露是哪一个。

关于这个数学运算的简单解释就是环签名算法中包含了一个数学函数,可以通过公钥正常计算,但是有了私钥的知识,就可以在输入中加入种子生成输出,可以输出各种任意值。

签名本身包含一个值列表,其中每个值都被设置为应用于前一个值的函数(加上一些种子);生成有效的签名需要使用私钥的知识来“封闭循环”,迫使您计算的最后一个值等于第一个值。

如果这样生成了一个有效的“环”,任何人都可以验证它确实是一个“环”,那么每个值就等于从前一个值加上给定的种子计算出来的函数,但是无法分辨环中的哪个“环节”使用了私钥。

还有一种升级版的环签名,叫做可链接环签名。它增加了一个额外的属性:如果您用同一个私钥签名两次,这个事实可以被检测到——但是不会显示任何其他信息。

在匿名令牌的情况下,应用非常简单:当用户想要花钱时,我们不是要求他们提供常规签名来直接证明其公钥的所有权,而是将公钥组合成一个组,然后用户简单地证明该组的成员资格。

由于可链接性属性,在组中拥有公钥的用户只能从组中使用一次;冲突的签名将被拒绝。

环也可以用在投票应用中:我们不用环签名来验证一组代币的支付,而是用它们来验证投票。

环签名还可以用于身份识别程序:如果你想证明自己属于一组授权用户,而又不想透露是哪一组,那么环签名就非常适合这种情况。与简单签名相比,环签名涉及更多的数学知识,但实现起来相当实用。

秘密共享和加密

有时,区块链应用不仅仅是解决数字资产的传输,或者仅仅是记录身份信息或处理智能合同,而是用于更多以数据为中心的应用:时间戳、高价值数据存储、存在证明(或者,在证书撤销的情况下,证明没有证据等。).一个常见的副作用是使用区块链建立一个“用户控制他们自己的数据”的系统。

在这些情况下,有必要再次指出,区块链不能解决隐私问题,它只是真实性的解决方案。因此,将病历以明文形式放在区块链是一个非常糟糕的主意。

但是,它们可以与其他提供隐私的技术结合使用,以便为许多行业创建完整的解决方案来实现预期目标。区块链是一个厂商中立的平台,可以存储一些数据来提供真实性保证。

那么什么是隐私保护技术呢?对于简单的数据存储(比如病历),我们可以用最简单也是最古老的一种:加密!区块链上的哈希文档可以先加密,因此即使数据存储在IPFS上,也只有拥有私钥的用户才能查看文档。

如果用户希望授予其他人以解密形式查看某些特定记录的权利,但不是所有记录,他们可以使用类似确定性wallet的东西来为每个文档派生不同的密钥。

另一种有用的技术是秘密共享,它允许用户用可以合作的给定N个用户(例如,M=5,N=9)中的M个来解密数据。

隐私的未来

区块链的隐私保护协议面临两大挑战:

挑战之一是统计上的:为了使任何隐私保护方案在计算上可行,该方案每次交易时只能改变区块链状态的一小部分。但是,即使更改的内容是私有的,也不可避免地会有一些元数据。

所以统计分析总能分析出它们之间的关系;至少,他们将能够捕捉交易发生的模式,并且在许多情况下,他们将能够缩小他们的身份,并找出谁与谁交互。

第二个挑战是开发者体验挑战。图灵的《区块链全集》对开发人员来说效果很好,他们对根本不知道去中心化底层机制的开发人员非常友好:他们创造了一台分布式的“世界计算机”,他们看起来就像一台集中式的计算机。

事实上,“你看,开发者,你可以写任何你想写的代码,但是在这个底层上有一个新的层,在这个层上你可以开发和销售各种去中心化的应用。”

当然,抽象并不完美:高交易成本和高延迟。gas和block重组对于程序员来说是新鲜事物,但障碍并没有那么大。

就隐私而言,正如我们所见,没有什么灵丹妙药。尽管存在针对特定用例的部分解决方案,并且通常这些部分解决方案提供了高度的灵活性,但是它们提供的抽象与开发人员习惯的抽象有很大不同。

把“从发送者的余额中删除Xcoin,将Xcoin添加到接收者的余额中”从“10行python脚本”改成“对高度匿名的数字令牌使用可链接环签名”并不是那么简单。

像Hawk这样的项目已经迈出了非常受欢迎的一步:它们提供了将任何N方协议转换为零知识协议的承诺,只相信区块链的真实性,以及隐私特定方:本质上是集权和分权相结合的最佳选择。

我们是否可以在不信任任何一方的情况下,进一步开发和创建隐私协议?这还是一个积极的研究方向。我们只能等着看我们能走多远。

警告:蓝狐所有文章不构成投资推荐,投资有风险。建议对项目进行深入调查,谨慎做出自己的投资决定。

作者:维塔利克布特林

原地址:blog.ethereum.org

译者:蓝狐笔记社区“卡洛”等人翻译。

本文由@蓝狐笔记社区“Carlo”等人翻译发布。每个人都是产品经理。未经许可,禁止复制。

来自Unsplash的图像,基于CC0协议。

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/jzb/zec/31380.html
上一篇
下一篇

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部