3.2 公开密钥算法

3.2.1 两把钥匙:公钥和私钥

公钥和私钥是现代密码学分支非对称性加密里面的名词,对于一段需要保护的信息,通常使用公钥加密,用私钥解密,这种加密方法也称为公开密钥算法。

在谍战剧里,发电报那种一般都是使用对称加密算法。这种加密方式缺点是显而易见的,如果被人知道了密钥和加密方 法,按照加密方法反着来就能解密。一直到非对称加密算法的出现,这种情况才有所改观。公钥就是可以对全世界公开的密钥,比如你和Google通信时,你可 以使用Google公开提供的1024位的公钥加密信息,加密后的密文只有使用Google私藏的私钥才可以做解密,这就保证了通信安全。

一般来说,公开密钥算法对于大篇幅的原始数据加密的性能不会很高,因此如果是用于大段数据的加密与解密,通常还是会使用强度比较高的对称加密算法,而公开密钥算法会用于在网络中传输对称加密算法的密钥,两者结合使用,发挥各自的优点。

自从非对称加密算法诞生以来,人们发现一些数学函数极其适用于这种算法,比如椭圆曲线加密算法。这些数学函数具有 某种困难度:由输入算输出很容易,但是从输出计算输入则几乎不可能。比特币是使用椭圆曲线加密算法作为公共密钥编码的基础的,事实上在很多区块链系统中都 是使用椭圆曲线加密算法。

3.2.2 RSA算法

RSA以它的三个发明者Ron Rivest、Adi Shamir和Leonard Adleman的名字首字母命名。RSA加密算法是最常见的非对称加密算法。它既能用于加密,也能用于数字签名,是目前最流行的公开密钥算法。RSA安全 基于大质数分解的难度,RSA的公钥和私钥是一对大质数,从一个公钥和密文恢复明文的难度,等价于分解两个大质数之积,这是公认的数学难题。

RSA的安全基于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,RSA的重大缺陷是无法从理论上把握它的保密性能如何。只不过RSA从提出到现在20多年,经历了各种攻击的考验,被普遍认为是目前最优秀的公钥方案之一。RSA的缺点是:

·产生密钥很麻烦,受限于质数产生的技术;

·分组长度太大,运算代价高,速度慢。

我们通过一个例子来理解RSA算法。假设Alice要与Bob进行加密通信,她该怎么生成公钥和私钥呢?

1)选择两个质数。通常是随机选择两个不同的质数,我们不妨称为p和q,本例中Alice选择了61和53,当然实际应用中,这两个质数越大越好,这样就越难破解。

2)计算p和q的乘积n。Alice把61和53相乘:n=61×53=3233。

n的长度就是密钥长度,3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位,实际应用中,RSA密钥一般是1024位,重要场合则为2048位,还是那句话,越长越好。

3)计算n的欧拉函数Φ(n)。

根据公式:φ(n)=(p-1)(q-1),Alice算出φ(3233)等于60×52,即3120,实际上就是两个质数分别减1后的乘积。

4)选择一个整数e。

这个整数是随机选择的,并且有个条件,条件是1

5)计算e对于Φ(n)的模反元素d。

所谓“模反元素”就是指有一个整数d,可以使得e*d被φ(n)除的余数为1,表达式

如下:

e*d≡1(modφ(n))

这个式子等价于

e*d-1=kφ(n)

于是找到模反元素d,实质上就是对下面这个二元一次方程求解:

e*x+φ(n)y=1

已知e=17,φ(n)=3120,则17x+3120y=1。

这个方程可以用“扩展欧几里得算法”求解,此处省略具体过程。总之,Alice算出一组整数解为(x,y)=(2753,-15),即d=2753。

6)产生公钥和私钥。

将n和e封装成公钥,n和d封装成私钥,在Alice的例子中,n=3233,e=17,d=2753,所以公钥就是(3233,17),私钥就是(3233,2753)。

至此所有计算就完成了,可以看到RSA的算法过程其实还是很简单的,最关键的就是找到两个足够大的质数。

3.2.3 椭圆曲线密码算法

椭圆曲线是满足一个特殊方程的点集,注意,不要跟标准椭圆方程混淆,那根本就是两回事,看一个标准的椭圆曲线方程:

y2=x3+ax+b

在几何意义上,它通常是这样的一个图形,如下所示:

3.2 公开密钥算法_第1张图片

如上图所示,一个椭圆曲线通常是满足一个变量为2阶,另一个变量为3阶的二元方程。按照这样的定义,椭圆曲线是有很多种的,而椭圆曲线密码算法是基于椭圆曲线数学的一种公钥密码算法,其主要的安全性在于利用了椭圆曲线离散对数问题的困难性。

在区块链中,常用的是ECDSA(椭圆曲线数字签名算法),这是利用椭圆曲线密码(ECC)对数字签名算法 (DSA)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST(美国国家标准与技术研究院)标准。椭圆曲线密码算法 实现了数据加解密、数字签名和身份认证等功能,该技术具有安全性高、生成公私钥方便、处理速度快和存储空间小等方面的优势。相对于RSA算法,在实际的开 发使用中,椭圆曲线加密使用得更广泛,比如比特币就是使用了椭圆曲线中的SECP256k1,可以提供128位的安全保护。椭圆曲线具体的数学原理,其过 程证明比较晦涩枯燥,这里不再赘述,感兴趣的朋友可以去查阅一些相关的数学资料。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=103

'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();

你可能感兴趣的:(3.2 公开密钥算法)