RSA公钥系统(二)

\(\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}\) 的安全性是基于假设——“这种无人知道的算法根本就是不存在的”.
而在这样的假设下,破解 \(\mathrm{RSA}\) 的办法就只能是求出 \(p\)\(q\),也就是求出 \(N\) 的素因子分解。

评注 4

\(\mathrm{RSA}\) 密码系统起作用的根本原因是解同余式 \(x^e \equiv c(\bmod N)\) 对于知道某些额外信息的人来说是容易的,但对所有其他人来说显然是困难的。这也就是公钥密码设计中“陷门”(精巧的机关)的含义。根据这种思想,我们可以利用各种各样的陷门来构造密码系统。

posted @ 2024-12-04 22:58  沙棘数学社  阅读(89)  评论(0)    收藏  举报