Rabin 公钥加密系统的解密过程与平方根问题
题目描述:
Rabin 公钥加密系统是一种基于模数分解困难性的非对称加密算法,其安全性等价于大整数分解的难度。给定一个 Rabin 公钥加密系统的实例:
- 公钥为合数 \(n = p \times q\)(其中 \(p\) 和 \(q\) 是大素数,且 \(p \equiv q \equiv 3 \pmod{4}\));
- 私钥为 \((p, q)\);
- 明文 \(m\) 满足 \(0 \leq m < n\);
- 密文 \(c \equiv m^2 \pmod{n}\)。
若已知密文 \(c = 23\) 和公钥 \(n = 77\),请演示如何通过私钥解密密文,恢复明文 \(m\)。要求详细说明解密过程中涉及的数学原理(如中国剩余定理和模平方根计算),并处理解密结果的多解性问题。
解题过程:
-
问题分析
Rabin 加密的核心是加密函数 \(c = m^2 \mod n\),解密则需要解决模 \(n\) 下的平方根问题。由于 \(n\) 是合数,直接求平方根困难,但利用私钥 \((p, q)\) 可将问题分解为模 \(p\) 和模 \(q\) 的子问题。 -
密钥生成验证
给定 \(n = 77\),需验证 \(p\) 和 \(q\) 满足 \(p \equiv q \equiv 3 \pmod{4}\):- 分解 \(n = 7 \times 11\),检查 \(7 \mod 4 = 3\),\(11 \mod 4 = 3\),符合要求。
- 私钥为 \(p = 7\),\(q = 11\)。
-
分解为模 \(p\) 和模 \(q\) 的子问题
解密需解方程 \(m^2 \equiv 23 \pmod{77}\)。利用中国剩余定理(CRT),转化为方程组:
\[ \begin{cases} m^2 \equiv 23 \pmod{7}, \\ m^2 \equiv 23 \pmod{11}. \end{cases} \]
计算模数下的简化:
- \(23 \mod 7 = 2\),故方程1为 \(m^2 \equiv 2 \pmod{7}\);
- \(23 \mod 11 = 1\),故方程2为 \(m^2 \equiv 1 \pmod{11}\)。
-
求解模 \(p\) 和模 \(q\) 的平方根
- 模 \(p = 7\) 的平方根:
解 \(m^2 \equiv 2 \pmod{7}\)。由于 \(p \equiv 3 \pmod{4}\),平方根公式为 \(m \equiv \pm c^{(p+1)/4} \pmod{p}\)。
计算 \(c^{(p+1)/4} = 2^{(7+1)/4} = 2^2 = 4\)。
解得 \(m \equiv \pm 4 \pmod{7}\),即 \(m \equiv 4\) 或 \(m \equiv 3 \pmod{7}\)(因为 \(-4 \equiv 3 \mod 7\))。 - 模 \(q = 11\) 的平方根:
解 \(m^2 \equiv 1 \pmod{11}\)。公式 \(c^{(q+1)/4} = 1^{(11+1)/4} = 1^3 = 1\)。
解得 \(m \equiv \pm 1 \pmod{11}\),即 \(m \equiv 1\) 或 \(m \equiv 10 \pmod{11}\)。
- 模 \(p = 7\) 的平方根:
-
组合解 via 中国剩余定理
方程组共有 \(2 \times 2 = 4\) 种组合:- 组合1:\(m \equiv 4 \pmod{7}\) 且 \(m \equiv 1 \pmod{11}\)。
设 \(m = 7k + 4\),代入第二式: \(7k + 4 \equiv 1 \pmod{11} \Rightarrow 7k \equiv -3 \equiv 8 \pmod{11}\)。
求 \(7^{-1} \mod 11\):因 \(7 \times 8 = 56 \equiv 1 \pmod{11}\),逆元为 8。
故 \(k \equiv 8 \times 8 = 64 \equiv 9 \pmod{11}\),得 \(k = 9\),\(m = 7 \times 9 + 4 = 67\)。 - 组合2:\(m \equiv 4 \pmod{7}\) 且 \(m \equiv 10 \pmod{11}\)。
\(7k + 4 \equiv 10 \pmod{11} \Rightarrow 7k \equiv 6 \pmod{11} \Rightarrow k \equiv 8 \times 6 = 48 \equiv 4 \pmod{11}\)。
得 \(k = 4\),\(m = 7 \times 4 + 4 = 32\)。 - 组合3:\(m \equiv 3 \pmod{7}\) 且 \(m \equiv 1 \pmod{11}\)。
\(7k + 3 \equiv 1 \pmod{11} \Rightarrow 7k \equiv -2 \equiv 9 \pmod{11} \Rightarrow k \equiv 8 \times 9 = 72 \equiv 6 \pmod{11}\)。
得 \(k = 6\),\(m = 7 \times 6 + 3 = 45\)。 - 组合4:\(m \equiv 3 \pmod{7}\) 且 \(m \equiv 10 \pmod{11}\)。
\(7k + 3 \equiv 10 \pmod{11} \Rightarrow 7k \equiv 7 \pmod{11} \Rightarrow k \equiv 8 \times 7 = 56 \equiv 1 \pmod{11}\)。
得 \(k = 1\),\(m = 7 \times 1 + 3 = 10\)。
最终得到四个解:\(m \in \{10, 32, 45, 67\}\)。
- 组合1:\(m \equiv 4 \pmod{7}\) 且 \(m \equiv 1 \pmod{11}\)。
-
多解性处理
Rabin 解密的四个解对应同一密文,需通过明文冗余(如添加特定填充)或上下文识别唯一有效解。本例中,若明文是数字文本,可能需额外验证其有效性(如是否在字符集范围内)。
总结:
Rabin 解密通过 CRT 将模 \(n\) 的平方根问题分解为模 \(p\) 和模 \(q\) 的子问题,利用模数形式 \(p \equiv 3 \pmod{4}\) 简化计算,但需处理多解性。本例中密文 \(c=23\) 对应明文可能为 \(10, 32, 45, 67\)。