硬钱包最安全?——《区块链思维》第151块

硬件钱包最重要的点是对于设备端(冷端)自身的安全保护,这里就会涉及到硬件钱包的安全性判断标准:

1、 设备端(冷端)是否本身会被攻击和破解。操作系统和应用本身是保存在开放性的存储器(SDRAM)中还是存放在进行安全保护的芯片中,是不是有被篡改的可能性。

2、 私钥的保存是不是得到了安全的保护,加密或者未加密过的密钥(或种子密码文件)是否可导出。有没有办法通过包括破拆、破解在内的手段从设备端(冷端)得到私钥。如果经过加密存放的密钥,可以被导出(直接拆出SDRAM),则有可能针对导出的加密文件进行暴力破解。

注:对于使用分层确定性(HD)的钱包,所有的私钥都是通过一个种子密码生成出来的,这个种子密码对用户的展现形式就是助记词,所以HD钱包的种子密码就相当于用户钱包的所有币种的私钥。得到种子密码就得到了所有的私钥。

3、 私钥有没有进入到内存和开放性的存储器。所有开放性存储器(内存、FLASH)内的内容都是可以被读出的,以明文方式进入内存的私钥(或种子密钥)有无数的办法可以导出,因此也是不安全的。

4、 涉及到私钥的运算过程是否进入了开放性存储器(内存、Flash),一旦进入内存进行运算,整个的运算过程都是可以被黑客更容易定位和截获。

5、 是否可以通过反编译来模拟应用程序的逻辑。如果程序存储在开放性的编译器中,则可以轻易的获取程序,并通过反编译获得应用程序逻辑,并通过模拟程序的运行来获得用户的私钥。

6、 防止伪造交易的核心是针对一个经过用户确认的真实的交易信息进行签名,在这个过程中防止交易信息在传递的过程中被篡改。在哪一端输入交易信息并不是重点,重点在于在冷端要进行安全的用户的交易信息显示和确认,并且保证冷端自身的安全性。如果冷端被攻破,交易信息在冷端就是一个伪冒信息,即使在冷端输入也会发生伪造交易。

只要计算过程流出了安全芯片的内部,在内存中运行,这样的攻击漏洞在非安全芯片的钱包中都存在,黑客是有办法获得SDRAM中的内容的。包括芯片钱包中没有使用安全芯片的Trezor和KeepKey就曾经被这样攻击过,可以百度一下就知道了。

针对某硬钱包的攻击方式一(软件方式):

1、 Root冷端的系统

2、 对系统做内存导出

3、 对内存进行分析,从中获得明文密钥数据

针对某硬钱包的攻击方式二(破拆方式):

1、 在硬钱包中安装监听芯片,监听进入内存的信息。

2、 对监听的数据通讯进行密钥分析并导出密钥。

针对类安卓钱包:

1、 设备端(冷端)存储了种子密码,而这个种子密码能够计算出所有币种的钱包私钥和地址。根据分层确定性(HD)钱包协议的规范,只要获得种子密码,可以在任何地方用标准算法来算出用户的所有币种的私钥。所以在开放性的存储器中存储了种子密码相当于在开放性的存储器中已经存储了私钥。

2、 私钥签名会以明文的方式在内存中进行运算是系统的。对于一个强调安全的硬件钱包而言,进入内存进行运算就可能会被抓取,无关乎在内存中是持续保存了还是用完后清除,只要出现了就可能已经泄露了。

3、 防止伪造交易的核心是针对一个经过用户确认的真实的交易信息进行签名,在这个过程中防止交易信息在传递的过程中被篡改,用户发送的是一个经过确认的真实交易,双端验证的必要性在于:需要假定热端(PC/手机端)被伪造或者冷端(设备端)被伪造的情况下都能够保证交易的安全。

说了这么多,大家估计多数人都没有看懂,只要记住一个结论,硬钱包是比软钱包和交易所账户都安全几个数量级的,但并非所有硬钱包都是安全的,哪怕是目前主流的硬钱包,国内国外产品皆是如此。

作者:袁晔,水木清华TBC执行董事(Fcoin保荐机构),盗火者区块链应用联盟发起人。

你可能感兴趣的:(硬钱包最安全?——《区块链思维》第151块)