RSA加密算法:原理、安全性与攻击防范
1. 素性测试
在RSA加密系统中,Bob设置密钥时需要找到两个素数。最直接的找素数方法是选取一个数,然后尝试找出它的因数,但分解因数是一个难题。若Eve能分解出模数n,就能获取Bob的秘密信息p和q,进而找到解密指数d,读取所有使用该密钥发送给Bob的消息。
历史上,素性测试方法虽早有提出,但大多被认为不实用,原因包括速度慢、仅适用于特殊情况或有时给出错误答案。高斯曾将素性测试问题与分解因数问题区分开来,但他所描述的方法也存在一定局限性。
1.1 概率素性测试的诞生
1974年,Robert Solovay和Volker Strassen提出了概率素性测试的概念。这种测试在过程中进行随机选择,能快速运行,但有输出错误答案的可能性。
1.2 基于费马小定理的概率测试
费马小定理可作为“合数测试”,能确定一个数不是素数。例如,对于15,若它是素数,根据费马小定理,对于1到14之间的任意数k,k¹⁴ ≡ 1 (mod 15)。当k = 2时,2¹⁴ ≡ 4 (mod 15),这表明15是合数,2就是15为合数的一个“见证数”。但并非所有尝试的数都能如此有效,如k = 4时,4¹⁴ ≡ 1 (mod 15),此时4是费马测试的“说谎数”。
在测试一个数n时,我们会在1到n - 1之间选取多个不同的k值。只要有一个k是见证数,就知道n是合数;若都不是,则说n可能是素数。检查的k值越多,n是素数的可能性就越大,但除非检查大量的k值,否则无法确定n是素数,而且检查过多k值会使测试速度变慢。不过,对于密码学家来说,这种不确定性是可以接受的。
以下是
超级会员免费看
订阅专栏 解锁全文
4803

被折叠的 条评论
为什么被折叠?



