主页 > imtoken币不见了 > 比特币源码研究中为什么椭圆曲线是不可逆的(三)

比特币源码研究中为什么椭圆曲线是不可逆的(三)

imtoken币不见了 2023-03-25 07:49:32

原文链接:

说起比特币加密,椭圆曲线是一个经常被提及的词,之前看《精通比特币》时也只是扫了一眼。 觉得太高级了,就没仔细研究。

这几天无意中翻到了这段话。 难得有空闲时间,就静下心来仔细研究了一番。 我以为我还是有一些收获的。 分享出来为外人解惑比特币 曲线,也作为自己最近学习的记录。 .

文本

生成公钥

比特币李笑比特币身价_比特币 曲线_马斯克叫停比特币买车 比特币跳水

从一个随机生成的私钥 k(可以理解为一个很大的数)开始,我们将其与曲线上定义的生成点 G 相乘比特币 曲线,得到曲线上的另一个点,即对应的公钥 K 。 生成点是 secp256k1 标准的一部分,比特币密钥的生成点都是一样的:

{K = k * G}

其中k为私钥,G为生成点,曲线上生成的点K为公钥。 由于所有比特币用户的生成点都是一样的,私钥k乘以G会得到相同的公钥K。k与K的关系是固定的,但只能单向操作,即从 k 得到 K。 这就是为什么可以在不泄露私钥 (k) 的情况下与任何人共享比特币地址(K 的衍生物)的原因。

因为里面的数学是单向的,私钥可以转换为公钥,但是公钥不能转换回私钥。 为了实现椭圆曲线乘法,我们使用1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD作为私钥k,与生成点G相乘得到其公钥K:

比特币 曲线_马斯克叫停比特币买车 比特币跳水_比特币李笑比特币身价

K =1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD * G

公钥 K 定义为点 K = (x, y):

K = (x, y)

在,

比特币李笑比特币身价_比特币 曲线_马斯克叫停比特币买车 比特币跳水

x =F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A

y = 07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB

为了演示整数点乘法,我们将使用更简单的实数范围椭圆曲线。 记住,数学是一样的。 我们的目标是找到生成点G的倍数kG。即G被加了k次。 在椭圆曲线中,加点相当于从该点作切线找到曲线相交的另一个点,然后映射到x轴上。

马斯克叫停比特币买车 比特币跳水_比特币李笑比特币身价_比特币 曲线

马斯克叫停比特币买车 比特币跳水_比特币李笑比特币身价_比特币 曲线

获取曲线上的G、2G、4G几何操作

下面说说上图kG的计算过程。 这里我们假设k的值为8。

1. 给定椭圆曲线上的点 G,我们在曲线上做它的切线。 这时,切线和原来的椭圆曲线就会产生一个交点。 我们将这个点记录为-2G,那么它与-2G关于x轴对称最好的点是2G。

2、重复以上动作,与2G点作切线,使切线与椭圆曲线相交,交点记为-4G,然后取-4G关于x轴的对称点得到4G。

比特币 曲线_马斯克叫停比特币买车 比特币跳水_比特币李笑比特币身价

3、再次重复前面的动作,对4G点作切线,使切线与椭圆曲线相交,交点记为-8G,然后取-8G关于x轴的对称点为获得8G。

这里的8G点就是我们所说的公钥K,该点的坐标就是公钥K的x和y。

好了,如果上面的整个过程都清楚了,那我们就来说说为什么不能通过公钥K得到私钥k。

假设我们现在知道点8G(公钥K),我们可以推导出它关于x轴反向对称点-8G。 到这里,我们会发现通过-8G反向堆叠4G是不可能的。 因为-8G是椭圆曲线上的一个点,平面上有无数条直线通过这个点,可能有一条或几条直线与椭圆曲线相切,但这些切线我们是无从获取的。 或许我们可以一一测试,通过穷举法找出通过点-8G且与椭圆曲线相切的直线,进而得到可能的点4G。 但是不要忘了,我们只是进行了逆向推理的第一步。 我们也需要相同的计算量才能从 4G 得到 2G。 这只是我们将私钥k设置为8,如果私钥k真的是上面的1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD,计算量将是难以想象的。

这就是我对椭圆曲线不可逆性的理解。 如果您有其他见解,请在下面发表评论。 我们一起学习。

区块链研究会源码学习班立峰