作者wahaha99 (此方不可长)
看板DigiCurrency
标题Re: [闲聊] 私钥可以自己生成吗?冷钱包生成原理是?
时间Tue Nov 22 15:45:08 2022
※ 引述《Priapus5566 (希腊生殖大神)》之铭言:
: 想问一个可能有点基本的问题
: 基本上币圈常用的链,如果自己理解没有错误
: 应该都是用椭圆曲线函数来加密
: 其中关於公私钥的产生公式:
: K = k * G
: 大K是公钥,小k是自己选择的私钥,G是生成点
k应该不是自己选择的私钥,
k应该是一个随机整数, 会对应到私钥k0
: G照理说应该是一个已知,大家公认的常数
: 小k是2^256以内随机选一个自然数
: 那是不是代表,我可以自己任意选一个数字,再把他推导成公钥?
: 这样k选太小的话,公钥是不是很容易算出来,对应到的私钥都很不安全?比如k小於一万
因为k是对应到私钥k0, 不是直接使用,
所以应该没问题....吧?
要注意的是每次发送的k不能取同值,
那就真的很危险, 两次发送就能推导回私钥。
所以现行实务的k都是用你要签名的资料拿去跑杂凑,
这样一来签名内容一样, 公钥就会一样,
而又避开了k取同值的问题。
我对椭圆签名也不甚理解,
以上只是粗浅的看过资料, 有错请指正。
: 以内的公私钥对基本上都算得出来,大家都知道,人人都可以存钱提款,是这样吗?
: 那冷热钱包商选择私钥有什麽特别的原理吗?
: 要怎麽知道冷钱包商不会藏後门,自己偷留一份私钥,或者私钥可能和别人的一样?如果
: 都是随机乱数,有没有可能乱数的私钥和另一家钱包商提供的私钥一模一样?(虽然机率
: 可能只有1/(2^256))
确实有可能,
所以钱包的密钥生成, 最好是找完全符合BIP39的,
然後在外部生成後, 再手动输入进去。
当然也有的钱包会强调他用的是硬体真随机数产生器,
要用哪个就看你个人了。
: 印象中SHA-256是有可能找到collision的,只是目前暂时还没有人找到而已
在空间内任何杂凑都可能collision啊,
一般杂凑都是固定常度的
: 如果我自己选一个够大的数当私钥,再导入热钱包推出公钥地址,是不是就也不需要冷钱
: 包了?
本来就不一定需要冷钱包,
冷钱包是离线签名工具, 好用而已。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.226.164.141 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DigiCurrency/M.1669103111.A.716.html
※ 编辑: wahaha99 (36.226.164.141 台湾), 11/22/2022 15:47:16
1F:推 GaussQQ: k 是私钥没错,通常可以乱数选取。但是所谓的随机乱数选 11/23 15:24
2F:→ GaussQQ: 取是有学问的…. 11/23 15:24
3F:→ GaussQQ: 若是两个私钥都是均匀随机选取,要发生碰撞的机率很低。 11/23 15:27
4F:→ GaussQQ: 可以参考 birthday attack。然後随机选取的范围严格讲不 11/23 15:27
5F:→ GaussQQ: 是[0,2^256)。目前使用的 ecdsa 椭圆曲线 order比这个值 11/23 15:27
6F:→ GaussQQ: 小一点,因此应该是取[0,secp256k1 的 order)。使用前者 11/23 15:27
7F:→ GaussQQ: 会造成某些值的私钥出现的机率比较高,但是两者整体的统 11/23 15:27
8F:→ GaussQQ: 计误差不高就是 11/23 15:27
9F:嘘 deangood01: k 是私钥 没有说发送两次就不安全 11/24 19:52
https://juejin.cn/post/7051032728266866701
然后需要定义一对公私钥,根据上面的定义 P = k ×G,其中,
k 是一个随机整数,对应为私钥 k0,PP 表示椭圆曲线上的一个点,
对应为公钥 P0。
10F:→ deangood01: 公私钥基础KPI的假设是 有些问题 函数很好计算y=f(x) 11/24 19:53
11F:→ deangood01: 但是反函数 x=f'(y) 不存在或是需要花指数时间来验证 11/24 19:54
12F:→ deangood01: RSA利用质因数分解很困难的特性 椭圆曲线目前也没有 11/24 19:55
13F:→ deangood01: 快速有效的回推算法 11/24 19:55
14F:→ deangood01: Hashing 跟signature也是不同东西 11/24 19:56
15F:→ deangood01: Hashing 是利用公开的杂凑函数ex SHA256来对资料验证 11/24 19:58
16F:→ deangood01: 不同资料有不同杂凑 除非碰撞 签名是利用私钥 验明 11/24 19:58
17F:→ deangood01: 发送者,大众可以用公钥进行验证 11/24 19:59
18F:→ deangood01: 同一笔资料 你想签十次 或签十比不同资料都是安全的 11/24 20:00
19F:→ deangood01: 可以阅读一下非对证加密,公私钥签章等等 11/24 20:01
我对椭圆签名确实没有搞得很懂,
我只知道如果这里不用随机数(不重复值),
会被破解。PS3就是这样被搞过。
ETH链上也有人专门在嗅叹这种错误的签名、然後把对方的钱吃掉。
※ 编辑: wahaha99 (36.226.177.106 台湾), 11/25/2022 04:53:03
20F:嘘 deangood01: 不太懂可以在说啥 基本上你可以在Eth看到一个钱包 交 11/26 18:10
21F:→ deangood01: 易几百几千次都是轻松平常 也不会因此被骇 11/26 18:10
22F:→ deangood01: 你可能要提供相关报道才能讨论 11/26 18:11
23F:推 deangood01: 推回来 11/26 18:16
24F:→ deangood01: 我猜你说的k跟私钥k0没有关系 是一个完全随机数,用 11/26 18:16
25F:→ deangood01: 於签名的 11/26 18:16