区块广播:

【巴比特独家】千万别用脑钱包!你很可能失去你的比特币!

imcoddy版主发布在 BTC/比特币
 56464  15



译者前言
好吧,这个有些标题党了。不过作者原意就是如此。不同意这观点的话,可以先把文章看完再来反驳:)

本文翻译自 Gavin Andresen 几个月前的一篇笔记(玩比特币只听说过中本聪却不知道 Nakamoto Satoshi 和 Gavin Andresen 的话,说明还得加强学习一下比特币知识:P)。比特币脑钱包因其使用方便成为不少初学者的选择,不过在设置脑钱包口令(passphrases)时经常出现过于简单以至被人将币转走的情况。因此,虽然已是旧文,不过现在看来,这篇文章依旧具有不少教育意义。如果觉得这篇文章对您有帮助的话,欢迎往文章末尾的地址打赏;)

脑钱包的脑风暴

脑钱包的风险
人类其实并不擅长原创,更不善于选择与众不同。而且我们在理解数量级这一方面非常的糟糕。

所以,如果你让一个人创建一个安全的口令,他们很可能会选出一个会被拥有强大计算能力的“死嗑攻击者”破解的密码。

如果你要保护的东西是像你的非死不可(Facebook,原谅我这样翻译吧:P)帐户之类的玩意的话,这并不是什么大问题,因为一个典型的非死不可帐户大概也就只值得这么几毛钱(当然,如果你是明星的话那么你的账号会更值钱一些,你也应该在它的安全性上操心多一点)。而攻击者必须首先以某种方式获取你的非死不可密码的数据库,然后才能开始试图猜测你的密码。

但使用比特币脑钱包的麻烦是,他们是有(不菲)价值的,而攻击者已经拥有了破解专用的“密码数据库”。

脑钱包的破解步骤
要想破解一个脑钱包口令,攻击者会:

找出所有金额不为零的比特币地址并创建一个列表保存下来。
通过重复猜测可能的脑钱包口令来生成地址,并看是否能与以上列表中所得到的地址对上号。
第一步非常简单,而且攻击者正在对第二步操作越来越熟练。他们可能有每秒能猜上亿次的硬件,而且也有用来处理设置密码时常用的例如「I <3 butterflies and rainbows」这类模式的软件。

我们在理解庞大的数字时真的非常糟糕,我们低估了密码被破解的可能性,并不了解攻击者在能以每秒尝试数亿次猜测的情况下,它可以多么轻而易举地就猜到我们的密码。

而在使用了脑钱包之后,我们就像是成了明星一样,即使你只有半个比特币放在你的脑钱包里面,如果你用的是一个弱口令,攻击者将会得到它(里面的比特币),因为他们的口令猜测算法会对每个人的脑钱包进行检查。

所以,人们有可能创造一个安全的脑钱包吗?密码/口令其实是没有用的,因为我们分享了这么多(例如流行文化,语言,教育)的内容,即使当别人说“我想到的东西没有其它人会想到”时,很可能他们想的东西与其他很多人所选的类似。

一个可行的脑钱包模式
以下是一个我认为可能安全的脑钱包设计模式提案。

将以下的几项组合起来建一个安全的脑钱包:

  • 你的全名
  • 口令1
  • 口令2
所以,我的口令可能是这个样子: "Gavin Anthony Andresen I have eleven hovercraft full of eels! Okey dokey: patches welcome."。

这个模式的安全性取决于它究竟有多难猜。如果可以花钱让别人来告诉我们是不是选择了一个差的口令,而又不必告诉他们真实的口令是什么就好了。

好吧,其实这是可以实现的!

首先用上面的口令创建仅由口令生成的两个“哨兵” 脑钱包,并用上面的组合生成一个安全的脑钱包,然后将大部分的比特币存放到安全的脑钱包上,并将一些零钱存到“哨兵” 脑钱包里面。

