Double-Spending Fast Payments in Bitcoin

Double-Spending Fast Payments in Bitcoin

Double-Spending Fast Payments in Bitcoin

摘要

  比特币是一个去中心化的支付系统,它依赖于工作量证明(PoW)来验证支付。如今,比特币越来越多地用于许多快速支付的场景,在这些场景中,货币和商品的交换时间很短(只有几秒钟的时间)。虽然比特币支付验证方案旨在防止重复消费,但我们的结果显示,该系统需要数十分钟来验证一笔交易,因此不适合快速支付。最近媒体报道了一个使用比特币的例子: 比特币在当地快餐店被用作一种快速支付形式。

  直到现在,快速比特币支付的安全性还没有得到研究。本文分析了使用比特币进行快速支付的安全性。我们表明,除非将适当的检测技术集成到当前的比特币实施中,否则对快速支付的双重支出攻击极有可能成功,并且可以以低成本实施。我们进一步表明,比特币开发商推荐的在快速支付中使用比特币的措施,并不总是能有效发现双重支付;我们表明,如果这些建议被整合到未来的比特币实施中,对比特币的双重支付攻击仍将是可能的。最后,我们提出并实现了对当前比特币实施的修改,以确保检测针对快速支付的双重支付攻击。

类别和主题描述符

c . 2.0[计算机通信网络]:概述——安全和保护。

常用术语

安全、测量和实验

关键词

比特币,双重支付,快速支付,对抗策略。

1.介绍

  比特币[22]于2008年首次推出,是一种新兴的数字货币,截至2011年9月,拥有约60,000名用户[1]。比特币目前被整合到多个业务中[2],并拥有多个交易市场(如[3])。还可以预见,比特币ATM机将被部署在全球各地[4],以弥合数字货币和现金之间的差距。
  比特币是一种基于工作证明(PoW)的货币,允许用户通过执行计算生成数字货币。用户通过对他们的交易进行数字签名来执行支付,并通过分布式时间戳服务[22]防止重复消费他们的硬币(即,将同一枚硬币签给两个不同的用户)。该服务在比特币对等网络(P2P)上运行,确保所有交易及其执行顺序对所有比特币用户可用。
  如今,比特币越来越多地用于许多“快速支付”场景,在这些场景中,货币和商品之间的交换时间很短。例如自动售货机支付和快餐支付(最近在比特币[5]的媒体报道中有报道),支付之后是快速(< 30秒)的货物交付。虽然基于比特币pow的时间戳机制对于检测双重消费攻击(即,对手试图使用她的一些硬币进行两次或多次支付)至关重要,但它需要数十分钟来验证交易,因此不适合快速支付。由于比特币用户是匿名的,并且用户(被鼓励)持有许多账户,在用户获得商品(如离开商店)或服务(如访问在线内容)后验证支付的价值是有限的。比特币的开发者含蓄地承认了快速支付验证的问题,并告知用户,只要交易已经在网络[6]上发布,他们就不需要等待支付验证;然而,这并不能解决这个问题,而只是限制了损害,因为系统仍然容易受到双重支出攻击。
  到目前为止,对比特币快速支付的双重支出攻击或其即时检测/或预防机制尚未被研究。在这项工作中,我们详细分析了在比特币快速支付中的双重支付攻击,并且表明,针对当前的比特币客户端双重支付攻击可以以很小的代价获得压倒性的概率成功,除非当前的比特币客户端中集成了适当的检测技术。我们进一步表明,比特币开发者推荐的检测措施并不总是能有效检测出双重支付。我们认为,即使这些建议被采纳,对比特币的双重支出攻击仍然是可能的。
 鉴于比特币的使用日益增加,对快速比特币支付的依赖预计只会增加。因此,我们认为,整合有效的技术来检测针对快速支付的双重支出攻击是必要的,因为这些攻击可能会严重影响比特币的可信度和经济地位。利用我们的发现,我们提议并实施了对当前比特币实施的修改,以确保检测针对快速支付的双重支出攻击.
  更具体地说,我们在本文中的贡献可以总结如下:
