BTC-匿名性

2023-10-27

Bitcoin and anonymity

比特币中不要求用真名,可以用公钥产生的地址,可以产生任意多的地址,用不同的地址干不同的事情。用的是化名,也被叫做pseudonymity。

一般来说,匿名性多与隐私保护相关。但实际上,比特币中的匿名并非真正的匿名,而是假的匿名。实际上,比特币与纸币相比,纸币的匿名性更好,因为其并没有对个人信息的标记。也正是因为其匿名性,很多非法交易采用现金交易(银行风控系统了解一下?)。但现金存在保管、运输等各个方面的不便。

实际上,比特币中的数据是完全公开的,而网上的交易是要与实体世界进行交易的,所以大大破坏了其匿名性。假如银行允许用假名(以前的存折时代),由于银行数据并非公开,所以银行系统的匿名性是要比比特币更好的。

BTC系统中什么情况会破坏其匿名性?
用户可以生成多个地址账户,但这些地址账户可以被关联起来
表面上看,每次交易可以更换公私钥对,从而每次都是新的账户,具有很强的匿名性。但实际上,这些账户在一定情况下,是可以被关联起来的。
例如下图,针对这样一个交易:
在这里插入图片描述

在图中可以看到该交易有2个输入和两个输出,所以addr1和addr2很可能是同一个人所持有的账户,因为该人同时拥有这两个私钥的地址。(一个账户中的钱可能不够)
而在输出中,很有可能有一个地址是属于找零钱的地址,即花掉之后剩余的钱。在某些情况下,也是可以分析出来的。
在这里插入图片描述

如上图,针对该交易,账户上面数字表示BTC,可以指导addr4很明显是找零钱的地址,而非addr3(支付6个比特币,单个账户不够用,所以用两个账户)。

地址账户与个人在真实社会中的身份也可能会产生关联。
任何使得BTC和实体世界中关联的操作都有可能泄露用户真实身份,其中最明显的就是资金的转入转出。要得到BTC,如果用钱买,就会与实体世界进行交互。想要将BTC转为现实中的货币,也同样需要与实体世界交互。
在很多国家,都有防洗钱法。如何防范不法分子采用BTC进行洗钱呢?其实很简单,只需要盯住资金转入转出链即可。对于大额资金转入BTC或将大量BTC转为现实货币,很难逃避司法金融机构的监管。

BTC支付时候
例如某些商家接受用BTC进行支付,例如可以用BTC购买咖啡、蛋糕等。(这种场景信用卡已经解决的很好了,用BTC交易延迟高,交易费贵,并非一个好的idea)
在进行支付时候,便和个人账户建立了联系,从而会泄露掉个人信息。
也就是说,BTC并不是具有很好的匿名信。实际中,很多人保持有较好的匿名性。保持最好的便是其开发者中本聪,其参与BTC时间最长,全世界都想知道他是谁。但实际上,中本聪的比特币并非有花出去,这也使得我们难以发现他具体是谁。

以前美国有一个skil road网站,也被叫做eBay for illegal drugs,主要用于匿名支付,采用各类可以躲避监管的方法(因为售卖的都是违禁品)。但运行没有几年就被查封,其老板当时赚取了许多比特币,从纸面上看,已经实现了小目标(一个亿)。但由于其担心被发现,这些钱实际中一个都不敢花,在美国仍然过的是非常简朴的生活(《人民的名义》赵德汉:“我一个都没敢花.”)。最终据说由于在同一电脑上登录现实社会账户和非法网站上账户,从而被抓(具体原因未公开)。
skil road被查封后,有人开通了skil road2,运行没有几年又被查封。

因此,可见互联网并非法外之地。如果想要干坏事,基本都能被查到。
中本聪为何能保持如此好的匿名性,因为在比特币走上正轨之后,他就功成身退消失了,这也是他到现在也没有泄露身份的原因。

  • BTC匿名性有多好?如何提高匿名性?
    匿名的本质是不想要暴露身份。而对于普通人来说,BTC的现有机制已经足够保持个人隐私了。但如果涉及违法,行政机关想要获得真实身份,其实很容易。

  • 那么可以采取哪些方法尽可能提高匿名性?
    从应用层看,可以将各个不同用户的BTC混合在一起,使得追查变得混乱(Coin mixing);从网络层看,可以采用多路径转发的方法,数据不直接发送出去,而是经过很多跳(洋葱路由的基本思想)。