如果某天我发现在“哨兵”钱包里的比特币被转走了,我就知道在某个地方有黑客成功地猜出我的口令,这时我就应该选择一个新的口令,创建新的“哨兵”和安全脑钱包并将我的比特币转移过去。

以上模式的破解难度
有没有可能攻击者对我一点也不了解,但他知道我的口令生成模式(全名/口令1/口令2)并能破解我的安全钱包?

我们可以算算这大约有多少组合的可能:

  • 名字:攻击者试图在1000万个最常见的名字中尝试。
  • 口令:假设攻击者需要尝试10亿次后才碰巧猜对你的口令。 我们假设攻击者在提高算力上投资了不少,可以尝试每秒十亿次组合(一块高端的显卡可以做到这样的事情) 。
算了一下,它平均需要超过1000万年才能破解,听起来绝对足够安全了!

但是,如果攻击者知道你有1000个比特币安静地待在脑钱包里,并且决定只是针对你进行攻击的时候,这将变得容易了1000万倍(译者注:因为名字已经确定,不再需要盲目地猜测),所以要得到你的1000枚比特币平均需要一年多的时间。这其实并不值得,因为这样的话他们需要在破解的硬件上花费更多,并且还要花上一年的时间,仅仅只是为了破解你的钱包而已。(译者注:要知道这文章可是写在九个月前,按现在的价格来看,这1000枚比特币可是要比硬件投入值钱得多:P)

解决方案
支持创建脑钱包的软件应该花一些时间尝试让你的口令稍有差异,并且在blockchain检查一下,看看他们目前是否正在被用来存储着比特币(或在过去任何时间里曾被用来存储过比特币)。如果有的话,就应该提醒你去选择另一个口令。

如果某个口令生成的地址里有未使用比特币,你也应该立即发送这些比特币至你的钱包里。这是你让其他人知道他们选择了一个糟糕的口令的方式以至给你的奖励,(哈哈,大牛居然也支持转账!)同时让他们知道他们需要将比特币放到他们的主要的脑钱包里。

随着使用脑钱包(或其它类似的)的人越多,我们就越应该注意选择一个安全的口令。

致技术人员们:我刚才掩饰一个极大的秘密信息。设置哨兵钱包其实应该是超级简单快捷的,如下:
private key = SHA256(passphrase) //(作者这是在向SHA256致敬吧:P)


译者总结


  • 本文首发于巴比特,转载请保持原文信息完整。
  • 脑钱包的破解难度取决于口令的复杂程度,在设置时个性化很有必要(降低被猜中的概率),即使如此,由于人们在选择时词汇量时会受文化限制集中于某个固定的范围里,所以不要对其强度过于自信。
  • 如果黑客采取针对性的暴力穷举的方式的话,破解所需时间远比预想的要短(例如文中的10万年到一年的差距)。
  • 采取“哨兵”模式来监测自己口令是否被猜出来了(这是我从这文章学到的方法,以及将其翻译出来的原因@_@),使得在主钱包沦陷前有机会转移至新的安全地址上。(呵呵,如果主钱包直接沦陷,说明你在设置脑钱包前没有加口令用SHA256加密XD)

文中所引用图片版权归原作者所有。如果这篇文章对您有帮助,请捐献若干比特币,谢谢。
捐助比特币地址:1MzziGBa7tNNzMwVJMPEjAfM1wRcvSGZu5 与君共勉。

原文地址:https://gist.github.com/gavinandresen/3840286

PS:如果读者有兴趣的话,或许我还可以总结一下因弱口令造成的脑钱包沦陷的趣事,例如因“bitcoin is awesome”而损失的那 500 枚:P







  • 正序
  • 最新
