主页 > imtoken钱包下载注册教程 > 优聊区块链与加密货币系列之五——比特币安全的基石:椭圆曲线方程

优聊区块链与加密货币系列之五——比特币安全的基石:椭圆曲线方程

imtoken钱包下载注册教程 2023-10-26 05:12:23

比特币算法作用_比特币自动交易算法_比特币的加密算法叫什么

数学课,大家坐好。 相信很多朋友都听说过比特币的密码叫做私钥。 一旦私钥丢失,对应的BTC将被永久封存。 没有重置私钥这回事,所以私钥的保管很重要。 丢失私钥是早期BTC持有者常犯的错误,因为当时BTC没有像今天这样高的法币价格,所以很多人没有关注。 为什么私钥丢失是致命事件? 私钥能被强行破解吗? 从理论上讲,是的,答案是计算地球的尽头。 从今天凌晨100EH/s的最高网络算力记录来看,也就是每秒100*2^60次哈希运算,也就是每秒100*2^60次猜测,听起来很大,但是私钥的可能性总数是2^256。 假设私钥是均匀分布的U(0,2^256),强行破解需要亿万年。

比特币自动交易算法_比特币的加密算法叫什么_比特币算法作用

如果不够直观,想想如果有360个地球,每个地球上的每一克物质都变成一个新地球,那么这些地球上所有的水分子都是私钥。 (找也找不到,这辈子也不可能找到)那么是什么加密算法让比特币在密码学上如此安全呢? 这是本文的硬核内容。

比特币的加密算法叫什么_比特币算法作用_比特币自动交易算法

先看一个等式:

比特币的加密算法叫什么_比特币算法作用_比特币自动交易算法

这是比特币用来保护消息摘要真实性的方程式。 该算法称为椭圆曲线密码术。 不同于传统的基于大素数分解难度的加密方法比特币的加密算法叫什么,ECC通过椭圆曲线方程的性质来生成密钥。 是典型的非对称加密算法,抗暴力破解能力强。

对了,目前中国居民的二代身份证使用的是256位椭圆曲线密码,而比特币也选择了ECC作为加密算法,也就是说比特币的密码安全等同于身份证。 比特币系统不安全的论点可以撤回。

那么椭圆曲线方程只是一个椭圆方程吗?

比特币算法作用_比特币自动交易算法_比特币的加密算法叫什么

比特币的加密算法叫什么_比特币自动交易算法_比特币算法作用

不,椭圆曲线的形状不是椭圆,而是因为描述椭圆曲线的方程类似于计算椭圆周长的方程而得名。

重要的一点——从根本上说,椭圆曲线方程是齐次方程,曲线上的每个点必须是非奇异的,即光滑的,即各个维度的偏导数不同时为0。 具体的标准公式我就不贴了。 有兴趣的出门左转百度魏尔斯特拉斯方程(Weierstrass)。 为什么椭圆曲线可以用于加密? 这是要复习一下我之前说的。 比特币私钥可以很容易的生成公钥,但是根据公钥不能逆转私钥的基本常识,比特币私钥生成公钥的过程是基于椭圆曲线的。 . 先看一个栗子——

小明上小学二年级,会算加法,不会算除法。 你是小明的奇葩蝎子,你出一道题让他做,让他明白题意却做起来难:

强:“小明,小明,过来,叔叔问你,什么是1+1?”

明:“叔叔读大学没用,我能考上幼儿园,等于2。”

强:“考试难不难你,7+7是多少?”

明:“切,你下课啃铅笔头,下课帮小红写作业,白给你吧?你连手指头都不用数比特币的加密算法叫什么,就等于14。” “

强:“好,我有舅舅当年的风度,那舅舅再问你,7加起来是56?”

明:“……”,默默拿出草稿纸、铅笔、手指、脚趾,进行了10分钟的深算:2个7等于14,3个7等于21,4个7等于28……”大叔,我算出来了,是8吧?”

强:“好孩子,大叔不信你考不上,几个7加起来等于864192?” 你心想,以小明的计算能力,可能需要一年半载才能算出这个数字。

明:“叔叔好厉害,我想不通。”

这个例子想说明的是一个基于加法顺序难求问题的密码方案。 对于椭圆曲线密码学,示例中椭圆曲线的基点为7,私钥为基点的加法顺序(示例中为8),公钥为基点(7)进行加法相应的顺序(8 次)。 得到的结果(56)。 我们具体来看比特币的例子——从一个随机生成的私钥k开始(可以理解为一个非常大的数),我们将其与曲线上定义的生成点G相乘,得到曲线上的另一个密钥A点, 即对应的公钥 K。

生成点是 secp256k1 标准的一部分,它指的是比特币中使用的 ECDSA(椭圆曲线数字签名算法)曲线的参数。

比特币密钥都是在同一点生成的:

{K =k * G} 其中k为私钥,G为生成点,曲线上生成的点K为公钥。 由于所有比特币用户的生成点都是一样的,私钥k乘以G会得到相同的公钥K。k与K的关系是固定的,但只能单向操作,即从 k 得到 K。 为了演示整数点乘法,我们将使用更简单的实数范围椭圆曲线。 但实际上,椭圆曲线密码学中的加法是基于“有限域上二元三次曲线上的点”,形成一个“有限加法循环群”,是离散的。 我们的目标是找到生成点G的k*G的倍数。即G被加了k次。 在椭圆曲线中,加点相当于从该点作切线找到曲线相交的另一个点,然后映射到x轴上。

比特币算法作用_比特币自动交易算法_比特币的加密算法叫什么

针对上图,说一下k*G的计算过程。 这里我们假设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。其实这个动作我们可以重复很多很多次。 能坚持读到这里的朋友一定想到了。 这就是阿贝尔群(Abelian Group):在椭圆曲线上随机取两点P和Q(若P和Q重合,则与点P作切线),使直线相交于另一点R'椭圆曲线的,过R',使y轴的平行线相交于R,定义P+Q=R。 这样,加法的和也在椭圆曲线上,也有加法的交换律和结合律。

比特币自动交易算法_比特币的加密算法叫什么_比特币算法作用

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

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

如果私钥是这样的:1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD,那么计算量将是难以想象的。