实际上,暴露用户隐私正是由于区块链的公开性和不可篡改性。不可篡改性对于隐私保护,是灾难性的,因为一旦某一个交易不小心把身份暴露出去了,这个交易永久的写在区块链里,想抹掉都不能。

零知识证明

零知识证明:一方(证明者)向另一方(验证者)证明某一个陈述是正确的,但不需要透露除该陈述是正确的之外的任何信息。
例如:A想要向B证明某一账户属于A,这说明A知道该账户的私钥。但不可能通过A公布私钥的方法来证明,该账户确实属于A。因此,A可以产生一个账户签名,B通过公钥对签名进行验证。(实际上该证明是否属于零知识证明存在争议,因为泄露了用私钥产生的签名)

同态隐藏

零知识证明的数学基础便是同态隐藏。同态隐藏的三个性质。

  • 如果 x , y x,y x,y不同,那么它们的加密函数值 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)也不相同。说明如果有E(X)=E(y),则必然有x=y。(无碰撞)
  • 给定 E ( x ) E(x) E(x)的值,很难反推出 x x x的值。说明加密函数不可逆。知道加密值,无法反推出密码值。
  • 给定给你个 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)的值,我们可以很容易计算出某些关于 x , y x,y x,y的加密函数值。说明对加密后的函数值进行某些代数运算,等价于对输入直接进行代数运算再加密。
    • 同态加法:通过 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)计算出 E ( x + y ) E(x+y) E(x+y)的值
    • 同态乘法:通过 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)计算出 E ( x y ) E(xy) E(xy)的值
    • 扩展到多项式

例子:Alice想要向Bob证明她知道一组数 x 和 y x和y xy使得 x + y = 7 x+y=7 x+y=7,同时不让Bob知道 x 和 y x和y xy的具体数值。

简单的版本:

  1. Alice把 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)的数值发给Bob
  2. Bob通过收到的 E ( x ) 和 E ( y ) E(x)和E(y) E(x)E(y)计算出 E ( x + y ) E(x+y) E(x+y)的值
  3. Bob同时计算 E ( 7 ) E(7) E(7)的值,如果 E ( x + y ) = E ( 7 ) E(x+y)=E(7) E(x+y)=E(7),那么验证通过,否则验证失败。

盲签方法

  • 用户A提供SerialNum(货币编号),银行在不知道SerialNum的情况下返回签名Token,减少A的存款
  • 用户A把SerialNum和Token交给B完成交易
  • 用户B拿SerialNum和Token给银行验证,银行验证通过,增加B的存款
  • 银行无法把A和B联系起来。
  • 中心化。
    盲签名是一种特殊的数字签名技术。盲签名因签名的人看不到所签署文件的具体内容而闻名,它有两个显著的特点:一是签名者对消息的内容是不可见的 ;二是签名被公开后,签名者不能追踪签名。

零币和零钞

  • 零币和零钞在协议层就融合了匿名化处理,其匿名属性来自密码学保证。
  • 零币(zerocoin)系统中存在基础币和零币,通过基础币和零币的来回转换,消除就地址和新地址的关联性,其原理类似于混币服务。
  • 零钞(zerocash)系统使用zk-SNARKs协议,不依赖一种基础币,区块链中只记录交易的存在性和矿工用来验证系统正常运行所需要关键属性的证明。区块链上既不显示交易地址也不显示交易金额,所有交易通过零知识验证的方式进行。

零币在花费的时候,只需要用零知识证明来证明所花掉的币是系统中存在的某一个合法的币,但不用透露具体花掉的是系统中哪一个币。这样就破坏了关联性。
当然,这类货币并非主流加密货币,因为其为了设计匿名性,付出了一定代价,而且,需要强匿名性的用户并不多。

从数学上看,零币和零钞是安全的。但其并不是百分之百的匿名,其并未解决与系统外部实体发生交互时对匿名性的破坏。

