Skip to content
Go back

RSA

Edit page

RSA 加密算法

RSA(发明该算法的三个人名首字母)

公钥密码体制的由来

对称加密算法存在的问题:

公钥密码体系要求

应用

RSA 加密过程

  1. 用户选择随机的两个大的素数 p,qp, q
  2. 计算 N=p×qN = p \times q
  3. 计算 NN 的欧拉数,ϕ(N)=(p1)(q1)\phi(N) = (p-1)(q-1)
  4. 随机选择一个加密密钥 ee1eϕ(N),gcd(e,ϕ(N))=11 \le e \le \phi(N), \gcd(e, \phi(N)) = 1
  5. 解一个同余方程,得到解密密钥 dded=1modϕ(N),0dNed = 1 \mod \phi(N), 0 \le d \le N
  6. 加密消息得到密文 CCC=MemodNC = M^e \mod N
  7. 解密消息得到明文 MMM=CdmodNM = C^d \mod N

理论依据

费马定理

pp 是素数, aa 是一个正整数且不能被 pp 整除,则 ap11modpa^{p-1} \equiv 1 \mod p

另一种表达形式是apamodpa^p \equiv a \mod p

Eular 定理以及推论

先定义欧拉函数 ϕ(n)\phi(n) ,指的是小于 nn 且与 nn 互素的正整数的个数,习惯上, ϕ(1)=1\phi(1) = 1 对于 n=pqn = pqϕ(n)=ϕ(p)×ϕ(q)=(p1)(q1)\phi(n) = \phi(p) \times \phi(q) = (p - 1)(q - 1)

欧拉定理 对任意互素的 aann ,有: aϕ(n)1modna^{\phi(n)} \equiv 1 \mod n

欧拉定理的另一种表述aϕ(n)+1amodna^{\phi(n) + 1} \equiv a \mod n

n=pq,pqn = pq, p \neq q,都是素数, kk 是任意整数,则 mk(p1)(q1)+1mmodnm^{k(p-1)(q-1)+1} \equiv m \mod n 对任意 0mn0 \le m \le n 成立

只要选择公钥 ee ,则私钥 dd 满足 ed=kϕ(n)+1ed = k\phi(n) + 1 ,即 ed1modϕ(n)de1modϕ(n)ed \equiv 1 \mod \phi(n) \to d \equiv e^{-1} \mod \phi(n)dd 就是求 ee 的乘法逆元,可以使用扩展的欧几里得算法计算。

公钥: KU={e,n}K_U = \{e, n\} ,私钥: KR={e,n}K_R = \{e, n\}

算法安全性保证

RSA 算法安全性是基于加密函数 ek(x)=xemodne_k(x) = x^e \mod n 是一个单向函数,所以对于攻击人,求逆运算是不可能的。

不可能在于,攻击者需要通过 nn 求解出对应的两个素数 p,qp, q 而当 nn 相当大的时候,这个求解的过程复杂度相当大。

所以可以说,RSA 算法的安全性是基于大整数因式分解的困难性上的。


Edit page
Share this post on:

Previous Post
RC4
Next Post
DES