加密货币隐私

在本文的框架中,我们试图回答什么是机密性以及如何在比特币和其他数字货币中实现机密性的问题。 此外,在这里您将了解实现机密性的特定机制,以及它们在实践中的应用方式。 对于直接使用加密货币的人以及对提高用户隐私级别的协议爱好者来说,该主题将很有趣。

让我们定义术语


机密性(隐私)以及如何确保机密性的话题非常多。 最好在了解基本定义的基础上开始研究它。

隐私的概念包括两个主要部分:不可追溯性和匿名性。 不可追踪性或不可追踪性意味着无法将一组活动分配给网络上的某些用户。 匿名或匿名与无法在该网络上可靠地建立用户身份有关。

比特币默认隐私


比特币具有匿名属性,但在实践中很容易丢失。 不能完全实现的不可追溯性。 我们可以分析交易图并得出结论,它们涉及某些匿名钱包。 如果至少一个地址因匿名而受到损害,则可以确定某些人的参与。 比特币钱包的最简单实现只能提供最低级别的隐私。

例如,对于每次收款或找零,用户都会创建一个新地址。 在这种情况下,分析交易图的审核员不能再可靠地关联与用户操作及其之间的货币分配有关的特定事实。 但是即使在这种情况下,隐私也不像看起来那样可靠。

通常在比特币网络上,您的隐私取决于对抗代理。 接受付款的人知道硬币的起源历史,而发送硬币的人知道他将硬币发送到哪里。 此外,还有一系列元数据可供外部人员使用:交易的性质,有关钱包的数据,有关用户位置的数据等。

首先应隐藏哪种交易数据,以确保最大程度的机密性? 其中包括与可互换性或可替代性有关的硬币原产地数据。 这对于任何金钱和贵重物品来说都非常重要。 在比特币协议的级别上,提供了此属性(所有硬币都是相同的,并且处理它们的规则对于每个人都是公用的),但是在实践中,容易互换性。 例如,一些商人可以分析接受的硬币的起源的历史,如果引起怀疑,则拒绝付款。

隐藏的下一件有意义的事情是交易主体中的传输总和,发送方和接收方地址。 隐藏用户的网络地址也很重要,这通常是通过使用诸如Freenet,TOR和I2P之类的协议的darknet来实现的。 如何隐藏金额,历史记录和地址?

Coinjoin


混淆事务图的最简单方法称为CoinJoin。 我们将从他开始。 其本质是创建联合交易,结果,所发送硬币的来源变得模棱两可。 由创建共同交易的用户组成的小组,在该交易中同时进行多次付款。 也就是说,用户不需要创建单独的事务。

格雷戈里·麦克斯韦(Gregory Maxwell)于2013年在颇受欢迎的BitcoinTalk论坛上首次提出了这一想法。 从那时起,已经提出并开发了对该方法的许多修改。 他们每个人都改善了付款的某些特性。 让我们谈谈CoinJoin如何以其纯形式工作,然后,我们将研究其一些最有趣的修改。

CoinJoin如何运作


想象一个由三个用户组成的组,每个人都想在网上商店中购买商品(同时,每个人都有自己的商店)。

图片

他们为三个输入创建一个事务,每个用户一个,三个输出,每个在线商店一个。 此外,还有三个更改出口。 此外,所有输出在它们之间是随机混合的。 每个用户都会重新检查收到的交易并签署相应的条目。 如果成功,则认为交易正确,并传播到网络并收到确认。

CoinJoin和常规交易之间的区别


下图显示了常规交易图和CoinJoin交易之间的区别。

图片

上面是一个图表,其中每个事务都有一个或两个出口,而在事务下面已经有三个出口。 底部图更复杂,更难分析。 当CoinJoin在比特币钱包中投入实践后,便形成了一大群用户。 然后,交易可以具有数十个输入和输出(有时更多)。 在飞机上描绘的此类交易图将非常混乱。 经过一系列此类交易的硬币可能有成千上万种起源。 很难在所有选项中找到真正的选项。

Chaumian CoinJoin


我们来看一下名为Chaumian CoinJoin的CoinJoin修改。 同样的格雷戈里·麦克斯韦(Gregory Maxwell)提出了建议。 它使用集中式运算符并使用盲签名。 需要操作员执行输入和输出的混合,然后进行最终交易。 但是,由于盲目签名,操作员无法窃取硬币或违反混合机密性。

用户在将数据传输给操作员之前对其进行了预盲处理。 当操作员签署此数据时,他看不到实际内容。 签名的数据返回给用户,之后他消除了眼花and乱的内容,一切看起来都像是普通的电子签名。

