公钥/私钥/数字签名/数字证书及 RSA加解密数学原理

(一)公钥/私钥/数字签名/数字证书

1、鲍勃有两把钥匙,一把是公钥,另一把是私钥。

2.鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把

3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果

4.鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密

5.鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)

6.然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)

7.鲍勃将这个签名,附在信件下面,一起发给苏珊。

8.苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的

9.苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过

10.复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密

11.后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)

12.鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了

13.苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的

(二)百度百科 对 数字签名的场景描述:

假如 Alice 向 Bob 传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:

  1. Alice 准备好要传送的数字信息(明文);

  2. Alice 对数字信息进行哈希运算,得到一个信息摘要; 

  3. Alice 用自己的私钥对信息摘要进行加密得到 Alice 的数字签名,并将其附在数字信息上; 

  4. Alice 随机产生一个加密密钥,并用此密码对要发送的信息进行加密,形成密文

  5. Alice 用 Bob 的公钥对刚才随机产生的加密密钥进行加密,将加密后的 DES密钥连同密文一起传送给Bob;(此处对对称密钥进行非对称加密,对称密钥加解密花销小于非对称密钥)

  6. Bob 收到 Alice 传送来的密文和加密过的 DES 密钥,先用自己的私钥对加密的 DES 密钥进行解密,得到 Alice随机产生的加密密钥; 

  7. Bob 然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃; 

  8. Bob 用 Alice 的公钥对 Alice 的数字签名进行解密,得到信息摘要; 

  9. Bob 用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要; 

  10. Bob 将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过

(三)RSA非对称加密算法介绍及其简单数学原理

RSA 简单介绍:

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。

RSA 依赖原理:
对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠,有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降,但至少现在还没有出现,到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息理论上是不能被解破的。

RSA依赖的4大数学基础原理

1.互质关系

概念:两个正整数P,Q,除了1以外没有其他公因子,我们就称这两个数是互质关系(coprime),

例如10和7,它们之间出来1外没有其他公因子,所以他们是互质关系,可以看出,非质数之间也存在互质关系;

2.欧拉函数:

概念:欧拉函数用φ(n)来表示,其结果代表着n有多少个与其互质的数,例如: φ(10)=4; 解释:{ 1, 3 7 ,9} 数字个数为4 则φ(10)=4;

当n小数我们能清楚知道φ(n)的值,那么当n比较大的时候,欧拉函数有5种情况可以计算大n质的欧拉函数,在这里我只讲与RSA算法相关的情况,RSA使用的情况是两个不等质数的乘积,它对应算法中的一种情况,例如 :φ(63)=φ(7*9)=φ(7)*φ(9)=6*6=36

3.欧拉定理

如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以满足下面的等式成立:

a^(φ)≡1(mod n)含义:a的φ(n)次方被n除的余数为1。或者说,a的φ(n)次方减去1,可以被n整除

4.模反元素

概念:如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,
公式:ab=1( mod n) ;b就叫做a的“模反元素”
例子:3和11互质,那么3的模反元素就是4,因为 (3 × 4)-1 可以被11整除显然,模反元素不止一个, 4加减11的整数倍都是3的模反元素{…,-18,-7,4,15,26,…},即如果b是a的模反元素,则 b+kn 都是a的模反元素

(四)RSA公钥私钥的生成及其加密解密过程详解

首先:我们进行RSA算法的原理剖析:

总所周知RSA算法,是一种非对称加密算发 之所以为非对称,是因为加密和解密的两把钥匙不同,在这个过程的中,密钥的产生是实现过程中的关键:

公式原路为:

明文+public key=密文:

密文-private kēy=明文

过程实现:

1.生成公私钥 (关键)

2.用公钥对指定编码集的字节流进行加密产生密文;

3.用私钥对密文进行解密得出密文;

原创文章 96 获赞 48 访问量 6万+

猜你喜欢

转载自blog.csdn.net/wteruiycbqqvwt/article/details/106121134