主页 > imtoken钱包app下载链接 > 关于区块链的事情——匿名和隐私

关于区块链的事情——匿名和隐私

imtoken钱包app下载链接 2023-04-15 06:17:48

首稿件发在了先知社区中,由于原创稿件,所以我在之后引用到自己的博客中
原文链接为 https://xz.aliyun.com/t/2874

一、简介

说到区块链,就不得不想到“币圈”里的那些东西。 说到数字货币,就不得不感叹数字货币的一大优势——匿名性。 对此,我将从以下四点入手,一一介绍“币圈”“匿名”的是非。

请跟随我下面的文章,一点一点地进入密码学和区块链,了解属于区块链的点点滴滴。

2. 比特币的匿名性 1 比特币地址和交易

众所周知,前段时间发生的全国高校勒索病毒就是希望利用比特币作为赎金。 为什么在这里使用比特币而不是在现实中直接转账? 这里我们可以提一下比特币匿名性的优点。

简单来说,比特币地址就是一个由字母和数字组成的26到34个字符的字符串,看起来有点像乱码。 通过区块链可以查到每个比特币地址的所有转账记录。 比特币地址是个人比特币账户,相当于你的银行卡号。 任何人都可以通过您的比特币地址将比特币转账给您。

比特币地址是比特币网络中的一个 ID 或帐号,用于接收比特币。 它是一串符号,以1或3开头,包含27到34个数字或字母(不包括0、I),例如:14qViLJfdGaP4EeHnDyJbEGQysnCpwn1gZ。 比特币地址来源于密码学中的公钥加密。 用户首先创建一个密钥对,其中包括一个私钥和一个从中导出的公钥。 进一步计算公钥可以得到比特币的地址; 而私钥本质上是一个随机数,用于比特币转账时的交易签名。 比特币交易中所说的消费,是指将之前一笔交易的比特币转移给比特币地址所标识的新主人。 爱丽丝向鲍勃转账比特币的一个典型场景是:爱丽丝创建一笔交易,她先用自己的私钥对其进行数字签名,表明她拥有要转账的比特币的所有权,同时发出锁定“声明”—— ——只有鲍勃的签名才能取出这个比特币。 然后交易作为区块链中许多区块的一部分发送到比特币网络。 从 Bob 的角度来看,他可以验证 Alice 确实拥有比特币的所有权,同时用他的签名来确认这是一笔发给他的收入支付。 以上就是比特币地址的密码学原理。

综合以上内容,不难发现,比特币所使用的“地址”并不是一个简单的开放易懂的地址。 相反,它使用密码学中的非对称加密算法。 这样做会将这些明文地址转换为更多匿名地址。 起到了混淆的作用,也让公众无法直接查看地址所属的用户。

具体来说,比特币地址是如何生成的? 它有什么特点? 首先,我们将解释比特币钱包地址的生成。

当用户加入区块链大家庭时,“地址”是必不可少的。

1、首先,用户会通过算法随机生成一个【私钥】,这个私钥一般为256bit。 由于私钥非常重要,用户也会妥善保管私钥。

2. 之后,我们将使用SECP256K1算法对私钥进行处理,生成【公钥】。 (SECP256K1是椭圆曲线算法,当知道“私钥”时,可以计算出“公钥”,但当知道“公钥”时,就不能反算出“私钥”。这是为了保证比特币算法基础的安全性。)

3、使用哈希算法RIPEMD160对公钥进行处理,得到【公钥哈希】。 (由于哈希函数的特性,这个算法也是不可逆的)

4、在“公钥哈希”头(对于比特币网络的公钥地址,这个字节为“0”)连接一个字节的地址版本号,然后对其进行两次SHA256运算,将结果转换为“公钥哈希”的前 4 个字节用作验证值,并连接在末尾。

5、将上一步的结果(定制版比特币)用BASE58编码,得到“钱包地址”。

具体格式可以参考文章神秘比特币地址详解

英文邮件性勒索比特币_比特币李笑比特币身价_比特币匿名性

由此我们得到下图。

