定义加密钱包安全性的“三有一无”要素
近年来区块链技术的迅速发展,使得加密资产逐渐走入大众的视线。目前2000多亿美元的加密资产市值,超过2000种的加密资产,侧面反映着全球加密资产规模正在高速增长。
英国一名早期挖矿者“丢失”7500枚比特币,如今高达3亿多人民币。
2009年英国威尔士一名32岁的IT工作者詹姆士•豪威尔斯参与电脑挖比币。2013年无意间扔掉了硬盘,其宣称意外丢失的硬盘中存储着7500枚比特币私钥,当前市值高达3亿多人民币,至今尚未寻回。基于早期加密资产没有适合的存储方式,导致储存在硬盘的私钥也存在丢失的风险。
加密资产存储成为加密资产投资者不可忽视的需求。
2018年9月份,人民网转载一篇《加密资产交易平台再现被盗,安全问题成隐患》文章。近年来,已经发生了众多的盗币事件,主要集中在加密资产管理平台被攻击、智能合约漏洞、个人密钥丢失或窃取等方面。如今个人密钥如何保存成为加密资产投资者不可忽视的问题。如果准备长期投资加密资产,建议投资者将所持币种存在软件钱包中,金额较大的,则要准备硬件钱包,即冷钱包,以防止交易平台被盗窃而带来损失。
加密资产的快速发展激发了对加密资产的安全存储需求,加密钱包也应运而生。为了方便用户记录地址和私钥,官方会同时发布全节点钱包;同时有些第三方公司为了进一步提高用户体验,相继开发了加密钱包软件,它们并不同步所有的区块数据,因此称其为轻钱包。这两种数字钱包都属于热钱包。
冷钱包也称为硬件钱包,由于私钥不接触网络,相对安全性较高。不过由于业务场景的快速迭代以及推广需求,无论热钱包还是冷钱包都会有一些安全隐患会被忽视。
二、软件钱包的主要风险
软件钱包可理解为下载的钱包APP,并可直接用于转账加密资产的软件。一个加密钱包软件的使用,包含了以下三点安全要素。
1. 网络安全
从软件启动到进行交易的一套完整的过程,其中涉及业务的过程中需要连接网络,安全数据等都存在一定的风险。
2. 软件功能的核心数据安全
传统软件的功能如核心代码未加密,软件自身无校验,中间人数据劫持等。
3. 业务场景安全
针对钱包软件的独有业务场景,如助记词的不安全保存,交易密码设置弱口令,货币价格走势数据被替换等也将会给用户在使用钱包的安全上造成很大的危害。
数据来源:360安全
由于软件钱包自身安全性能的不完善,以及频频出现黑客攻击事件。硬件钱包逐步成为了很多加密资产投资者青睐的资产保存产品。
三、硬件钱包的安全性要素
硬件钱包是一种实体设备,私钥储存在设备内的受保护区域中。到目前为止硬件钱包还没有发生过重大钱包漏洞或者大规模资产丢失事件。相对而言,硬件钱包安全系数比软件钱包要高。对此,密深科技首席科学家郭伟基认为,一款真正意义上安全的钱包主要包涵了三方面的安全性要素:网络隔离,系统完整性保护,钱包种子保密。
1.网络隔离
即是给私钥创建了一个隔离环境。现有的手机和电脑与外界通过网络连接,私钥很容易遭到黑客从网络发动的远程攻击,这时候就需要硬件钱包专门保管私钥或者钱包种子。
2.系统完整性保护
指的是硬件钱包系统能够保护自身关键部件不受非法篡改。任何系统都存在被攻击的可能性,在攻击发生的时候,具备系统完整性保护能力的硬件钱包能够发现攻击并作出相应的安全响应。
目前针对系统完整性保护缺失的攻击主要有供应链攻击和邪恶女佣攻击。所谓供应链攻击,指的是硬件钱包在生产或者运输过程中被他人修改过,植入恶意软件或者篡改系统逻辑。举个例子,如果一款基于安卓系统的钱包使用了安卓提供的随机数产生器,而该随机数产生器被更换为黑客可以预测的伪随机数产生器,那么该钱包产生的全部种子、私钥都是黑客可以预测的。而黑客要完成收割,甚至都不需要受害人的钱包联网。如果缺乏系统完整性保护,不能发现此类攻击,用户的资金就有被完全收割的风险。
邪恶女佣攻击,英文叫做Evil Maid Attack,主要指的是钱包设备可能短暂被他人控制。如果设备缺乏系统完整性保护,那么这段时间就有可能被利用来植入恶意软件,例如底层逻辑被替换掉,实际转账地址变为黑客指定的地址,或者在收到某些指令后显示钱包种子的助记词,等等。
3.钱包种子保密
网络隔离和系统完整性保护提供的安全很重要,但仍然是不够的。如果攻击者拿到了物理设备,还要保证攻击者无法从设备里提取钱包种子信息,而一般的软件钱包或者类软件钱包很难保障这一点。
这三个安全性能都是相对普遍适用的,不管什么样的钱包系统,都可以用这三条标准去衡量其安全性。软件钱包由于其先天限制,很难满足这些要求。相比之下,硬件钱包则具备比较好的安全基础。
四、硬件钱包的分类和安全性分析
硬件钱包的种类也是五花八门,并不是所有的硬件钱包都能很好地满足全部三条标准。我们可以从硬件设备自身特点入手给硬件钱包做个分类并分析其安全性。
首先我们可以把硬件钱包分为安卓硬件钱包和芯片硬件钱包。安卓硬件钱包顾名思义,可以理解为一个安卓手机,去掉不必要的部件,加以软件改造后专门服务于钱包用途。芯片硬件钱包则是国外市场的主流产品,主要是在芯片系统上直接编程钱包核心逻辑,以把钱包种子保管在芯片内部作为其安全特色。
1.安卓硬件钱包安全性分析
硬件钱包一般都能做到网络隔离,但是安卓不具备系统完整性保护,这就使得它很容易遭受供应链攻击以及邪恶女佣攻击。另外,安卓系统本身如果没有做安全性加固,也会出问题。
例如在今年七月的看雪安全峰会上,某款安卓硬件钱包就惨遭破解。该钱包硬件基于MTK方案,使用安卓6.0系统。MTK系统有一个已知的USB漏洞在该钱包中没有修复,安全研究人员就从USB接口攻入系统,提升权限,修改系统部件,实际上等于破解了这款安卓硬件钱包,因为后面能做的事情就很多了:包括可以修改随机数产生器,提取钱包种子文件并实行彩虹攻击或者字典攻击,修改底层转账地址等等。由于缺乏系统完整性保护,这些修改很难被发现,不知情的受害者继续使用的话就会遭受损失。
另外,这款安卓硬件钱包的钱包种子保密性也成问题。安卓的文件系统其实是开放的,在技术人员手里,拆开设备,取得内置存储器就可以加载文件系统,提取存储钱包种子的文件。虽然这个文件一般会加密,但是很多用户不会选择复杂的密码,可能就是4位或者6位数字,很容易在普通计算机上完成穷举破解,这个弱点导致这款钱包无法抵抗邪恶女佣攻击。
所以我们单单用之前的三条安全标准衡量的话,这款安卓硬件钱包仅仅做到了网络隔离,但可以通过对安卓硬件钱包做一些修改,以增加其钱包的安全性。
这就是所谓的芯片安卓硬件钱包,即把专用芯片放进安卓钱包设备里面,用于保管钱包种子,这样提高了钱包种子的保密性,就算他人拿到设备也不能直接获得种子。通过这种方式可以满足钱包种子加密的安全标准,但即系统完整性保护的标准则仍然没有达到。这主要是由于安卓系统的先天不足,短期内很难修正。
在这种情况下,芯片安卓硬件钱包的安全性就依赖于郭伟基提出的的“系统攻防假设”。假设钱包系统具备极强的抗攻击性能,无法被攻击或者破解。具体到安卓硬件钱包,就是说虽然欠缺系统完整性保护,但是假设安全防护做得足够好,攻击者便无法篡改系统。
那么这个假设到底有多可靠呢?看个案例就明白了。
网络安全大佬John McAfee发布了Bitfi硬件钱包。该钱包也是基于安卓系统。McAfee自信满满,认为以自己的安全攻防实力,可保Bitfi无虞,“固若金汤”,并在2018年7月25日悬赏10万美金“寻求”黑客攻击。
结果不到一周,就被一位名叫OverSoft的荷兰安全研究人员获得Bitfi钱包的的根访问权限;并被名为Saleem Rashid的15岁少年在钱包上玩上了《DOOM》游戏。后来又有安全专家成功发送签名交易,等于是遭到了完全的破解。
以McAfee在安全江湖的地位,这基本上宣告了所有以系统攻防假设替代系统完整性保护的钱包系统的安全性缺陷。
2.芯片硬件钱包的安全性分析
芯片硬件钱包拥有独立的SOC芯片,所有的硬件系统都在SOC芯片上运作。外观一般只有屏幕和简单的按钮。屏幕显示的保证是展示数据是真实的,简单按钮确认交易操作。
内部系统中装载了引导固件和业务固件。引导固件是基础设计,出厂时已经定好,不能篡改,负责业务固件的完整性检查以及升级;业务固件负责具体的业务逻辑,可以升级以支持更多币种或者修复安全隐患,修改需要签名确认。
在其安全性分析当中可以看到:
第一条,网络隔离。这条一般都能满足,问题不大。
第二条,系统完整性保护。这条通过对业务固件进行数字签名验证完成。引导固件可以检查签名以决定是否加载运行业务固件,任何篡改都会被发现。
第三条,钱包种子保密。芯片硬件钱包一般把种子存放在芯片内部的闪存区域,常规手段无法读取。在使用的时候,私钥可能会在内存中短暂地出现,但是用完一般都会立刻删除并且用随机数据覆盖掉,这就提供了比较好的保密性。基于这三条标准,芯片硬件钱包相比软件钱包和安卓硬件钱包都有更高的安全性。
总结来看,钱包系统的安全性可以归结为“三有一无”,三有即必须具备网络隔离、系统完整性保护、钱包种子保密这三条安全特性。一无,就是“无系统攻防假设”,特意指出钱包系统的安全性不能建立在系统攻防假设上,尤其不能以系统攻防假设替代系统完整性保护。