\(\mathrm{RSA}\) 公钥系统(二)
\(\mathrm{RSA}\) 密钥生成、加密和解密
步骤 | Bob | Alice |
---|---|---|
密钥生成 | 选择私密的质数 $ p $ 和 $ q $ 选择加密指数 $ e $ 使得 $ \text{gcd}(e, (p-1)(q-1)) = 1 $ 公布 $ N = pq $ 和 $ e $ |
\(~\) |
加密 | \(~\) | 选择明文 $ m $ 使用 Bob 的公钥 $ (N, e) $ 计算密文 $ c \equiv m^e \ (\text{mod} \ N) $ 将密文 $ c $ 发送给 Bob |
解密 | 计算 $ d $ 使得 $ ed \equiv 1 \ (\text{mod} \ (p-1)(q-1)) $ 计算 $ m^* \equiv c^d \ (\text{mod} \ N) $ 然后 $ m^* $ 就是明文 $ m $ |
\(~\) |
评述 1 (关于 \(e\) 和 \(d\) 的选择)
\[ed \equiv 1 \ (\text{mod} \ (p-1)(q-1))\tag{1} \]很明显,如果加密指数 $ e $ 较小,则加密过程可以更高效地进行;同样,如果解密指数 $ d $ 较小,则解密过程更高效。当然,Bob 无法同时选择这两个值都很小,因为一旦选择了其中一个值,另一个值就会被同余式 \((1)\) 确定。(严格来说,这并不完全正确,因为如果 Bob 选择 $ e = 1 $,那么 $ d $ 也会是 \(1\),导致 $ e $ 和 $ d $ 都很小。但在这种情况下,明文和密文将是相同的,因此选择 $ e = 1 $ 是一个非常糟糕的选择!)
请注意,Bob 不能选择 $ e = 2 $,因为他需要 $ e $ 与 $ (p-1)(q-1) $ 互质。因此,最小的 $ e $ 值是 $ e = 3 $。根据现有的研究,没有依据表明选择较大的 $ e $ 值的选取比选取 $ e = 3 $ 更安全,尽管在某些文献中提出了一些疑虑。那些希望实现快速加密,但又担心 $ e = 3 $ 太小的人,通常选择 $ e = 2^{16} + 1 = 65537 $,因为通过 \(\text{Square-and-multiply algorithm}\) 算法计算 $ m^{65537} $ 只需要四次平方和一次乘法。
另一种选择是让 Bob 使用较小的 $ d $ 值,并利用同余式 \((1)\) 确定 $ e $,这样 $ e $ 将会较大。然而,事实证明,这可能导致一个不安全的 RSA 版本。更准确地说,如果 $ d $ 小于 $ N^{1/4} $,那么连分数理论就可以让 Eve 破解 \(\mathrm{RSA}\).
评述 2 (给定 \(N=pq\) 寻找 \((p-1)(q-1)\) 的值和 求出 \(p\) 和 \(q\) 一样困难)
Bob 的公钥包含数值 $ N = pq $,其中 $ p $ 和 $ q $ 是两个秘密的素数。如果 Eve 知道 $ (p-1)(q-1) $ 的值,她就能通过模逆运算求出 \(d\) 进而解出同余式 $ x^e \equiv c \ (\text{mod} \ N) $,从而能够解密发送给 Bob 的消息。
展开 $ (p-1)(q-1) $,得到
\[(p-1)(q-1) = pq - p - q + 1 = N - (p + q) + 1. \tag{2} \]Bob 已经发布了 $ N $ 的值,因此 Eve 已经知道 $ N $。所以,如果 Eve 能够确定 $ p + q $ 的值,那么式 \((2)\) 就能给她提供 $ (p-1)(q-1) $ 的值,这使得她能够解密消息。
实际上,如果 Eve 知道 $ p + q $ 和 $ pq $ 的值,那么她就可以很容易地计算出 $ p $ 和 $ q $ 的值。她只需要使用二次方程求解公式即可。因此,一旦 Bob 发布了 $ N = pq $ 的值,对于 Eve 来说,找到 $ (p-1)(q-1) $ 的值、找到 \(p+q\) 的值和找到 $ p $ 和 $ q $ 的值三者本质上没有区别,都是一样困难的。
评注 3
最后一个非常重要的观察是,我们已经展示了 Eve 确定 $ (p - 1)(q - 1) $ 的难度与她因式分解 $ N $ 的难度相当。然而,这并不意味着 Eve 必须因式分解 $ N $ 才能解密 Bob 的消息。关键点在于,Eve 需要做的实际上是求解形如 $ x^e \equiv c \ (\text{mod} \ N) $ 的同余式,而有可能存在某种高效的算法来解这些同余式,而不需要知道 $ (p - 1)(q - 1) $ 的值。至今没人知道是否存在这样的算法。换句话说,\(\mathrm{RSA}\) 的安全性是基于假设——“这种无人知道的算法根本就是不存在的”.
标签:公钥,text,系统,RSA,Eve,Bob,mod,equiv From: https://www.cnblogs.com/Pizixsir-Math/p/18586853