区块链上的隐私

品途商业评论
2024-05-06 19:17
145
前言:很多人比照特币及区块链有曲解,以为比特币处理了隐私的成绩,但其实不然,比特币是地下通明的账本。V神明晰地梳理了目前区块链隐私的几种处理方案,将来还有很远的路要走。很多人都认同区块链是一种弱小的技术。它们允许少量的交互被编码和施行,进步了牢靠性,消弭了与中心实体管理的进程有关的商业和政治风险,并增加了对信任的需求。它们创立了一个平台,来自不同公司甚至不同类型的使用顺序都可以一同运转,允许极端

前言:很多人比照特币及区块链有曲解,以为比特币处理了隐私的成绩,但其实不然,比特币是地下通明的账本。V神明晰地梳理了目前区块链隐私的几种处理方案,将来还有很远的路要走。

很多人都认同区块链是一种弱小的技术。它们允许少量的交互被编码和施行,进步了牢靠性,消弭了与中心实体管理的进程有关的商业和政治风险,并增加了对信任的需求。

它们创立了一个平台,来自不同公司甚至不同类型的使用顺序都可以一同运转,允许极端高效且无缝的交互,并留下审计跟踪,任何人都可以反省,以确保一切的处置都是正确的。

但是,当我和其他公司议论如何在区块链上构建使用顺序时,总是会呈现两个次要成绩:可扩展性和隐私。

可扩展性是一个严重的成绩;以后的区块链每秒处置3-20个买卖,与运转主流领取零碎或金融市场所需的处置才能相差几个数量级,更不必说去中心化论坛或物联网的全球小额领取平台了。侥幸的是,是有处理办法的,正在积极地努力于施行道路图方案。

区块链的另一个次要成绩是隐私。虽然区块链的其他优势是诱人的,但无论是公司还是团体,都不热衷于将一切信息发布到公共数据库中,这些数据库可以不受限制地被本人的政府、本国政府、家人、同事和商业竞争对手随意阅读。

与扩展性不同的是,隐私的处理方案在某些状况下更容易完成(虽然在其他状况下要难得多),其中许多方案与以后存在的区块链兼容,但它们也不太令人称心。

要创立一种“圣杯”技术要难得多,它允许用户在区块链上完成他们如今可以做的一切,但同时也拥有隐私;相反,开发人员在许多状况下将不得不面对局部处理方案、启示法和机制,这些处理方案和机制旨在将隐私带到特定的使用顺序中。

圣杯

首先,让我们从“圣杯”技术开端,由于它们实践上提供了承诺,可以将恣意使用顺序转换为完全维护隐私的使用顺序,允许用户从区块链的平安性中受害,运用散布式的网络处置事务,对数据停止“加密”,虽然一切的事情都是地下可见,但信息的底层“含义”完全被混杂。

当然,掌握方向的最弱小的技术是密码平安混杂。普通来说,混杂是将任何顺序转化为顺序等效的“黑匣子”的一种方式,即顺序依然具有相反的“外部逻辑”,并且依然为相反的输出提供相反的输入,但不能够确定这个顺序外部运作的细节。

(把它想成是“加密”盒子外部的电线,使加密可以自行抵消,对输入最终没有影响,但是它的确会使你完全不能够看到外面发作了什么。)

不幸的是,相对完满的黑匣混杂在数学上已知是不能够; 现实证明,总是有一些蛛丝马迹可以从顺序中提取出来,经过提供输入和特定的输出集即可完成。

但是,我们可以满足的是一个较低的规范:不可区别性的混杂。从实质上说,给定运用该算法混杂的两个等效顺序(例如。X=(a+b)*c和X=(a*c)+(b*c)),无法确定哪个输入来自于哪个原始源。

要理解这关于我们的使用顺序来说是依然足够弱小的,请思索以下两个顺序:

1.y=0

2.y=sign (privkey,0) -sign(privkey,0)

一个只前往零,另一个运用外部包括的私钥抵消息停止加密签名,下一次执行相反的操作,从彼此减去(分明相反的)后果,并前往后果,该后果保证为零。

即便一个顺序只前往零,而另一个顺序前往包括并运用加密私钥,假如不可区分性可以满足,那么,两个混杂的顺序不能够区分开。

因而拥有混杂顺序的人一定无法提取私钥,否则,这将是区分这两个顺序的一种办法。这是一个相当弱小的混杂--大约两年来,我们曾经晓得如何做到这一点!

那么,我们该如何在区块链上运用这一点呢?这里有一个复杂的数字代币办法。我们创立一个包括私钥的混杂智能合约,并承受运用相应公钥加密的指令。

合约将帐户余额加密存储,假如合约想读取存储,则在外部对其停止解密,假如合约想写入存储,则在写入之前对所需后果停止加密。

