比特币网络结构:下图说明了比特币网络结构。运行比特币协议的网络节点可能包括(1)钱包、(2)矿工、(3)完整的块链数据库和(4)网络路由。钱包功能为用户提供比特币钱包服务。该功能控制了用户资金(BTC、比特币货币)的访问,包括管理私钥/公钥和地址、跟踪馀额、生成和签名交易。矿工功能瓦利约会新交易,附加到比特币块链上。完整的块链数据库功能可以维持所有比特币块的完整和最新的复印件。网络路由功能允许1个节点与其他节点通信。
威胁模型:在这项研究中,攻击者是对比特币智能手机钱包用户开始远程攻击的人和组织。攻击者认为(1)他们可以在公共通信道中拦截,修改或注入任何,修改或注入任何信息(2)他们遵守所有加密假设。例如,如果没有密钥,就不能解密加密信息(3)他们无法控制受害者的智能手机和比特币网络基础设施。本文研究了10种流行的比特币钱包应用程序,分别是Coinbase、BitcoinWallet、BlockchainWallet、Bitcoin..infoWallet、Leko、Mycoliem、Coiviral、NLS、BitPay和SimpleBitcoin。这项研究通过两项措施负责。首先,只使用手机作为受害者。次之,没有向公众分发恶意的比特币应用程序和库。本研究试图披露比特币钱包App的新安全漏洞和有效攻击,但这种破坏并没有加剧。
第一个安全漏洞是钱包App的比特币地址可能会泄露给攻击者。特殊是,BitcoinJ是比特币客户端库,已经运用于比特币钱包App(例如BitcoinWallet、Mycoliem)和比特币网络通信,泄露了比特币钱包用户的隐私。根据比特币标准,在SPV客户端(即比特币钱包应用程序)与比特币OMC(完整节点客户端)连接后,filterlsetup信息将发送给OMC。该消息用于指定比特币钱包用户对特定交易的兴趣。事实上,SPV客户通常被配置为对比特币钱包用户比特币地址交易的兴趣。这个消息有filter、nResultFektd和nTweak3个重要参数。filter自身便是1个地区Bloom过滤器,因此 OMC可以了解其所连接的比特币钱包应用程序的地址兴趣。将数据要素(例如用户的比特币地址)提供给不同的nResultFektdMurmurhash3哈希函数,设置Bloom过滤器。这些nResultFektdMurmurResult3哈希函数通过nResultNum×0xFBA4C795+nTweak初始化,nResultNum是哈希函数的索引(例如1st、2nd、3rd),nTweak是SPV客户端为过滤器选择的随机数。为了将数据项目(例如比特币地址)添加到过滤器中,该数据项目必须通过nResultFektd的哈希函数进行哈希处理,并根据位置或计算设置过滤器中的相应位置。例如,数据项目将使用2个不同的哈希函数添加到清洁的6位过滤器(值为00000),假设第1位和第2位哈希函数的结果分别为7(000111)和9(001001),将过滤器设定为00111(000111或001011)。
研究表明,为了防止攻击者通过拦截和分析纯文本filterlsetup信息,正确发现比特币钱包用户使用的所有比特币地址,BitcoinJ实现了两种安全机制。首先,由于Bloom过滤器的误报率,一些不属于用户的错误地址将被过滤器过滤。次之,只制作一次filterlsetup信息并将其传递到比特币OMC(如果与OMC的TCP连接成功),攻击者从一开始就无法监视SPV客户端的所有活动,就无法拦截filterlsetup信息。