RSA加密解密算法—编程实战

本章涉及知识点

1、对称加密的概念

2、非对称加密的概念

3、RSA安全性的奥秘

4、RSA秘钥的生成算法

5、RSA明文的加密算法

6、RSA密文的解密算法

7、窃听者破解秘钥的可能性

8、python编程模拟信息发送者的行为

9、 python编程模拟信息接收者的行为

10、python编程模拟窃听者破解秘钥的行为

11、结果分析

12、后记

一、对称加密的概念

对称加密又称单秘钥加密,它的定义是:通信双方通过同一把秘钥对信息进行加密和解密

其工作流程如下

对称加密

其中m表示要传递的信息明文,c表示对m加密后的密文,e表示秘钥,f(e)函数表示对m加密的运算法则,g(e)函数表示对c解密的运算法则(g(e)是f(e)的逆运算函数)

对称加密的优点为

(1)加密解密都用同一把秘钥,算法是公开的,计算量较单一,加密速度快,加密效率高

(2)适合需要加密大量数据的场景

对称加密的缺点为

(1)虽然f(e)和g(e)函数可以设计的非常复杂,但是通信之前双方需要同步保存秘钥e,而同步过程发生在共有环境

(2)如果窃听者在同步e的过程中,在共有环境劫持到e,就可以通过大量数据穷举出f(e)的法则从而破解密文c得到明文m

(3)通信双方都保存着e,如果任意一方的e泄露,那么二者的通信将不再安全

在1976年之前几乎所有的加密方法都是对称加密

二、非对称加密的概念

非对称加密又称双秘钥加密,它的定义是:通信双方通过两个秘钥来对信息进行加密和解密,这两个秘钥分别是公开秘钥(公钥)和私有秘钥(私钥),且二者的算法存在某种数学关系,但是这种数学关系无法被传统计算机破解

其工作流程如下

非对称加密

其中public_key表示公钥,private_key表示私钥

非对称加密的优点为:

(1)秘钥分为公钥和私钥,公钥公开传递,而私钥只保存在接收方,安全性更高

(2)通信之前二者无需同比私钥,只需要同步公钥即可

(3)如果窃听者在共有环境劫持到密文c和公钥,但是以传统计算机的能力无法通过已知公钥来破解出私钥(数学上可以证明)

非对称加密的缺点为:

(1)加密解密时间花费较长,速度慢

(2)适合对少量重要数据通信的场景

1977年,麻省理工(MIT)大学的三位数学家根据非对称加密的思想,设计出以他们三个人名字命名的RSA算法,该算法也是至今使用最广泛的非对称加密算法,如军事、银行等

三、RSA安全性的奥秘

RSA算法基于一个非常简单的数论事实:

如果将两个大素数相乘,则乘积计算十分容易;但是如果对这个乘积进行质因式分解,却非常困难!

由于全世界的数学家至今无法用一个多项式来精准的表示素数,也无法证明素数的分布规律,所以RSA算法的安全性就是利用了这个数学事实来设计的

四、RSA秘钥的生成算法

RSA秘钥的生成包括了公钥和私钥的生成,涉及到的数学知识有欧拉函数、互质、模反元素、欧几里得扩展算法、大整数的幂运算取模算法等,这些数学算法我在《RSA加密解密算法—数论基础》文中已经说明

下面我们列出RSA秘钥的生成算法步骤

(1)随机选择两个不相等的素数p和q

(2)计算两个素数的乘积

两个素数的乘积

(3)计算n的欧拉函数φ(n) 

n的欧拉函数

(4)随机选择一个正整数e,e满足

选择一个正整数e

其中我们用欧拉定理表示e和φ(n)互质

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

模反元素d

(6)封装公钥和私钥

公钥和私钥

其中公钥可以在公共网络环境里传递,而私钥由消息接收者私人保存

五、RSA明文的加密算法