假如有人想读取帐户的余额,那么他们会将恳求作为买卖停止编码,并在本人的机器上模仿它;混杂处置的智能合约代码将反省买卖的签名,以检查该用户能否有权读取余额,假如他们有权读取余额,则前往解密的余额;否则,代码将前往错误,用户将无法提取信息。

但是,与其他几种此类技术一样,也有一个成绩:这种混杂的机制效率极低。十亿美元的开支是正常的,甚至还是不够的;近期论文估量“在同一个cpu上执行[2位乘法]电路需求1.3 * 108多年。

此外,如要避免读写存储成为数据走漏向量,还必需设置合约,以便读写操作总是修正合同整个形态的很大一局部,这也是很大的一个开支。

最重要的是,当您在区块链上运转代码时,要无数百个节点运转代码,这可以很快就看到技术是如何运转的。不幸的是,这种技术不会很快改动任何事情。

退一步说

但是,虽然对平安模型有重要的妥协,但是有两个分支技术可以让你简直可以完成混杂效果。第一个是平安多方计算。平安多方计算允许顺序(及其形态)在N个当事方之间被联系,这样你就需求其中的M(例如,N=9,M=5)停止协作,以便完成计算,或许显示顺序或形态中的任何外部数据。

因而,假如你可以置信大少数参与者是老实的,那么该方案就像混杂一样好。假如你不能,那么它就毫无价值了。

平安多方计算面前的数学是复杂的,但比混杂要复杂得多。 SMPC 也比混杂更无效率,这一点你可以用它停止实践计算,但效率仍然很低。加法运算可以处置得相当快,但是每当SMPC实例执行一些十分小的固定数目的乘法运算时,它需求执行一个“降阶”步骤,触及从每个节点发送音讯到网络中的每个节点。

最近的任务将通讯开支从二次降低到线性,但即便是每一次乘法操作也会带来某种不可防止的网络延迟。

要求信任对参与者也是一项艰难的义务;请留意,与许多其他使用顺序一样,参与者有才能保管数据,然后将来任何工夫点都可以串通。此外,不能够晓得他们曾经做了这一点,因而不能够鼓励参与者维护零碎的隐私。

因而,与公共链相比,平安的多方计算能够更合适于公有区块链,在这种状况下,鼓励机制能够来自协议之外。

另一种具有很强特性的技术是零知识证明,特别是SNARKs的最新开展。零知识证明允许用户构建一个数学证明,当给定顺序在用户已知的一些(能够是隐藏的)输出上执行时,具有特定的(地下的)输入,同时还不泄漏任何其他信息。

有很多专门的零知识证明的类型是相当容易完成的;例如,您可以将数字签名看作一种零知识证明。你晓得私钥的值,当运用规范算法处置时,私钥可以转换为特定的公钥。ZK-SNARKs允许你为任何功用作出这样的证明。

首先,让我们经过一些案例来阐明。该技术的一个自然用例是身份零碎。例如,假定你想向零碎证明你是(i)某个国度的公民,并且(ii)超越19岁。

假定你的政府在技术上是提高的,并发行加密签名的数字护照,其中包括团体的姓名和出生日期以及公家和公共密钥。你需求构建一个功用,将护照中的私钥签名的数字护照和签名作为输出,假如(i)出生日期在1996年以前,(ii)护照与政府签署公钥,(iii)签名是正确的,否则输入0。

然后,您会做出一个零知识证明,标明您有一个输出,当经过此函数传递时,前往1,并用另一个你希望用于将来与此效劳交互的私钥签名证明。该效劳将验证证明,假如证明是正确的,它将承受你的私钥签名的音讯为无效。

你也可以用异样的方案来验证更复杂的说法,比方“我是这个国度的公民,我的身份证号码不在这套曾经被运用过的身份证号码中”,或许“我在从他们那里购置了价值至多10000美元的产品后失掉了一些商家的好评”,或许“我持有价值至多250000美元的资产”。该技术的另一类使用是数字Token一切权。为了树立一个无效的数字Token零碎,你不需求严厉地有可见的帐户和余额;现实上,你所需求的只是处理“双重领取”成绩的办法--假如你有100个单位的资产,你应该可以花这100个单元,但不是两次。

有了零知识证明,我们当然可以做到这一点;宣称你将为零知识证明的说法就像是“我晓得在这组账户中的一个账户面前的一个机密号码,而且它与任何曾经披露的机密号码都不婚配”。

此方案中的帐户成为一次性运用:每次发送资产时都创立一个“帐户”,并且发件人帐户被完全耗费。

