RSA加密演算法历程

历史背景

迪菲-赫尔曼密钥交换(英语:Diffie–Hellman key exchange,缩写为D-H) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥加密通讯内容。公钥交换的概念最早由瑞夫·墨克(Ralph C. Merkle)提出,而这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)在1976年首次发表。马丁·赫尔曼曾主张这个密钥交换方法,应被称为迪菲-赫尔曼-墨克密钥交换(英语:Diffie–Hellman–Merkle key exchange)。

虽然迪菲-赫尔曼密钥交换本身是一个匿名(无认证)的密钥交换协议,它却是很多认证协议的基础,并且被用来提供传输层安全协议的短暂模式中的前向安全性

在最初的描述中,迪菲-赫尔曼密钥交换本身并没有提供通讯双方的身份验证服务,因此它很容易受到中间人攻击。 一个中间人在信道的中央进行两次迪菲-赫尔曼密钥交换,一次和Alice另一次和Bob,就能够成功的向Alice假装自己是Bob,反之亦然。而攻击者可以解密(读取和存储)任何一个人的信息并重新加密信息,然后传递给另一个人。因此通常都需要一个能够验证通讯双方身份的机制来防止这类攻击。

有很多种安全身份验证解决方案使用到了迪菲-赫尔曼密钥交换。当Alice和Bob共有一个公钥基础设施时,他们可以将他们的返回密钥进行签名,也可以像MQV那样签名g和g;STS以及IPsec协议的IKE组件已经成为了Internet协议的一部分;当Alice和Bob共享一个口令时,他们还可以从迪菲-赫尔曼算法使用口令认证密钥协商,类似于ITU-T的建议X.1035。这已经被用作了G.hn的家庭网络标准。

在迪菲-赫尔曼密钥交换出现之前,加密通信双方必须要直接传递该密钥,才能进行正常的加解密会话,而迪菲-赫尔曼密钥交换可以在不直接传递密钥的条件下,完成密钥的交换。

核心技术

普遍大家都认为公钥密码体制是迪菲(W.Diffie)和赫尔曼(E.Hellman)发明的 [1]  ,可鲜为人知的是,默克勒(R.C.Merkle)甚至在他俩之前的1975年就提出了类似的思想,尽管其文章是于1978年发表的,但投稿比较早。因此,公钥密码体制的创始人应该是他们三人。 当然,他们三人只是提出了一种关于公钥密码体制与数字签名的思想,而没有真正实现。不过,他们确实是实现了一种体现公钥密码体制思想、基于离散对数问题的、在不安全的通道上进行密钥形成与交换的新技术。

在后续的内容中会涉及几个概念问题,在这里先做一下铺垫:

1.质数(素数):指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

2.原根:这个数学专业解释很复杂,博主可能连数学的皮毛都没学明白,举个例子简单理解会意即可:
               3ˆx  mod  7 = y (语义化表达为3的x次方对7进行取模运算,结果等y),在满足质数作为模数的条件下,
               得出来y的结果就是分布在[1...6]之间,这样3就叫做7的原根。
               如果当模数是一个足够大的质数时,通过y反向推导出x将变的不可完成,这也就是离散对数问题。
               文章结尾会附上一些数的原根列表。

3.互质关系:如果两个正整数,除了1以外,没有其他公因数,我们就称这两个数是互质关系。

4.欧拉函数:任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?使用:Φ(n)表示,
                       计算这个值的方式    叫做欧拉函数,有以下特点:
                       1.当n是质数的时候,φ(n)=n-1。
                       2.如果n可以分解成两个互质的整数之积,φ(A*B)=φ(A)* φ(B)。
                       3.如果n是两个质数P1 和 P2的乘积,则 φ(n)=φ(P1)* φ(P2)=(P1-1)*(P2-1)。

5.欧拉定理:如果两个正整数m和n互质,那么m的φ(n)次方减去1,可以被n整除。
                       公式表达:mˆφ(n)  mod n ≡ 1

6.费马小定理:欧拉定理的特殊情况:如果两个正整数m和n互质,而且n为质数!那么φ(n)结果就是n-1。
                           公式表达:mˆ(n -1)  mod n ≡ 1