在整个交易的形成过程中,用户和操作员之间如何进行交互? 每个用户预先准备一个入口,在该入口中花费属于他的硬币,一个地址用于接收找零,以及一个盲目的地址用于发送付款,此后,他将该数据组合成一个序列并将其传送给操作员。

操作员检查输入和付款金额,在输出地址上签名,并将签名返回给用户。 但是,操作员看不见用户想要向其发送付款的地址,因为他是盲目的。 此外,用户从输出地址中消除了盲目性,匿名重新连接到操作员,并向他发送了签名的输出地址。 反过来,操作员会检查自己是否确实用密钥在该地址上签名,并且已经拥有相应的输入,但是他不知道哪个输入对应于哪个输出。 在所有用户完成此类操作后,他们再次匿名重新连接到操作员,并在常规交易输入时提供确认硬币所有权的签名。 可以将完成的交易分发到网络进行确认。

在这种情况下,用户和操作员都无法在输出地址处对硬币进行匿名处理。 在正常情况下完成交易不超过一分钟。 用户交互应通过可用作TOR,I2P或Bitmessage的匿名数据网络进行。

用户中可能存在不道德的参与者,其目的是通过任何方式破坏创建共同交易的过程。 有可能的用户行为方案的完整列表,包括欺诈行为。 已经开发出许多保护机制来应对不利情况,这些保护机制使诚实用户能够保证最终交易的形成。 保护机制使用超时,跟踪未使用的输出等。有关所有方案和保护机制的更多详细信息,您可以分别熟悉自己。 现在考虑CoinJoin的下一个修改,称为CoinShuffle。

硬币洗牌


2014年提出了CoinShuffle的修改建议。 不再有中央操作员,这已成为一个优势。 用户独立地形成共同的交易,彼此通信。 但是,它们仍然不能违反混合输出地址的机密性。 该技术的另一个优点是,用户无需使用其他网络来匿名化流量,因为所有必需的属性都将使用参与者之间的一种P2P交互协议来实现。

在此,使用定向加密,其中使用一对密钥(公共和私有)。 该消息是使用公共密钥加密的,只有私有密钥的所有者才能解密它。 对于参与者之间的通信,使用了DiceMix协议,并且还提供了违反者的反对意见。

介绍CoinShuffle


让我们看看CoinShuffle的工作原理。

图片

想象一小群用户:狡猾的爱丽丝,明智的鲍勃,大胡子的查理和橙色的戴夫。 他们每个人在比特币区块链中分别有一个未使用的硬币,分别位于地址A,B,C和D。 每个人都想花费一枚硬币并隐藏其起源的历史。 为此,该组的每个成员分别找到应将硬币A,B,C或D发送到的地址,但不将此地址透露给其他成员。

进一步,它们各自生成用于定向加密的新密钥对,之后,组成员交换彼此打开以进行加密的密钥,并且用与未花费硬币对应的地址的私钥对新的公钥进行签名。 同样,参与者的所有消息都将在后续交互期间签名。 这是第一阶段。

图片

参会人员洗牌并排成一列。 爱丽丝将是第一个因为她狡猾的人,鲍勃是第二个,因为他很聪明,等等。现在爱丽丝接受A'并分别使用戴夫的公钥加密定向到戴夫的密码。 生成的密文爱丽丝再次加密,并针对查理。 该密文再次被加密,但是已经针对Bob。 爱丽丝将加密结果传递给鲍勃。 鲍勃用他的私钥解密消息。 然后,他拿B'加密并直接发送给Dave,然后发送给Charlie并添加到列表中。 他随机整理此列表,并将其传递给Charlie。 查理又用他的私钥解密列表项,将针对Dave加密的C'添加到列表中,并随机混合所有列表项。 清单被传送给戴夫,戴夫将其解密,接收用于发送硬币的开放地址数据,添加地址D',将其随机混合,并根据这些地址,已知的交易输入和金额形成一般交易。

图片

Dave将事务空白分配给该组的其余部分。 此外,每个人都仔细检查交易的输出是否具有所需的地址以及金额是否匹配。 如果一切顺利,则参与者将签署交易,确认其入口硬币的所有权。 参与者交换签名,如果交易收集了所有必要的签名,则可以将其分发到网络进行确认。

如果参与者之一开始偏离主要的交互方案,那么其他参与者可以共同分析交互的历史并从小组中删除违规者,以便在没有他们的情况下重复一切。 这是一个重要功能。

请注意,CoinShuffle的现成实现已经存在。 在实践中,它们甚至可以在几十个用户的组上有效地工作。 当前,某些移动钱包等比特币钱包有望集成该协议。

CoinJoin方法的缺点是什么?