假设Sender要发送给Receiver的消息为m,m未加密是明文,而Sender拥有从Receiver生成的公钥(n, e),则Sender使用该公钥对m进行加密

公钥加密算法

其中,m必须是整数,且m<n

经过公钥(n, e)加密的密文c,就是Sender要传送给Receiver的消息,且c将暴露在网络公共环境中,可以被第三方窃听

六、RSA密文的解密算法

Receiver接受到从Sender发送到的密文c后,需要对密文c进行解密还原为明文m,而Receiver仅自己拥有生成的私钥(n, d),则Receiver使用自己的秘钥对c进行解密

秘钥解密算法

至此,Receiver就将密文c还原为明文m

七、窃听者破解秘钥的可能性

下面分析窃听者破解秘钥的可能性,我们知道窃听者可以在共用网络环境里窃听到的数据有

(1)加密后的密文c

(2)公开传递的公钥(n, e)

则问题可以描述为:已知n, e, c,求m?

我们通过逆向过程来推导

(1)由于m需要私钥(n, d)来解密,d未知,问题即转化为求d?

(2)而d又是e和φ(n)的模反元素,φ(n)未知,问题即转化为求φ(n)?

(3)而φ(n)=φ(p) * φ(q) = (p - 1) * (q - 1),p和q未知,问题即转化为求p和q?

(4)而n = p*q,n是已知的,则问题即转化为求n的质因数分解?

综上所述,只要窃听者能够将n质因数分解为p和q,那么它就可以求出φ(n),从而求出d,最后用(n, d)来破解出密文c得到明文m

但是,人类目前对于大数的质因式分解非常的困难,其本质就是人类无法用一个精确的多项式来描述素数,导致计算机只能通过穷举筛选法来尝试质因数分解,而当分解的数字n非常大的时候(1024位或者2048位长度),计算机穷举分解的时间可能需要几百年或千年,因此,基于这个数论知识和对素数理论的匮乏,窃听者破解密文c的可能性,从有限的时间上无限接近于0

八、python编程模拟信息发送者的行为

Sender有如下行为:

(1)获取公钥

(2)用公钥对信息明文m加密为密文c,将c公开发送给Receiver

Sender的行为

九、python编程模拟信息接收者的行为

Receiver有如下行为:

(1)生成秘钥:公钥+私钥

(2)公开公钥,保存私钥

(3)用自己的私钥对Sender发送的密文c解密

Receiver的行为1
Receiver的行为2

十、python编程模拟窃听者破解秘钥的行为

第三方窃听者有如下行为:

(1)从公共网络上获取公钥和密文

(2)尝试对n进行质因数分解

(3)如果质因数分解成功,则成功解密密文

窃听者行为

十一、结果分析

我们来做以下实验:

(1)Receiver生成公钥和私钥

(2)Sender要传送的明文m=123456,用公钥加密后传递密文c

(3)Receiver用私钥解密c,得到m=123456

(4)Hacker尝试破解c

实验

实验结果为:

实验结果

从结果中可以看到:

(1)Receiver用自己的私钥正确的从密文c解密出了明文m,并且时间效率非常高

(2)Hacker虽然成功的破解了密文c,但在这个实验里我们选取的两个素数p=8887,q=13163非常小,质因数分解n=p*q=116979581都花费了大约43秒,那么在真实环境里p和q的长度都是1024位,在有限的时间内,大数的质因数分解根本不可能

十二、后记

RSA算法的安全性,建立在如下两个方面

1)从数学的角度:人类没有证明出精准的素数表达式和分布规律

(2)从计算机的角度:传统计算机无法突破其并行计算能力的瓶颈

基于这两个角度,要想破解RSA算法,可以依赖于

(1)证明:哥德巴赫猜想(1+1=2)

(2)量子计算机

但是未来无论人类基于什么理论完全破解RSA算法,银行、军事的加密解密体系算法一定都会提前进行更换

案例代码见:RSA加密解密算法—编程实战

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容