对此话题,r/Bitcoin社区成员belcher_认为我们不能再对此保持沉默,其表示纸钱包是非常糟糕和危险的,它们已导致价值数十万美元的比特币丢失了。而下面的这篇文章,解释了纸钱包存在的所有问题,即使专业用户也无法修复它们的缺陷。
作者|洒脱喜
新人常常会提问有关如何存储比特币的建议,而有些人则会告诉他们使用纸钱包的方式来存储比特币。
对此话题,r/Bitcoin社区成员belcher_认为我们不能再对此保持沉默,其表示纸钱包是非常糟糕和危险的,它们已导致价值数十万美元的比特币丢失了。而下面的这篇文章,解释了纸钱包存在的所有问题,即使专业用户也无法修复它们的缺陷。
相比之下,用户将“种子短语”或“助记词”(比特币钱包所生成的12或24个随机单词的短语)记录到物理媒介上,这种方式是存储比特币的最佳方式之一。
关于纸钱包
纸钱包是一种过时且不安全的比特币存储方式,该方法在2011年至2016年间非常流行。它的工作原理是将一个私钥和比特币地址(通常由网站生成)打印到纸上。
这种方法有很多缺点,其不应该被使用[1] [2]。
对于比特币存储而言,完成纸钱包的更好方法是使用种子短语,其中用户写下由钱包生成的12个或24个随机单词。
纸钱包的缺陷
1、打印是有问题的
纸钱包需要使用打印机将私钥转移到纸张上。很多打印机都有一个用于内部存储的硬盘驱动器,其可保存纸钱包。任何读取该文件的人都将能够看到私钥并窃取其中存储的比特币。学校,办公室或网吧等地的共享打印机通常也会有集中记录。如果通过WiFi访问打印机,那么任何无线电波监听器也可获得私钥并窃取其中的资金。[3]
而种子短语,让用户通过手写的方式(而无需用到打印机),将敏感信息传输到纸张上,从而有效避免了这个问题。
2、促进地址重用
纸钱包只有一个比特币地址,因此它们可促进地址重用。而纸钱包创建网站通常不会对此发出警告。
而确定性钱包和种子短语,通过为每个传入交易创建新的比特币地址来避免此问题。
3、鼓励中心化和外包验证
尽管纸钱包带有钱包一词,但它实际上并不是钱包,它们只是存储私钥和地址,而无法告诉用户他们是否实际收到过比特币及相应的数量。
单个比特币地址要求用户对区块链上的任何地址进行随机访问查找,这一要求促使用户使用中心化的第三方区块链浏览器网站。这就导致了隐私和验证问题,网站可以监视用户,并可能欺骗他们。
一种更私密的解决方案是将私钥导入bitcoin-qt并重新扫描。不幸的是,重新扫描不可扩展,因此非常缓慢。也因此,大多数用户都被迫使用公共区块链浏览器或Electrum服务器。这些中心化的服务可以监视用户,并准确了解他们拥有多少比特币以及他们在哪里使用比特币。截至2018年10月份,由所有比特币地址创建的地址数据库大小接近20 GB,并且需要很长时间才能建立,所以很少有人会在本地建立全节点。今天几乎所有的钱包软件,尤其是智能手机钱包,在查询纸钱包时都依赖于中心化的服务。
确定性钱包和种子短语通过具有可以顺序扫描的一系列比特币地址来部分地避免该问题。 使用该技术的钱包本身并不需要任何额外的数据库,并且与修剪相兼容。
另请参见:Full_node#Why_should_you_use_a_full_node_wallet
4、未经加工的私钥是危险的
使用未经加工的私钥,在很多情况下会导致资金损失。而纸钱包就是打印了一个私钥,这就给用户带来了这些风险。
实际上,私钥不是确定性钱包的一部分, 如果纸质钱包(纸张)被销毁并且应用程序被卸载,即使确定性钱包从其主种子中恢复,BTC也会消失。 原始私钥的非直观行为导致了这种情况。
而使用功能齐全的钱包软件要好得多,因为它提供了直观的界面(如发送的GUI按钮),这可从用户那里抽象出所有危险的细节。
5、不处理找零地址,这会导致错误
众所周知,用户将私钥导入软件钱包,然后才能花其中的资金。他们错误地认为剩余资金仍然在纸钱包里,而实际上它们是处于找零地址。[6]
6、 鼓励原始交易
原始交易是危险的,不直观的,并且已多次导致资金丢失。
这种错误的一个显著例子是1Acbo3viCYy1TSZB7m2W1nPPNF4rcAPMC9这个地址,它似乎就是一个纸钱包。在2014年4月到2017年1月之间,其拥有者似乎一直在定期购买比特币,但显然他在发送原始交易前犯了错误,并把50个比特币当作了矿工费[7] (按当时的汇率计算,这些比特币价值5万美元。)
还要注意,由于地址重用,这会导致可怕的隐私泄露,这也允许我们获得所发生事情的完整图片。
7、低错误校正
纸钱包的私钥通常以相当小的字体打印,有时字符可能被错误地读取为另一个字母,例如B与8或1对L。即使是单个字符错误,整个私钥都会是无效的。WIF格式中的私钥具有校验和,但没有工具可供常规用户更正错误。
二维码不是为安全的密码材料存储而设计的,被水浸过、出现皱褶、甚至进行折叠,都可能导致纸钱包无法被扫描出来。
(被水浸泡后损坏的纸钱包)
由于种子短语使用自然语言词,它们有更多的错误校正。潦草的字迹通常还是可以辨认出来的,如果一个或两个字母丢失,这个词仍然是可以被阅读出来的。
8、不一致的私钥格式
想要使用纸钱包,依赖于理解私钥格式的钱包软件。至少会存在一种情况,其中对私钥格式的更新,会导致用户的资金陷入困境[10]。
而种子短语避免了这个问题,因为它们是由相同的钱包软件创建的。
9、鼓励过时的脑钱包
现在几乎所有的纸钱包网站都有过时的sha256脑钱包接口。这些都是非常不安全的,不应该去使用,而纸钱包网站都没有提供足够的警告。
参见:Brainwallet#Obsolete_Brainwallet_Style
10、Javascript软件
大多数纸钱包都是在网站上使用Javascript加密技术创建的,这对于任何与比特币相关的东西而言都是不安全的。
11、浏览器钱包是糟糕的
几乎所有的纸钱包都是由网站制作的,因此涉及了浏览器钱包的大部分问题。[11]
赎回比特币资金
从私钥中取回比特币的最好方法,是使用某些钱包软件的“sweep”功能,这可以将纸钱包的全部资金发送到确定性钱包。或者,可以导入私钥,并将整个余额发送到钱包中的地址。
有很多钱包可以这样做:
Electrum和Mycelium支持扫描私钥。
Bitcoin Core钱包支持RPC调用“importprivkey”。参见如何在Bitcoin Core中导入私钥。
BlockChain.info、Armory等钱包也都支持直接将私钥导入钱包。
比特币ATM机和纸钱包
很多比特币ATM机会使用纸钱包系统,如果客户没有自己的比特币钱包,ATM机就会使用纸钱包来传送比特币。ATM机可以将一个私钥/地址对打印到纸上,其中包含了客户所购买的比特币。理想情况下,客户会尽快把纸钱包中的币转移到自己的钱包当中。
引用资料:
1、https://www.reddit.com/r/Bitcoin/comments/670zhy/summary_pitfalls_of_paper_wallets/
2、https://www.reddit.com/r/Bitcoin/comments/5pnrjb/mentor_monday_january_23_2017_ask_all_your/dcu36a2/?context=3
3、https://www.reddit.com/r/Bitcoin/comments/6ajwsv/printing_paper_wallet_at_work_office/ 4、https://bitcoin.stackexchange.com/questions/29948/why-doc-says-importing-private-keys-is-so-dangerous
5、https://bitcoin.stackexchange.com/questions/18619/why-so-many-warnings-about-importing-private-keys
6、https://www.reddit.com/r/Bitcoin/comments/1c9xr7/psa_using_paper_wallets_understanding_change/
7、See transaction d38bd67153d774a7dab80a055cb52571aa85f6cac8f35f936c4349ca308e6380
8、https://www.reddit.com/r/Bitcoin/comments/1sc02w/make_sure_to_secure_your_paperwallet_against/ 9、https://www.reddit.com/r/Bitcoin/comments/2ni2fq/reminder_keep_your_paper_wallets_dry_if_you_use/ 10、https://www.reddit.com/r/Bitcoin/comments/8v2lxa/did_i_lose_my_btc_by_sending_to_a_segwit_bc1/ 11、https://www.reddit.com/r/Bitcoin/comments/771c4z/bitaddressorg_beware_of_possible_scam/
巴比特资讯
2018年12月20日
https://www.coinvoice.cn/articles/3324