在当今的加密技术中,隐私是一个非常重要的话题已经不是什么秘密了。无论是公司还是个人,都不希望自己的所有信息都发布在公开的区块链上,没有任何限制,被自己的政府、外国政府、家人、同事或者商业竞争对手随意阅读。
比特币最初是作为一种假名加密货币开发的。只要现实世界的身份不与比特币地址挂钩,它就可以保持隐藏。然而,由于比特币区块链的公共性质,人们很快就清楚,可以根据特定地址和交易的使用模式来筛选个人。此外,节点在广播事务时也会暴露自己的IP地址。
一个节点代表一个地址,一条边代表一个事务。
区块链中的隐私保护
事实上,比特币在设计之初也考虑了账户和交易的匿名性,因为整个比特币的账户地址几乎是无限的,每个人都可以随意创建钱包地址,这样你甚至可以用新的地址接收每一笔交易。但是由于区块链网络的开放性和可追溯性,你可能需要把这些分散的交易整合起来,做成一笔更大的交易,而这种多输入的交易一旦出现,我们就可以把这些源地址分成同一个账户,然后进一步追踪这些账户,这样就可以通过对整个交易网络的分析,得到很多相关的信息,交易金额也是公开的。我们还可以发现一些具体金额的交易线索。如果确认了对应地址的身份,就可以通过这些信息计算出更多的地址信息。另外,用于变更的变更地址也会带来信息暴露。比特币早期有一个bug,就是输出地址中,更改地址总是第一个。通过这个渐进的过程,我们可以揭开隐藏在比特币网络下的真实身份。
可见,比特币网络面临的隐私挑战还是很多的。可以说完全满足不了匿名的需求。此外,由于区块链交易全程可追溯,每笔资金的历史都可以查得一清二楚,相当于给比特币打上了烙印。
记录在区块链的交易数据的全球账本在网络中是公开的,任何攻击者都可以获取所有的交易信息,这使得交易者的隐私面临泄露的风险。攻击者通过分析整理账本中的数据,可以获取任意一个账户对应的所有交易,还可以分析出不同账户之间的交易关系图。
即使用户使用不同的账户进行交易,攻击者也可以使用地址聚类技术来分析属于同一用户的不同账户。而且,由于用户进行的每一笔比特币交易都会被永久记录在区块链中,一旦历史交易被点名(比如比特币交易所被黑客攻击,导致用户账户信息泄露),所有相关交易记录中的交易者身份信息都会被泄露。
此外,随着区块链交易逐渐应用到日常支付领域,攻击者可以利用链外信息猜测区块链账户的身份。比如对比用户的购物记录和比特币账户的支付记录,分析账户的身份信息。
对于基于数据分析的隐私窃取方法,目前已经出现了一些隐私保护机制。主要思想是在不影响区块链系统正常工作的情况下,隐藏公共数据中的部分信息,增加了数据分析的难度。其中,混合货币是一种广泛使用的隐私保护方法。目前比较典型的隐藏交易内容的隐私保护方案主要有Dash采用的混合货币技术、Monroe采用的环签名和秘密地址以及zcash采用的零知识证明,这些方案都集合了大量的密码学知识。
Monero(或XMR)是一种加密数字货币,注重私密性、匿名性和不可追踪性。因被网站或恶意程序利用CPU进行挖掘而受到广泛关注。但是门罗币真的找不到用户的身份,追踪交易吗?一组研究人员发现,尽管门罗币比比特币具有更强的隐私保护,但它仍然无法隐藏用户的身份。
在2017年2月修改代码之前,研究人员发现门罗币不是匿名的,是可以追踪的。前面的交易很容易识别,后面的交易比用户想象的简单。
门罗币的匿名性主要是通过其环签名技术实现的。17世纪,法国大臣们在训诫国王时,为了防止国王追查谁率先在书上签名,发明了环签法。所有名字排成一圈,自然掩盖了签名顺序,让出处无从追查。
和比特币一样,环签名算法使用基于哈希值的公钥和私钥模式。不同的是,环签名技术将交易发送方的公钥与另一个公钥混合,然后对信息进行签名,最后用接收方的私钥进行解密和验证。导致外界无法判断交易发起方的公钥是哪一个,从而使得Monroe Coin实现了隐藏交易发送方地址信息的功能,让外部攻击者看不到地址之间的关联。
秘密地址(隐藏地址)
先来看看门罗币使用的隐身地址技术,这是门罗币提供匿名保护的关键技术之一。
与比特币一个账户地址只有一对公钥和私钥不同,门罗币有两对密钥,可以理解为一对用于支付交易,一对用于查看交易。
支出键用于支付。这对密钥中的公钥用于参与后续的环交易和验证密钥图像的签名,而私钥用于创建密钥图像。它用于查看视图键。这对密钥中的公钥用于生成我们的一次性秘密地址,而私钥则由接收者用来扫描区块链以查看发送给他的交易。
门罗币的地址主要由上述两部分密钥的公钥组成,基本结构大致如下:
得到的地址是138位,十六进制转换后会得到95位的标准地址。
然后看一看隐形地址。其实它的中心思想很简单,就是用接收者view key的公钥计算出一个临时的一次性隐身地址,然后把资金送到这个地址。然后接收方在扫描区块链的时候,就可以用自己的view key取走这部分资金,而网络上的其他人不知道这笔交易是发给谁的,只有接收方知道,这样就保证了交易的匿名性。
秘密地址的公钥计算如下:
h代表门罗币使用的哈希算法,R是发送方选择的随机数,G代表椭圆曲线的基点。如果不知道,不如先看看ECC。毕竟这是区块链的基本密码学,公式中的A和B分别代表接收方的公开查看密钥和公开发送密钥。
在得到公钥P后,它会得到一个门罗币的地址,这是一个一次性的隐形密钥。
接下来,发送方计算另一个R=rG,然后将R封装到以P为目标的事务中,并将这个事务广播到链中。
这里,接收方一直在扫描链上的事务,对于每个事务,计算:
其中A是接收方的私有视图键。因为椭圆曲线对应的公私钥关系中A=aG,rA=raG=aR,所以当接收方发现P=P1时,就知道交易是发给自己的。因为对应的P1只能由接收方自己计算,除了他没有人知道交易的目标地址。
要使用此交易,接收方只需计算相应的私钥:
使用私钥对该交易中的资金进行签名以供使用。
可见收单端的压力还是比较大的,需要扫描全链条的交易,这也是目前门罗币业绩的一大瓶颈。
随后,开发者对门罗币进行了硬分叉,集成了RingCT环安全交易技术(RCT),利用密码学原理对门罗币的交易金额进行加密,也就是说没有人能够通过区块链追踪找到他们的具体地址信息和交易金额。升级成功后,RCT地址成为门罗币唯一的地址格式。
摘要
一般来说,隐私是密码学研究中最令人兴奋的领域之一。为了使其在现实世界中可用,仍有大量工作要做,以优化这些理论技术的效率。加密货币的优势在于为最新的隐私研究提供了直接的应用场景。令牌、智能合同和基础设施中使用的许多隐私技术是几年前才发明的。考虑到该领域的快速发展,隐私将继续成为加密项目设计中不可或缺的一部分。
(作者:Warp未来安全地带,内容来自链家的开放内容平台“德豪”;本文仅代表作者观点,不代表链家官方立场)