最近FTX的暴雷又带来一阵对中心化交易所的恐慌,其实每隔一段时间都会有一些中心化交易所出问题,特别是这些起的太快的;主要是这圈子还在各种野蛮生长,几乎年年有雷,所以活得长才是最重要的。从账户安全性角度看,中心化系统的安全性依赖于中心化机构对系统的保护措施,而去中心化系统的的安全性依赖于个人对自己秘钥的保护;去中心化给个体带来了更多的自由,但同时也对个体自身有更高的要求,或者说自由对大部分人来说其实并不是什么好事,因为自由意味着要承担更多的责任,而不是享受什么自由的权利。
我发现很多人一直没用过冷钱包,有些最多也就是用过热钱包(热钱包会连接到网络,而冷钱包是物理上完全隔离)。而且他们对秘钥的安全性保护都不够重视,曾经一朋友由于秘钥助记词没有妥善保管好,导致助记词泄漏了,账上的数字资产全被转走了,那真是欲哭无泪,大方向做对了,可惜币丢了。所以才有那句“Not your keys, Not your coins”,不会用冷钱包都不能算一个合格的HODLer,所以还是有必要阐述下安全性和冷钱包使用。
秘钥的安全性
区块链网络的账户其实是一对秘钥对(公钥与私钥),而这对秘钥对是由一个随机数种子seed生成的(通常为128bit或256bit);而为了方便人的记录,seed会被编码(BIP39标准)成一串称为助记词的单词串,通常是12个单词或24个单词,12个单词的安全性是128位,24个单词的安全性是256位;128位已经足够安全了,通常各种钱包软件生成的都是12个单词的助记词,但为了更高安全性可以自己生成24个单词。
256位的安全性有多强,或者说256位的空间有多大?可能有个参照会让人有更形象的感受,是个异常大的数,大约等于10进制的,而整个可见宇宙中包含的原子数大约在;所以在如此大的空间中的均匀随机性要发生碰撞的概率是基本忽略的。后面的示例也可以看到随机性的神奇,你可以随意生成几串助记词然后挑一串比较顺眼的拿来用,但一定要记录备份起来,如果没记下,哪怕再刷几辈子也刷不出同一串来。这像极了人世间的各种聚散离合,有时的一句再见,可能真的就是这辈子再也不会见了。
冷钱包
需要用到的硬件:
- U盘数个
- 1个用来安装Linux做离线安全运行环境,普通常用U盘即可(16G以上)
- 剩下的当做备份存储助记词的,最好使用工业U盘,耐久
- 旧手机(做硬件钱包)
要在源头就保证安全,最好不要用钱包软件内置生成的助记词,可以自己写代码生成,而且要做到助记词的生成与使用都不触网:
-
建立离线安全运行环境
先下载Ubuntu Linux系统的ISO镜像文件,然后用rufus安装到U盘,以后这个U盘可以用来启动电脑当一个离线运行的安全工作环境。
-
生成助记词与备份
自己写几行JS代码就可以生成助记词:
const bip39 = require('bip39'); const crypto = require('crypto'); //Generate mnemonic var mnemonic = bip39.generateMnemonic(256, crypto.randomBytes); console.log(mnemonic);
把上面JS代码保存,在离线运行环境下运行生成助记词,抄到纸上(强迫症患者可用碳素墨水抄,更耐久)和备份到几个工业U盘上。
-
安装钱包软件
在旧手机上安装TokenPocket,目前这个钱包软件基本支持各种主流B种,各种操作支持也相当好,重要的是支持冷钱包模式。最后取出手机卡,关掉移动数据、蓝牙、无线,开飞行模式完全离线模式,在TokenPocket中导入之前生成的助记词,现在旧手机就已经变成一个硬件冷钱包了,唯一的功能就是进行交易tx的签名操作。
在自己平时用的手机上再装个TokenPocket当观察钱包(只观察冷钱包地址,不存储秘钥),要转账或参与Defi时在观察钱包上生成交易tx(具体使用自行参考TokenPocket官网帮助),再由冷钱包手机扫码签名。这种方式可以保证秘钥一直隔离在离线冷钱包中永不触网,不泄露,实现极高的安全性。