千家信息网

RSA算法及其数学原理 证明

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA的算法涉及三个参数,n、e1、e2。 其中,n是两个大质数p、q的积,n的二进制
千家信息网最后更新 2025年01月20日RSA算法及其数学原理 证明RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA的算法涉及三个参数,n、e1、e2。 其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。 e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。 (n,e1),(n,e2)就是密钥对。其中 (n,e1)为公钥,(n,e2)为私钥。 RSA加解密的算法完全相同,设A为明文,B为密文,则:BA^e2 mod n;A=B^e1 mod n; e1和e2可以互换使用,即:BA^e1 mod n;A=B^e2 mod n; "":同余符号  含义:两个整数a,b,若它们除以整数m所得的余数相等,则称a,b对于模m同余 记作 a ≡ b (mod m) 读作a同余于b模m,或读作a与b关于模m同余 比如 26 ≡ 14 (mod 12) 同余性质定理: 1 反身性 a ≡ a (mod m) 2 对称性 若a ≡ b(mod m) 则b ≡ a (mod m) 3 传递性 若a ≡ b (mod m),b ≡ c (mod m),则a ≡ c (mod m) 4 同余式相加若a ≡ b (mod m),c≡d(mod m),则a+-c≡b+-d(mod m) 5 同余式相乘 若a ≡ b (mod m),c≡d(mod m),则ac≡bd(mod m) 6 乘方如果a ≡ b (mod m),那么a^n ≡ b^n (mod m) 7 欧拉定理 设a,m∈N,(a,m)=1,则a^(φ(m))≡1(mod m) (注:φ(m)指模m的简系个数, φ(m)=m-1, 如果m是素数;φ(m=q1^r1 * q2^r2 * ...*qi^ri)=m (1-1/q1)(1-1/q2)...(1-1/qi)) 推论: 费马小定理: 若p为质数,则a^p ≡ a (mod p) 即a^(p-1) ≡ 1 (mod p) (但是当p|a时不等价) RSA证明过程:

<前提>

若 p, q 是相异质数, rm == 1 mod (p-1)(q-1),
a 是任意一个正整数, b == a^m mod pq, c == b^r mod pq

gcd(m,pq)=1
<结论>

c == a mod pq

<使用定理>

证明的过程, 会用到费马小定理, 叙述如下:
m 是任一质数, n 是任一整数, 则 n^m == n mod m
(换另一句话说, 如果 n 和 m 互质, 则 n^(m-1) == 1 mod m)

<证明>
因为 rm == 1 mod (p-1)(q-1), 所以 rm = k(p-1)(q-1) + 1, 其中 k 是整数
因为在 modulo 中是 preserve 乘法的
(x == y mod z and u == v mod z => xu == yv mod z),
所以, c == b^r == (a^m)^r == a^(rm) == a^(k(p-1)(q-1)+1) mod pq

1. 如果 a 不是 p 的倍数, 也不是 q 的倍数时,
则 a^(p-1) == 1 mod p (费马小定理) => a^(k(p-1)(q-1)) == 1 mod p
a^(q-1) == 1 mod q (费马小定理) => a^(k(p-1)(q-1)) == 1 mod q
所以 p, q 均能整除 a^(k(p-1)(q-1)) - 1 => pq | a^(k(p-1)(q-1)) - 1
即 a^(k(p-1)(q-1)) == 1 mod pq
=> c == a^(k(p-1)(q-1)+1) == a mod pq

2. 如果 a 是 p 的倍数, 但不是 q 的倍数时,
则 a^(q-1) == 1 mod q (费马小定理)
=> a^(k(p-1)(q-1)) == 1 mod q
=> c == a^(k(p-1)(q-1)+1) == a mod q
=> q | c - a
因 p | a
=> c == a^(k(p-1)(q-1)+1) == 0 mod p
=> p | c - a
所以, pq | c - a => c == a mod pq

3. 如果 a 是 q 的倍数, 但不是 p 的倍数时, 证明同上

4. 如果 a 同时是 p 和 q 的倍数时,
则 pq | a
=> c == a^(k(p-1)(q-1)+1) == 0 mod pq
=> pq | c - a
=> c == a mod pq


这个定理说明 a 经过编码为 b 再经过解码为 c 时, a == c mod n (n = pq)....
但我们在做编码解码时, 限制 0 <= a < n, 0 <= c < n,
所以这就是说 a 等於 c, 所以这个过程确实能做到编码解码的功能.....

0