硬件钱包安全吗?安全使用硬件钱包的九种方法
2019年底公布的统计数据显示,与2018年相比,美国比特币拥有者数量增长了81%。美国目前有3650万数字货币持有者。越来越多的人拥有数字货币,这使得"金钱的安全存放"特别重要。。当我们谈到钱的安全存放时,一个绕不开的话题就是硬件钱包。硬件钱包的安全性大致可以分为两部分:技术安全性。数字货币社区多年来一直在谈论这方面的安全问题,包括如何防御中间人攻击、物理攻击(旁路攻击)、供应链攻击等等。本文主要从技术角度研究如何防御这些攻击。第二块可以';即使是人为错误,也不能讨论。统计显示,至少有400万个比特币因人为错误而永远无法使用。如果我们关注比特币的发展历史,我们将看到许多改进(BIP)是为了避免人为错误。比如为了避免管理太多的私钥,创造了HDwallet例如,创建助记符是为了避免在保存主密钥和私钥的过程中出现人为错误。。本文将从技术安全和人为失误两个维度来讨论硬件钱包安全的九大改进点。离线硬件钱包的第一个功能是让你的私钥"离线"。如果您的私钥是"离线"黑客对硬件钱包进行远程攻击的可能性大大降低。但是为什么要引用"离线"这里吗?因为"离线"硬件钱包之间是不同的。具体来说,大部分硬件钱包在不使用的时候是完全离线的。。但一旦投入使用,大多数硬件钱包都会通过USB线或蓝牙连接到联网的手机或电脑上。虽然连接时间非常有限,但是"间接联网"这时是非常危险的。因此,"离网"其实是一个相对的概念。。"离线"就是配套App(比如LedgerLive)和硬件钱包之间的通信。目前主要有四种通信方式:——USB、蓝牙、二维码、TF卡。二维码和TF卡是比较好的方式。因为它建立的链接不是一个连续的通信连接,而且所有的通信数据都是透明的,可以被审查。从而将攻击面减小到最小。二维码和TF卡通信的另一个好处是,硬件钱包适配第三方钱包非常容易。因为双方只需要遵循相同的数据格式。不需要考虑USB和蓝牙的适应性。这也允许硬件钱包简单地扮演一个"签名者"。安全芯片海外社区一直在争论硬件钱包是否应该使用安全芯片。郑方认为,没有安全芯片就无法抵御物理攻击(旁路攻击)。反方认为安全芯片是黑匣子,不可信任。但是,安全芯片并不完全是黑匣子,安全芯片在一定程度上也是可验证的。如何验证安全芯片?社区似乎已经对安全芯片形成了多年的共识。——安全芯片不开源。。但实际上取决于硬件钱包厂商和安全芯片厂商的谈判能力。开源安全芯片的芯片设计和底层代码是很昂贵的,但是完全可以开源安全芯片的固件代码。在安全芯片固件开源之后,它允许用户验证这些密钥信息:如何从随机熵值生成助记符,然后生成主密钥和私钥。一旦生成私钥,私钥和公钥的所有私钥签名过程都发生在安全芯片中。从来不离开安全芯片,但还是有三个功能点用户可以';t通过查代码验证(这些功能都是安全芯片厂商在芯片设计或者底层代码中实现的):真随机数生成(TRNG)签名算法,比如ECDSA安全芯片如何防御物理攻击(旁路攻击),但是这三个功能点用户可以通过其他方式验证。真随机数生成。用户可以运行FIPS140-2来验证它的随机性。Trezor也做过相关测试。此外,在我们后来的产品更新中,将允许用户掷骰子来生成随机熵,然后生成助记符和私钥,从而"绕过"真随机数的功能,而且用户不需要信任安全芯片的真随机数发生器。签名算法如ECDSA,这部分的验证需要依靠一定的专业知识。我们可以提供安全芯片的开发板,供感兴趣的研究人员验证并公布相关结果。从硬件钱包的攻击历史可以看出安全芯片对物理攻击(旁路攻击)的防御。虽然不可能得出这样的结论"安全芯片可以抵御所有物理攻击(旁路攻击)",与一般的MCU相比,安全芯片对物理攻击(旁路攻击)的防御能力是远远超越的。此外,研究人员也可以向我们申请安全芯片的开发板。用于验证其对物理攻击(旁路攻击)的防御能力。综上所述,如果安全芯片实现固件开源,所有关键操作和安全性都可以验证或证明。。PSBT签署的硬币交易(PSBT)来自BIP174。从BIP174的官方文件可以看出,psbt主要有两种使用场景:混币。。混币可以帮助用户更好的保护自己的隐私,不容易被网上分析跟踪。跨硬件钱包的多重签名。PSBT相当于统一不同的硬件钱包,观察"交流语言"钱包之间。从而实现不同硬件的钱包之间的跨硬件多签名。。这样可以有效避免由"单点故障"某个硬件钱包。对于未来的硬件钱包,支持PSBT将成为必须的。。DIY硬件钱包DIY硬件钱包是很多极客玩家最大限度降低对硬件钱包厂商信任的终极方式。过去,硬件钱包允许用户主要通过以下方式进行DIY,开放硬件电路设计和所有代码,方便用户从零开始打造硬件钱包。但这种说法会带来两个问题:这种方式允许黑客以较低的成本制作一个假的硬件钱包,然后将假钱包卖出去或者进行供应链攻击。,从而偷走用户';数字资产。历史上也确实发生过类似的事件。这种方式要求用户';技术能力要求极高,并且用户需要同时具备软硬件研发能力才能完成DIY。更好的解决方案是向用户出售安全芯片开发板。这样一来,一是防止黑客通过钱包伪造攻击用户;其次,用户仅凭软件开发的能力,就可以用安全芯片开发板打造自己的硬件钱包。以上四个吊点主要是从技术安全的角度来阐述的。。最近在海外市场大火的硬件钱包ColdCard,在TF卡数据传输和PSBT支持两个方面引领了硬件钱包行业前进了一大步。但不幸的是,自硬件钱包诞生以来的这些年里,硬件钱包厂商往往把大部分注意力放在技术安全上。比如代码的健壮性,比如安全芯片的使用。整个行业很少关注"用户体验"硬件钱包。然而,通常是用户体验的缺点导致人为错误,从而造成金钱损失。今天硬件钱包不再是只有极客用户使用的产品,普通用户也开始使用硬件钱包。在设计硬件钱包时,也要考虑人为错误,创造更好的用户体验,避免用户损失金钱。在我们深入讨论人为错误之前需要强调的是"人为错误"是一个相对的概念,往往不能同时适用于普通用户和专业用户。有一些产品改进旨在"人为错误",可能会减少对专业用户钱包产品的定制。举个最简单的例子。面向专业用户';钱包,会允许用户手动选择UTXO,但是为了降低产品复杂度,避免普通用户的人为错误,应该放弃手动选择UTXO的功能。。下面详细介绍如何改进硬件钱包,以减少人为失误的概率,避免损失金钱。触摸大屏幕。相信用过目前主流硬件钱包的用户都体验过小按键小屏幕的糟糕体验。这种短暂的体验放大了用户人为失误的可能性。。从输入密码短语来看,由于小屏幕的显示效果较差,字符输入的体验也较差,所以现有的硬件钱包都是让用户只输入一次密码短语,这样一旦用户输入错误,,你可能会把钱转错地址,然后丢了。配合大屏,输入体验更好。在显示更完整的信息后,系统可以要求用户输入密码两次。如果输入匹配两次,就会进入隐藏钱包。如果输入不匹配,系统将报告错误。。从而避免人为错误。另外,大触摸屏也可以避开一些攻击面。比如说。收钱的时候可以直接给对方看你硬件钱包上收款地址的二维码。因为支撑App是联网的,其收币地址容易被攻击,所以大量的数字货币小时被收费。那时候直接用硬件钱包的收货地址比较安全。这些改进可能不会对专业用户构成威胁,但如上所述,越来越多的用户拥有数字货币,硬件钱包不再只是专业用户的专利。,你需要考虑普通用户的使用场景。防御开源的不可信固件代码对于去中心化的应用和产品来说极其重要,但是开源代码往往会带来新的攻击面。目前部分硬件钱包支持用户修改开源代码,编译成升级包。,然后刻录到硬件钱包里。这给了极客用户更多修改硬件钱包的空间,但也为黑客攻击打开了方便之门:黑客可以主动联系那些在线提问的小白用户。,诱骗小白用户安装被黑客篡改的固件升级包(即使升级过程中有提示,黑客还是有一定概率作弊成功),然后钱被盗。为了减少这种风险,任何商用版本的硬件钱包都应该只允许用户安装官方签署的固件升级包。。这样做并不意味着一定会伤害极客用户的用户体验。该产品的极客版本可以同时推出,允许用户自行定制固件上传。甚至产品出厂时没有工作固件,用户必须自己刻录才能正常使用产品。这样就避免了普通用户误买极客版产品,增加了自身的安全隐患。此外,允许用户替换硬件钱包中的验证升级包的公钥,以便用户';s手实现,只识别用户签名的固件升级包。。模块化电池因为我们每天使用的电子产品(尤其是手机)已经变得"快速消费品",用户一般1-2年换一次产品,所以电池的使用寿命一直没有太大问题。电池厂商一般都是按照1-2年的使用寿命来设计电池。。但是硬件钱包的使用场景和手机有很大不同。往往用户可能要存放几年甚至十几年。甚至有些用户把硬件钱包封在保险柜或银行保险箱里后,可能几个月甚至几年都不会操作。在这种情况下,为了避免电池泄漏损坏硬件钱包体,有必要将可拆卸电池模块化。同时普通干电池电源的支持,可以避免用户无法';关键时刻不要换钱,因为电池没电了,因为他们没有。几个月或几年没有操作硬件钱包。。手机配套App目前主流的硬件钱包主要以基于电脑的App作为配套App,如LedgerLive或Trezor'的基于网络的应用程序。但是相比手机App,电脑端的app会带来更大的风险敞口:手机端的app都是在沙盒环境下运行的。应用程序不允许相互读取数据。移动产品默认开启系统全局加密,电脑端往往不是这样。移动终端的用户权限通常受到严格限制。与计算机不同,用户甚至可以通过命令行工具绕过一些安全设置。除了以上三点,普通用户并不擅长辨别钓鱼链接。因此,普通用户在下载电脑端App时,更容易受到钓鱼攻击,下载错误的配套App软件。,造成金钱的损失。《精通比特币》的作者安德烈亚斯安东诺普洛斯(AndreasAntonopolous)也建议人们使用手机钱包,而不是电脑钱包。支持线下购买大多数普通用户不善于保护自己的在线隐私。。网上隐私泄露会导致定向威胁攻击(APT攻击)甚至五美元扳手攻击(5美元扳手攻击)。如果我们认为这是攻击面之一。硬件钱包应该能够支持用户通过线下渠道现金购买。创建一个安全的硬件钱包并不容易。可以理解为这是一场矛与盾的决斗。除了上述九项硬件钱包改进之外还有两点是我们非常期待的:抛弃所有的MCU芯片,用一个安全芯片来控制所有硬件钱包的输入输出,包括但不限于键盘、屏幕、摄像头、读卡器、蓝牙、USB等等。因为回顾硬件钱包的攻击历史恶性攻击都是围绕MCU展开的。完全开源的安全芯片。这将把安全芯片这一关键部件的透明度提升到前所未有的高度。我';我很高兴看到像谷歌这样的大公司正在为此而努力。