比特币李笑比特币身价_比特币匿名性_英文邮件性勒索比特币

图片.png

虽然我们不知道交易双方的具体地址,但是我们有上面生成的字符串地址,也可以进行关联交易。

2 比特币半匿名

有兴趣的读者还发现,虽然比特币采用了非对称加密算法,但我的交易还是会被所有节点看到。 并且研究表明,比特币仍然可以使用那些看似随机组成的字符串来找到交易的发送方和接收方。可以参考

比特币的匿名性其实是有迹可循的。 找到“身份标记点”,轻松锁定目标

所以我们可以大胆的说,比特币是一种“半匿名”的数字货币。

除了匿名之外,每个地址的隐私几乎无法保证。 因为比特币的每一笔交易都会公开记录在区块链账本上,任何人都可以查看。 只要分析每个地址发生过的交易,就可以发现很多账户之间的关系。

比特币交易记录地址之间转移的货币数量,通常有一个或多个地址输入对应一个或多个地址输出。 例如:A要支付10个比特币给B,A有3个地址,每个地址有4个比特币(否则4+4+4是不够的)。 不仅如此,A向B转账时,A还需要找零。

比特币李笑比特币身价_比特币匿名性_英文邮件性勒索比特币

并且这笔交易会广播到所有节点并保存。 其他人可以据此推断出A的初始地址和变化后的地址之间的关系。 不管A经历了多少笔交易,产生了多少个地址。 那我只要系统里有所有的交易记录就可以找到你原来的A。

而下面,我们将针对这些半匿名性问题提出一些改进算法。

3. CoinJoin方案

CoinJoin的原理比较简单,就是将不同用户的多笔交易合并为一笔交易。

从这种混淆交易中,外人无法假设输入地址属于同一个人,也无法确定资金流向。 用户可以进行多次CoinJoin操作,进一步隐藏交易关系。

比特币匿名性_英文邮件性勒索比特币_比特币李笑比特币身价

比特币李笑比特币身价_比特币匿名性_英文邮件性勒索比特币

图片.png

上图是原始比特币转账交易的简化图。 下面介绍一下CoinJoin的具体方法。

比特币李笑比特币身价_比特币匿名性_英文邮件性勒索比特币

图片.png

CoinJoin 不需要改变比特币协议并且相对容易实现。 到目前为止,已经投入使用的解决方案大多采用中间服务器(大型比特币交易区的中间服务器),需要CoinJoin用户在服务器上注册,服务器聚合多个用户请求产生大额交易,并通过通过每个用户。 签名后,它被发布到比特币网络。 然而,事情并不完美。 虽然我们可以通过这种方式达到混淆的目的,但是中间服务器可以掌握所有用户的输入输出地址,用户的隐私对于这个服务器来说一目了然。 如果中间服务器遭到破坏,我们所有的信息都将公开。

(这就像密码学协议中讨论的是否选择CA解决方案,CA作为中间管理者,可以方便我们协议的实现,但CA会成为我们系统协议的漏洞。)

说到CoinJoin的思路,就应该说说它的具体协议算法——Coin Shuffle。

Coin Shuffle是一种去中心化的隐私功能,允许用户快速高效地与其他用户混合资金,混合后现有用户账户和新账户之间创建随机映射,从而实现完全匿名。

这里我只点一下混币的概念,具体的算法内容我会在以后的稿件中详细讲解。 可以参考混合货币的原论文。

4. Zcash 中的匿名性

Zcash 是一个去中心化的开源加密货币项目,通过使用高级密码技术提供交易隐私和可选的透明度。 Zcash 支付是在公共区块链上发布的,但交易发送者、接收者和交易金额都是保密的。

我们为什么要单独谈论 Zcash? 下面我们就来说说Zcash的特点。 从上面的文章我们知道,比特币的匿名性其实不是很好。 所以Zcash利用密码学中的“零知识证明”来增强交易的匿名性。

