RSA算法原理概况

必要数论知识

Theorem: Every positive integer factors as a product of primes.
Definition: a is congruent to b modulo n, denoted a ≡ b mod n, if n | b-a.(|: 整除)(a % n = b % n)
Definition: A number b is an inverse to a number a modulo n if ab ≡ 1 mod n.
Proposition: An inverse for a mod n exists if and only if (a,n) = 1 (a and n are relatively prime).((a, n) = gcd(a, n))
Theorem: (Fermat’s Little Theorem) If p is prime and 0 < a < p, then a^(p-1) ≡ 1 mod p.

Euler’s Phi Function

Definition: φ(n) is the number of positive integers between 1 and n which are relatively prime to n.
(more general version of Fermat’s Little Theorem): For any positive integer n, if (a,n) = 1 then a^(φ(n)) ≡ 1 mod n.
在这里插入图片描述
Proposition: φ(nm) = φ(n)φ(m) if n and m are relatively prime.

Unfortunately, finding prime factorizations quickly is very hard. Unless we know the factorization of a large n ahead of time (large as in hundreds-of-digits long), computing φ(n) is effectively impossible.

RSA加解密过程

在这里插入图片描述

  1. 选择两个质数p, q。
  2. n = p*q.
  3. φ(n) = φ(pq) = φ§φ(q) = (p-1)(q-1)。(欧拉定理)
  4. 1 < e < φ(n), (e, φ(n)) = 1。
  5. ed ≡ 1(mod φ(n))。(逆元定理)
  6. 利用扩展欧几里得算法,求出d。
  7. 加密(公钥是n,e):m^e ≡ c (mod n)。利用扩展欧几里得算法求出c,m是明文,c是密文。
  8. 解密(私钥是n,d)c^d ≡ m (mod n)。利用扩展欧几里得算法求出m,完成解密。
    在RSA加解密过程中出现的变量p,q,n,φ(n),e,d。只有n,e是公开的,要想计算出d去解密,就要计算出φ(n),而计算φ(n)就要找到p,q,最终把问题归结到大数分解问题了。超大质数不易分解导致了很难攻击破解RSA的私钥d。

问题

如果对n进行质数分解,并且已经知道n就是某两个质数之积,这难吗?如果已经有了质数表,在小于n的质数表里找到两个质数之积是n,有难度吗?还有,既然难分解,那就逆向考虑,把质数表里任意两个质数相乘,做成质数之积和两质数的映射表,这样只要知道n就直接求出对应的p和q了,进而求出了d,就破解了RSA了啊。但是,如果n比较大的话,现有计算机的计算能力是不行的。

参考资料

[1] 数论入门:https://jeremykun.com/2011/07/30/number-theory-a-primer/
[2] http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
[3] https://jeremykun.com/2011/07/29/encryption-rsa/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值