RSA原理

RSA的历史

RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中被广泛使用。RSA是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。来自RSA算法发表时的论文。

RSA计算过程

1、 N = P * Q (P和Q都是质数)
2、欧拉函数
    φ(N) = φ(P) * φ(Q) = (P-1) * (Q-1)
3、1< e <φ(N), 且e与φ(N)互质
4、(e * d) / φ(N) = K0…1
    d = (K0 * φ(N) + 1) / e

Bob 依照 步骤产生 N,e,d
     将 N,e发送给alice
     alice欲传送M给Bob
     M^e / N = K_1 … C
     C^d / N = K_2 … M
RSA原理_第1张图片

RSA计算实例

1、N = 5 * 11 = 55
2、φ(N) = (5-1) * (11-1) = 40
3、1 < e < 40 且e与φ(N) 互质 ,e = 7
4、 (e*d) / φ(N) = K_0 … 1
     d = (K_0 * 40 + 1) / 7
     K_0 = 4 ,d= 23

     Alice欲传送2给Bob
      2^7 / 55 = 2… 18
     18^23 / 55 = 74347713614021927913318776830 … 2

RSA时间复杂度

攻击者要破解C得到M,必须要知道d,攻击者只能拿到N、e、C
-> 要知道d,必须要知道φ(N)
-> 要知道φ(N),必须要知道P、Q
-> 要知道P、Q,必须要知道质因数分解N
-> 而质因数分解是NP问题(时间复杂度不是多项式时间,是指数时间复杂度)

RSA证明过程

欧拉定理
如果任何两个数MN互质,那么
M^φ(N) - 1 = N的倍数
M^φ(N) = N的倍数+1

M^e = N的倍数 + C
C = M^e + (-N)的倍数
C = M^e + N的倍数
C^d = (M^e + N的倍数)^d
      = M^{ed} + N的倍数^d
      = M^{kφ(N) + 1} + N的倍数^d
      = M * M^{kφ(N)} + N的倍数^d
      = M * M^{φ(N)K} + N的倍数^d
      = M *(1 + N的倍数)^{k} + N的倍数^d
      = M + N的倍数

你可能感兴趣的:(密码学,密码,算法)