请阐述 RSA 算法的核心原理,并说明其密钥对是如何生成的?
考察说明
考察对 RSA 非对称加密原理及密钥生成流程的理解。
回答思路
- 【回答框架 1】RSA 是一种基于大整数因子分解难题的非对称加密算法,其安全性依赖于大整数分解的困难性。它使用一对密钥:公钥用于加密和验签,私钥用于解密和签名,二者在数学上相关但由公钥推导私钥在计算上不可行。
- 【回答框架 2】密钥生成流程:首先随机选择两个大素数 p 和 q,计算 n = p * q,n 作为模数,其二进制长度即为密钥长度。然后计算欧拉函数 φ(n) = (p-1)(q-1)。选择一个整数 e,满足 1 < e < φ(n) 且 gcd(e, φ(n)) = 1,通常 e 取 65537。最后计算 d 作为 e 关于 φ(n) 的模反元素,即 e * d ≡ 1 (mod φ(n))。公钥为 (e, n),私钥为 (d, n)。
- 【回答框架 3】加密和解密过程:加密时,对明文 m 计算 c = m^e mod n;解密时,对密文 c 计算 m = c^d mod n。由于 e 和 d 的数学关系,解密可以正确恢复明文。实际应用中,为了性能和安全性,通常会使用填充方案(如 OAEP)并对明文进行预处理。
- 【回答框架 4】安全性方面,RSA 的安全性基于大整数因子分解的困难性,目前 2048 位及以上的密钥被认为是安全的。但是,如果 p 和 q 选择不当或随机数生成器存在弱点,可能导致密钥被破解。实际应用中,密钥长度、素数生成和随机源都是关键因素。
- 【关键点 1】RSA 的安全性基于大整数因子分解困难性。
- 【关键点 2】密钥生成核心步骤:选素数、计算 n 和 φ(n)、选 e、求 d。
- 【关键点 3】公钥 (e, n) 可公开,私钥 (d, n) 必须保密。
- 【关键点 4】实际使用需配合填充方案(如 OAEP)防止攻击。
- 【关键点 5】密钥长度通常至少 2048 位以保证安全。
- 【易错点 1】不能将 RSA 的数学原理直接等同于实际系统的安全性,实际还依赖填充和随机数质量。
- 【易错点 2】生成密钥时若 p 和 q 相差过近或随机数可预测,会导致被分解的风险。
- 【易错点 3】密钥对生成后,e 和 d 的关系不能简单地理解为对称,公钥加密和私钥解密只是其中一种用途。