首先,要明白一点的是,区块链中的钱包和我们日常生活中所使用的钱包是不一样的,我们平常使用的钱包是用来装钱用的;区块链中的钱包不是用来装币资产的,而是用来管理密钥的工具。
可能有人不同意了,明明就看见钱包里面有各种代币,怎么不是用来装钱的呢?
代币是放在密钥里的,更本质的来说,你的币是放在链上的。有了密钥就能拥有链上的调配权,就算你的这个钱包不能用了,只要你知道你的密钥,你就能在别的地方继续管理你的资产,而且根据私钥可以算出公钥,也能间接算出地址。
可以看出来,私钥是打开数字货币最重要的东西,它是在矿工挖矿的时候,进行计算解密一个随机数而得来的,这个随机数解密方式叫HAS256,感兴趣可以去具体研究这种算法的逻辑。
而公钥又是从私钥中计算出来的,这种方法叫——椭圆曲线乘法(区块链就是一个密码学的世界,太多算法),这种算法有一个很大的特点就是过程不可逆转,私钥可以计算公钥,公钥不能计算私钥。
那么地址呢?
地址同样是由公钥计算出来,分为两步,第一步是公钥压缩哈希计算,再RIOEMD160编译(不能再增加函数概念了,这些还是交给中本聪吧),得出地址。
这就是私钥、公钥、地址产生过程。这中间,私钥最为重要的,钱包本质就是管理好私钥,那么钱包在私钥方面做了哪些安全性和可操作性呢?
我们常见到,交易所频频被盗币,而钱包盗币的现象很少有听说,同是在线热钱包,说明钱包在安全性上要比交易所高的。一般钱包都要做助记词、keystore保护。
什么是助记词?
在创建钱包的过程中,会生成一个助记词,而且会让我们备份。助记词一般由12个单词构成,每个单词之间由1个空格隔开,这些单词都来源一个固定词库,是由私钥根据一定的算法得来,所以,私钥与助记词之间的转换是互通的,助记词实际上就是私钥的另外一种表现。
所以,助记词最好用纸炒下来,不可用互联网形式保存,照片也不行。助记词等同于私钥,如果有人拿了你的助记词,就可以导入钱包,掌握钱包的控制权。这样做等于是用另外一种形式备份了私钥。
私钥与助记词的关系类似折射的关系,并没有逻辑、算法上的改变。而keystore的本质是加密后的私钥,这个加密不是很复杂,是将钱包密码与keystore合为一体的算法,只有keystore是不能转账的,还需要密码认真才可以。
如把钱包当做银行账户对比,这5个词分别对应内容如下:
地址=银行卡号。
密码=银行卡密码。
私钥=银行卡号+银行密码。
助记词=银行卡号+银行密码。
keystore+密码=银行卡号+银行密码。
那么,怎样防止你的数字资产被盗呢?
你可能很快就想到,不要把自己的数字货币放在交易所里,比如自己生成一个新的比特币地址,把自己的比特币转过来,并保存好私钥。
这样做的话,保存私钥将成为一个难题,毕竟时间一长,保存私钥的载体很可能遗失或者损坏。
那么,有一箭双雕的方法吗,既能保证自己的数字货币不被盗,又能方便的储存私钥,你还别说,还真有,就是自己设计数字货币的私钥。
比如未被压缩的私钥是256位的字符串,你可以通过汉语拼音和汉字进行哈希,生成两个128位的字符串,合并在一起私钥就生成了。比如你用“wo xiang hui jia”和“我要下班了”,进行哈希生成两个128位的字符串,合在一起就变成256位的私钥。私钥生成后,在https://github.com网站,把私钥生成比特币地址的bitcion.sh的脚本保存到本地,然后在断网的情况下,通过Mac的终端或者wondows的Cmd运行刚才保存的脚本,然后就能通过私钥生成比特币地址。这样做的好处是,首先不会有人盗取你的比特币。其次,你储存私钥的工具丢失或者损坏,你知道私钥是通过什么的方法生成的,很容易还原你的私钥。
防盗的实质是防止我们的私钥泄露, 或被黑客盗取私钥。只要你的钱包私钥不被除你之外的第二个人获取,你的资产就是安全的。
务必要物理介质备份,例如用笔抄在纸上,然后保存在保险箱中。不要截屏或者拍照,不要存放在联网的环境下,如保存在电脑中、保存在邮箱中、保存在网盘中,以防被黑客窃取。 不要在联网环境下传输钱包备份(助记词、私钥或者 Keystore),以防被黑客截取。