切换深浅主题
第 7 章:RSA的指数选择与解密正确性
7.1 公钥、私钥和模数各自做什么
取两个不同的奇质数,令
。消息
用模
的一个剩余类表示。公钥是
,加密把
变为
;私钥指数
用于计算
。
要让解密回到,需要安排
与
同余。做法是选择
满足
于是存在非负整数使
。两个指数相乘后的“多余部分”是欧拉指数的倍数,这是它与欧拉定理连接的地方。
7.2 这些指数为什么一定可以选出来
先计算,再选择与它互质的正整数
。由第1章的逆元条件,
模
有逆元
,可以用扩展欧几里得算法算出,并取一个正整数代表。
因此并非任意设定后再假定它们满足关系;先选择互质的
,逆元定理保证
存在。这里逆元的模数是
,加密时的模数是
,两者用途不同。
对于与互质的消息,欧拉定理直接给出
但这只处理了互质消息。若消息含有或
这个因子,不能继续套用模
的欧拉定理;需要下面的逐质数证明。
7.3 不互质的消息为什么也能还原
先对证明
,分成两个互补的情况。
若,因为
,
和
模
都为0。若
,可以用费马小定理
。而
整除
,故也整除
,于是
无论是否整除消息,模
的结论都成立。对
完全同理,得到
。CRT再把两个结论合起来,得到
。
这份证明没有假设消息与互质。它利用的是:在每个质数坐标上,消息要么为0,要么可用费马小定理;两种情况覆盖了全部消息。
7.4 这与分解有什么关系
若能分解得到
,就能计算
,再由公开的
计算逆元
,从而解密。这证明了
还可以追问:已知,能不能反过来分解
?答案是可以使用随机算法;下一章从
出发说明为什么。这里的计算关系不直接证明完整签名方案安全;RSA反演与签名伪造的区别在第13章继续说明。
这里讨论RSA的数学幂运算。实际RSA参数可采用更弱的条件,其中
;它仍足以完成上面的逐质数证明。统一指数与具体规范的关系放在第17章。标准依据见RFC 8017第3.2节。