参考来源:
https://www.bilibili.com/video/BV1Vt411X7JF?p=12
https://blog.csdn.net/Mu_Xiaoye/article/details/104439918

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BTC-匿名性 的相关文章

  • 在中国,把区块链玩得转的公司有这几家

    时下最火的Fintech 金融科技 非区块链莫属 区块链正在成为国家层面规划的重点领域之一 区块链可以简单理解为一个由所有参与者公共维护的账本 账本信息的公开使得所有参与者可以一起来校验记账的正确性 使得区块链成为所有参与者可以信任的载体
  • 关于区块链技术的3大特点,你都了解吗?--甲由

    跟着区块链技术的开展 全球引起了比特币的张狂影响 如果说互联网是信息的高速公路 那么区块链便是金钱的高速公路 它甚至可以加快人们通往财富之路的速度 那么 什么是区块链 区块链起源于中本聪的比特币 作为比特币的底层技术 本质上是一个去中心化的
  • 一个简易的区块链demo

    别人写的python版本 python版本源码地址 https github com dvf blockchain installation 环境准备 我使用的是ubuntu 16 04 其它linux版本也可以 需要安装python3 6
  • 【以太坊傻瓜教程】在私链上发布第一个合约

    以太坊傻瓜教程 在私链上发布第一个合约 教程简介 本教程将介绍如何编写合约 编译合约以及如何将合约发布到自己的私链上并调用 开发环境 本教程开发环境 操作系统 Windows10 Ethereum客户端 Windows版Geth 可以从这里
  • windows环境下部署以太坊私有链

    1 部署环境 1 Windows操作系统 window10 X64 2 以太坊客户端 geth windows amd64 1 8 3 329ac18e exe 3 以太坊钱包 Ethereum Wallet win64 0 9 3 zip
  • 【虾说区块链】4个概念解析区块链

    欢迎收听 虾说区块链 现在区块链这个概念在互联网上相当火热 这里简单做一个普及 不涉及项目推广投资 单纯地对区块链相关基础知识概念作一个说明讲解 本人区块链技术爱好者 结合相关区块链资料总结整理了 虾说区块链 也是自己一个学习笔记 涉及相关
  • 区块链+跨境支付的优势

    全球互联网的高速发展也带动了跨境电商的快速发展 跨境支付也瞬间成为第三方支付领域的一个风口 而将区块链技术应用在跨境支付领域也逐渐成为市场的热点需求 传统的跨境支付方式中间环节繁杂 费时又费力 而且跨境电商卖家在跨境支付环节 存在境外银行账
  • 《这就是区块链》之区块链基础(4)--去中心化概念

    如上图所示 在之前的3篇文章中 我们讲了区块链的加密系统以及区块链的链表结构 对区块链的 物理结构 有了初步的认识 但是 聪明的你肯定会想到 哈希算法和数字签名是互联网初期的产物 根本不是区块链特有的东西 对 如果区块链仅仅是哈希指针的话
  • BTC-协议

    防范 double spending attack Distribute consensus distributed hash table 分布式共识 FLP impossibility result 在一个异步的系统里 网络时延没有上限
  • 对话量子链创始人帅初:区块链发展目标是构建协同进化的生命体

    有人说 区块链没有春节 只有春天 2月17日 大年初二 Qtum量子链创始人帅初在社区分享了自己关于区块链的25个看法 涵盖了公有链技术演进 区块链项目估值模型 区块链领域投资机会 区块链技术未来畅想等方方面面 引发了热议 ETH最大的风险
  • 北京大学肖臻老师《区块链技术与应用》公开课笔记【03-BTC-数据结构】

    北大肖臻老师 区块链技术与应用 课程链接 点击这里 全系列文章链接 点击这里 主要补充内容及图片来源 区块链 技术驱动金融 该系列文章如中有任何侵权内容 或者有链接无法打开 图片加载上传失败等情况 请及时与我个人联系删除或修改 一 哈希指针
  • 以太坊虚拟机EVM的工作原理是怎样的

    以太坊虚拟机EVM的工作原理是怎样的 如果你打算尝试在以太坊区块链上开发智能合约 或者已经在该领域工作了一段时间 可能会遇到EVM一词 EMV是太坊虚拟机的缩写 虚拟机本质上是在执行代码和执行的机器之间创建一个抽象级别 需要这一层抽象来提高
  • 必看!区块链如何推动电商行业的发展?

    区块链技术被认为是第四次工业革命中最具颠覆性的创新技术 世界上还没有见过比区块链技术更强大的技术 它可能会对所有经济部门产生潜在的影响 给它们带来一流的效率 近些年来 区块链技术在金融服务行业 能源行业 物流行业 供应链管理行业 医疗行业等
  • 以太坊(二)——账户

    外部账户 Externally owned account EOA 本地产生一个公私钥对 私钥掌握账户的控制权 外部账户包括账户余额 balance 计数器 nonce 也叫普通账户 有对应的以太币余额 可发送交易 转币或触发合约代码 所有
  • 为什么区块链是互联网的100倍?

    区块链的本质究竟是什么 如果区块链只是一个简单的分布式账本 凭什么在全世界的所有国家 商业领域掀起一浪又一浪的轩然大波 而如此多的精英人士不顾一切的争相入场 假设比特币是第一张多米诺骨牌 区块链究竟翻倒了哪些牌 洗牌的底层逻辑又是什么 未来
  • 区块链系统面临哪些风险以及有哪些防范措施

    区块链是涉及多方的开放系统 早期的应用又与虚拟加密货币相关 由此使得区块链系统所内含的和面对的风险得以暴露 同时各种安全措施也得以被及时使用和验证 但区块链在真实世界的大规模应用尚未展开 因此区块链所内含以及面临的风险暴露尚不完全 预防措施
  • 区块链数据不可篡改的详细解释

    区块链数据不可篡改的详细解释 背景介绍 本人新人一枚 学习区块链的过程中 在网上看到了很多讨论区块链区块数据不可篡改的文章 以比特币为例哈 主要存在2种解释 解释1 由于哈希指针的存在 假设存在某节点修改的了当前区块数据 带来的后果就是其后
  • Ethereum架构的分析

    架构 1 顶层架构设计上 区块链可以简单的分为三个层次 协议层 扩展层和应用层 其中 协议层又可以分为存储层和网络层 它们相互独立但又不可分割 以太坊最上层的是DApp 它是整个区块链的展示层 通过Web3 js和智能合约层进行交换 如以太
  • 智能合约-Solidity官方文档(1)

    写在前面 HiBlock区块链社区成立了翻译小组 以太坊中文社区 翻译区块链相关的技术文档及资料 本文为solidity官方文档翻译的第一部分 智能合约概述 特发布出来邀请solidity爱好者 开发者做公开的审校 您可以添加微信baoba
  • 开发人员指南从以太坊迁移到 Solana

    这篇文章是关于什么的 以太坊是近期最重要的创新之一 历史上第一次 我们有了一个为社会协调而建立的去中心化全球平台 它有可能彻底改变许多行业 尽管重要 但以太坊的运行环境 以太坊虚拟机 EVM 目前的状态并不是为消费级应用而构建的 它是一个单

