V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MuskLee
V2EX  ›  Bitcoin

做了一个完全手动生成加密币助记词的小工具

  •  
  •   MuskLee · 132 天前 · 1567 次点击
    这是一个创建于 132 天前的主题,其中的信息可能已经有所发展或是发生改变。
    记词的方法一般由钱包生成,存在风险,因为内部运行我们并不知道,所以做了一个完全手动透明可离线的

    使用说明:

    https://yes.do/d/31

    工具地址:

    https://yes.do/tools/bip39/bip39.html
    7 条回复    2024-07-23 14:56:34 +08:00
    zictos
        1
    zictos  
       132 天前
    直接用私钥就行了,没必要用助记词,根本就不指望能记在心里。而且助记词必须用 24 个单词,不然安全性比直接用私钥低很多。
    agegcn
        2
    agegcn  
       132 天前
    python 下也就几行代码吧
    acess
        3
    acess  
       131 天前
    @zictos
    secp256k1 作为非对称密码,强度只相当于 128bit 的对称密码,也就是 BIP39 12 单词的强度。

    要是说地址是公钥的 hash ,而不是公钥本身……确实币圈流传过一篇文章,说不直接暴露公钥含有一定程度的量子计算机抗性,但……btc 这边最新一代的 taproot 地址全都是裸公钥,开发者为了给这个做辩护就在 stackexchange 上说过这个问题,里面还提到过,比如上古时代巨量的币都是 p2pk 裸公钥,还有很多其他情况也会暴露公钥,比如地址重用,比如 hd xpub 主公钥被透露(比如透露给钱包服务器),于是从经济方面考虑,这些公钥暴露的币仍然足以摧毁 btc ,于是就不用担心这个问题( x

    嘛反过来说如果未来哪天真的有了量子计算机,是不是还存在某种迁移方案?或者说很久以前我听说过也许可以做个零知识证明,既能对外界证明我知道一个 hash 对应的公钥,又不用把公钥公开透露出去,不知道能不能做,如果能具体又是怎么做的。


    再有一个就是,可以上溯到神圣的白皮书本身的,地址不要重用以便一定程度上保护隐私,所以为了方便换地址,乃至扩大一点概念为了方便管理钱包(分账户,分不同用途),甚至是扩展到方便管理其他币种、全部都用一个种子,所以有了 BIP32 HD 钱包、BIP44/49/84 等等规定标准推导路径……但老实说我感觉隐私方面是否有益处好像受到很大挑战,HD 钱包本身就给我一种好像是……

    过度工程的感觉,老实说。确实,感觉实际上可能并没有那么大好处,反倒各种蛋疼。

    只是看上去很优雅又能全面地照顾各种需求,但落到实际上各种蛋疼,从历史遗留问题( BIP49 提出较迟,有些钱包在有 BIP49 统一标准之前就找一个简单的路径先行实现了 HD 钱包,但这个其实蛮特殊,作为例子提出来不好),到 gap limit……
    acess
        4
    acess  
       131 天前
    作为很久以前有过类似想法的人,“同行”相轻,我对楼主的作品天然就有一种偏见(

    于是在我的视角看来就想挑刺……比如 ian coleman 的 bip39 工具本来就支持 raw entropy 输入不是么?那么楼主这个工具有什么独到的地方?难道是照顾没有键盘只有触屏的平板电脑?
    acess
        5
    acess  
       131 天前
    我的想法是这样的:

    BIP39 是 11bit 编码一个单词,而且 checksum 还放在最后,而不是分散给每一个单词,所以,

    可以把 11bit 拆分成两部分,后半部分 6bit 展开是 0 到 64 ,作为列标签;前半部分 5bit 展开是 0-32 ,作为行标签,于是就可以做出来一张 64x32 的表格,把全部 2048 个单词都放在一个 excel 表里面。

    BIP39 英文单词还经过特别挑选,前 4 个字母保证唯一,所以表格里只需要填前 4 个字母。

    不考虑色盲问题的话,可以红线切割表格(横向可以,纵向也可以)为 2 个部分,第一个 bit 是 0 就是上半部分/左半部分,或者说在红线的上方/左方;然后用橙线继续细分,第二个 bit 是 0 就是橙线的……我懒得重复打字了。

    整张表格甚至可以直接打印或者抄写(抄写过程中本身即可检查字母顺序是否有颠倒)到一张纸上,所以除了最后 4bit 或者 8bit 是 checksum (取决于你要 12 或 24 单词),前面 128/256bit 可以绝对保证是你自己抛硬币生成的,而不是做了什么手脚提前设置好的。
    acess
        6
    acess  
       131 天前
    不过老实说我自己觉得做到这种地步意义仍然不大,因为从种子到公钥到地址,乃至后面的每一次签名,你都不可能像这样“肉眼可见的透明”,仍然必须依赖电子计算机,那么如果里面做了什么手脚你还是一点办法也没有。

    尤其是很久以前就有人说过 btc 用的 secp256k1 签名存在 kleptography 攻击,可以操纵 k 值或者 nonce 值来非常隐蔽地夹带泄露数据,而且只泄露给攻击者: https://bitcointalk.org/index.php?topic=883793.0

    (这个问题我记得 Pieter Wuille 讲过一个对策,但现在搜不到了……我大致印象里好像也不太那啥)

    或者不说别的,只要你不是当面交易,那比如交易所的充币地址(又或者是商户的收款地址)你必须从网上才能看到吧,然后浏览器里有恶意插件什么的,给你劫持替换了,还是完蛋。

    (这方面倒是可以缓解,比如 bitmex 就是做了虚荣地址挖矿我记得,3BMEX 开头,这样一来,生成这种地址多少稍微有点计算成本……还有像是 Andreas Antonopoulos 他就是找了个虚荣矿池挖了一个多星期才挖出来自己公开用的地址)
    lisxour
        7
    lisxour  
       130 天前
    我用大牌钱包不比用你这种私人软件安全一亿倍?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2493 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:54 · PVG 12:54 · LAX 20:54 · JFK 23:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.