非对称加密与椭圆曲线

当前位置:首页 > 币圈百科 > 非对称加密与椭圆曲线

非对称加密与椭圆曲线

2022-12-24币圈百科236

加密一直是通信领域的重要课题。我们经常听到各种算法,对称加密,非对称加密等等。这些都太令人费解了。经过这段时间的了解,我来解释一下这个概念,听起来深不可测,其实更让人摸不着头脑。要解释加密技术,首先要了解什么是对称加密。

对称加密

维基百科的解释如下:

对称密钥加密(英文:Symmetric-keyalgorithm),又称对称加密、私钥加密和共享密钥加密,是密码学中的一种加密算法。这种算法使用相同的密钥进行加密和解密,或者使用两个可以很容易地从彼此计算出来的密钥。在实践中,这组密钥成为两个或多个成员之间的公共秘密,以便保持排他性的通信链接。与公钥加密相比,要求双方获得相同的密钥是对称密钥加密的主要缺点之一。

上面这一段好像太抽象了,看不懂。比如A-Z的26个字母以某种方式换成另一组符号,比如A换成01,B换成02,C换成03,以此类推,Z换成26,那么当我想写一个单词happy的时候,就会变成0801166。但是因为明文和密文是一一对应的,A总是对应1,Z总是对应26。这种加密和解密一一对应的加密方法称为对称加密。

对称加密的缺点是看似复杂,其实不难破解。虽然上面的号码是0801161625,很难看清楚,但是语言文字总有一定的规律。比如对于英语来说,字母E的出现频率远高于其他字母,字母Z的出现频率远低于其他字母。所以,只要样本足够多,通过比对和暴力破解,不难找出明文和密文。

比如《福尔摩斯探案集》中有一章《跳舞小人符号案件》是一种对称加密技术蓑衣网小编2022:

福尔摩斯看到上面有小人的纸条后,真的分析了一下:

第一张递给我的纸条很短,所以我不得不断定其中一个所代表的符号第一张纸条上有15个符号,其中四个是相同的,所以有理由认为这个符号代表e,这些数字中有些带有一面旗帜,而从标志的分布来看,带标志的图形可能代表单词之间的空格。

有网友总结了跳舞小人代表的26个字母,典型的对称加密。摘自《福尔摩斯探案全集》的《跳舞小人符号案件》

。所以,对称加密可以写成以下形式

蓑衣网小编2022

常见的对称加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。

好吧,由于对称加密的安全性不高,人们开始寻找更安全、更不易被破解的加密技术——非对称加密。

非对称加密

非对称加密,简单来说就是“当x已知时,通过算法很容易找到y,但当y已知时,依次找到x就非常非常困难了”。

举个最简单的例子。公式为:Y=3x3 2x 2-1。假设x=1,然后你马上就能算出y=4。

现在当y=1时,x等于多少?让我们开始打响指。对于普通人来说,这个解决方案有点难,但是对于电脑来说,还是小菜一碟。

椭圆曲线加密-ECC

真正的非对称算法要比这复杂得多。常见的非对称加密算法有RSA和椭圆曲线加密-ECC-椭圆曲线密码。

接下来,我们重点说说什么椭圆,曲线,这是什么鬼?

椭圆曲线

简单来说就是一组数学公式,比如:y ^ 2=x ^ 3 ax B

(只有当A和B满足4a3 27b2 0才是有效椭圆曲线)

当然,椭圆曲线有几条?A的值从2变为-3)

实际上,用于加密的曲线,A和B的值都是天文数字

为了简单的理解,我们假设有一条根曲线,它的公式是y ^ 2=x ^ 3-x ^ 1,

这条曲线有一个特性,任意一条

假设1

我们在曲线上有A点和B点,两点在一条直线上后的延长线又与曲线相交,于是就有了C点,如图所示

A,B,C,三个点,点C,满足以下关系:

A B C=0

另外,椭圆曲线关于X是对称的,所以从点C可以得到镜像点C '满足关系

