Re: [Coin] 私钥可以自己生成吗?冷钱包生成原理是?

楼主: Ayukawayen (亚布里艾尔发芽>//<)   2022-11-23 15:22:35
※ 引述《Priapus5566 (希腊生殖大神)》之铭言:
: 想问一个可能有点基本的问题
: 基本上币圈常用的链,如果自己理解没有错误
: 应该都是用椭圆曲线函数来加密
: 其中关于公私钥的产生公式:
: K = k * G
: 大K是公钥,小k是自己选择的私钥,G是生成点
: G照理说应该是一个已知,大家公认的常数
: 小k是2^256以内随机选一个自然数
: 那是不是代表,我可以自己任意选一个数字,再把他推导成公钥?
差不多是这样,既然讲到这个程度了,再讲一些细节
BTC和ETH用的是Secp256k1:https://en.bitcoin.it/wiki/Secp256k1
它的循环群大小n是略小于2^256的
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
每间隔n个会循环回同一个点,所以如果选了一个接近2^256,刚好比n大一点的整数,
一减下来搞不好是k=10那个公钥也有可能。
: 这样k选太小的话,公钥是不是很容易算出来,对应到的私钥都很不安全?比如k小于一万
: 以内的公私钥对基本上都算得出来,大家都知道,人人都可以存钱提款,是这样吗?
不会建议去用很小的数,理论上机率没有差别,但确实有可能有人会从1往上扫,
也有可能有人从最大值往下扫,或正中间往两边扫。
反正人想得到的数字都有可能有人去扫。
已知一把私钥去算对应公钥,不管私钥值的大小都很快。(我想确实有个体差异但都很快)
所以如果你想问的是会不会大的私钥比较难算就比较没人会去算,那多半是没啥差别。
私钥的安全性在于可能的数量非常多,在有限时间内被扫的机率很低。
但非随机的私钥值被特别拿去扫的机会可能会比较高,这跟密码会被试的状况有点类似。
: 那冷热钱包商选择私钥有什么特别的原理吗?
: 要怎么知道冷钱包商不会藏后门,自己偷留一份私钥,或者私钥可能和别人的一样?如果
: 都是随机乱数,有没有可能乱数的私钥和另一家钱包商提供的私钥一模一样?(虽然机率
: 可能只有1/(2^256))
: 印象中SHA-256是有可能找到collision的,只是目前暂时还没有人找到而已
: 如果我自己选一个够大的数当私钥,再导入热钱包推出公钥地址,是不是就也不需要冷钱
: 包了?
冷热钱包不是这样分的
至于随机选一个范围内的整数当私钥,是运作得起来的。
有些钱包,尤其早期来讲,汇入私钥就一串16进位码输进去,那其实就是一个大整数,
也没有什么检查码,只要输入长度正确的16进位码(除非用到零点)都可以汇进去。
私钥会遇到的问题是256bit的真随机私钥通常都不好记忆,
如果不随机那被破的可能性就提高了。
如果你另外用一些规则去产生私钥,安全性就看你的熵而定。
像现在常见的助记词是个改良版的方案。
: 如果自己对加密原理有理解错误的话还请大家多多指正,谢谢大家
作者: chccang ( )   2022-11-23 15:48:00
好奇问一下 看助记词很多是常见的单字 这24个单字随机组合有到2^256个变化?不知道单字的字库有几个好像可以耶 如果字库1024个,就有2^10^24 就快够了2^10.67^24就够,所以1629左右字数就够,这样想对吗?
作者: DarkerDuck (達克鴨)   2022-11-23 16:06:00
作者: chccang ( )   2022-11-23 16:35:00
谢谢版主
作者: vaio8937 (直把杭州当汴州)   2022-11-23 16:53:00
是先产生entropy,再用查表导出24个单字。最后一个字是check sum。自己随便乱输入24个字,通常为无效
作者: DacocoH (骆驼)   2022-11-23 18:25:00
听起来冷钱包也不安全了
作者: j49222106 (ShauEeEe)   2022-11-23 18:43:00
只有相对安全,没有绝对安全
作者: wahaha99 (此方不可长)   2022-11-23 18:44:00
不要用BIP39,改自己找方法随机产生私钥,理论上会更安全问题是麻烦程度也是成正比
作者: deangood01 (跨斯欧鹅)   2022-11-24 19:48:00
密码学的安全跟随机都是很严谨的 楼上自己搞八成会烂entroy不够 或是公私钥生成有误
作者: wahaha99 (此方不可长)   2022-11-25 04:32:00
私钥有误会直接被程式打回票至于随机度够不够 你去买骰子来自己掷 肯定够记得不要只买一个 买各种品牌大小的各一数量越多越好 然后放进布袋 一次抓一把出来骰骰完排序成一个数列 拿这个数列去跑SHA256这样随机数不够 我就不知道什么叫够了随机度你还可以进一步 好比第一次SHA256取N位 第N次取N位最后全部加起来再取N位

Links booklink

Contact Us: admin [ a t ] ucptt.com