BTC.com手机客户端

千里之堤毁于蚁穴(慎用HD Wallets)

比太钱包 发布在 比特币 25 7137

现在我们都该明白,无论怎样强调随机对于比特币的重要性都不为过,随机的确称得上是比特币的“命根子”。
在过去的几篇文章中,小太已经介绍过了一些因随机问题可能导致私钥暴漏的情况,今天,我再跟大家聊聊分层确定性(Hierarchical Deterministic)钱包。

HD Wallets因其“只需要一个主(根)私钥,就能生成海量子私钥”这个特性广受欢迎,在过去的一年里,越来越多的钱包解决方案和比特币企业开始支持或采用HD模型来进行私钥管理,可是,大部分人并未意识到其中可能存在的潜在风险。(本文不讨论HD的原理,有兴趣的童鞋可参阅《分分钟搞懂HD钱包》及 BIP32 规范中的相关说明)

msbt_0409

HD模型的最大优点是不使用私钥就能生成大量的由您掌握的地址,其原理就在于直接通过主公钥就可以生成任意数量的子公钥,整个过程无需访问主私钥。这个特性有如下好处:

1、备份容易,只需备份主私钥,新增地址无需再次备份私钥;
2、保证主私钥的冷存储,无论新增多少个地址,仅需主公钥就能完成,无需主私钥介入;
3、方便的第三方审计,只需给第三方机构或会计提供主公钥,他就可以看到所有下级地址的交易,但又不能花费任何币(因为没有子私钥);

因为HD模型的这些好处,钱包解决方案和比特币企业就可以很方便的进行私钥管理。比如说,电子商务网站或交易所就可以在网站服务器上存放主公钥,然后按需新增子地址,对每个用户、每个商品甚至每笔交易都使用一个全新的比特币地址,而整个过程不会涉及冷存储的主私钥;再比如说,个人可以冷存储主私钥,在热设备上存放主公钥,就能方便的生成任意数量的地址,满足自己不断新增地址而又无需备份私钥的需求。

但这些好处其实是有代价的,因为HD模型有一个天生的“缺陷”(无论是Type1、Type2、还是遵循BIP32规范的确定性钱包),那就是只要暴漏任何一个子私钥,再加上主公钥,就能反推出主私钥,这是“致命”的。
也就是说,对于企业或个人,如果您使用HD模型管理私钥,出于方便的增加地址及第三方审计等目的,主公钥往往暴漏在外(主公钥的安全级别当然要远低于主私钥)。大家可能会认为,我们只要能安全的保管好私钥就足够了(比如说绝对冷存储主私钥,离线的使用子私钥签名交易等),但通过前几篇文章,您就该明白,如果使用了不够安全的随机数,签名交易也有可能会暴漏私钥。对于非HD解决方案来说,一个有问题的签名最多只会暴漏一个私钥,而在HD模型的情况下,任何一个子私钥的暴漏,都有可能导致主私钥的暴漏,最严重的情况下,整个树状的分层模型会整个崩塌,企业或个人的比特币资产也会全部丢失,这就是HD模型的最大风险。

HD模型的“安全”与“易用”其实是个悖论,为了易用,我们希望无论新增多少个地址都无需备份私钥,这就需要热的(泄露概率高)主公钥,而为了安全,又必须保护好主公钥,否则任何一个子私钥的泄露,都能反推出主私钥。这显然是个矛盾,而如果发生潜在的随机数问题,又会放大这种矛盾。因此,在这里,我特别提醒大家谨慎使用HD模型。

比特币的安全就在于随机,我们希望随机的生成一个个比特币私钥用来存币,希望使用随机的k值来签名交易。而HD Wallets的模型其实是基于一个唯一的(根)随机数来确定性的构建了整个分层级的、树状的私钥大厦(私钥和私钥间有着确定性的计算关系)。这座大厦,在没有遇到任何问题的时候,看起来也许是固若金汤,但任何一个小问题(如r值问题、内鬼盗窃等)的发生,都有可能导致整个大厦的崩塌。
这也许就是传说中的“千里之堤毁于蚁穴”吧!

最后,再说一句,尽量使用不相关(随机)的私钥解决方案吧,这才是比特币之本,比特币企业和个人应谨慎使用HD Wallets。

小太关于随机这个系列的文章就暂告一段落了,必须再次提醒大家,随着安全专家和黑客对k值更为深入的分析,因不安全随机数导致的丢币未来可能会越来越多,如果企业和个人采用了HD方案,甚至有可能会放大这种灾难,随机理应引起业内人士的足够重视。
看完这几篇文章,有人可能会担心“比特币到底安不安全?”。在这里,小太可以很负责的告诉您,直到今天(及可预计的未来),比特币很安全,比特币所依赖的椭圆曲线签名算法(ECDSA)也很安全,不安全的是一些有问题随机数生成器或技术解决方案,这些都与比特币无关。

