安全体系(二)——RSA算法详解

  本文主要讲述RSA算法使用的基本数学知识、秘钥的计算过程以及加密和解密的过程。

  安全体系(零)—— 加解密算法、消息摘要、消息认证技术、数字签名与公钥证书

  安全体系(一)—— DES算法详解

1.概述

  RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA算法以他们三人姓氏开头字母命名。

  RSA是目前最有影响力的公钥加密算法,到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要秘钥长度足够长,用RSA加密的信息实际上是不能被解破的。ISO推荐它为公钥数据加密标准。

  RSA算法基于简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

  RSA是"非对称加密算法",非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公钥与私钥是配对的,用公钥加密的数据只有配对的私钥才能解密,反之亦然。因加解密使用两个不同的密钥,所以这种算法叫作非对称加密算法。

  非对称算法的在应用的过程如下,假设发送方向接收方发送消息(明文):

  1.接收方生成公钥和私钥,公钥公开,私钥保留;

  2.发送方将要发送的消息采用公钥加密,得到密文,然后将密文发送给接收方;

  3.接收方收到密文后,用自己的私钥进行解密,获得明文。

  可以看出,非对称加密解决了对称加密密钥传输的问题。

2.数学基础

  RSA加密算法中,只用到素数、互质数、欧拉函数、模运算等简单的数学知识。

2.1 互质关系

1.素数

  素数又称质数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。

2.互质数

  公因数只有1的两个数,叫做互质数;又称互素,若N个整数的最大公因子是1,则称这N个整数互质。

判断互质的简单法则:

  a.任意两个质数是互质的;

  b.一个数是质数,另一个数不是它的倍数,两者互质(比如正整数P是质数,则小于P的正整数和P都是互质的);

  c.两个不相等的数,较大的那个数是质数,两者互质;

  d.1和任意自然数互质;

  e.2和任何奇数是互质;

  f.如果P是大于1的整数,则P和P-1互质;

  g.如果P是大于1的奇数,则P和P-2互质。

2.2 欧拉函数

欧拉函数的推导:

  任意给定正整数n,求在小于等于n的正整数中,有多少个与n互质的正整数?

推导步骤如下:

  a.当n=1时,φ(1)=1(2.1中的d);

  b.n为质数时,φ(n)=n-1(2.1中的b);

  c.如果n是某一质数的m次方,即n=pm(p为质数,m为整数且大于等于1),则

φ(pm)=pm-pm-1=pm(1-1/p)

  这个式子是如何得到的呢?

  当m=1时,同情况b。

  根据2.1的b,p是质数,则从1到pm的整数中,除去pk(m≥k≥1),余下的都与pm互质,页就是说,一共n(其中n=pm)个数,其中有pm-1(即p,p2,…pm)个整数与n不是互质关系,则与n互质的整数个数为pm-pm-1

  d.当n=p1*p2,且p1、p2互质时,有

φ(n)= φ(p1p2)=φ(p1) φ(p2)

  即积的欧如果a与p1互质(a<p1),b与p2互质(b<p2),c与p1p2互质(c<p1p2),则c与数对 (a,b) 是一一对应关系。由于a的值有φ(p1)种可能,b的值有φ(p2)种可能,则数对 (a,b) 有φ(p1) φ(p2)种可能,而c的值有φ(p1p2)种可能,所以φ(p1p2)就等于φ(p1) φ(p2)。拉函数等于各个因子的欧拉函数的积。

  e.对于任意一个大于1的正整数,都可以写成

n=p1k1p2k2…prkr,其中,p1,p2,…,pk为质数。

  由d可知

φ(n)= φ(p1k1)φ(p2k2)…φ(prkr),

  再由c可知

φ(n)= p1k1p2k2…prkr(1-1/p1)(1-1/p2)…(1-1/pr)

  即

φ(n)=n(1-1/p1)(1-1/p2)…(1-1/pr)

  这就是欧拉函数的通用计算公式。

2.3 欧拉定理

  欧拉定理:

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

aφ(n)≡1(mod n)

  上式表示,a的φ(n)次方被n除的余数为1,或者叙述为,a的φ(n)次方减去1后可以被n整除。注意,φ(n)是n的欧拉函数。

  欧拉定理的特殊情况:如果正整数a与质数p互质,因为质数p的φ(p)等于p-1,则欧拉定理可以写成就是我们所说的费马小定理

ap-1≡1(mod p)

2.4 模反元素

  模反元素:

  如果两个正整数a和n互质,那么一定可以找到整数b,使得ab-1被n整除,或者说ab被n除的余数是1。这时b被称为a的模反元素。公式如下:

ab≡1(mod n)

  注意,模反元素并不唯一,如果b是a的模反元素,则b+kn都是a的模反元素。

  欧拉定理可以用来证明模反元素的必然存在:

aφ(n)= a×aφ(n)-1≡1(mod n)

2.5 扩展欧几里得算法

  用来计算秘钥的d和e,这里不详细介绍,可参考扩展欧几里得算法

3.秘钥的生成与加解密

3.1密钥的生成

密钥生成的步骤如下:

  1.随机选择两个不相等的质数p和q;

  2.计算p和q的乘积n(将n转换为二进制后,二进制的长度就是密钥的长度,实际应用中一般选择1024位、2048位);

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

  4.随机选择一个整数e,其中φ(n)>e>1,且e与φ(n)互质(实际应用中e一般选为65537);

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

  6.将n和e封装成公钥,n和d封装成私钥。

