作者Ayukawayen (鮎川彦)
看板DigiCurrency
标题Re: [Coin] 私钥可以自己生成吗?冷钱包生成原理是?
时间Wed Nov 23 15:22:35 2022
※ 引述《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的真随机私钥通常都不好记忆,
如果不随机那被破的可能性就提高了。
如果你另外用一些规则去产生私钥,安全性就看你的熵而定。
像现在常见的助记词是个改良版的方案。
: 如果自己对加密原理有理解错误的话还请大家多多指正,谢谢大家
--
ethereum:0x09B25bd7d9B8dE2914C8314a2E0059A6a8ADEadE
polygon :0x09B25bd7d9B8dE2914C8314a2E0059A6a8ADEadE
smartbch:0x5a8B6db897003C8aFA62066d3bE876Fd8BBe9082
bitcoincash:qqjzmy6mjp8sp97c7thhflv9s2j96xk0q5pr26dftl
simpleledger:qqjzmy6mjp8sp97c7thhflv9s2j96xk0q5dcppcf4p
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.227.143.60 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DigiCurrency/M.1669188159.A.362.html
※ 编辑: Ayukawayen (36.227.143.60 台湾), 11/23/2022 15:46:32
1F:推 chccang: 好奇问一下 看助记词很多是常见的单字 这24个单字随机组 11/23 15:48
2F:→ chccang: 合有到2^256个变化? 11/23 15:48
3F:→ chccang: 不知道单字的字库有几个 11/23 15:49
4F:→ chccang: 好像可以耶 如果字库1024个,就有2^10^24 就快够了 11/23 15:51
5F:推 chccang: 2^10.67^24就够,所以1629左右字数就够,这样想对吗? 11/23 15:54
7F:推 chccang: 谢谢版主 11/23 16:35
8F:推 vaio8937: 是先产生entropy,再用查表导出24个单字。最後一个字是c 11/23 16:53
9F:→ vaio8937: heck sum。自己随便乱输入24个字,通常为无效 11/23 16:53
10F:→ DacocoH: 听起来冷钱包也不安全了 11/23 18:25
11F:推 j49222106: 只有相对安全,没有绝对安全 11/23 18:43
12F:推 wahaha99: 不要用BIP39,改自己找方法随机产生私钥,理论上会更安全 11/23 18:44
13F:→ wahaha99: 问题是麻烦程度也是成正比 11/23 18:44
14F:推 deangood01: 密码学的安全跟随机都是很严谨的 楼上自己搞八成会烂 11/24 19:48
15F:→ deangood01: entroy不够 或是公私钥生成有误 11/24 19:49
16F:→ wahaha99: 私钥有误会直接被程式打回票 11/25 04:32
17F:→ wahaha99: 至於随机度够不够 你去买骰子来自己掷 肯定够 11/25 04:33
18F:→ wahaha99: 记得不要只买一个 买各种品牌大小的各一 11/25 04:33
19F:→ wahaha99: 数量越多越好 然後放进布袋 一次抓一把出来骰 11/25 04:34
20F:→ wahaha99: 骰完排序成一个数列 拿这个数列去跑SHA256 11/25 04:34
21F:→ wahaha99: 这样随机数不够 我就不知道什麽叫够了 11/25 04:34
22F:→ wahaha99: 随机度 11/25 04:35
23F:推 wahaha99: 你还可以进一步 好比第一次SHA256取N位 第N次取N位 11/25 04:45
24F:→ wahaha99: 最後全部加起来再取N位 11/25 04:45