- 我们测量和分析确认比特币交易所需的时间。我们的分析表明,比特币的交易确认可以用一个移位的几何分布建模,平均交易确认时间为10分钟,标准差约为15分钟。我们认为,这阻碍了在处理快速支付场景时对交易确认的依赖。
- 我们彻底分析了针对比特币快速支付进行成功的双重支出攻击的条件。然后,我们展示了利用全球少数主机对比特币快速支付进行双重支出攻击的首次实现.我们根据经验探索和评估了一些检测针对比特币快速支付的双消费攻击的解决方案。我们表明,比特币开发者关于如何在快速支付场景中检测双重支出的建议并不总是有效的。利用我们的结果,我们提出并实现对现有比特币实施的修改,以检测双重支出攻击。

  论文的其余部分组织如下。在第2节中,我们将简要描述比特币。在第3节中,我们将回顾比特币支付的处理过程。在第4节中,我们分析和评估现有比特币客户端的快速支付的安全性。然后,我们评估可能的措施的安全性,以检测对比特币快速支付的双重支出。第六章,我们对相关工作进行了概述,并在第七章对本文进行了总结。

2.比特币的背景

  比特币是2008年推出的去中心化的P2P支付系统[22]。电子支付通过产生在比特币同行之间转移比特币(btc)的交易来执行。这些对等点通过虚拟的假名在每次交易中被引用——称为比特币地址。一般来说,每个对等点都有数百个不同的比特币地址,这些地址都由其(数字)钱包存储和管理。每个地址都通过一个转换函数映射到一个唯一的公钥/私钥对。这些密钥用于在地址之间转移比特币的所有权。
  对等体通过发行交易相互转移硬币。通过对该硬币最后使用的前一次交易的散列以及未来所有者的公钥进行数字签名,并将该签名结合到硬币中,形成交易[22]。任何对等体都可以通过检查签名链来验证比特币的真实性。
  交易包含在整个网络中传播的比特币区块中。为了防止同一个比特币被重复使用,比特币依赖于基于哈希的工作量证明(PoW)方案。比特币的对等方必须找到一个随机数值,该值在与其他字段(即所有有效和已接收事务的Merkle哈希、前一个块的哈希和时间戳)进行哈希运算时,结果低于给定的目标值。如果找到了这样一个随机数,对等体就会把它(以及其他字段)包含到一个新的块中,从而允许任何实体公开验证PoW。在成功生成一个块后,一个对等体通常被授予50个新的比特币。这为同行提供了持续支持比特币的动力。生成的块被转发给网络中的所有对等体,然后这些对等体可以通过验证哈希计算来检查其正确性。如果该块被认为是“有效的”,那么对等体将把它附加到他们之前接受的块上。由于每个区块都链接到之前生成的区块,比特币区块链会随着网络中新区块的生成而增长。例如,表1描述了比特币区块浏览器[8]中报告的比特币区块号80,000中包含的信息。
在这里插入图片描述
  比特币背后的主要机制是,如果对等体要加倍使用一个给定的比特币,他们就必须替换使用比特币的交易和相应的比特币出现的区块,否则他们的不当行为将立即被检测到。这意味着恶意的对等体在不被检测到的情况下重复花费一个比特币,他们不仅要重新计算花费比特币的区块所需的所有工作,而且还要重新计算链中所有后续的区块。这确保比特币网络能够对抗此类不当行为,只要网络中诚实的对等体的比例超过恶意串通的对等体[22]。关于比特币的更多细节可以在[9,10,22]中找到。在接下来的内容中,我们提供了一个总结(改编自[22]),它描述了当支付发生时,对等方在比特币中经历的步骤。
• 新的事务由网络中的对等体广播。
• 当一个对等体接收到一个新的事务时,它检查该事务是否正确地形成,以及比特币之前是否在区块链的一个块中花费过。如果事务是正确的,它将被本地存储在对等体的内存池中,直到它被包含在有效的块中。在本文中,我们通过零确认事务来引用对等体内存池中出现的事务。
• 对等体在创建新的区块的过程中。如果他们找到了一个解决工作量证明(PoW)的随机数,他们就把出现在内存池中的所有事务都包含在新形成的块中。对等体然后在网络中广播该块。包含在格式良好的锁中的交易称为“确认交易”。随着区块链的发展,修改/双重支付已确认的比特币交易变得越来越困难。
• 当对等体接收到新的块时,它们验证块散列是有效的,并且包括在该块中的每个事务先前没有被花费。如果块验证成功,对等体继续使用“前一块”字段中最后接受的块的散列来构建新块。

比特币中的支付验证

  比特币目前被用于慢速支付(如邮寄)和快速支付场景(即货币和服务之间的交换同时发生)。在本节中,我们将回顾并分析在这两个场景中如何处理比特币交易。

