比特币史话·88 | 随机(2): 脑钱包

图片

(彩虹表。图片来源于网络)


前情回顾:
比特币史话·83 | 压缩(1): 默克尔树
比特币史话·84 | 压缩(2): 装到手机里
比特币史话·85 | 压缩(3): 植树造林
比特币史话·86 | 压缩(4): 布隆过滤器
比特币史话·87 | 随机(1): 真伪随机数

正文:
比特币系统的整个设计在三个关键之处需要用到良好的随机性。比特币系统的安全性严重依赖于这三处具有足够好的随机性,任何一处的随机性不合格都有可能造成致命的安全风险和资产的失窃。
这第一处就是比特币的私钥。与私钥等价的还有一个东西叫做“助记词”(mnemonic words),本质上和私钥没有什么不同,只是用词典里的词来帮助人们更方便地记录和备份私钥罢了。私钥本质上就是一个随机数,一个概率空间非常巨大的随机数,足足有2的256次方那么大。要知道,我们这个宇宙中全部的原子的总数也只有10的80次方左右,也就是2的266次方。
我们知道对哈希函数有一种攻击方法叫做彩虹表(rainbow table),就是把一些哈希原像(输入值)和它们的哈希值的对照表提前计算好。待到破解一个哈希摘要过的密码的时候,直接查表就会迅速知道密码是什么。像MD5和SHA-1这些强度不够的哈希函数,彩虹表攻击是非常有效的。很多网站被“拖库”之后,注册用户的密码分分钟就被黑客全部掌握了。
不过,像比特币使用的SHA-256这样的哈希函数,搜索空间实在是太大,想象一下要给宇宙中每个原子都分配一个私钥,可是光是存储和记录一个私钥就要占用相当多数量的原子,以至于这样一张彩虹表的体积可能要超过这个宇宙。显然,这是很难办到的。
但是,黑客并非束手无策,因为还有用户的助攻。曾经有人发明了一种私钥的生成方法叫做“脑钱包”。方法很简单,就是不用随机数,而是让用户自己选择一个自己熟悉的、容易记住的密码,然后把这个密码的SHA-256哈希值作为私钥来使用。
容易记忆、容易熟悉的密码显然就是规律性强的甚至包含字典词汇的密码,而黑客早就针对常见密码模式制作了词典,并生成了彩虹表,虽然是一张远远不完全的表,但是已经可以很好的覆盖普通人正常思维所能想象到的密码组合模式了。因为脑钱包的随机性来源完全在人脑,哈希函数本身不会增加随机性,所以对脑钱包的理解错误或者不当使用,就给黑客留下了可乘之机。
2012年左右,有人使用“bitcoin is awesome”作为脑钱包的密码,并向由该密码最终对应的比特币地址中持续转入了大量比特币,累计总量达到500多枚。不久之后,他的私钥就被破解了[1]。“脑钱包”秒变“脑残包”。时至今日,每天都有大量的自动化机器人程序扫描比特币区块链上的地址,挑选其中比特币存量大于某个阈值的进行密码猜测。一旦猜出密码,立刻窃取所有的比特币。
不要用安全性未经广泛验证过的软件来帮你生成私钥。很有可能它的随机性有缺陷,而这一点无疑会让你的比特币暴露在高危风险之下。如果要尝试脑钱包,一定要设置足够长、足够复杂的密码。关键是长度,一定要长,至少15-30个字符以上。
【未完待续】(公众号:刘教链)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