随机推荐

  • ORA-12638: 身份证明检索失败 的解决办法

    the NTS option makes the Oracle client attempt to use your current Windows domain credentials to authenticate you with t
  • 水星路由器设置成交换机

    修改LAN口就可以
  • 两个esp8266透传用法

    电赛校赛在5月末结束 写一下这残酷的心路历程 得了校一哈哈哈 应该的应该的 毕竟花的钱比别的组少 先讲一下小车通信模块WiFi 老师说我们小题大做了 可是学通信用蓝牙太屈才啦 找遍全网都是这样连 这是错的 困扰了我们好久 差点退货 RST跟
  • python中的模块和包

    文章目录 Python中的模块 模块的具体使用 Python中的包 Python中的模块 模块 module 模块化 模块化指将一个完整的程序分解为一个一个小的模块 通过将模块组合 来搭建出一个完整的程序 不采用模块化 统一将所有的代码编写
  • java 纯面向对象_为什么Java不是纯面向对象的编程语言?

    1 首先我们将了解什么是面向对象的语言 当我们谈论所有关于对象的事物时 即 基于对象的数据表示 基于对象的方法表示 2 Java不是纯面向对象的 这意味着我们可以用或不用对象来表示数据 即 不用对象就可以表示很少的数据意味着不需要对象 情况
  • QT常用界面设计组件----SpinBox

    控件简介 SpinBox用于整数的显示与输入 一般显示为十进制 也可以显示二进制和十六进制的数 而且可以在显示框增加前缀和后缀 QDoubleSpinBox用于浮点数的显示和输入 可以设置显示小数位数 也可以设置显示的前缀和后缀 它们都是Q
  • linux-修改主机名的正确方式

    序 面对大量服务器 我们希望每一台服务器都有自己的名字 这样便于使用和管理 修改主机名 就是修改下图中这个位置的名字 修改主机名的方法主要有临时生效和永久生效两种 1 临时生效 所谓临时生效 就是在服务器不重启的情况下 临时改变主机名 通过
  • Type Library

    Type Library A typelib stores information about a COM object The classid the interfaces that the object supports the met
  • 自定义异常(实现登录)

    目录 异常 在Java中 将程序执行过程中发生的不正常行为称为异常 为什么要自定义异常呢 实现异常 用户登录功能 前言 在写自定义异常之前 我们要先简单了解何为异常 为什么要自定义异常 异常 在Java中 将程序执行过程中发生的不正常行为称
  • UI和UI有什么不同,是如何协助的

    UX 用户体验 和UI 用户界面 是一个常用的术语 然而 尽管有复杂的联系 但网页设计的两个领域是两个不同的东西 事实上 有可能有一个用户界面优秀但用户体验差的网站 因此 了解UX和UI良好的网页设计非常重要 这里简要介绍一下 UX和UI它
  • 数据库的设计(E-R图,数据库模型图,三大范式)

    一 数据库设计的概念 数据库设计是将数据库中的数据实体及这些数据实体之间的关系 进行规划和结构化的过程 二 数据库设计的重要性 如果一个数据库没有进行一个良好的设计 那么这个数据库完成之后他的缺点是 1 效率会很低 2更新和检索数据时会出现
  • SpringMVC使用stringHttpMessageConverter

    SpringMVC使用stringHttpMessageConverter 场景演示 解决方法 场景演示 当使用 ReponseBody注解的时候 我们知道返回值会被转换成 Json格式 然而里面的中文可能会被转换成乱码 如下面代码中的 测
  • 18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题

    1 造成内存泄漏的原因 threadLocal是为了解决对象不能被多线程共享访问的问题 通过threadLocal set方法将对象实例保存在每个线程自己所拥有的threadLocalMap中 这样每个线程使用自己的对象实例 彼此不会影响达
  • 【笔记总结】C++面向对象三大特征(四大特征)

    C 面向对象的三大特征 四大特征 三大特征 封装 继承 多态 四大特征 抽象 封装 继承 多态 一 类和对象 什么是类 什么是对象 类和对象的区别 类是数据类型 是具有相同属性和服务的一组对象的集合 对一类对象的抽象就是类 对象即观察研究对
  • 转换vmware的vmdk格式为qcow2格式

    一 系统环境 操作系统 Win11 虚机系统 VMware Workstation 16 Pro 16 2 3 build 19376536 转换工具 qemu 8 0 2 二 下载安装qemu模拟器 查看qemu版本 Download Q
  • Python强大的内置模块collections

    1 模块说明 collections 是 Python 的一个内置模块 所谓内置模块的意思是指 Python 内部封装好的模块 无需安装即可直接使用 collections 包含了一些特殊的容器 针对 Python 内置的容器 例如 lis
  • C语言和指针数组有关的一些题目

    文章目录 一 一维数组的大小 二 字符数组 2 1 2 2 2 3 三 二维数组 四 指针笔试题 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 一 一维数组的大小 数组名的意义 1 sizeof 数组名 这里的数组名表示整
  • matlab数据过大,无法正常保存

    matlab存储数据时 存储不进mat文件 如下存在三个为1KB的文件 便是存储不成功的 这是因为对于过大的文件 大于2GB的变量 需要使用MAT file版本7 3或更高版本 解决方法如下 进入matlab 主页 点击 预设 按钮 选择
  • el-input和el-select的框的宽度设置成一致的。

    其实在el select的底层其实就是el input 只要将el select加一个属性 就是将其width设置为100 原因是什么呢 有待研究
  • BTC-匿名性

    Bitcoin and anonymity 比特币中不要求用真名 可以用公钥产生的地址 可以产生任意多的地址 用不同的地址干不同的事情 用的是化名 也被叫做pseudonymity 一般来说 匿名性多与隐私保护相关 但实际上 比特币中的匿名