作者:Velaciela
时间:2017年12月23日
来源:https://velaciela.ms/bitcoin_wallet_security_guide_2018
比特币的暴涨让很多投资者准备长期“价值投资”比特币,但比特币的特性——不可更改,则让比特币安全存储成了一个严峻问题。比特币私钥的被盗、灭失将会永远无法恢复,等同于财产的永久损失。在这方面笔者也有过一些损失,现在看起来已经很值钱了。因为之前在壹比特科技工作时曾经有人写过“比特币脑钱包安全指南”,但目前已经过时,故按照2018年的标准重写一篇,给准备投资比特币的朋友参考。本文不涉及技术细节。
下面是关于比特币安全存储的几个要点:
什么是私钥和地址?
私钥的被盗
私钥的灭失
交易所安全吗?
在线钱包(手机钱包)安全吗?
安全策略:离线收款,在线付款
不要使用脑钱包
生成纸钱包的示例
1.什么是私钥和地址?
比特币的私钥和公钥是比特币的关键概念之一。但这里不谈技术细节,我们只谈比特币地址和比特币的私钥。
“L4gNwR1KJAeaGmDwGSzDAX8y1XtyYGXuuRdPuFB1kF85R6XRHtKT” 就是一个比特币的私钥。它对应一个地址,如“19Sq6j56YZE8QAsmKoECbREAXmviXDNd5”,这就是所谓的比特币地址。如果你要给我比特币,只需给我的地址打钱就可以了。有过至少一次交易的地址会被永久记录在比特币的区块链上,没有任何一次交易的地址,可以认为是不存在的(它还没被创建出来)。
每一个地址实际上是一个公钥,对应一个私钥,由私钥经过算法(此处略)不可逆的生成公钥,反过来由公钥不可能求出私钥。
生成一个私钥的过程准确的说就是在一个2进制数的2^256-1的集合里随机取值的过程。这个数字之大,可以保证在物理和数学上都不可能出现私钥“碰撞”的情况。因此如果你的随机数发生器没被人动过手脚,那么就可以保证生成的私钥是唯一且安全的。关于恶意软件的问题后面会谈到。至于世界是否存在真随机,这不是这里能讨论的话题了。
因此,一个良好随机生成的私钥如果保密,仅凭公钥不可能破解私钥。同时,私钥作为比特币的唯一凭证,如果灭失或被盗,你也就永久的失去了比特币。由于比特币交易相当程度的匿名以及交易在世界范围内进行,一旦比特币私钥被盗,几乎无法找回。这一点要特别注意。因此,可以粗略的认为私钥就是比特币,丢失了私钥就丢失了比特币,私钥是一个字符串,这个字符串就是现金,有这个字符串就有钱。
私钥的被盗
私钥的被盗已经谈得够多了,不仅个人会被盗,甚至交易所也会被盗,而且损失极为惨重。很多交易所因被盗而倒闭,典型的如Mt.gox,被称为币圈第一大惨案。因此投资者对私钥被盗往往谈虎色变,甚至到了“不敢联网”的程度。
如果从网络安全的角度,确实没有绝对安全的系统。但相对而言,仍然建议采用各种策略来最大限度的增强安全性。首先是设备的选择:
纸条比电子设备安全,专用硬件钱包比手机和电脑安全。Linux比Windows安全,正版且正确安装的Windows又比不正确安装的盗版Windows安全。当然这里说的仅仅是网络安全,如果设备丢失或损坏一样没办法。而且比特币总是要拿来用的,所以也不必谈虎色变,但要尽量减少不必要的风险。
私钥的被盗情况分很多种,交易所被盗的原因更多,这里不多谈了。首先,个人用户私钥被盗有以下原因:
中病毒:很多病毒专门盗取各类数字货币,比特币首当其冲。如果电脑中毒,比特币就会被转走。
但是需要注意的一点是,杀毒软件不能解决这个问题。解决病毒问题的最好方法仍然是减少比特币专用设备的不必要网络活动和软件安装,并正确设置系统。特别是某些国产杀毒软件,怎么说呢,还不如病毒。
在不安全的信道传输私钥:如果你要给别人比特币,就直接打给他的公钥,永远不要把私钥通过网络传输给别人。传输安全是很重要的问题,这里面道道很多,普通人如果不能彻底明白信息是如何在网络上安全的传输,那就干脆不要传输。
不当的备份:为了“备份”而将比特币私钥和比特币钱包“备份”在了不安全的地方…结果是便宜了黑客。典型的情况是将比特币钱包、私钥存入“云存储”。 不要将任何私钥、钱包、恢复种子或钱包密码等比特币相关信息存储在任何网络中,无论它声称自己多安全。
低级的密码:很多钱包要求密码保护(这也是必要的),弱密码是常见问题。如”querty88899″一类的密码在现代计算机破解技术面前不堪一击。请使用你软件允许的最大密码长度,并使用完全随机的密码,如“PsBqRDi5E9DZALD”。如果难以记住,可以抄写在纸上或记录在另一个安全介质里。
因此,防范比特币私钥被盗,最重要的是提高网络安全意识,了解基本的安全常识,有条件的可配置专用设备,无条件的也应配置冷存储(下面会谈到),尽可能让比特币远离互联网的各种威胁。
私钥的灭失
相比被盗,灭失的风险目前被大大低估了。而有些所谓的“防盗”措施,还大大增加了灭失的风险。私钥的灭失比被盗还惨,看着自己的比特币却永远取不出来,是很多人永远的痛… 之前听说一个美国人家里着火了,比特币钱包当然被烧毁,损失了几千个比特币。而现在这可是一笔几个亿的巨款,如果谁受了这种打击,估计这辈子都过不好了吧?
私钥的本质是个字符串,它可以独立存在,如写在一张纸上,或依托比特币钱包(电子形式)存在,但也需要依赖计算机等电子存储。因此,火灾等风险确实需要注意。此外,手机的丢失、被盗、电脑的损坏,也可能造成比特币的灭失。
物理损害:火灾等自然灾害及存储介质的丢失、损坏。大额储存比特币应在安全的物理设施,如银行保险箱,并做好备份。参照云计算“异地容灾”的要求,有条件的可在不同城市的银行保险箱或公司保险箱中储存比特币私钥的备份。为防丢失和被盗,存储介质平时不应带出安全场所(如公司或家庭),手机钱包可少量储存日常之用,而收款时不需要携带私钥。如公司投资应在财务办公室设置保险箱保存,避免意外的发生。
遗忘密码:通常电子介质上储存的比特币私钥都是以钱包形式储存的。比特币钱包是一个或多个私钥的集合,使用密码再进行一次加密。通常情况下这种加密也是不可逆的。密码一旦遗忘意味着几乎无法找回,但如果使用较弱的密码又会有网络安全问题。为此,仍然建议将此密码也安全备份多份,并定期更换,防止遗忘或泄密。
电子设备损坏:这是一个较少人关注的问题。如果使用计算机、优盘、手机或“硬件钱包”储存比特币,一旦这些设备损坏,往往数据难以恢复,直接造成了比特币的灭失。如果说比特币的数学规则是上帝的法则完美无缺,人类的计算机设备则是粗糙和丑陋的。优盘、设备内置闪存卡的储存原理是不可靠的,如果数年不使用或遇到电磁脉冲、雷击等,很可能无法恢复。所以对于大额储存比特币,电子储存器也应做好备份,如硬件钱包的恢复代码等。
意外情况:人有旦夕祸福,一旦投资者意外死亡,比特币很可能永远无法恢复,为继承人带来难以挽回的损失。因此,如果有可靠的多点备份,应给予可能的继承人至少开启其中一个备份的方法。
所以,总结来说,防止比特币意外丢失,应做好平时的安全工作,注意防火防盗。不应将比特币储存在不安全的场所,有条件的应在安全的地方进行异地备份。为防止电子设备失效,如使用电子设备储存,应至少有一份额外备份。投资者的命运也不能只考虑到自我奋斗,更要考虑到历史的行程,为了防止你死了没人知道密码,或许有必要把密码告诉孩子。
交易所安全吗?
这个问题本来不该在这里讨论。交易所肯定是不安全的,不然交易所也不会频繁被盗。此外,交易所除了被盗,还可能监守自盗、被取缔、跑路和耍赖。可以说交易所是比特币世界中最不安全的几个地方了。如果购买了大额比特币,一定要尽快提出交易所,不要放在交易所中。
再不安全也比不懂强多了:但是,对于第一次投资区块链的新手来说,交易所却比自己存储安全多了。交易所的帐号可以找回,通常情况下提币也会有严格程度不一的审核。对于没有任何网络安全常识的小白,把币存在交易所似乎是更好的选择。如果你的资金不太多,且不了解网络安全常识,把币存在交易所是一个相对较好的选择。
山寨币最好存在交易所:各类山寨币(可能除了少数几种比较大的币),我强烈建议存在交易所。原因是山寨币良莠不齐,很多山寨币时间长了可能会“失联”,或者说“断链”,连区块链都接不上了,放在交易所里至少还能割肉卖出,而放在自己钱包里恐怕转出去都难了… 此外,多种山寨币钱包管理起来很困难,甚至有的山寨币钱包“明修山寨,暗渡比特”,山寨币钱包本身就是一个盗取比特币的木马……
在线钱包、手机钱包安全吗?
现在有很多在线钱包和手机钱包,如blockchain.info钱包或比太钱包等。在这里我不能去评价其他人的经营情况,只能说目前这些在线钱包还没有出现严重的风险。所有的被盗事件基本上都是用户自己安全设置错误造成的,没有因为运营者系统的因素出现大批量的被盗。
但是,比特币的精神就是自己对自己负责。在线钱包安全性虽然目前没有被证明有问题,但如果你不是经常需要交易,还是自己保存比较好。而如果要使用在线钱包,首先需要按照在线钱包的要求设置所有的安全措施(如短信或验证码登录),并做好钱包的备份。通常在线钱包都会有备份的措施,一般是将私钥加密后发给用户,用户一旦遗忘钱包密码,可以用这个加密过的私钥导入一个新的在线钱包账户。
在线钱包通常也提供移动版的app。目前看来尚无严重的安全事件。但是,手机天生就不是一个安全的设备,如果手机丢失钱包就也丢失了。因此一定要做好钱包的备份。通常情况下,在手机上给人发大额比特币的情况很少,因此可以使用Watch-Only地址,能查看自己的比特币,但并没有私钥,而且可以接受其他人的转账。下面将谈一下这方面的内容:
安全策略:离线收款,在线付款
如同银行帐号一样,比特币收款是不需要在线的,也就是说不需要私钥,不需要上网,什么都不需要。你可以把私钥放在保险箱里,把比特币地址(公钥)存在手机里,用以接收别人的付款。这个过程是绝对安全的。
有人建议不要把比特币太集中在一个钱包里,但这个的前提是不同的钱包有着不同的安全措施(如存放不同的地方)。如果把10个钱包私钥放在一起,其实并没有减少风险。
比特币的交易是立即可见,但6个确认后才能被承认。这意味着:
别人给你转账后,你就可以立即查询到自己是否收到了比特币。查询的方法是在区块链上搜索自己的比特币地址,如果有交易进来会立即显现。(搜索方法:在btc.com或blockchain.info上搜索自己的比特币地址)
收到别人的转账后,最少也要1小时之后才能付给别人。考虑到目前区块链拥堵等情况,数个小时是完全可能的。
任何人查询任何比特币地址,都能查询到这个地址的全部交易和余额。因此最好不要告诉别人你有多少币。
如果是专业投资比特币,可以生成一批新的比特币地址,并将私钥都妥善保管,地址则用来接收不同的比特币付款。记录好这些比特币地址,这样在财务管理上,可以随时通过区块链查询帐务,而无需调用私钥。
付款时需要上网广播交易。如果非常注重安全,可以采取离线签名、在线发送的方式,使得私钥永远不接触互联网。但考虑到这是针对新手的教学,这里就不展开了。
关于导入私钥:在线发送比特币时,如果需要导入私钥(如从纸钱包中扫描私钥并复制进电脑或手机),或是从加密备份文件中恢复私钥,一般都会用到粘贴板甚至是通过网络传送。通常情况下我们必须认为这个私钥已经泄密。因此,务必一次性地将这个地址中的比特币全部发出。如果这个地址中的比特币有剩余,也应转到另一个从未用过的比特币地址中。
不要使用脑钱包
之前很流行的脑钱包已经不再安全。除非你面临入狱、逃亡一类的极端情况,否则不要使用脑钱包。脑钱包的危险性在于人类的大脑生成的任何字符串随机性远远小于同等长度的真随机字符串。事实上人脑能想象出来的随机值要比你想象的贫乏得多,而如果记住一个强度足够的随机值,和直接记住私钥也没有区别了。
关于这方面的研究有很多,比如这个,或者参考大刘的小说《诗云》,一个关于字符串复杂性的理论假说。
生成纸钱包的示例
纸钱包就是将私钥打印在纸上。下面演示一个简单的,安全的私钥打印过程。
1,生成私钥。生成私钥的过程可以使用任何比特币软件。考虑到安全性因素,生成私钥的过程中不应上网。这里采用bitaddress.org的私钥生成示例程序,这个程序如果不放心也可以离线使用。左下角可从github下载源码,在本地运行。
生成随机值种子后点击“纸钱包”即可生成无数个纸钱包,每次点击“生成”就可生成一批。
注意:此过程不要在线完成。无论是使用钱包程序还是这样的简单的私钥生成器,生成私钥都不需要联网。请关闭互联网后再进行。
2,打印后妥善保存
打印机最好也使用电缆直接连接计算机。如果需要使用局域网打印(如公司环境中),就意味着打印内容可能被同一内网的其他用户获取,尽管这可能性极小。建议打印多份作为备份,因为纸张不是可靠的载体。
打印完成后,完全关闭浏览器以销毁存在内存中的数据,并重新启动打印机(清除打印机内存)。此时可认为私钥是完全安全的。
3,使用比特币地址
如果需要他人给自己转账,可以用自己的手机钱包扫码地址(不是私钥)来获取地址并发给他人。如果使用钱包客户端软件,在导出私钥后应该关闭私钥窗口,此时钱包只会显示公钥。注意钱包客户端软件内部存有私钥,因此需要设置密码。这个密码强度须符合要求,并记载在可靠的地方备份。
接收到比特币后,仅凭地址(不是私钥)即可在区块链浏览器查询交易和余额情况了。
在blockchain.info 钱包中,可添加比特币地址作为 Watch-Only(仅观察)地址,而无需导入私钥。
在设置-地址中,选择导入比特币地址。
可同时导入私钥或仅导入地址。首先仅导入地址,如导入 12J1ZgNHCRZR8QrWzY6VqJyXeT1aeBmFnL 这个地址:
仅导入地址,意味着仅可查余额和交易,不能动用其中资金,适用于查看长期投资的比特币。注意一定不要导入私钥。
提示,Watch-Only 地址仅能观察,不可以使用其中资金。事实上你可以观察任何人的比特币地址,包括中本聪的。
提示该地址余额。这里示例地址中余额为零。
添加成功后就可以看到这个地址及其余额,并且标注为“Watch Only”。
4,备份私钥
将纸钱包的副本保存在不同场所,以防火灾等损毁。
5,从纸钱包中恢复私钥
如果要使用纸钱包中的比特币,就需要提取纸钱包中的私钥。首先不要丢弃该私钥,因为在漫长的投资时间内,比特币可能已经发生了多次分叉,这个私钥应该可以提取多种分叉币。但是由于分叉币钱包的安全性不得而知,我们应先转移其中的比特币。
恢复私钥的办法很多,如扫码恢复等,但注意私钥从纸张恢复到计算机系统中后,应该视为已经失密,必须尽快将其转移。因通常提取纸钱包都是为了交易,因此私钥暴露的时间有限。
例如,通过手机扫码(尽可能不要使用第三方软件,很多手机钱包本身有扫码功能,相对比较安全)获得一个私钥 “L5Qor8syNwTcAV8g5eoovYHzfmpPMTib8q86HDfoVvMF1q76xsve”。
还是回到blockchain钱包的设置-地址中,选择导入地址,此时将私钥导入。
此时,如果私钥有效,系统将显示出余额,并且此私钥会立即生效,可以动用其余额。有的系统会要求用户“Sweep”操作,即将刚刚导入的私钥中的全部比特币立即转入另一个新生成的比特币地址,以避免私钥泄密风险。但这会导致需要6个确认后才能使用这些比特币,如果急于交易,可以根据需要自行决定。
第二个地址即是我刚才导入的私钥,这个私钥上的余额(如有)可以立即被使用。
强烈建议立即将比特币发往收款人。如有余额剩余,应转入另一个未泄密的钱包。之后再拿这个(已经没有比特币余额的)私钥,去领取其他类型的分叉币。
比特币的系统给予了使用者自由,但也要求使用者对其行为负责。比特币没有银行、没有官府,没有人管,但是出了问题也没人可找。这就是比特币世界的基本规则。投资者应在投资比特币之前充分了解风险,学习相应的知识,才能避免在币价之外承受额外的风险。
如果你看了这篇文章想给我打钱,请打给 1JnBauGcUn85UWTJuxfi8H8vwQWLiYiynN