只看帖主楼层直达
  • 科学HY 队长 2014-01-18 14:59:08 来自PC沙发
    如果某天我发现在“哨兵”钱包里的比特币被转走了,我就知道在某个地方有黑客成功地猜出我的口令,这时我就应该选择一个新的口令=========================================
    采取“哨兵”模式来监测自己口令是否被猜出来了,毫无意义
    如果某天有黑客成功地猜出你的口令,他不需要把你“哨兵”钱包里的比特币立即转走,他完全可以加一个外壳密码,更有雄心猜出你大钱包的口令了
  • imcoddy 版主 2014-01-18 17:20:15 来自PC板凳
    科学HY 发表于 2014-1-18 14:59 如果某天我发现在“哨兵”钱包里的比特币被转走了,我就知道在某个地方有黑客成功地猜出我的口令,这时我就 ...
    从某种意义上来说的确如此,所以作者在一开始就说了:千万不要使用脑钱包:P
    可是,要想出现你所说的情况,需要有以下两个条件:
    1,黑客确实知道你在创建安全的脑钱包时所用的模式。文中只是给出了一个使用自己姓名的例子,但如果你用的不是名字,而是自己某个大姨父的口头禅,那么就算黑客一直试着用你的名字来继续进行猜测,那其实只是在做无用功。
    2,如果黑客并不知道你所用的模式,那么它实际上在侥幸地猜对一个之后,也并不能确定你是否以现在的口令为基础制作了一个更安全的钱包。他当然可以不转走哨兵钱包里面的钱以免打草惊蛇,同时继续在此基础上进行猜测,但别忘记了,破解也是需要时间的。同时在现实世界中也需要定期变化密码,在比特币的世界里面亦是如此。半年重新制作一套安全钱包,也不是什么难事吧。
    我稍看了一下原文后边的讨论,总体而言主流的观点是脑钱包带来了便利,但确实也会存在一定的安全隐患。不过绝对安全本身就是一个伪命题不是么?安全和便利这其中的权衡,就需要比特币玩家自己决定了。
    翻译这篇文章,只是想提醒一下大家就算使用脑钱包,也要注意在选择口令时多慎重考虑,同时配合着几个口令的组合搭配以及某种加密算法的预先处理可以使得破解难度提升不少。不过看来这篇帖子浏览的人不多,稍有些残念了。呵呵,希望是大家都已经明白安全的重要性了:)
    楼层直达
  • vatten 船长 2014-01-19 02:19:44 来自PC地板
    脑钱包说到底就是只记一个密码,这个密码被人猜出来就完菜,现在的GPU阵列对10位以下的密码用穷举法猜出来是很简单的事

    从安全的角度来说,一般都需要两到三重防护,还是离线钱包+密码的双重保护方式较为简单,再复杂一点可以把离线钱包文件存储在某具有加密功能的U盘里,该U盘三次密码输入错误即自动销毁
  • aisen 海盗王 2014-01-19 11:06:05 来自PC5楼
    资助0.03BTC

    14bc3d0e8828890a7c6836c48c6620641e72bc01099e7d1739f4590cebff60b1
  • imcoddy 版主 2014-01-19 11:30:39 来自PC6楼
    vatten 发表于 2014-1-19 02:19 脑钱包说到底就是只记一个密码,这个密码被人猜出来就完菜,现在的GPU阵列对10位以下的密码用穷举法猜出来 ...
    脑钱包的确只是记住一个密码,如果被猜出来了就完菜。其实这话放在纸钱包上也一样适用的吧?如果私钥被猜出来也一样完蛋(当然,这个要猜中的确是中大彩了)
    总而言之,安全取决于用户的个人意识。在使用脑钱包时选择的口令复杂至一定程度并从来没有在网络上出现过的话,它的安全性还是比较有保障的。
    楼层直达
  • imcoddy 版主 2014-01-19 11:31:09 来自PC7楼
    aisen 发表于 2014-1-19 11:06 资助0.03BTC
    14bc3d0e8828890a7c6836c48c6620641e72bc01099e7d1739f4590cebff60b1
    非常感谢,继续努力:)
    楼层直达
  • vatten 船长 2014-01-20 05:23:36 来自PC8楼
    不知道有没有人试过用中文一句话生成脑钱包?我觉得如果是国标代码的,应该全都是非正常键盘代码,一般的密码破解软件攻击不到

    但这种方式如果换一台英文的甚至是台湾的大五码的机器可能就无法输入那句话了
  • imcoddy 版主 2014-01-20 09:16:36 来自PC9楼
    vatten 发表于 2014-1-20 05:23 不知道有没有人试过用中文一句话生成脑钱包?我觉得如果是国标代码的,应该全都是非正常键盘代码,一般的密 ...
    是的,使用非英文系的符号可以让破解的难度得以更大的提升,因为这需要攻击者具有更大的密码库才能应对。不过这也如原文作者所说的这样,就算你选用的是非英文字符,其实它也必须在人类的知识积累中出现过,因此这个也是会存在被破解的可能性就是了;) 过几天我再对此整理一下,重新陈述一下我对脑钱包的看法。
    楼层直达
  • 玛_雅 版主 2014-07-24 21:38:17 来自PC10楼
    强烈抗议标题党。翻译者不负责的乱翻译,将会延缓比特币的发展进步,为了反驳才特意来注册的。
    原标题是“DO NOT USE A BRAINWALLET! YOU ARE LIKELY TO LOSE YOUR COINS!”原标题中并没“千万”,并且“likely”只是有一定可能而不是很可能。
    翻译人员你知道这样标题,原作者会有多生气吗?知道会有多少人错失,脑钱包这种最好用最安全的储存币的方式吗?希望以后实事求是的翻译。自己的观点可以放在括号里。
    1、任何工具都要会用才行。
      给你一把AK47但是你不会用不会开枪,一样会被手拿砍刀的敌人给打败。难道你会说AK47的武力不如砍刀。
    2、任何设简单密码的任何加密都不安全。
      不论你用何种安全加密方法,例如AES算法,但你若用123456为加密字串,一样会不安全,算法是没办法抗击这种简单密码的暴力破解的,唯一能要做的就是若有简易密码时提示下不安全。
    3、不安全的脑钱包,叫做脑残包。脑残包不是脑钱包。
      这里有点“白马非马”的意思了。但是脑残包和脑钱包真的是有天壤之别,有个超级不安全,而另一个超级安全。
    4、原文的重点是,介绍怎么样才能生成安全的脑钱包,而避免脑残包的。
      其用了个方法是private key = SHA256(passphrase) 这即是用Hash值来作为脑钱包的口令,这才是重点,放哨只是浮云。当然当大量人用此法放哨时,暴力破解也可以这么再破,就像md5(md5())用的人多了就没用了一样。我做了个idgui.com/BTC脑分裂钱包,可以用第一个私钥经过修改编辑后再作为第二个的口令,更加安全。

    将来发展到人人都用安全地脑分裂钱包,就不会有任何盗币或者丢失币的情况了。
  • 玛_雅 版主 2014-07-24 21:50:30 来自PC11楼
    imcoddy 发表于 2014-1-18 17:20 从某种意义上来说的确如此,所以作者在一开始就说了:千万不要使用脑钱包:P
    可是,要想出现你所说的情 ...
    你对标题的理解弄错了。原作者的意思应该不是“千万不要使用脑钱包”
    而是“USE A BRAINWALLET!”他的重心应该是 A 一个,即他是想说,别只用一个脑钱包,要多用几个,有几个脑钱包在前面放哨。
    你这样曲解的翻译,不知会令原作者多么伤心,我感觉原作者还是支持脑钱包的,但对脑残包表示担忧而已。对于足够长的脑分裂钱包,长度比私钥还长且无规律,是不可能暴力破解的。
    楼层直达
  • 南宫远 船员 2014-07-24 22:10:47 来自PC12楼
    标题党啊,没这事
  • imcoddy 版主 2014-07-25 17:05:59 来自PC13楼
    玛_雅 发表于 2014-7-24 21:38 强烈抗议标题党。翻译者不负责的乱翻译,将会延缓比特币的发展进步,为了反驳才特意来注册的。 原标题是“ ...
    呜呜,好久前的一篇翻译,被扣了这么大一顶帽子。
    先明确以下几点:
    1,只使用简单的字符组合做为密码所生成的脑钱包地址不安全,很容易让别人暴力碰撞而被人盗取。 2,自己设定一条暗语,然后通过对其加密生成 Hash 值再用来生成脑钱包相对更安全一些。如果生成的方式被别人知道的话,这种方式其实也不安全。
    这两点我们应该能达成共识吧?
    关于标题是否过分,我个人看法是这样的:原标题使用了全大写字母强调,并加上了感叹号,实际上语气是很重的,在这一点上,即使真有标题党之嫌,我个人也不觉得现在的标题过于夸张。
    (把这标题丢 Google Translate 里面,得到的结果是“绝对不要使用BRAINWALLET!你很可能会失去你的硬币!”当然,你也可以说谷歌翻译在处理语气轻重时也是经常不合时宜就是了。)
    关于 Gavin 的态度,除了原文之外,我想还可以从这里看出他的态度:
    Every time I look at the academic literature on passwords/passphrases, I get more depressed about the feasibility of either giving users a secure passphrase that they will remember or getting a secure passphrase from them. I fear there will be a lot of lost coins if "brain wallets" get popular. 所以,我更觉得他的态度是:不要用脑钱包。如果实在要用的话,一定要对所用的语句进行加密,以避免直接通过词库来暴力破解。
    至于脑钱包是不是最好用的,这个我持保留意见,实际上,人的遗忘性会比大多数人预想的要厉害得多。当然,我不否认脑钱包还是有着它的适用场景,但我个人不觉得它是最好的就是了。我也用脑钱包,密钥是我的个人 ID 加上某个 repository 的 git hash 值,所以对我而言如果忘记了只要一个个 commit 的去试就好,不过如果自己在设置脑钱包时忘记了生成的方式,到时就只能望币兴叹了。
    最后,感谢你的回复将这帖子顶上来。也希望更多新人能看到,明白脑钱包并不是不可以使用,但在使用时要明白自己在做什么。否则,还真是不要用的好。
    楼层直达
  • 玛_雅 版主 2016-04-14 14:52:37 来自PC14楼
    imcoddy 发表于 2014-7-25 17:05 (把这标题丢 Google Translate 里面,得到的结果是“绝对不要使用BRAINWALLET!你很可能会失去你的硬币!”当然,你也可以说谷歌翻译在处理语气轻重时也是经常不合时宜就是了。)
    http://translate.google.cn/#en/zh-CN/DO%20NOT%20USE%20A%20BRAINWALLET!%20YOU%20ARE%20LIKELY%20TO%20LOSE%20YOUR%20COINS!
    谷歌翻译,最新结果: “不要使用BRAINWALLET!你可能会失去你的金币! 前面没有“千万”也不是“很可能”而是“可能“。
    现在,加文要过来巴比特AMA了。我们正好问问他这件事儿。 http://8btc.com/thread-31877-1-1.html
    相关文章《比特币脑钱包,你应该用!》http://www.8btc.com/bitcoin-brainwallet 《左脑右脑一个完美组合,双脑脑钱包诞生》http://www.8btc.com/brainwallet-2
    楼层直达
  • 甘少 副船长 2017-06-04 23:45:29 来自PC15楼
    非常简单的他们都无法破解,比喻 用:“我爱你林XX”,生成第一私钥,然后再用,“我是XXX广东人”,生成第二私钥,然后再用 第三个问题,“我的儿子叫XXX” 生成第三私钥,再把三条私钥或者某私钥加某公钥串在一起生成最终私钥,就成了,鬼想到?
  • 戒_rky 船员 2017-09-27 21:02:40 来自PC16楼
    这文章,如果用穷举法,是不是私钥也会被对上?私钥字母数字能有多少位?如果我用一本小说里某一页某两行作为密语,哪个更容易破解?
    是不是私钥不可能用穷举法输入到钱包?
    新韭菜,不懂,高手说说
登录 账号发表你的看法,还没有账号?立即免费 注册
推荐节点 更多
热帖榜 本周最热本月最热