本文是有关比特币相关的系列文章,发布于GIT-HUB,地址如下:比特币钱包安全概要有关比特币钱包安全,可以简单的分为两类,一类是做为用户的你不可控制的安全问题,一类是做为用户的你可以控制的安全问题。之所以这样看似废话的区分,提醒你集中你的注意力在你可以控制的安全问题上。
https://github.com/junahan/JU...
要点提醒:确保比特币钱包安全的全部在于确保钱包私钥安全,好消息是,这个你可以采取措施。
你不能控制的安全问题
- 比特币选择的密码学算法安全问题,例如,比特币创世之初选择了采用SECP256K1算法,如果该算法失效,则会从根本上威胁比特币安全
- 51%算力攻击导致的交易安全问题,这个可能导致你收不到比特币,但不会导致你持有的比特币产生安全问题
- 你可以选择使用那个钱包 - 比特币账本完全开放,任何人都可以构建一个支持比特币的钱包
- 你可以选择采用什么机制来存储和保护你的私钥,例如,你可以采用冷热存储或者分割和共享密钥的方式
- 你可以养成良好的使用钱包的习惯,例如,定期备份钱包、必要的时候及时将热钱包内的比特币转移到冷钱包等
机制 | 易用性 | 可用性(1) | 安全性(2) |
---|---|---|---|
本地存储 | 高 | 低 | 低 |
冷热存储 | 中 | 中 | 中 |
分割和共享密钥 | 中 | 高 | 高 |
在线钱包 | 高 | 中(3) | 低(4) |
比特币交易所 | 高 | 中(5) | 中(6) |
- 可用性(Availablity): 和存储介质可能自然损坏有关,可以简单的理解为防灾,高可用性往往意味着更低的安全性,想一想你把私钥备份到公共网络上就明白了。
- 安全性(Security): 可简单的理解为防盗。
- 在线钱包的可用性取决于钱包提供方的服务能力。
- 在线钱包的安全性取决于钱包提供方的安全措施和信用,但很重要的是,做为用户的你要意识到钱包提供方存储你的密钥也意味着可以访问你的密钥。而且在线钱包供应商更有可能遭受黑客的攻击而导致客户钱包的损失。
- 使用比特币交易所服务就像你把钱存入银行一样,可谓是省心省力、方便易用。但其可用性取决于交易所的防灾能力。
- 对于使用比特币交易所的安全问题,不再是密钥的安全问题,而是你在比特币交易所账户的安全问题,你需要像信任银行一样信任交易所不破产、不跑路、不作恶。
使用本地存储方便快捷,但可用性和安全性均较差,也就是说,你既要防盗还要防灾才行,这种情况下,你最好定期备份keystore并确保将备份安全。
冷热存储鉴于本地存储安全性的问题,我们希望能够在保留便利的情况下提升安全性。基本的思路是我们可以创建两个钱包,一个链接网络,可以发送和接受比特币,我们称之为热钱包,另外一个钱包从不连接网络(安全威胁更多来自网络),我们称之为冷钱包,热钱包知悉冷钱包地址,从而可以向冷钱包转移价值。这样以来,我们同时拥有热钱包的便利和冷钱包的安全。
考虑到隐私和安全问题,我们希望每次热钱包向冷钱包转移比特币的时候使用不同的地址,该地址需要和冷钱包相应的密钥对匹配,那么如何确保热钱包知道冷钱包的多个地址?答案是利用称之为分级密钥生成模式的密码学技巧,如下图所示:
文章图片
- 分级密钥生成程序不直接生成密钥对,而是生成两段信息,一段是私钥生成信息,该信息存储于冷钱包这侧,另外一段是地址生成信息,该段信息传递给热钱包一侧。
- 在热钱包一侧,分级密钥生成程序使用地址生成信息和索引值“i”(一个整数)生成第“i”个地址。
- 在冷钱包一侧,分级密钥生成程序使用私钥生成信息和索引值“i”生成第“i”个私钥,并确保该私钥和热钱包一次第“i”个地址相匹配,这点至关重要,否则,就无法确保冷钱包用于该地址上的比特币。
- 密码学保证攻击者无法通过热钱包一次的地址生成信息推导出私钥生成信息及私钥,从而可以确保私钥的安全。
- 比特币使用的数字签名算法(ECDSA)支持分级密钥生成模式(这很重要)。
- 分级钱包: 直接基于分级密钥生成模式打造,在这种方案中,冷钱包可以存放在不连网的PC/笔记本电脑上,也可以存放在不连接网络的移动设备上,并记得把它放在安全可靠的地方 - 注意防盗防灾。
- 大脑钱包: 基本原理是根据口令短语(一组足够长的词语组合)产生密钥对并结合分级密钥生成模式,我们可以基于口令短语生成一系列地址和相应的私钥。需要重点关注的是,私钥仅仅由口令短语保护:
- 为防止攻击者发起猜测攻击,口令短语需要足够长,要比Email口令和银行卡密码长的多才行。例如这样的口令短语 - "worn till alloy focusing okay reducing earth dutch fake tired dot occasions"。
- 同时要确保你的确能够记住口令短语(你也可以写下来并放在安全的地方,把它变成成一个简单的纸张钱包),否则你就无法重建私钥系列,从而永远丢失这些地址上的比特币。
- 纸张钱包: 和大脑钱包原理一样,如果你把口令短语打印在纸张上,大脑钱包就变成纸张钱包。不过,既然都要打印在纸上了,不妨直接把私钥和地址打印在纸上。在此提醒,请把纸张钱包放置在安全可靠的地方 - 注意防盗防灾。
简单的说,共享密钥允许将你的密钥分成N个碎片,只需要其中的K个碎片(K<=N)就可以恢复原始密钥,而且,如果只有少于K个碎片,则无法恢复原始密钥并切无法获得原始密钥的任何信息,这就是密钥共享的K-of-N模式。
这里需要提醒用户的是,这里的N个碎片只是个比喻,并非简单的把原始密钥串直接切成N个碎片。这里想到一个网络盛传高晓松2017年12月8日微博分享的故事(看下图),这个故事告诉我们,这个人脑2-of-2密码模式安全但可用性显然不行。
文章图片
在线钱包一个在线钱包类似于本地钱包,区别在于钱包信息存储于云端,可以通过Web浏览器或者是App访问。在线钱包很是便利,但它的安全不仅取决于在线钱包服务供应商(通常是比特币交易所)的安全措施,还取决于服务供应商的信誉:
- 在线钱包供应商安全措施:
- 是否提供类似本地存储的大脑钱包的机制,允许通过一个受复杂口令短语保护的冷钱包支持,让用户可以在本地通过该口令短语重建一个冷钱包,这样以来,用户只要在线使用一个受密码保护的热钱包,同时又能够在必要的时候把在线钱包的比特币及时转移至冷钱包地址。
- 网络防攻击 - 在线钱包供应商大量存放客户的钱包密钥信息,容易成为黑客攻击目标。
- 在线钱包供应商信誉: 供应商在云端存储你的密钥,他们至少有能力访问你的密钥!通常,类似于大脑钱包,你可以提供一个足够复杂的口令短语来加密和保护你的密钥,但你得信任供应商不会有意(作恶)或者无意(例如他们钱包的代码漏洞)泄漏你的密钥和口令短语。
你可以采取的措施
- 选择钱包 - 尽可能选择官方的,开源的,具有高级安全选择(如支持冷热存储)的钱包。
- 使用更高级的安全防护,如采用冷热钱包,兼顾方便易用和安全
- 及时将不用的比特币从热钱包转移至冷钱包,如果只有口令短语保护的情况下,尽可能使用专业软件生成口令短语,不要使用过于简单的口令短语
- Satoshi Nakamoto(中本聪),"Bitcoin: A Peer-to-Peer Electronic Cash System", http://www.bitcoin.org/en/bit..., 2009.
- Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, Steven Goldfeder, " Bitcoin and Cryptocurrency Technologies, 2016.
- BIP 32, "Hierarchical Deterministic Wallets", https://github.com/bitcoin/bi..., 2012.
本作品采用 知识共享署名 4.0 国际许可协议进行许可。
推荐阅读
- 推动NFT走出监管困境,BSN推出支持NFT基础设施网络
- 腾讯|SaaS的收入模型有哪些(终于有人讲明白了)
- 就业方向上什么才是最重要的(--- 来自程序猿的迷茫。(C++?Java?or算法?))
- 区块链中加密货币的含义
- 波场万倍潜力币HYL23号21:09分 正式上线JustSwap
- 《瀚兰房地产开发区块链应用及案例分享》BSN培训精华回顾
- 对联盟链而言,跨链协议为什么重要()
- 区块链能够应用在哪些行业
- BSN区块链服务网络中密钥托管模式和公钥上传模式有啥区别()
- 币圈人物传|币圈大佬今何在 唯有一诺正当时