※ 引述《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的真随机私钥通常都不好记忆,
如果不随机那被破的可能性就提高了。
如果你另外用一些规则去产生私钥,安全性就看你的熵而定。
像现在常见的助记词是个改良版的方案。
: 如果自己对加密原理有理解错误的话还请大家多多指正,谢谢大家