介绍

RSA 是一种非对称的公开密钥算法,它需要一对公钥和私钥,消息发送者使用公钥对消息进行加密,消息接收者使用私钥对消息进行解密。这个算法的特殊之处在他的加密、解密算法和公钥都是公开的,只有私钥是保密的,而试图破解的人即使拿到公钥和加密的消息,在知道加密、解密算法的情况下,依然无法对消息进行解密。下面我们看看它的加密、解密算法长什么样。

RSA 算法

p\ p p 和q\ q q 是两个非常大的素数,n=p×q\ n=p \times q n=p×q,a\ a a 和b\ b b 是正整数,满足a×b≡1(modφ(n))\ a \times b \equiv 1 (mod\ \varphi(n)) a×b≡1(mod φ(n)),φ(n)\ \varphi(n) φ(n) 表示小于n\ n n 且与n\ n n 互素的正整数个数。这里,b\ b b 和n\ n n 就是公钥,对外公开,a\ a a 就是私钥,对外保密。假设消息明文为x\ x x,密文为y\ y y,x\ x x 和y\ y y 是小于n\ n n 的正整数,则:
加密函数为:e(x)=xbmodn\ e(x)=x^b\ mod\ n e(x)=xb mod n
解密函数为:d(y)=yamodn\ d(y)=y^a\ mod\ n d(y)=ya mod n
这个算法要能按照预期工作,必须保证两点:

  1. 解密后的消息和原来的消息一样,也就是x=d(e(x))\ x=d(e(x)) x=d(e(x))
  2. 根据公开的b\ b b 和n\ n n 无法破解保密的a\ a a

在介绍证明方法前,我们先来看一个简化的例子:
假设 p=3,q=5,n=15\ p=3,q=5,n=15 p=3,q=5,n=15,小于 15 且与 15 互素的正整数有:1、2、4、7、8、11、13、14,也就是一共有 8 个,所以φ(15)=8\ \varphi(15)=8 φ(15)=8,找到a=11,b=3\ a=11,b=3 a=11,b=3 满足a×b=33≡1(mod8)\ a\times b=33 \equiv 1 (mod\ 8) a×b=33≡1(mod 8),所以在这里例子里,公钥就是 15 和 3,私钥就是 11。当某个明文消息x=12\ x=12 x=12,加密的过程是y=123mod15=1728mod15=3\ y=12^3\ mod\ 15=1728\ mod\ 15=3 y=123 mod 15=1728 mod 15=3。接收者得到密文 3 后解密的过程是:311mod15=177147mod15=12\ 3^{11}\ mod\ 15=177147\ mod\ 15=12 311 mod 15=177147 mod 15=12,可以看到解密后的 12 和原先的明文是一模一样的。

这里用的是简化的例子,实际上p\ p p 和q\ q q 是两个非常大的素数,比如说现在的 RSA 算法要求n\ n n 是 1024 位甚至 2048 位,也就是 21024\ 2^{1024} 21024 和22048\ 2^{2048} 22048,对于那么大的数字,寻找素数p\ p p 和q\ q q 以及计算n\ n n 并不困难,但是对给定的n\ n n 做素因数分解成p\ p p 和q\ q q 是极其困难的,同样的,因为φ(n)\ \varphi(n) φ(n) 的计算也依赖于p\ p p 和q\ q q,所以计算出φ(n)\ \varphi(n) φ(n) 也非常困难,而a×b≡1(modφ(n))\ a \times b \equiv 1 (mod\ \varphi(n)) a×b≡1(mod φ(n)),所以要根据n\ n n 和b\ b b 计算出a\ a a 也就几乎是不可能的。

证明方法介绍

