RSA 加密算法原理学习笔记-1
RSA 加密算法
RSA 加密算法是一种非对称加密算法,加密和解密的密钥是不同的。
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密
密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长 RSA 密钥是 768 个二进制位。也就是说,长度超过 768 位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024 位的 RSA 密钥基本安全,2048 位的密钥极其安全。
基础数论知识
同余定理
给定一个正整数,如果两个整数 a 和 b 满足 a - b 能够被 m 整除,即 (a-b)/m 得到一个整数,那么就称整数 a 与 b 对模 m 同余,记作 \(a \equiv b \pmod m\)。对模 m 同余是整数的一个等价关系。
- 即 \(a \div m = k \cdots b\) ,换句话说,就是 a 除以 m 余 b。
- 即 \((a - b) \div m = k,\)可以改写成:\(b = a - km\)
- 根据定义,这个恒等式的变换可以看成:\(a \equiv b \pmod m\),b 左移:\(a - b = km\)
- 掌握好这几个小结论,后续论证中会使用到。
互质关系
两个正整数只有 1 这个公因子,那么这两个数有互质关系。
- 别忘了,两个相等的数是不互质的,公因数除 1 外还有本身。所以互质的两个数肯定是不等的,定义里已经排除了这种可能性。
- 两个不等的质数一定互质(下面的第 2 点),因为他们的因数都只有 1 和本身,所以相同的因数只有 1。反过来不成立。
- 一些结论:
- 1 和任意一个自然数是都是互质关系,比如 1 和 99。
- 任意两个质数构成互质关系,比如 13 和 61。
- 一个数是质数,另一个数只要不是前者的倍数或者小于前者,两者就构成互质关系,比如 3 和 10、17 和 4。
- p 是大于 1 的整数,则 p 和 p-1 构成互质关系,比如 57 和 56。
- p 是大于 1 的奇数,则 p 和 p-2 构成互质关系,比如 17 和 15。
- 质数:2,3,5,7,11,13,17,19,23,29,31,37...
欧拉函数
计算小于等于 n 的所有正整数中,与 n 有互质关系的所有正整数个数。这种算法称为欧拉函数,以 φ(n)
表示。
这个函数可以根据互质关系的相关结论计算(以下 =
为等于,不是代码中的赋值):
-
n = 1
:φ(1) = 1
。 -
n
为质数:φ(n) = n-1
。因为小于n
的数都与n
互质。 -
n
为某质数某次方,n = p^k
(p
为质数,k
为大于等于1的整数):
那么,$$\phi(n) = \phi(p^k) = p^k - p^{k-1}$$- 比如
n = 8
,\(φ(8) = φ(2^3) = 2^3 - 2^2 = 8 - 4 = 4\)。 - 这是因为只有当一个数不包含因数 p,才与
n
互质。包含因数 p 的数有:\(1×p、2×p、3×p、...p^{k-1}×p\) 共 \(p^{k-1}\) 个。 - 可以看出上面第 2 种情况是
k = 1
时的特例。 - 公式也可以写成:$$\phi(n) = \phi(p^k) = p^k - p^{k-1} = p^k(1-\frac1p)$$
- 比如
-
n
可以分解成两个互质的整数之积,n = p × q
:
- 即:积的欧拉函数等于各个因子的欧拉函数之积
- 比如,\(φ(56) = φ(8×7) = φ(8)×φ(7) = 4×6 = 24\)。
- 证明需要使用“中国剩余定理”。
- 最终通用推算:
算术基本定理:任意一个大于 1 的正整数,都可以写成一系列质数的积:\(n = p^{k_1}_1p^{k_2}_2 \ldots p^{k_r}_r\)(它将把对自然数的研究转化为对其最基本的元素——质数/素数的研究)。
因此根据第 4 种情况的结论(可拆),得到任意一个大于 1 的正整数的欧拉函数:\(\phi(n) = \phi(p^{k_1}_1)\phi(p^{k_2}_2)\ldots\phi(p^{k_r}_r)\);
再根据第 3 种情况的结论(原数是质数多次方),可改写为:\(\phi(n) = p^{k_1}_1p^{k_2}_2...p^{k_r}_r(1-\frac1p_1)(1-\frac1p_2)\ldots(1-\frac1p_r)\);
也就是:
这便是欧拉函数的通用计算公式。
欧拉定理
欧拉函数的应用在于欧拉定理。
欧拉定理:如果两个正整数 a 和 n 互质,则 n 的欧拉函数
φ(n)
可以让下面的等式成立:\[a^{\phi(n)} \equiv 1 \pmod n \]
- 即:
a
的φ(n)
次方除以n
的余数恒等于1
。 - 或者说:
a
的φ(n)
次方减1
可以被n
整除。
比如 4 和 5:
4 的欧拉函数结果为 2,满足 \(5^2 \div 4 = 6 \cdots 1\)。也就是 \((5^2 -1 )\) 可以被 4 整除。
- 一个小例子,7 和 10 为互质关系,因为
φ(10) = 4
,所以 \(7^4 \div 10\) 最终余 1,也就是说其个位数为 1。
那么,7 的任意 4 倍数次方个位数肯定是 1,即:\(7^{4k} \equiv 1 \pmod {10}\)(因为个位数为 1 的任意个这种数相乘个位数肯定还是 1 啊)。- 计算
φ(10)
:拆为φ(2)φ(5)
;2
、5
都是质数,所以它们的欧拉函数结果是 2 - 1、5 - 1,即φ(2) = 1
、φ(5) = 4
。最终得到φ(10) = 4
。
- 计算
欧拉定理有一个特殊的情况,假设正整数 a 与质数 p 为互质关系,因为 φ(p) = p - 1
,那么:
这就是费马小定理,是欧拉定理中一个数为质数的特例。
模反元素(模逆元)
如果两个正整数 a 和 n 互质,那么一定可以找到整数 b ,使得 ab-1 被 n 整除,或者说 ab 被 n 除的余数是 1,那么:
\[ab \equiv 1 \pmod n \]
称 b 为 a 的模反元素(称模反元素时,还需要另一个数 n 作为环境)。
- 可以根据欧拉定理进行验证模反元素存在的必然性:
\(\because\) a 和 n 互质满足欧拉定理
\(\therefore\) 根据欧拉定理得:\(a^{\phi(n)} \equiv 1 \pmod n\)
即 \(a \times a^{\phi(n-1)} \equiv 1 \pmod n\)
\(\therefore\) 设 \(b = a^{\phi(n-1)}\),那么 b 就是 a 的一个模反元素
比如,4 和 7 互质,利用欧拉定理求:\(φ(4) = φ(2^2) = 2^2 - 2^1 = 2\),所以 \(7^2 = 1 \pmod 4\),因为不能再取 b为 7,所以就换另一边计算。
\(φ(7) = 7 - 1 = 6\),所以 \(4^6 = 1 \pmod 7\),得到 \(4 \times 4^5 = 1 \pmod 7\),可以获得 45 是 4 的一个模反元素。
显然模反元素不止一个。45加减任意个 7 均是 4 的模反元素,既满足 b + kn 即可(b 是45,n 是 7)。
- 所以计算模反元素时可以使用方程式: \(ab - 1 = kφ(n)\)。