Zcash 使用称为 zk-SNARK 的零知识证明架构,由我们经验丰富的密码学家团队根据最近的突破开发。 该框架允许网络在不披露交易参与者或交易金额的情况下维护一个安全的账户余额分类账。 Zcash 交易的元数据是加密的,不是公开显示交易参与者和交易金额,而是使用 zk-SNARK 来证明没有人作弊或盗窃。

此外,除了极度追求隐私的匿名功能外,Zcash还可以进行公开透明的交易。 它的运作类似于比特币,而与比特币最大的区别在于Zcash为客户提供既透明的地址又可以选择私有地址。 当您需要隐藏账户中的资金时,您可以选择将Zcash发送到私人地址。 如果不需要隐藏交易资金,也可以选择将Zcash发送到透明地址完成交易。

下面我们将详细讲解Zcash涉及的密码学知识和协议内容。

零知识证明

英文邮件性勒索比特币_比特币匿名性_比特币李笑比特币身价

“零知识证明”在我看来是密码学一个非常有意义的发现。 简单来说,零知识证明就是证明者在不泄露任何有用信息的情况下,让验证者相信自己知道的秘密。 比如:A在北大读书,他想向B证明自己是这样的,但是又不想给B看他的录取通知书(比如录取通知书的照片太丑等等emmmmm),此时A用零知识证明可以达到这个目的。 零知识证明具备以下三个条件:

Zcash的零知识证明理论

上面我们已经介绍了零知识证明的具体内容,下面根据Zcash中的具体协议进行分析。

在比特币协议中,当 A 准备向 B 进行一笔交易时,就是“支票”。 然后B会生成一张新的等额“支票”,A中的支票会被销毁。 而这个过程会由矿工记账并发布到所有节点。

为了增强匿名性,Zcash 有两种地址:z-address 和 t-address。 其中,t地址为公开地址(如比特币中的地址)比特币匿名性,z地址为秘密地址。 这时,如果A想把支票转给B,会经过以下过程:

比特币李笑比特币身价_比特币匿名性_英文邮件性勒索比特币

图片.png

在具体的交易过程中,我们可以进行如下操作:

首先,我们将每个用户的私钥定义为 PK1、PK2....PKn。

然后我们定义n个检查Note1=(PK1, r1), Note2=(PK2, r2).....Noten=(PKn, rn)

为了达到匿名的效果,我们使用哈希函数对其进行压缩,使其不可逆。 H1=HASH(注1), H2=HASH(注2).......Hn=HASH(注1)

接着介绍废弃集合的概念:

发票清单废弃清单

H1=HASH(注1)

哈希(Z1)

H2=HASH(注2)

H3=HASH(注3)

英文邮件性勒索比特币_比特币李笑比特币身价_比特币匿名性

上面的列表表示我一共生成了n张支票,Z1是支票ID,废弃列表中的Z1表示我的第一张发票作废无用

当用户2要给用户4转支票时,用户2会选择一个随机数r4生成一张新的支票Note4=(PK4,r4)并将其密码传给用户4,然后用户2发送HASH(Z2)和HASH (注 4)到系统中的所有节点。 并得到如下形式:

发票清单废弃清单

H1=HASH(注1)

哈希(Z1)

H2=HASH(注2)

哈希(Z2)

H3=HASH(注3)

H4=HASH(注4)

这些过程由矿工保管。 因为资产只能有一份,所有矿工手里还有一份作废的清单。 爱丽丝想同时广播她的“发票代码”并将其输入失效列表。 发票代码也被加密。 所以矿工能看到的信息其实是这样的。 其中,Alice的支票是原始存在的,Alice的支票码r1和Bob的支票是Alice在交易过程中广播的。

比特币李笑比特币身价_比特币匿名性_英文邮件性勒索比特币

矿工可以获得的信息是相当有限的,但这并不影响矿工对交易有效性的判断。

判断逻辑很简单:矿工拿到A给的校验码Z1,在void列表中查找。 如果Z1已经存在于void列表中,则证明Z1对应的支票已经过期; 如果void列表中没有Z1,则证明Z1对应的check仍然有效。 此时矿工将Z1输入到失效列表中,将新生成的check输入到check list中。 因此比特币匿名性,记账的过程就是使原来的支票登记作废,存入现有支票的过程。