本系列文章要特别感谢 Nicolas, Pinar, Filippo 这三位大牛,他们最近发表的论文(https://eprint.iacr.org/2014/848.pdf)让小太收益良多。在该论文中,几位作者深入的解释了不安全随机数的风险及其对HD Wallets可能造成的灾难,该篇论文干货十足,值得每位从业者学习。

----

相关阅读:

随机数:关乎比特币私钥安全

随机是比特币的“命根子”!

进一步探讨比特币签名中的随机风险

比太钱包
官方微博:@比太钱包 http://weibo.com/bither
官网:http://bither.net
捐赠地址:
1BsTwoMaX3aYx9Nc8GdgHZzzAGmG669bC3

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。

评论:25

您需要登录后才可以回复 登录|注册
    Author Image
    merry 754 天前

    非常感谢您http://www.blockmeta.info/tx/6fe9baf63b6b1fe7417f31b94d29c1d87bc67bef84d9c79eb14dc285fd5bca5a

    +1
    +1
    我要点评
    小菜ZENO
    小菜ZENO 760 天前

    大约半年前@比特咕噜 告诉我了这个隐患//@暴走恭亲王: 转发微博

    +1
    +1
    我要点评
    胖胖_1983
    胖胖_1983 760 天前

    不明觉厉//@比太钱包: 感谢巴比特,这是小太随机系列的最后一篇,文末提到的那篇论文,很值得深入阅读哈 [可爱]

    +1
    +1
    我要点评
    胖胖_1983
    胖胖_1983 760 天前

    不明觉厉//@比太钱包: 感谢巴比特,这是小太随机系列的最后一篇,文末提到的那篇论文,很值得深入阅读哈

    +1
    +1
    我要点评
    章郭蓉
    章郭蓉 760 天前

    @比特币交易网

    +1
    +1
    我要点评
    He1l_Q
    He1l_Q 760 天前

    //@孙小小: //@比太钱包: [羞嗒嗒]//@癫痫小蒙牛:[din推撞]

    +1
    +1
    我要点评
    ai铅ai笔
    ai铅ai笔 760 天前

    这里这里

    +1
    +1
    我要点评
    币定行叶桂平
    币定行叶桂平 760 天前

    回复@比太钱包:假设你说的是对的(随机数不安全,不重复也有可能丢)(尽管我不认同)这种情况下,非HD的ECKey一定是完蛋了。那HD也要看你暴露的extended public是哪个PATH的。如果PATH是0,那全部也完蛋,如果PATH是0.x.x那也只有是0.x.x及其派生地址沦陷。其他分支依然是安全的。你说哪个更好呢?

    +1
    +1
    我要点评
    币定行叶桂平
    币定行叶桂平 760 天前

    回复@比太钱包:私钥签名一次就会暴露?还在讨论私钥在什么情况下有可能暴露呢,就假设HD已经暴露一个私钥了?

    +1
    +1
    我要点评
    中年男贾孝国
    中年男贾孝国 760 天前

    @比特币交易网 //@比太钱包: [羞嗒嗒]//@癫痫小蒙牛:[din推撞]

    +1
    +1
    我要点评
    币定行叶桂平
    币定行叶桂平 760 天前

    回复@比太钱包:BIP32的使用方法有很多,例如BIP44就提供了很好的解决方案。引入了ACCOUNT的概念年。从某个PATH作为ACCOUNT的根。你可以有冷ACCOUNT和热ACCOUNT。

    +1
    +1
    我要点评
    比太钱包
    比太钱包 760 天前

    回复@币定行叶桂平:master public的确不等于extended master public,不过为了方便的新增地址或第三方审计,你还得暴露extended的,否则HD就没任何意义。论文中详细描述了此部分内容,类型2或BIP32从逻辑上讲,并不比类型1更安全,论文里描述的很清楚哈

    +1
    +1
    我要点评
    站在珠峰抽烟
    站在珠峰抽烟 760 天前

    //@比太钱包:[羞嗒嗒]//@癫痫小蒙牛:[din推撞]

    +1
    +1
    我要点评
    币定行叶桂平
    币定行叶桂平 760 天前

    回复@比太钱包:您好!master public != extended master public。BIP32的使用方法未必就一定需要从master开始,从任何一个path开始往下都可以。

    +1
    +1
    我要点评
    比太钱包
    比太钱包 760 天前

    回复@币定行叶桂平:叶总,关于类型1、类型2和BIP32的HD模型风险,文末提到的论文中有很详细的描述哈[可爱]

    +1
    +1
    我要点评
    Author Image
    比特币钱叔 760 天前

    从HD备份恢复的便利性来说,HD方案应该是应用推广的首选。但是看了作者的论文,小心肝受到了惊吓!!呜呜,有没有解决方案啊?

    +1
    +1
    我要点评
    码农周琪
    码农周琪 760 天前

    @招财币冷月 trezor如果也是使用HD wallet解决方案的话也得小心了

    +1
    +1
    我要点评
    比太钱包
    比太钱包 760 天前

    [羞嗒嗒]//@癫痫小蒙牛:[din推撞]

    +1
    +1
    我要点评
    李夭洋
    李夭洋 760 天前

    我每天的发货量很吓人的,这些图片见证了我的成长! 如果我卖假货,如果我产品不好,那我这些发给who?发给鬼?大家别贪便宜,行业内幕你不懂!【#3ce彩妆#lg润膏洗发水,九朵云,马油膏,[跳绳]疲劳贴,banila co芭妮兰卸妆膏,[便便]伊思蜗牛霜,dr.miz瘦腿袜】招实力代理微信laughing1119

    +1
    +1
    我要点评
    Kenshin1987
    Kenshin1987 760 天前

    //@黑胡子Bitcoin:转发微博

    +1
    +1
    我要点评
    小晨晨_怜云
    小晨晨_怜云 760 天前

    [月亮] 链 接:http://t.cn/R7yGGIc

    +1
    +1
    我要点评
    i问号
    i问号 760 天前

    拔出萝卜带出泥[good]//@比太钱包:感谢巴比特,这是小太随机系列的最后一篇,文末提到的那篇论文,很值得深入阅读哈 [可爱]

    +1
    +1
    我要点评
    Author Image
    changjia 760 天前

    拔出萝卜带出泥,HD钱包有被一锅端的危险。

    +1
    +1
    我要点评
    癫痫小蒙牛
    癫痫小蒙牛 760 天前

    [din推撞]

    +1
    +1
    我要点评
    Author Image
    癫痫小蒙牛 760 天前

    学习了

    +1
    +1
    我要点评