RSA加密数学原理

RSA加密数学原理

RSA加密数学原理

1 引言

RSA加密算法,即是目前最有影响力的咬钥加密算法, 他能够抵抗到目前为止已知的绝大多数密码攻击, 已被ISO推荐为公钥数据加密标准. 该算法基于一个十分简单的数论事实: 将两个大素数乘十分容易, 但相要对乘积进行因式分解却极其困难, 因此可以将乘积公开作为加密密钥. (选自: 百度百科)

2 RSA加密解密过程

2.1 加密

首先给出下面的公式: $$C=M^e \mod n$$ 上式中M为需要加密的信息, \(n=pq\), p和q分别为100~200位的大素数, e与$(p-1)(q-1)$互为素数. 实际应用中, Bob将公用密钥(e, n)发送给Alice, 然后Alice利用该公用密钥根据 \(C=M^{e} \mod n\) 进行加密, 然后将C发送给Bob

2.2 解密

Bob收到了Alice发送过来的C后, 接着就需要利用自己手上的私有密钥对加密信息C进行解密了, 他手上的私有密码是什么呢? 即d为e模(p-1)(q-1)的逆, 用算式表示为\(de \equiv 1\pmod {(p-1)(q-1)}\). 用私有密钥具体处理过程如下:

  • \(C^{e}\pmod n = M^{ed}\pmod n\)
  • 由于$de ≡ 1\pmod {(p-1)(q-1)}$得\(de=1+k(p-1)(q-1)\)
  • 从费马小定理, 以及M与(p和q)互质成立的事件为大概率事件 – 因为RSA一般用于短信息加密, 当加密的信息庞大的时候, 速度会明显变慢, 同时p和q均是大素数 – 两个条件推得:
$$M^{v-1} \equiv 1\pmod v \quad v \in (p, q)$$

费马小定理:如果p为素数, a是不能被p整除的整数, 则 \(a^{p-1} \equiv 1\pmod p\)

  • 于是:
$$C^{d} = M\bullet(M^{p-1})^{k(q-1)} \equiv M \bullet1 \equiv M\pmod p$$ $$C^{d} = M\bullet(M^{q-1})^{k(p-1)} \equiv M \bullet1 \equiv M\pmod q$$
  • 由中国剩余定理得:
$$C^{d} \equiv M\pmod {pq}$$

中国剩余定理: 令m1, m2, …, mn为两两互素的正整数, 则预余方程组 $$x\equiv a_{1}\pmod m_{1}$$ $$x\equiv a_{2}\pmod m_{2}$$ $$\quad \vdots \quad$$ $$x\equiv a_{n}\pmod m_{n}$$ 即有一个解x, 使\(0 \le x \le m\), 且所有其他的解均与此解模m同余. \(m=m_{1}m_{2}\dotsi m_{n}\)

3 收尾

由于当解密密钥和加密密钥相同的时候, RSA算法比其他的对称加密算法而言需要更多的计算时间, RSA通常不被用来完整信息的加密.

Date: 2014-04-11 Fri

Author: Zhong Xiewei

Org version 7.8.11 with Emacs version 24

Validate XHTML 1.0
posted @ 2014-04-11 13:07  grassofsky  阅读(605)  评论(0编辑  收藏  举报