3.1慢速支付验证—交易确认

  如第2节所述,供应商V接受客户C付款的最常规、最安全的方式是,在向C提供服务之前,等待至少一个区块内确认从C向V发出的交易。请注意,比特币客户端可以通知V其交易是否已被确认。由于已确认的交易很可能被比特币网络中诚实的对等体接受,恶意客户端A在诱骗V接受不正确或双重花费的交易方面的优势可以忽略不计。
交易确认时间
  在接下来的内容中,我们将简要分析在比特币中确认给定交易所需的时间。比特币的设计是平均每10分钟产生一个区块。为此,构建块所需的工作难度会根据求解前面的块所需的时间进行动态调整。更具体地说,比特币要求要构建的块的散列值低于给定的目标值。该目标是根据求解之前2016区块所用的总时间进行插值的[11]。由于构建块的散列所需的字段也随着时间而变化(例如;时间戳、先前的块散列),所以在比特币中成功构建有效块的概率相对于试验次数几乎是恒定的。比特币被设计成平均每10分钟生成一个区块。为此,构造块所需的工作难度将根据解决前一个块所需的时间动态调整。更具体地说,比特币要求要构造的块的哈希值低于给定的目标值。这个目标是从解决之前的2016块[11]的总时间中插值出来的。由于构造块散列所需的字段也会随着时间(例如,时间戳,之前的块散列)而变化,因此在比特币中成功构造有效块的概率几乎与试验次数有关。
  为了测量现有比特币块的生成时间,我们创建了一个Python脚本,该脚本解析比特币的区块链,并提取连续块生成之间的时间间隔。我们的发现表明,虽然平均块生成时间约为10分钟(9分54秒),但测量的标准偏差约为881.24秒,相当于近15分钟5。因此,块生成时间之间有相当大的可变性。在图1中,我们描述了提取块的生成时间分布。如附录A所述,该分布可以用成功概率为0.19的移位几何分布来建模。我们的结果还显示,只有64%的块在不到10分钟的时间内生成。其余36%的块需要10到40分钟才能生成。
在这里插入图片描述

3.2快速支付验证—交易接收

  我们在第3.1节中的分析表明,确认交易所需的时间阻碍了许多业务的运营,这些业务的特点是服务时间快(即货币和货物的兑换时间少于一分钟)。因此,很明显,供应商,如超市、自动售货机、外卖店[13]、比特币销售点终端[14]等。,接受比特币支付时不能依赖交易确认。
  鉴于相当多的企业要求快速处理支付,比特币开发商鼓励供应商在收到来自网络的交易后,立即接受零确认的快速比特币支付,将正确数量的比特币转移到其一个地址。我们指出,这是供应商目前“验证”快速支付的唯一选项。请注意,供应商可以在他的钱包中搜索客户的交易,以验证其接收。这里的主要原理是,这构成了交易确实是在网络中传播的充分证据。我们强调,通常交易两个比特币对等体传播需要几秒钟(< 3秒钟).

4.快速比特币支付的安全性分析

  接下来,我们分析比特币快速支付的安全性。也就是说,我们专注于分析和实现针对比特币快速支付的双重支出攻击。

4.1攻击者模型

  我们的系统由一个恶意客户端a和一个供应商V组成,通过比特币网络连接。我们假设A不需要花费比特币就可以从V那里获得服务。更具体地说,A可以尝试将她已经转移给V的硬币进行二次消费。所谓二次消费,我们指的是A可以兑换并使用她支付给V的硬币,从而在其他地方获得不同的服务;在适当的情况下,我们还讨论了花费n个时间的同一货币(n > 2)来获取多种服务的影响。
 假设A知道V的比特币和IP地址。我们进一步假设A只能控制网络中的少数节点(它可以部署,因为比特币不限制成员资格),并且不访问V的密钥或机器。网络中剩余的对等体被认为是诚实的,并准确地遵循比特币协议。我们在这里指出,A和它的助手所利用的计算能力并不超过网络中所有诚实的同伴所聚集的计算能力。这可以防止A在比特币区块链中插入/确认不正确的区块。在本文中,我们考虑A不参与块生成过程的(最坏情况)场景。这也表明,当一个事务在一个块中被确认时,这个事务不能被a修改。
 与比特币的操作相一致,我们假设A每当与v通信时都会生成一个新的比特币地址。我们还假设A使用的地址集不足以识别A。这表明A的身份不太可能被披露,即使她在获得服务后的一段时间内可能会检测到她的不当行为。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页