假如你不想完全耗费一个给定的帐户,那么你必需创立两个帐户,一个由接纳人控制,另一个由发送人本人控制其他的“更改”。这实践上是ZCash的方案。关于触及单方的智能合约(例如,想一想像金融衍生合同在单方之间会谈),零知识证明的使用相当容易了解。当第一次协商合同时,不是创立一个包括实践公式的智能合约,该公式将最终释放资金 (例如,在二进制选项中,公式是“假如某个数据源释放的索引I大于X,将一切发送到A,否则将一切发送到B”),而是创立一个包括公式的哈希。

当合约终止时,任何一方都可以本人计算出A和B应该失掉的金额,并将后果和零知识证明一同提供,也就是有正确哈希的公式提供该后果。区块链可以查出A和B各投入了多少,以及它们失掉了多少,但不晓得它们为什么投入或失掉这个数额。

该该模型可以使用到N方智能合约,Hawk项目正试图做到这一点。从另一端开端:低技术办法

当试图在区块链上添加隐私时,另一条途径是从十分低技术的办法开端,除了复杂的哈希、加密和公钥加密之外,不运用密码。这是比特币从2009开端的路途;虽然它在理论中提供的隐私程度很难量化和限制,但它依然分明地提供了一些价值。比特币为添加隐私,最复杂的一步是,它运用一次性账户(相似zcash)来存储资金。就像zcash一样,每一笔买卖都必需全部清空一个或多个帐户,并创立一个或多个新帐户,建议用户为他们计划接纳资金的每个新帐户生成一个新的私钥(虽然有能够拥有具有相反私钥的多个帐户)。

这带来的次要益处是,用户的资金在默许状况下并不是互相关联的:假如你从源头A收到50个coin,历来源头B收到50个coin,其他用户就无法晓得这些资金属于同一团体。

此外,假如你将13个coin发送到其别人的帐户C上,从而创立了第四个帐户D,你将其中一个帐户中的剩余37个coin作为“余钱”发送,其他用户甚至无法分辨买卖的两个输入中的哪个是“领取”,哪个是“余钱”。

但是,有一个成绩。 假如在未来的任何时辰,你同时从两个账户停止买卖,那么你将不可撤销地“链接”这些账户,从而让大家很容易发现它们属于同一个用户。

而且,这些联络是传递性的:假如在任何时分,你将A和B衔接在一同,然后在任何其他工夫把A和C衔接在一同,那么你曾经发明了少量的证据 ,统计剖析可以将你的一切资产联络起来。

比特币开发人员Mike Hearn提出了一种缓解战略,该战略降低了发作这种状况的能够性,称为“兼并防止”:实质上,最大限制地增加经过在同一工夫破费账户链接在一同的次数。

这相对有协助,但即便如此,比特币零碎外部的隐私已被证明是高度多孔的和启示式的,间隔高质量的隐私保证有点远。一种更先进的技术叫做CoinJoin。 根本上,CoinJoin协议的任务原理如下:

1.N方聚集在一些匿名频道上,例如,Tor。它们各自提供目的地址D [1] ... D [N]。

2.其中一方创立一笔买卖,向每个目的地地址发送1个coin。

3.N方登记,然后辨别登录到该频道,并且每人向该收入账户提供1coin。

4.假如N 个coin被存入账户,它们被分配到目的地址,否则退还。

假如一切参与者都老实地提供1个coin,那么每团体都会投入1个coin,并取得1个coin,但没有人会晓得哪个输出映射到哪个输入。假如至多有一名参与者没有放入1个coin,则该进程将失败,1个coin将退还,一切参与者可以再次尝试。

Amir Taaki和Pablo Martin为比特币以及Gavin Wood和Vlad Gluhovsky为Ethereum施行了相似的算法。

到目前为止,我们只讨论了代币匿名化成绩。关于两方智能合约呢?在这里,我们运用与Hawk相反的机制,但我们用更复杂的密码经济学替代密码学--即“可审计计算”技巧。

参与者将资金发送到一个存储代码哈希的合约中。当触及发送资金时,任何一方都可以提交后果。另一方可以发送买卖来赞同后果,允许资金被发送出去,或许可以将实践代码发布到合同中,届时代码将正确运转和分配。

平安保证金可以用来鼓励各方老实参与。因而,零碎是公家的,只要在有争议时,才干将任何信息泄露到内部世界。

这种技术笼统化后被称为形态通道,并且在维护隐私方面也有可扩展性。

环签名

一种在技术上复杂度适中,但关于代币匿名化和身份辨认使用而言十分有出路的是环签名。环签名实质上是一个签名,证明签名者具有与特定公钥之一绝对应的私钥,但不泄漏哪一个。

关于这种数学运算的复杂解释是,环签名算法包括一个数学函数,该函数可以经过公钥正常计算,但在晓得私钥的状况下,你可以将种子添加到输出以生成输入,输入各种随心想要的值。