最后我们看下x=d(e(x))\ x=d(e(x)) x=d(e(x)) 的证明,这里介绍的是《应用近世代数》(见参考资料)一书中的证明方法,这个方法只需要用到 Euler 定理,比较容易看懂,过程如下:
∵e(x)=xbmodn∴e(x)=(xb−cn)modn∴d(e(x))=(xb−cn)amodn∴d(e(x))=xabmodn∵ab≡1(modφ(n))∴ab=tφ(n)+1∴d(e(x))=xtφ(n)+1modn\because e(x)=x^b\ mod\ n\\ \therefore e(x)=(x^b-cn)\ mod\ n\\ \therefore d(e(x))=(x^b-cn)^a\ mod\ n\\ \therefore d(e(x))=x^{ab}\ mod\ n\\ \because \ ab \equiv 1 (mod\ \varphi(n))\\ \therefore ab=t\varphi(n)+1\\ \therefore d(e(x))=x^{t\varphi(n)+1}\ mod\ n ∵e(x)=xb mod n∴e(x)=(xb−cn) mod n∴d(e(x))=(xb−cn)a mod n∴d(e(x))=xab mod n∵ ab≡1(mod φ(n))∴ab=tφ(n)+1∴d(e(x))=xtφ(n)+1 mod n
也就是说只需要证明xtφ(n)+1modn=x\ x^{t\varphi(n)+1}\ mod\ n=x xtφ(n)+1 mod n=x 就可以了,分两种情况讨论:
当x\ x x 和n\ n n 互素:
根据 Euler 定理:xφ(n)≡1modn\ x^{\varphi(n)} \equiv 1\ mod\ n xφ(n)≡1 mod n,所以 xtφ(n)+1modn=x\ x^{t\varphi(n)+1}\ mod\ n=x xtφ(n)+1 mod n=x
当x\ x x 和n\ n n 不是互素:
则x=sp\ x=sp x=sp
根据 Euler 函数,
φ(n)=(p−1)(q−1)φ(q)=q−1\varphi(n)=(p-1)(q-1)\\ \varphi(q)=q-1 φ(n)=(p−1)(q−1)φ(q)=q−1
再根据 Euler 定理,
x(q−1)=(sp)q−1≡1modqxtφ(n)=xt(p−1)(q−1)≡1modq∴xtφ(n)=rq+1∴xtφ(n)+1=xtφ(n)⋅x=rqx+x=rqsp+x=rsn+x≡xmodn∴xtφ(n)+1modn=xx^{(q-1)}=(sp)^{q-1} \equiv 1\ mod\ q\\ x^{t\varphi(n)}=x^{t(p-1)(q-1)} \equiv 1\ mod\ q\\ \therefore x^{t\varphi(n)}=rq+1\\ \therefore x^{t\varphi(n)+1}=x^{t\varphi(n)}\cdot x=rqx+x=rqsp+x=rsn+x \equiv x\ mod\ n\\ \therefore x^{t\varphi(n)+1}\ mod\ n=x x(q−1)=(sp)q−1≡1 mod qxtφ(n)=xt(p−1)(q−1)≡1 mod q∴xtφ(n)=rq+1∴xtφ(n)+1=xtφ(n)⋅x=rqx+x=rqsp+x=rsn+x≡x mod n∴xtφ(n)+1 mod n=x
证毕。可以看到在有了 Euler 定理后,配上一些技巧性的操作,就可以比较容易地证明x=d(e(x))\ x=d(e(x)) x=d(e(x)),也就是保证了解密后的消息和原来的消息一样。下面我们看下 Euler 定理长什么样。

Eurler 函数和 Eurler 定理

Eurler 函数

若n\ n n 是一个正整数,φ(n)\ \varphi(n) φ(n) 表示小于n\ n n 且与n\ n n 互素的正整数个数。当n\ n n 是一个素数时,显然有φ(n)=n−1\ \varphi(n)=n-1 φ(n)=n−1,若n\ n n 的素因数分解是n=p×q\ n=p \times q n=p×q,则φ(n)=(p−1)(q−1)\ \varphi(n)=(p-1)(q-1) φ(n)=(p−1)(q−1),证明方法见参考资料。

Eurler 定理

若正整数a\ a a 和n\ n n 互素,则aφ(n)≡1modn\ a^{\varphi(n)} \equiv 1\ mod\ n aφ(n)≡1 mod n,证明方法需要用到子群的阶数和指数关系,非常的巧妙,祥见参考资料。

参考资料

《应用近世代数》(第 3 版)胡冠章 王殿军 编著 清华大学出版社 ISBN 978-7-302-12566-2

