加密货币硬件钱包安全使用的十大规则 - Trail of Bits博客
Mike Myers
2018年11月27日
区块链, 指南
今年早些时候,Web3基金会(W3F)委托Trail of Bits对加密货币存储风险进行安全审查和评估。从大型机构到个人爱好者,所有持有加密货币的人都与W3F有着同样的担忧。为服务更广泛的社区,W3F鼓励我们发布关于安全使用硬件钱包的建议:这些防篡改的小型外设使用户能够安全创建和保护加密货币账户。
无论您持有的加密货币是少量聪(Satoshi)还是一笔小财富,本文都将对您有所帮助。
如今的硬件钱包需要严格的安全程序(图片来源:Gareth Halfacree)
硬件钱包的出现
在加密货币早期,用户只需使用标准PC上的客户端软件生成支付地址(密码学术语中的公钥/私钥对)。不幸的是,一旦加密货币成为热门商品,在通用计算机上使用“软件钱包”安全存储账户私钥就成了一种负担。软件钱包文件可能丢失或被删除,并成为盗窃目标。大多数用户对安全可靠存储私钥的重大责任准备不足。这部分推动了托管存储服务(如加密货币交易所)的采用。
多年来,这些服务遭受了大量未受惩罚的盗窃,使许多用户意识到他们永远不能像信任受监管的银行持有法币那样信任第三方持有他们的加密货币。因此,在过去几年中,硬件钱包作为在不依赖托管服务的情况下保护加密货币账户的有用工具而广受欢迎。
万无一失的解决方案?
硬件钱包是一种消费级硬件安全模块(HSM),具有类似的目的:一种体现防篡改保险库的设备,用户可以在其中创建和使用加密身份(此处指加密货币账户),而私钥永远不会离开设备。从根本上说,硬件钱包只需要获取在主机上创建的交易,对其进行签名以使其有效,并输出签名后的交易供主机发布到区块链。
实际上,这并不那么简单。用户必须正确初始化他们的钱包。有时设备需要固件更新。然后是恢复代码(也称为BIP39恢复短语或种子词)的问题。硬件钱包比将私钥存储在防火保险箱中的纸张上或笔记本电脑目录中有了巨大改进,但硬件钱包仍然存在风险。用户需要采取一些安全预防措施。用Bruce Schneier的话说:“安全是一个过程,而不是产品。”
加密货币硬件钱包安全使用的十大规则
1:从可信来源购买设备,最好直接从供应商处购买全新未开封的产品
避免任何不必要的供应链风险。直接从制造商(例如Ledger或Trezor)而非经销商处购买设备,可以最大限度地减少获取假冒或经中间人篡改设备的风险。据报道,至少有一名恶意eBay经销商设计了巧妙的方案来欺诈买家,即使销售的是正品未开封产品(见规则#3)。
2:切勿使用预初始化的硬件钱包
如果用户接受预初始化的硬件钱包,他们就是在将加密货币存入一个可能只是攻击者控制钱包副本的钱包中。确保您(且仅您)在使用前正确初始化硬件钱包。遵循硬件钱包供应商网站上的初始化说明(例如,Ledger品牌钱包的说明;Trezor钱包的说明)。
您希望看到的提示,开箱即新(图为Ledger Nano S)
3:切勿使用预设的恢复词,仅使用在设备上生成的词
切勿接受预设的恢复词。始终从零开始初始化硬件钱包,使用设备生成新的随机恢复词。任何知道恢复词的人都可以完全控制钱包,能够监视其活动,并能够窃取其所有币。实际上,这些词就是密钥。
2017年12月,据报道一名硬件钱包经销商在每个交付给客户的设备盒中包装了一张假冒刮刮卡。刮刮卡揭示了一组恢复词,并指示买家使用恢复步骤设置设备,而不是通过初始化安全生成一组新词。这是一个巧妙的骗局,诱使用户使用预配置的钱包(见规则#2)。
警惕此类经销商欺诈:看似官方的预设恢复词(图片来源:Ledger,Reddit用户‘moodyrocket’)
4:优先选择能够提供完整性证明的设备
虽然重置或初始化设备应该足够,但理论上仍然存在购买假冒或篡改硬件钱包的风险。在购买之前,确认您能够验证新硬件钱包的来源、真实性或完整性。寻找设备制造商提供的软件,该软件可以查询设备上的安全元件并提供设备完整性的证明。遵循钱包供应商的验证说明(例如,Ledger使用安全元件证明检查设备完整性的说明)。然而,当今钱包的证明能力仍存在差距。用户应继续要求更好、更完整的证明。
5:测试您的恢复词
数据保护101是“始终测试您的备份”:在这种情况下,您的备份就是一组恢复词。使用备用硬件钱包设备,使用记录的恢复词初始化测试钱包。消除对记录词能否成功恢复原始钱包状态的任何疑虑。测试恢复词的正确性后,重置/擦除此测试设备。不要使用通用计算机或软件钱包来验证恢复词。遵循供应商的说明执行恢复演练以测试种子词(Trezor钱包用户的步骤和Ledger用户的步骤)。
6:将恢复词与硬件钱包分开且同等保护。不要拍照。不要将它们输入任何东西。
手写恢复词——不要将它们输入计算机或拍照打印——然后层压纸张(最好使用档案级无酸纸以长期存储)。将其存储在不透明的防篡改密封信封(示例)中,以确保未经授权未被查看。请记住,如果恢复词与设备存储在一起,设备的PIN码无法防止具有物理访问权限的攻击者。不要将它们存储在一起。
写下这些词,但不要像这样拍照!
7:验证您用于与硬件钱包通信的软件;了解后门桌面UI是您威胁模型的一部分
硬件钱包依赖桌面软件启动交易、更新硬件钱包固件和其他敏感操作。加密货币软件用户应要求可重现构建和代码签名可执行文件,以防止攻击者在安装后进行篡改。与使用GPG等工具进行手动验证相比,代码签名的优势在于代码签名在每次启动应用程序时由操作系统自动验证,而手动验证通常只执行一次(如果有的话)。然而,即使是可验证的软件,在运行时仍可能被颠覆。认识到通用计算设备经常暴露于来自不可信源的潜在风险数据。
8:考虑使用高保证工作站,即使使用硬件钱包
通过将工作站专用于操作硬件钱包的单一任务,可以将其锁定到更高程度,因为它不用于日常任务,也不暴露于许多潜在的泄露源。考虑仅从不可变的主机PC配置操作硬件钱包。该工作站将仅离线,并专用于使用硬件钱包创建和签名交易的任务。首先,锁定系统的固件配置(例如,限制启动设备,禁用网络启动等)以确保启动过程的完整性。然后,启动介质可以通过使用TPM支持的加密SSD/硬盘的安全启动来保护,或者——为了真正的不可变性——通过将可信操作系统映像刻录并验证到一次性DVD-R介质上,并将DVD-R与硬件钱包一起存储在防篡改袋中。
9:考虑使用M-of-N多重签名钱包与独立存储的设备
“多重签名”指需要多个密钥来授权交易。这是对单点故障的极好保护。考虑创建一个多重签名钱包,其密钥在存储在物理分离位置的硬件钱包中生成和保存。请注意,如果设备将由不同个人保管,请仔细考虑如何协调和做出从钱包支出的决策。为了增加偏执,硬件钱包可以是不同设备品牌。这样,即使硬件钱包制造商之一的员工成功后门其设备,他们仍然只控制您多重签名钱包中的一个密钥。
10:考虑手动验证新多重签名地址的生成
与规则#7和#8相关,注意多重签名钱包是通过将几个私钥持有者“连接”到由脚本定义的单个地址来创建的。就比特币而言,这称为P2SH地址(“支付到脚本哈希”)。地址创建的这部分是在桌面软件UI中使用公钥完成的,而不是在硬件钱包上。如果受损的工作站在生成新P2SH地址期间提供脚本基础,则攻击者可能能够加入或控制多重签名钱包。例如,攻击者控制或颠覆的桌面软件可能秘密将2-of-3钱包变为2-of-5钱包,并插入攻击者的两个额外公钥。请记住,硬件钱包并不完全排除保护与其接口的主机的需要。
仍需更安全、更易用的解决方案
关于加密货币硬件钱包的风险和建议的讨论说明了更广泛安全行业在尝试设计其他类型的固定功能设备用于私钥保护时所面临的挑战。例如,U2F令牌和安全飞地。
十多年来,安全研究人员一直推动“可用安全”的目标。可用安全简单来说就是安全计算应该易于做对,难以做错。例如,比较现代安全消息客户端的可用性与使用GPG所需的繁琐且易出错密钥管理。正确实现可用性是保护几千名技术人员与保护数千万普通用户之间的区别。
避免自满。要求更安全、设计更好、不易陷入陷阱和错误的设备。最好的硬件钱包应该有点无聊!我们希望未来,安全易用的硬件钱包将成为我们可以视为理所当然的商品设备。
在此之前,我们将继续独立并与W3F等组织合作,尽我们的一份力量建立安全意识。如果您为创建硬件钱包的公司工作,我们欢迎您联系我们以帮助保护您的用户。
如果您喜欢这篇文章,请分享:
Twitter、LinkedIn、GitHub、Mastodon、Hacker News