密码学---公钥密码---RSA算法

RSA算法流程

RSA算法是迄今为止理论上最为成熟的公钥密码体制,并且已经得到广泛的应用。

1.产生密钥

产生密钥的过程如下:

  1. 选择两个保密的大素数P和q
  2. 计算n=p×q,φ(n)=(p-1)(q-1)
  3. 选择公钥e,e∈(1,φ(n))范围内的一个整数,且gcd(φ(n),e)=1
  4. 计算密钥d,d·e≡1 mod φ(n),即d≡e-1 mod φ(n)
  5. 以{e,n}为公钥,{d,n}为私钥

2.分组

将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于log2n

加密

对每个明文分组m,作加密运算:
在这里插入图片描述

解密

对密文分组的解密运算如下:
在这里插入图片描述

实例

这里以未分组的问题进行示例:
对于分组问题,当加密的时候,需要补零则在后面进行补零操作;解密时需要补0,则在每个分组前面进行补零操作

RSA算法的计算问题

加密和解密中的计算

RSA算法的加密和解密过程都为求一个整数的整数次幂再取模的运算。因此可能有如下问题:
1.中间结果非常大,超出计算机的整数取值范围。
2.指数的运算很复杂

针对不同的问题有不同的解决方法:
1.针对问题1,可以合理运用模运算的性质:
在这里插入图片描述
2.针对问题2,可以通过如下变形提高指数运算的有效性,减少运算次数。

基于该思想有快速指数算法如下:
在这里插入图片描述

应用解决方法的具体示例:
问题:求7560 mod 561.
解:将560协程二进制形式为1000110000,应用快速指数算法的结果为:
在这里插入图片描述

密钥产生过程的计算问题

密钥产生过程中的计算问题主要是大素数的确定问题:

产生密钥时,需要考虑两个大素数p、q的选取,以及e的选取和d的计算。因为n=pq在体制中是公开的,因此为了防止敌手通过穷搜索发现p、q的值,这两个素数应该是在一个足够大的整数集合中选取的大数。且RSA算法的优越性和有效地寻找大素数有密切联系。

寻找大素数一般先随机选取一个大的奇数(如用伪随机数产生器),然后用素性检验算法检验选择的奇数是否是素数,若不是,则选取另一大奇数,直到满足条件为止。后续工作可由Euclid算法完成

改进的RSA算法

改进的RSA算法是利用中国剩余定理来提高解密运算的速度。其解密过程如下:
在这里插入图片描述
由中国剩余定理,有解:
在这里插入图片描述
且已经表明,改进后的算法可以很大程度上减少解密运算时间

RSA的安全性

RSA的安全性是基于分解大整数的困难性假定。
且能够证明由n直接确定n的欧拉函数等价于对n的分解。
因此RSA的安全性对密钥的选取提出了大小的注意,除此还对p和q提出了以下要求:
1.|p-q|要大
2.p、q的选取要保证能使t很大,才能抵抗重复加密攻击

RSA的攻击

RSA由于参数选择不当会存在一下两种攻击

1.共模攻击

共模攻击就是指由于模数相同从而容易造成的攻击方法。可通过给用户设置不同的模数来进行抵抗

2.低指数攻击

低指数攻击是指用户的加密指数很小,攻击者利用中国剩余定理从而求解出m的攻击方法

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值