7.模反元素概念:如果两个正整数e和x互质,那么一定可以找到整数d,使得 e*d-1 被x整除。
                               那么d就是e对于x的模反元素,公式表达:e*d  mod  x ≡  1

在加密算法的设计理念里,就是需要保持加密容易,解密非常困难。而离散对数的计算则是符合此项设计理念,正向计算容易,反向推导比较困难,离散对数在一些特殊情况下可以快速计算。然而,通常没有具非常效率的方法来计算它们,而正是基于这个条件以及迪菲赫尔曼密钥交换开始探索RSA算法的原理,下面来开始推导这个过程

根据欧拉定理,开始推导:
结合1ˆk  ≡  1则可导出:mˆ(k*φ(n))  mod  n  ≡  1
再结合1*m = m则可导出:mˆ(k*φ(n) + 1)  mod  n  ≡  m

根据模反元素则可导出:e*d  ≡ k*x + 1
如果x == φ(n),则可导出:mˆ(e*d)  mod  n  ≡  m,那么换个角度来讲就是e和φ(n)互质,可以根据模反元素算出整数d,那么d是e相对于φ(n)的模反元素,而在这个条件下,已经不需要再满足离散对数问题的模数为质数的条件,也不需要满足欧拉定理的m与n互质条件,但是需要再满足m<n

而迪菲赫尔曼密钥交换,则可以将 mˆ(e*d)  mod  n  ≡  m 进行拆解成两次,一次可以理解为加密,一次可以理解为解密:
下面所示:15为服务端随机数,13为客户端随机数,服务端和客户端保持同样的算法,3和17是商定的结果

密钥交换

通过上面可以看到,两端通过指定的算法交换第一次计算结果,神奇的地方在于第二次计算时,两端得到了相同的结果,而此时,也就完成真实密钥的交换,也就是相当于3 ^ 15 ^ 13 mod 17 =  10  = 3 ^ 13 ^ 15 mod 17。
上述的拆解交换密钥原理用公式来表达:
mˆ(e)  mod  n  =  c
cˆ(d)  mod  n  =  mˆ(e*d)  mod  n

见证奇迹的时刻,根据mˆ(e*d)  mod  n  =  m 形成闭环,则可进一步推导出:
mˆ(e)  mod  n  =  c(加密)
cˆ(d)  mod  n  =  m(解密)
e和d可以互换,既可以加密也可以用来解密

公钥: n和e 
私钥: n和d
明文:    m
密文:    c

条件:
1.m<n 
2.e和φ(n)互质

特点:
1.n会非常大,一般为1024个二进制位,2048二进制位更好, 详情可见RSA加密演算法初识 - 简书
2.由于需要求出φ(n),所以根据欧函数特点,最简单的方式n 由两个质数相乘得到: 质数:p1、p2;
3.算出Φ(n) = (p1 -1) * (p2 - 1),找出e;
4.根据模反元素算出d。
这个过程总共生成6个数字:p1、p2、n、φ(n)、e、d

关于RSA安全问题:
1.公钥用到了n和e,其余的4个数字是不公开的;
2.要想求出私钥d  。由于e*d = φ(n)*k + 1。要知道e和φ(n);
3.e是知道的,但是要得到 φ(n),必须知道p1 和 p2;
4.由于 n=p1*p2。只有将n因数分解才能算出, 详情可见RSA加密演算法初识 - 简书



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

推荐阅读更多精彩内容

  • 密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。 密码学...
    我叫Vincent阅读 23,833评论 0 19
  • 前几天看到一句话,“我们中的很多人把一生中最灿烂的笑容大部分都献给了手机和电脑屏幕”。心中一惊,这说明了什么?手机...
    PerryMorning阅读 1,462评论 0 0
  • RSA介绍 RSA产生的原因:这要从密码学的发展史说起,相传在古罗的凯撒大帝为了防止敌方截获自己的信息,自己设计了...
    眷卿三世阅读 747评论 0 0
  • 密码学发展史 讨论RSA原理之前,我们先了解一下密码学的发展史。因为RSA最终形成的数学算法,也是不断演变而来的。...
    没八阿哥的程序阅读 406评论 0 1
  • 前言 这篇文章将从RSA理论、RSA终端操作、RSA代码操作三个方面去了解和使用RSA加密。一到四节是理论部分,觉...
    我是好宝宝_6966阅读 380评论 0 1