RSA 公钥密码系统背后的数学原理相关推荐

  1. 解析深度神经网络背后的数学原理!

    作者 | Piotr Skalski 译者 | 巧克力 编辑 | Jane 出品 | AI科技大本营 [导读]为了更好地理解神经网络的运作,今天只为大家解读神经网络背后的数学原理.而作者写这篇文章的目 ...

  2. 人工神经网络背后的数学原理!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:贾博文,浙江大学,Datawhale原创作者 本文约8000字,建 ...

  3. 梯度下降背后的数学原理几何?

    来自 | 深度学习这件小事   编辑 | Datawhale 对于诸位"机器学习儿"而言,梯度下降这个概念一定不陌生,然而从直观上来看,梯度下降的复杂性无疑也会让人"敬而 ...

  4. 模拟上帝之手的对抗博弈——GAN背后的数学原理

    模拟上帝之手的对抗博弈--GAN背后的数学原理 深度学习 人工智能 机器学习 神经网络 神经网络与机器学习-英文版 阅读1984  作者:李乐 CSDN专栏作家 简介 深度学习的潜在优势就在于可以利用 ...

  5. 一文读懂梯度下降背后的数学原理几何

    (给视学算法加星标,修炼编程内功) 来源:AI科技评论 对于诸位"MLer"而言,梯度下降这个概念一定不陌生,然而从直观上来看,梯度下降的复杂性无疑也会让人"敬而远之&q ...

  6. 深入卷积神经网络背后的数学原理 | 技术头条

    参加「CTA 核心技术及应用峰会」,请扫码报名 ↑↑↑ 作者 | Piotr Skalski 译者 | Monanfei 编辑 | 十月Rachel.Jane 出品 | AI科技大本营(id:rgzn ...

  7. 【深度学习】解析深度神经网络背后的数学原理

    来源:产业智能官 解析深度网络背后的数学 如今,已有许多像 Keras, TensorFlow, PyTorch 这样高水平的专门的库和框架,我们就不用总担心矩阵的权重太多,或是对使用的激活函数求导时 ...

  8. 深入卷积神经网络背后的数学原理

    来源:AI科技大本营 摘要:在计算机神经视觉技术的发展过程中,卷积神经网络成为了其中的重要组成部分,本文对卷积神经网络的数学原理进行了介绍. 文章包括四个主要内容:卷积.卷积层.池化层以及卷积神经网络 ...

  9. 在线交友背后的数学原理

    全世界只有3.14 % 的人关注了 数据与算法之美 欣赏 TED-Ed 带字幕视频, 或者看下面编写的文字版. 01 交友网站的背后是算法帝国 大家好,我叫 Christian Rudder,我是 O ...

最新文章

  1. Java并发编程-并发工具包(java.util.concurrent)使用指南(全)
  2. mysql-connector-net不同版本下载
  3. JavaScript历史状态管理
  4. python每天八分钟教程_每天八分钟Python基础教程——对象持久化、序列化
  5. 笔试题 遗忘点记录 面向对象特点 + 产生死锁条件+ windows内存管理方法
  6. 面试必考的网络协议相关题目应该如何回答
  7. python opencv 打开相机检测圆点
  8. WPS金山软件,死磕微软31年,故事要从1988年说起...
  9. 小擦呀,这省市三级联动的数据不太准确,找份最新的吧
  10. Hrbust 1865 人类希望——kokoII【记忆化搜索】
  11. #Paper Reading# Pre-trained Language Model based Ranking in Baidu Search
  12. keil5新建STM32工程文件--实践篇手把手教学(以STM32F103为例)
  13. [转]一个人生活,如何摆脱孤独提升幸福感?
  14. 力扣(LeetCode)怎么刷题,以排序算法为例
  15. 频繁模式挖掘Frequent Pattern Mining
  16. 媒企农三方共建专属基地 探索助力吉林乡村振兴
  17. 疯狂的程序员81:丁骨牛排
  18. RTP/RTSP/RTCP 协议详解
  19. Linux ffmpeg命令的使用
  20. 服务器2012系统用什么更新驱动程序,服务堆栈更新程序适用于 Windows 8 和 Windows Server 2012...

热门文章

  1. 超实用教程,带你手把手搭建云服务器——单机方案
  2. 第一篇 12306自动下单抢票
  3. 鸿蒙os升级Android,华为鸿蒙系统升级名单正式确认!全面替换安卓:流畅度比肩iOS...
  4. 那些火爆社区的话题,背后的运营逻辑是什么?
  5. 免费C++IDE(官方版)
  6. js Cracking examples
  7. SAP 成本计算概念
  8. VR Interaction Framework插件的使用
  9. 【正点原子MP157连载】第二十八章 Linux并发与竞争实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
  10. 净水器排名,直饮净水器十大排名推荐