博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsa加密原理数学证明_区块链中的数学 - RSA算法加解密过程及原理
阅读量:4964 次
发布时间:2019-06-12

本文共 4744 字,大约阅读时间需要 15 分钟。

本节主要介绍了RSA算法加解密过程及原理,RSA还有很多相关内容,包括签名,具体运算过程,背景知识,安全性等。后续几篇将分别介绍,以求知识系统的完备性。

## 写在前面

上一节介绍了[数论中的费马小定理](https://learnblockchain.cn/article/1558),这一节继续讲RSA算法。RSA算法依赖的数论知识点较多,除了上篇说的费马小定理,还包括欧拉定理(欧拉函数)等。关于RSA知识点打算分三个章节讲解。采取知其然再深究所以然的方法来说明。

## 预备知识

RSA算法是1977年由Ron Rivest、Adi Shamir 和 Leonard Adleman三人共同提出。原始论文A Method for Obtaining Digital Signatures and Public-Key Cryptosystems,感兴趣可以搜索查阅。下面先说下RSA算法预备知识

1. 费马小定理

上一节说过,可自行查看

2. 欧拉定理

这里简要说明一下,后续专门章节详细说明。

若n,a为正整数,且n,a互质,则

$a^{\varphi (n)} \equiv 1\ mod\ n$

上式中$\varphi(n)$代表欧拉函数:是1到n−1中(也就是[1,n−1])且与n互质的整数的个数.

RSA算法中涉及到的欧拉函数性质如下:

(1) 若n是素数,$\varphi(n) = n-1$;

(2) 若m,n互质, $\varphi(m*n)=\varphi(m)\varphi(n)$;

(3) 若m,n互质且都是素数,$\varphi(m*n) =\varphi(m)\varphi(n) = (m-1)*(n-1)$

更多性质以及证明后面专门介绍,以上列出的是本节需要用到的知识点。

## 密钥生成过程

用户按照以下步骤生成公私钥:

1. 秘密选取两个大的素数𝑝和𝑞。

2. 计算𝑝和𝑞的乘积:𝑛 = 𝑝 × 𝑞。

3. 随机选取一个与𝜙(𝑛)=(𝑝−1)×(𝑞−1)[注:欧拉函数性质(3)]互质的数𝑒,应用中通常选取𝑒=65537【注:这是有原因的】。

4. 计算𝑒模𝜙(𝑛)的模反元素𝑑,也即是计算满足:

𝑒⋅𝑑 = 1(𝑚𝑜𝑑𝜙(𝑛)) = 𝑒⋅𝑑 =1(𝑚𝑜𝑑(𝑝−1)⋅(𝑞−1))。【求[模逆元可参考历史文章](https://learnblockchain.cn/article/1556)】

5. 将(𝑒,𝑛)作为公开的公钥;𝑑作为私钥,秘密保存。

可见,在RSA加密算法中,公钥以一个正整数对的形式出现,同理私钥也是如此。这与前面说过的椭圆曲线加密算法有所不同。椭圆曲线加密算法中公钥是一个点坐标。

## 加密解密过程

总体来说,加解密过程操作比较简单.

假设A与B通信:

1. 加密过程

(1) A首先将明文分解成若干块,每个块可以表示为一个整数(基于n的大小分块),以𝑀表示,使得1⩽𝑀⩽𝑛−1。为方便起见,只考虑对一个明文数据块进行加密的流程。

(2)A用B的公钥(n,e)进行如下运算得到密文

$C=M^e\ mod\ n$

2. 解密过程

B收到密文C后,做如下运算:

$M =c^d\ mod\ n$ 得到原始消息M。

## 解密验证

我们反推一下为什么这样解密就能得到原始消息M呢?

解密运算:

$C^d\ mod n =M^{ed}\ mod\ n$

由于 𝑒⋅𝑑 = 1(𝑚𝑜𝑑𝜙(𝑛)) 可得:

e*d = k𝜙(𝑛) +1

代入上式得:$C^d\ mod\ n =M^{k\varphi(n)+1}\ mod\ n$

由于M也是一个整数,所以有以下两种情况:

1. M与n互质

2. M与n不互质

下面分情况证明$M^{k\varphi(n)+1}\ mod\ n = M$ 。

1. M与n互质

这种情况下,由欧拉定理得:

$M^{\varphi(n)}\equiv 1(𝑚𝑜𝑑\ 𝑛)$

所以:

$M^{k\varphi(n)+1}\equiv(M^{\varphi(n)})^k*M \equiv M (mod\ n)$。得证。

1. M与n不互质

由于𝑛的素因子分解只能是𝑛=𝑝×𝑞 *[见上述密钥生成过程]*,所以M,n最大公因子𝑔𝑐𝑑(𝑀,𝑛)或者是𝑝或者是𝑞,

也即是𝑀 = ℎ𝑝或者𝑀 = ℎ𝑞。

假设𝑀 = ℎ𝑞,此时𝑀必然与𝑝互质[由p.q互质可得]。

由费马小定理可到下式:

$M^{k\varphi(n)+1}\equiv(M^{p-1)})^{k_{(q-1)}}\cdot M \equiv M (mod\ p)$

代入𝑀 = ℎ𝑞, 得:

$(hq)^{k\varphi(n)+1} = jp + hq$

式子左边是q的倍数,右边也必然是q的倍数,即jp也是q的倍数。由于p,q互质所以j是q的倍数,可表示为 j=kq

所以上式变为:

$(hq)^{k\varphi(n)+1} = jp + hq = kqp + hq = kn + hq$

两边对n 取模得到 :

mod n = M mod n 。得证

同理,𝑀=ℎ𝑝时可以得到相同的结论。大家可自行推导。

综合1和2两种情况,可以得出结论:

$M^{k\varphi(n)+1}≡ 𝑀(𝑚𝑜𝑑\ 𝑛)$总是成立的,所以$𝑀= C^d\ 𝑚𝑜𝑑\ 𝑛 $也是成立的,证毕。

## 小结

本节主要介绍了RSA算法加解密过程及原理,RSA还有很多相关内容,包括签名,具体运算过程,背景知识,安全性等。后续几篇将分别介绍,以求知识系统的完备性。

好了,下一节讲背景知识中的[欧拉定理和欧拉函数](https://learnblockchain.cn/article/1559)。

欢迎关注公众号:blocksight

写在前面

上一节介绍了数论中的费马小定理,这一节继续讲RSA算法。RSA算法依赖的数论知识点较多,除了上篇说的费马小定理,还包括欧拉定理(欧拉函数)等。关于RSA知识点打算分三个章节讲解。采取知其然再深究所以然的方法来说明。

预备知识

RSA算法是1977年由Ron Rivest、Adi Shamir 和 Leonard Adleman三人共同提出。原始论文A Method for Obtaining Digital Signatures and Public-Key Cryptosystems,感兴趣可以搜索查阅。下面先说下RSA算法预备知识

费马小定理

上一节说过,可自行查看

欧拉定理

这里简要说明一下,后续专门章节详细说明。

若n,a为正整数,且n,a互质,则

$a^{\varphi (n)} \equiv 1\ mod\ n$

上式中$\varphi(n)$代表欧拉函数:是1到n−1中(也就是[1,n−1])且与n互质的整数的个数.

RSA算法中涉及到的欧拉函数性质如下:

(1) 若n是素数,$\varphi(n) = n-1$;

(2) 若m,n互质, $\varphi(mn)=\varphi(m)\varphi(n)$;

(3) 若m,n互质且都是素数,$\varphi(mn) =\varphi(m)\varphi(n) = (m-1)*(n-1)$

更多性质以及证明后面专门介绍,以上列出的是本节需要用到的知识点。

密钥生成过程

用户按照以下步骤生成公私钥:

秘密选取两个大的素数𝑝和𝑞。

计算𝑝和𝑞的乘积:𝑛 = 𝑝 × 𝑞。

随机选取一个与𝜙(𝑛)=(𝑝−1)×(𝑞−1)[注:欧拉函数性质(3)]互质的数𝑒,应用中通常选取𝑒=65537【注:这是有原因的】。

计算𝑒模𝜙(𝑛)的模反元素𝑑,也即是计算满足:

𝑒⋅𝑑 = 1(𝑚𝑜𝑑𝜙(𝑛)) = 𝑒⋅𝑑 =1(𝑚𝑜𝑑(𝑝−1)⋅(𝑞−1))。【求模逆元可参考历史文章】

将(𝑒,𝑛)作为公开的公钥;𝑑作为私钥,秘密保存。

可见,在RSA加密算法中,公钥以一个正整数对的形式出现,同理私钥也是如此。这与前面说过的椭圆曲线加密算法有所不同。椭圆曲线加密算法中公钥是一个点坐标。

加密解密过程

总体来说,加解密过程操作比较简单.

假设A与B通信:

加密过程

(1) A首先将明文分解成若干块,每个块可以表示为一个整数(基于n的大小分块),以𝑀表示,使得1⩽𝑀⩽𝑛−1。为方便起见,只考虑对一个明文数据块进行加密的流程。

(2)A用B的公钥(n,e)进行如下运算得到密文

$C=M^e\ mod\ n$

解密过程

B收到密文C后,做如下运算:

$M =c^d\ mod\ n$ 得到原始消息M。

解密验证

我们反推一下为什么这样解密就能得到原始消息M呢?

解密运算:

$C^d\ mod n =M^{ed}\ mod\ n$

由于 𝑒⋅𝑑 = 1(𝑚𝑜𝑑𝜙(𝑛)) 可得:

e*d = k𝜙(𝑛) +1

代入上式得:$C^d\ mod\ n =M^{k\varphi(n)+1}\ mod\ n$

由于M也是一个整数,所以有以下两种情况:

M与n互质

M与n不互质

下面分情况证明$M^{k\varphi(n)+1}\ mod\ n = M$ 。

M与n互质

这种情况下,由欧拉定理得:

$M^{\varphi(n)}\equiv 1(𝑚𝑜𝑑\ 𝑛)$

所以:

$M^{k\varphi(n)+1}\equiv(M^{\varphi(n)})^k*M \equiv M (mod\ n)$。得证。

M与n不互质

由于𝑛的素因子分解只能是𝑛=𝑝×𝑞 [见上述密钥生成过程],所以M,n最大公因子𝑔𝑐𝑑(𝑀,𝑛)或者是𝑝或者是𝑞,

也即是𝑀 = ℎ𝑝或者𝑀 = ℎ𝑞。

假设𝑀 = ℎ𝑞,此时𝑀必然与𝑝互质[由p.q互质可得]。

由费马小定理可到下式:

$M^{k\varphi(n)+1}\equiv(M^{p-1)})^{k_{(q-1)}}\cdot M \equiv M (mod\ p)$

代入𝑀 = ℎ𝑞, 得:

$(hq)^{k\varphi(n)+1} = jp + hq$

式子左边是q的倍数,右边也必然是q的倍数,即jp也是q的倍数。由于p,q互质所以j是q的倍数,可表示为 j=kq

所以上式变为:

$(hq)^{k\varphi(n)+1} = jp + hq = kqp + hq = kn + hq$

两边对n 取模得到 :

mod n = M mod n 。得证

同理,𝑀=ℎ𝑝时可以得到相同的结论。大家可自行推导。

综合1和2两种情况,可以得出结论:

$M^{k\varphi(n)+1}≡ 𝑀(𝑚𝑜𝑑\ 𝑛)$总是成立的,所以$𝑀= C^d\ 𝑚𝑜𝑑\ 𝑛 $也是成立的,证毕。

小结

本节主要介绍了RSA算法加解密过程及原理,RSA还有很多相关内容,包括签名,具体运算过程,背景知识,安全性等。后续几篇将分别介绍,以求知识系统的完备性。

好了,下一节讲背景知识中的欧拉定理和欧拉函数。

欢迎关注公众号:blocksight

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

发表于 2020-06-09 12:13

阅读 ( 260 )

学分 ( 0 )

转载地址:http://pwhhp.baihongyu.com/

你可能感兴趣的文章
简易爬虫(爬取本地数据)
查看>>
python 进程间通信
查看>>
深拷贝 vs 浅拷贝 释放多次
查看>>
Javascript 有用参考函数
查看>>
点群的判别(三)
查看>>
GNSS 使用DFT算法 能量损耗仿真
查看>>
【转】Simulink模型架构指导
查看>>
MYSQL数据库的导出的几种方法
查看>>
SQL Server-5种常见的约束
查看>>
硬件之美
查看>>
[转载]java开发中的23种设计模式
查看>>
表格的拖拽功能
查看>>
函数的形参和实参
查看>>
文字过长 用 ... 表示 CSS实现单行、多行文本溢出显示省略号
查看>>
1Caesar加密
查看>>
【TP SRM 703 div2 500】 GCDGraph
查看>>
MapReduce 重要组件——Recordreader组件 [转]
查看>>
webdriver api
查看>>
apache 实现图标缓存客户端
查看>>
揭秘:黑客必备的Kali Linux是什么,有哪些弊端?
查看>>