举例:

  1.随机选择两个不相等的质数47和59;

  2.二者的乘积为43×57=2773,2773转化为二进制为1010,1101,0101,长度为12位,所以密钥的长度为12位;

  3.根据欧拉函数公式φ(n)=n(1-1/p)(1-1/q)计算,φ(2773)= 2773×(1-1/47)(1-1/59)=(47-1)(59-1)=2668;

  4.随机选择一个整数e=63,2668>63>1,并且63与2668互质;

  5.计算63对于2668的模反元素d,根据公式ed≡1(mod φ(n)),有63d-1=2668k,由欧几里得扩展公式计算得d=847。

  6.公钥(n,e)=(2773,63),私钥(n,d)=(2773,847)。

3.2加密和解密

1.加密

  假设发送方向接收方发送信息m,m未加密,我们称之为明文。发送方从接收方获得的公钥为(n,e),加密公式为

me=c(mod n)

  其中,m必须是整数,而且m必须比n小。

  m,e,n已知,从上面的公式中计算出c,c就是加密后的信息,我们称之为密文。发送方将密文发送给接收方。

2.解密

  接收方从发送方接收到密文c,用自己的配对私钥(n,d)进行解密,解密公式为

cd=m(mod n)

  已知c,n,d,从上面公式中计算出m,就是发送方发过来的明文。

举例:

  1.加密

  根据上面计算出的公钥(n,e)=(2773,63),假如m=244,根据公式me=c(mod n),可计算出密文c=465。

  2.解密

  根据上面计算出的私钥(n,d)=(2773,847),已知c=465,根据公式cd=m(mod n),可计算出明文m=244。

时间: 2024-10-04 02:32:53

安全体系(二)——RSA算法详解的相关文章

RSA算法详解

1.RSA加密算法是最常用的非对称加密算法 2.RSARSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名, 3.目前学术界无法证明RSA算法的绝对正确性,但是也无法证明否定它的安全性,因此恰恰说明该算法有相当的可信性. 4.RSA原理基于大数分解的难度,其公钥和私钥是一对大素数对的函数,从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题) 5.具体的加密,解密,流程 RSA的公钥.私钥的组成,以及加密.

安全体系(三)——SHA1算法详解

本文主要讲述使用SHA1算法计算信息摘要的过程. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(一)—— DES算法详解 安全体系(二)——RSA算法详解 为保证传输信息的安全,除了对信息加密外,还需要对信息进行认证.认证的目的有两:一是验证信息的发送者是合法的,二是验证信息的完整性.Hash函数就是进行信息认证的一种有效手段. 1.Hash函数和消息完整性 Hash函数也称为杂凑函数或散列函数,函数输入为一可变长度x,输出为一固定长度串,该串被称为输入x

安全体系(一)—— DES算法详解

本文主要介绍了DES算法的步骤,包括IP置换.密钥置换.E扩展置换.S盒代替.P盒置换和末置换. 安全体系(零)-- 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(二)--RSA算法详解 安全体系(三)--SHA1算法详解 1.DES算法简介 DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准. DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法. 密钥长64位,密钥事实上是56位参与DES运算(第8.16.24.32.40

Kruskal算法(二)之 C++详解

本章是克鲁斯卡尔算法的C++实现. 目录 1. 最小生成树 2. 克鲁斯卡尔算法介绍 3. 克鲁斯卡尔算法图解 4. 克鲁斯卡尔算法分析 5. 克鲁斯卡尔算法的代码说明 6. 克鲁斯卡尔算法的源码 转载请注明出处:http://www.cnblogs.com/skywang12345/ 更多内容:数据结构与算法系列 目录 最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的

[转] KMP算法详解

转载自:http://www.matrix67.com/blog/archives/115 KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段.    我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法.KMP算法是拿来处理字符串匹配的.换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串).比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串.

php 二分查找法算法详解

一.概念:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表.重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功. 二.代

【转】AC算法详解

原文转自:http://blog.csdn.net/joylnwang/article/details/6793192 AC算法是Alfred V.Aho(<编译原理>(龙书)的作者),和Margaret J.Corasick于1974年提出(与KMP算法同年)的一个经典的多模式匹配算法,可以保证对于给定的长度为n的文本,和模式集合P{p1,p2,...pm},在O(n)时间复杂度内,找到文本中的所有目标模式,而与模式集合的规模m无关.正如KMP算法在单模式匹配方面的突出贡献一样,AC算法对于

支持向量机(SVM)(五)-- SMO算法详解

一.我们先回顾下SVM问题. A.线性可分问题 1.SVM基本原理: SVM使用一种非线性映射,把原训练            数据映射到较高的维.在新的维上,搜索最佳分离超平面,两个类的数据总可以被超平面分开. 2.问题的提出: 3.如何选取最优的划分直线f(x)呢? 4.求解:凸二次规划 建立拉格朗日函数: 求偏导数: B.线性不可分问题 1.核函数 如下图:横轴上端点a和b之间红色部分里的所有点定为正类,两边的黑色部分里的点定为负类. 设: g(x)转化为f(y)=<a,y> g(x)=

邻接矩阵有向图(二)之 C++详解

本章是通过C++实现邻接矩阵有向图. 目录 1. 邻接矩阵有向图的介绍 2. 邻接矩阵有向图的代码说明 3. 邻接矩阵有向图的完整源码 转载请注明出处:http://www.cnblogs.com/skywang12345/ 更多内容:数据结构与算法系列 目录 邻接矩阵有向图的介绍 邻接矩阵有向图是指通过邻接矩阵表示的有向图. 上面的图G2包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"<A,B>,<B,C>,<B,E>,<