C=-C '别着急,接下来,我们把C '和点A连起来,新的直线相交曲线会得到D,

会把D镜像到D ' 然后与a连接,新线与曲线相交得到e点

这个过程不断重复,得到G点,如下图:

列出过程中各点的关系。 a b c=0ad c '=0ad ' e=0af e '=0af ' g=0c=-c ' d=-d ' e=-f '

经过一系列加法运算

有人把这个过程比作台球不断碰撞反弹,再碰撞反弹的过程。

假设2

现在考虑一个特例,当初始点A=B,此时,从A点开始的直线与椭圆曲线相切,重复上面的过程:

上面的过程表示为:A A C=0c ' C ' d=0d ' d ' e=0e ' e ' e ' f=0c=-C ' d=-d ' e=-e ' f=-f '

最后16实际上是2的k次方,k是迭代次数[x在ECC加密算法中,它的几何意义恰恰是对“生成点”做多次切线,最后得到一个点,这个点就是公钥-K,迭代次数就是私钥

K=k*G

。生成点:g“私钥”——一个256位的二进制数

实际上是在k和g已知的情况下的加法计算,k可以通过一种叫做平方和相乘的方法快速计算出来-。

但是如果,反过来,你知道K和G,反过来计算K是非常困难的。没有办法。就一招——老老实实一步一步算。它在英语里叫做——婴儿步巨人步,有一个更直白的名字。你一定知道这叫——暴力破解。但是迭代的范围是2的256次方,也就是1.15 15。

请注意,上述公式转化为k=K/G不成立,KK/G

这组密码的好处是私钥和公钥对可以随时更改。如果你随机生成一个,你将拥有一个完全不同的密钥来加密信息,这比一个无尘密码对的对称加密要安全得多。

以上是ECC椭圆曲线加密的基本原理。

有限域

在一个真实的ECC算法中,椭圆曲线会被转化成下面这个幽灵:

它看起来像2323的围棋棋盘吗?你完全糊涂了吗?

是的,我也完全看不懂。经过反复的纠结和琢磨,大致可以理解为对一条复杂曲线进行归一化、离散化和整数化的方法。

例如,我们的dial是模-模为12的有限域。无论是8小时、14小时、20小时、49小时,表盘上都只显示8、2、8、1,相当于把无限的线性时间折叠成了有限的表盘。这样做的好处是,当你看着表盘上的8个点(公钥)时,你(我不完全了解细节,所以我不能再吹了。)

把y ^ 2=x ^ 3-x ^ 1写成一个有限域上的公式,有y ^ 2 mod p=(x ^ 3-x ^ 1)mod p,p代表网格的范围。它是一个素数,比如上图中的p=23,它是一个神秘的东西[x一个有限域的模P=2 2562 322 92 82 72 62 41。你可以自己数手指。无论如何,你可以把它想象成一个巨大的网格。经过上面的一系列计算,你得到K-公钥后,就可以通过给对方来加密信息。但对方只能用公钥加密信息,不能解密。解密需要私钥K,也就是手里拿着私钥才能开锁。(对应数字货币世界,没有私钥只能往公钥地址寄钱,不能转账账户里的金额)

实椭圆曲线

最后来看看实椭圆曲线的生成点、私钥和公钥是什么样子的:

生成点G(x,y)

Gx=0x 79 be 667 ef 9 dcb BAC 55 a 06295 ce 870 b 07029 BF CDB 2 DCE 28d 9d0x5f 4376 a 23 eed 63657 a 90 f 385 ba 21068 e 7 e 29859 a 7 fab 09 e 953 C5 B3 e 89 beba)[X]参考资料:[X]椭圆曲线密码学概述——YouTube[X][X]3359youtu.be/dCvB-mhkT0w[X][X]椭圆曲线密码学Diffie-Hellman——YouTube[X][X]https://youtu . be/F3 zzna 42-tQ[X][X]椭圆曲线密码学:温和介绍[X

非对称加密与椭圆曲线 | 分享给朋友: