RSA Cryptography

Security relies on the difficulty of factoring large
composite numbers

RSA Description

Key Generation

—找到两个大素数 pq, n = pq, φ(n) = (p-1)(q-1)
—随机选择一个e(1<e<φ(n)),且gcd(e,φ(n))
—求出d = e-1mod φ(n),则(e,n)为公钥,(p,q,d)为私钥

Encryption

c = Ee( m) = me(mod n)

Decryption

m = Dd( c) = cd(mod n)

Parameters of RSA

  • p和q应该是强素数
    若p是强素数,则p-1, p+1有两个大素数因子q1, q2, 且q1-1, q1+1, q2-1, q2+1各有一个大素数因子。
    可以防止Pollard p-1 algorithm攻击
  • p和q相差不能太大或者太小,太大或者太小都容易被穷举攻击破解
  • d >= n1/4, d小一点可以加快解密速度,但是d太小或者太大接近n都容易被穷举破解

RSA Implementations

  • xc mod n运算为指数时间,属于NP问题,可以使用平方乘算法
  • 如何产生大素数?先产生大奇数,然后进行素数检测。如何进行素数检测?可以使用米勒罗宾算法 (引理:费马小定理、二次探测定理)在这里插入图片描述

Cryptanalysis of RSA

Brute force

Pollard p-1 algorithm

随机选择一个大数B,如果gcd(2B!-1,n)>1,则gcd(2B!-1,n) = p

原理:
已知费马定理2p-1 = 1 mod p
则2p-1-1 =tp,即p|2p-1-1
那么找到2p-1-1就相当于找到p
但是这并没有简化算法,还是在搜索p

p-1是偶数可以分解为素数的乘积p-1 = p1p2p3…pk
则只要整数B>=pk,就有p-1|B!
2B! = 1 mod p,即p|2B!-1
那么gcd(2B!-1,n)=1或者p
即找到B就相当于找到了p

如果直接寻找p,需要先在(1,n1/2)找出素数,再判断该素数是不是n的因子p,而如果寻找B则不需要要求B是素数,直接判断gcd(2B!-1,n)即可,因此可以提高效率。存疑

Pollard Rho algorithm

x1=1, x2=x12+1 mod n
if gcd(x1-x2,n)>1
   p=gcd(x1-x2,n)
else loop
   x1=x12+1 mod n, x2=(x12+1)2+1 mod n
   if gcd(x1-x2,n)>1
      p=gcd(x1-x2,n)
      break
   if p==n
      failure

原理

Dixon random square algorithm

找到两个大数X,Y,如果X2=Y2 mod n,且1<gcd(x1-x2,n)<p,则p=gcd(x1-x2,n)

原理:
If x2=y2(mod n), then n | (x-y)(x+y)
• gcd(x-y,n) has a nontrivial factor of n

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值