签名自身包括一个值列表,其中每个值都被设置为使用于前一个值的函数(加上一些种子);生成一个无效的签名需求运用私钥的知识来“闭环”,迫使你计算的最初一个值等于第一个值。

假如以这种方式生成无效的“环”,任何人都可以验证它的确是一个“环”,因而每个值都等于依据先前值加上给定种子计算的函数,但无法判别哪个环中的“链接”运用了一个私钥。

还有一个是环签名的晋级版本,被称为可链接的环签名。它添加了一个额定的属性:假如您运用相反的私钥签名两次,则可以检测到这一现实 - 但不会显示其他信息。

在代币匿名的状况下,使用顺序十分复杂:当用户想要花钱时,不是让他们提供惯例签名来直接证明其公钥的一切权,我们将公钥兼并为一组,然后用户只需复杂地证明该组的成员身份。

由于可链接性属性,在组中具有一个公钥的用户只能从该组中破费一次; 相抵触的签名会被回绝。

环签名也可以用于投票使用顺序:我们运用它们来验证投票,而不是运用环签名来验证一组代币的收入。

环签名也可以用于身份辨认顺序:假如你想证明你属于一组受权用户,而不泄漏哪一位,则环形签名十分合适这种状况。与复杂签名相比,环签名在数学上触及更多,但它们完成起来相当适用。

机密共享和加密

有时,区块链使用并不只是处理数字资产的传输,或许只是记载身份信息或处置智能合约,而是将其用于更多以数据为中心的使用:工夫戳、低价值数据存储、存在证明(或如证书撤销的状况下,证明不存在证据等)。一种罕见的反作用是运用区块链构建“用户控制本人的数据”的零碎的想法。

在这些状况下,有必要再次留意到区块链不能处理隐私成绩,它只是真实性的处理方案。因而,将医疗记载以明文方式放入区块链中是一个十分蹩脚的想法。

但是,它们可以与其他提供隐私的技术结合起来运用,以便为许多行业创立完好的处理方案,以完成预期的目的。区块链是供给商中立的平台,可以存储一些数据以提供真实性保证。

那么隐私维护技术是什么?关于复杂的数据存储(例如医疗记载),我们就可以运用最复杂,最陈旧的一种:加密!在区块链上哈希后的文档可以先被加密,所以即便数据存储在像IPFS上,只要拥有私钥的用户才干检查文档。

假如用户想授予其别人以解密方式检查某些特定记载的权益,但不是全部,则可以运用相似确定性钱包的东西来为每个文档派生不同的密钥。

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

隐私的将来

区块链中的隐私维护协议有两大应战。其中一个应战是统计学上的:为了使任何隐私保存方案在计算上适用,该方案只能在每次买卖时改动区块链形态的一小局部。但是,即便变卦的内容是隐私,也不可防止地存在一些元数据。

因而,统计剖析总是可以剖析出之间的联络;至多,他们将可以捕获买卖何时发作的形式,并且在很多状况下,他们将可以减少身份并找出谁与谁交互。

第二个应战是开发者体验应战。图灵齐备的区块链对开发人员来说效果很好,对去中心化的底层机制完全不理解的开发人员来说,它们十分敌对:它们创立了一个散布式的“世界计算机”,它们看起来就像一台中心化的计算机。

实践上,“看,开发者们,你可以编写任何想编写的代码,只不过是在这个底层上有一个新层,在下面开收回让各种去中心化使用。 ”

当然,笼统并不完满:买卖费用高,高延迟,gas和区块重组关于顺序员来说是新事物,但是妨碍并不是那么大。

就隐私而言,正如我们所看到的,没有什么魔力子弹。虽然有针对特定用例的局部处理方案,并且通常这些局部处理方案提供了高度的灵敏性,但它们提供的笼统与开发人员习气的笼统很不相反。

从“10行python脚本中删除发送人余额中的Xcoin并将Xcoin添加到接纳人的余额”改为“运用可链接的环签名停止高度匿名化数字代币”,这并不是那么复杂。

像Hawk这样的项目走出十分值得欢送的一步:它们提供了将恣意N方协议转换为零知识协议的承诺,只置信区块链的真实性,以及一个隐私特定方:实质上,结合中心化和去中心化两种方式的最佳选择。

我们能否进一步开展,创立出一个无需信任任何一方的隐私协议?这仍只是一个积极的研讨方向,我们只能等候,看看我们会走多远。

风险警示:蓝狐一切文章都不构成投资引荐,投资有风险,建议对项目停止深化调查,慎重做好本人的投资决策。

翻译|蓝狐笔记社群“Carlo”


评论区
登录 发表评论