显然,进行交易的链下交互存在很大的困难,即必须组织组的形成和参与者之间的交互。 但是一个更重要的缺点是,纯形式的CoinJoin无法隐藏转账金额。 结果,它很容易受到CoinJoin Sudoku分析的影响,该分析基于对交易输出总和的比较,并且使您能够在反复混淆后解开硬币的起源历史。 是的,可以解决此问题,例如,仅将某些金额用于事务输出值(0.1 VTS,1 VTS,10 VTS等),但这会带来其他困难和局限性。 因此,请考虑一种完全不同的方法来解决未清转账金额的问题-机密交易。

保密交易


机密交易(CT)方法的一个特点是,它完全隐藏了第三方在交易输入和输出处的实际金额。 每个人都可以验证所有输出的总和不超过所有输入的总和,这已经足以验证此事务。

这是通过使用零知识证明而实现的-零知识证明是秘密知识的密码证明,但没有公开后者。 为了证明输出的总和不超过输入的总和,使用了Petersen承诺,该承诺基于椭圆曲线上一组点的变换。 为了解决此方案中不受控制的硬币发行问题,必须在交易结束时提供使用允许金额的证明。 为了验证是否使用了不超过基点顺序的非负数,使用了所谓的范围证明。

一切都会很好,但是就计算资源而言,创建相同的范围证明非常昂贵。 另外,它们的体积很大。 从理论上讲,可以将机密交易集成到比特币协议中,但是由于交易量巨大,因此没有人急于这样做。 但是,已经有可以成功应用机密事务处理的会计系统。

进行机密交易


以下方法称为“环形机密事务”。 为了混淆硬币的起源历史,此处使用了环签名。 发送方在其交易的输入中不引用一个特定的输出(UTXO),而是一次引用多个。 此外,在环签名的帮助下,他证明自己拥有多个出口之一的硬币,但没有透露哪个出口。 因此,不可能明确地追踪硬币的起源历史。

以这种方式使用环签名最初是在CryptoNote协议中提出的,在此基础上,几种加密货币都可以工作。 环形机密事务使用CT。 它们使您可以创建具有许多输入和输出的交易,在该交易中不可能明确地跟踪每个输入的来源,转移的数量是隐藏的,并且不需要与其他用户进行交互来创建交易。

隐形地址


这种方法是一种用于秘密计算将要发送硬币的地址的技术。 彼得·托德(Peter Todd)首先描述了这个想法。 公用密钥用作用户标识符:如果要接受付款,则需要宣布您的公用密钥。

发件人使用他的密钥对和您的公共密钥来计算新的一次性公共密钥,该密钥已在交易中作为地址显示。 事实证明,只有发送者和接收者才能知道硬币的发送地址。 对于第三方观察者,无法在用户ID和事务输出处的地址之间建立连接。

实际应用


这些方法在实践中应用在哪里?

图片
Bitshares团队是第一个与Stealth Addresses结合实现CT的团队之一,不仅针对基础货币,而且还针对可在平台上发行的代币。 门罗币加密货币支持环签名和隐身地址,以确保高度的隐私。 在2017年1月,该团队实施了RingCT,并在2017年9月进行了更新,严格强制使用RingCT。 应该注意的是Mimblewimble协议,它使用CT的修改版本,目前正在积极开发中,但是稍后我们将对其进行讨论。

有一个ZeroLink项目,这是一个基于Chaumian CoinJoin技术创建机密钱包的框架。 值得注意的是,它可以在比特币中工作,而无需对协议本身进行任何更改。

让我们继续讨论常见问题。


-可以在比特币中使用隐形地址吗?

是的,您现在可以使用它们,不需要协议更新。 但是,为了对该功能进行更广泛的修改,必须严格指定计算顺序和数据格式,以便所有钱包都可以互相配合使用,并相应地将此功能添加到钱包本身。 Peter Todd已经创建了一个单独的BIP来介绍此规范,但是仍在考虑中。

-以最纯粹的形式将CoinJoin用于比特币是否有效?

不可以,它纯粹是无效的,因为这样的交易很容易根据转移的数量进行分析。另外,您可以为所有参与者使用相同的金额,同时避免可能窃取硬币或违反机密性的受信任的混频器。

-可以使用上述方法来确保以太坊,Ripple和Stellar等数字货币的机密性吗?

不,不是。以太坊,瑞波币和恒星币使用完全不同的交易模型和不同的代币结算方式,而这种方式无法应用于实现机密性。当然,您可以尝试人为地集成“隐身地址”或“机密事务”,但这在货币性能方面将极其无效。原因是在比特币中,会计基于未支出的输出(即UTXO),并且这些货币使用余额和帐户。

区块链在线加密货币隐私课程的其中一个讲座涵盖了该主题

Source: https://habr.com/ru/post/zh-CN415371/


All Articles