切换深浅主题
第 12 章:重试、运行时间与RSA结论的范围
12.1 失败以后重试为什么有效
每次失败后重新独立、均匀选择底数,就得到新的一次尝试。若每次失败概率至多,独立重复
次都失败的概率至多
“独立重复”不能省略。若一直重复同一个失败底数,后续计算完全一样,重复次数增加不会改善成功率。重新抽样让前一次的失败不改变下一次的分布。
算法输出的因子始终可以验证,因此随机性影响的是需要尝试多少次,不影响成功输出是否正确。有限次全失败时,可以继续尝试;它不构成错误的分解结果。
12.2 为什么平均至多两次,不等于两次必成功
设单次成功率为,令
为第一次成功时的尝试总次数。第
次恰好第一次成功,需要前
次失败、第
次成功,所以
。
期望表示大量独立运行中尝试次数的平均值。其值为
。这个求和也可以从“第
轮是否需要做”理解:第1轮一定需要做,第2轮只有第一次失败才需要做,第3轮只有前两次都失败才需要做。因此
第一等式的依据是:一个恰做轮的运行,会在
这
个条件中各被计一次。对这些轮次指标取平均,再相加,就是平均总轮数。这解释了为什么能用尾概率计算期望。
期望至多2是平均表现,不是每次最多2轮;做很多轮仍有可能,只是尾概率按几何速度减小。
12.3 为什么是期望多项式时间
每次尝试需要求最大公约数、计算以及最多
次平方。快速幂按照
的二进制展开进行,使用
次模乘法;
,所以一次尝试的运算次数是
量级。
再考虑每个整数运算的位复杂度:中间余数小于,有
位;模乘法与欧几里得算法都有关于这些位长的多项式时间实现。因此单轮耗时是关于
的多项式。期望轮数至多2,所以期望总耗时仍为多项式。
“多项式时间”是按输入的位数衡量,不是按本身衡量。完整位复杂度说明保留在第17章;本节说明成功概率怎样与运行时间接起来。标准结论的依据见《Handbook of Applied Cryptography》第3章Fact 3.30及第8章Fact 8.6。
12.4 恢复私钥与从密文恢复消息为什么要区分
我们证明了两个方向:分解可以恢复
;已知满足条件的私钥指数
,可以随机分解
。因此“恢复私钥指数”与“分解模数”具有这里证明的计算联系。
但给定,直接求出满足
的消息,是另一种已知信息和计算任务,称为RSA反演。能还原一个密文,并不意味着已经得到一个对所有消息适用的私钥指数
。上面的随机分解算法必须从
构造已知的
,不能从“某条消息已还原”自动得到这个输入。
所以这里没有证明“任意解密能力都能用于分解”。即便一种方法确实会解密,也不能把分解算法需要的私钥信息直接当作它已经提供的信息。RSA反演与整数分解之间的这个逻辑区别,也是第二份原对话的起点。第13章把这种区别写成明确的归约关系,并继续区分原始RSA数值对与现代签名方案。
若已知,则另有直接分解方法。由
得到,再利用
,
就是
的两个根:
这是因为和与积共同确定这两个因子。它说明欧拉函数与分解密切相关,同样没有证明一切解密方法都必须先知道欧拉函数。
12.5 怎样回查整条证明
若最后的加权平均已经理解,但仍对概率结论不踏实,可以分开检查三个来源:第9章解释为什么不同步就成功、为什么两边独立;第10章解释每个到达时间概率为什么不超过一半;第11章只把这些结论合起来。
若卡在基础定理,第14章补逆元、唯一分解、容斥与CRT;第15章补原根存在性;第16章补群论中的阶与计数;第17章给精确概率、统一指数与复杂度;第18章保留概念辨析和练习。补充章节按疑问查阅,不要求先把所有抽象结论学完再阅读主线。