在这个过程中不难发现,矿工每笔交易能收到的只有发票代码和新发票,而这两个东西是加密的。 因此,矿工不知道转账的双方是谁,也不知道转账金额是多少。

Zcash 零知识证明具体算法

由于算法篇幅,我后续的文章会推导并列出算法的具体数学公式。 这是参考文件。 SNARKs 英文文档

零知识证明和 zkSNARKs

英文邮件性勒索比特币_比特币李笑比特币身价_比特币匿名性

5.最强门罗币

比特币李笑比特币身价_比特币匿名性_英文邮件性勒索比特币

门罗币

从我们上面看到的,匿名并不是那么容易实现的。 那么有没有真正可以匿名的数字货币呢? 让我们来看看门罗币的介绍。

门罗币的匿名性主要是通过其环签名技术实现的。 17世纪,法国的大臣们在向国王求情时,为了不让国王查出是谁签署了这封信,他们发明了一种循环签名法。 所有人的名字都排成一个圆圈。 签名序列自然是隐藏的,无法溯源。

匿名必须满足以下两点才算合格: 1. 收件人不可追踪; 2.无法追踪寄件人。 对于门罗来说,以下三点是满足他匿名性的关键。

环签名

当大家联名上书征求意见时,始作俑者是谁,外界又怎会难以猜测? 作者的名字可以写在一个圆圈里,每个名字在圈子里的地位似乎是平等的,所以很难猜出始作俑者是谁。 假设Alice向Bob发送5XMR(XMR为Monero),并设置混淆交易数为5,网络转账时会自动生成5笔5XMR的转账交易。 除了Alice发送给Bob的那笔交易外,其余4笔交易都是“诱饵交易”,用来欺骗外界的观察者,从而达到隐藏发送方的目的。

地址混淆

混淆地址的目的是打断输入地址和输出地址之间的联系,从而隐藏传输之间的关系。 每当发送方想要发起转账时,资金不会直接发送到接收方的地址,而是发送到系统生成的临时地址。

当 Alice 向 Bob 转账时,发送方 Alice 使用接收方 Bob 的公钥和私钥加上一些随机数生成一个唯一的一次性地址,系统将 5XMR 添加到这个临时地址中。 包括 Alice 和 Bob 在内的观察者可以看到这个临时地址,但他们不知道地址中的钱属于谁。 那么Bob怎么知道有人给他转了钱,又是怎么收到钱的呢? Bob 的钱包将使用私钥执行搜索功能,以检查区块链上的临时地址是否有他自己的钱。 当 Bob 的私钥(并且只有收款人 Bob 自己的私钥可以)识别他有权使用的临时地址时,这笔钱就可以花掉了。

戒指机密

Alice如何告诉区块链网络转账金额是5XMR? 在 RingCT 交易中,Alice 不会直接向网络公开 5XMR,而是提供一个数字 rct 作为交易金额输出。 rct=随机数+5(真实交易金额)。 随机数用于覆盖真实金额,由钱包自动生成。 网络可以使用这个 rct 值来验证交易输入等于交易输出金额,以确认没有伪造额外的门罗币。 但是,对于外部观察者来说,无法知道实际交易金额。

可以参考文章门罗币基础技术介绍

6.总结

区块链是当今时代的热门话题,对于我们信息安全研究人员来说,如何利用密码学领域的知识来加强区块链的安全性是我们需要研究的。 在这篇文章中,我从比特币到门罗币,从弱到强一步一步地分析了不同区块链应用的匿名性。 文章涉及到很多源码和英文文档的解读,所以部分长篇内容暂时无法呈现。 我将继续深入挖掘,为读者呈现更多精彩的区块链安全知识。

7.参考链接

文章是作者看了很多,自己思考后的总结。 文章也参考了一些文章的知识。 非常感谢你! !

有兴趣的话大家可以给我评论,技术无界限,欢迎多多讨论!