RSA密钥生成的简单后门
1. 引言
RSA公钥密码系统和数字签名方案如今已进入公共领域,任何人都能将其用于软件产品、智能卡等,以保障信息的机密性和真实性。然而,用户如何判断所使用的RSA实现是否安全呢?比如微软CryptoAPI系统曾出现的“NSA - KEY”事件。软件开发人员和智能卡制造商很容易在RSA密钥生成方案中嵌入后门,而用户却难以察觉,这会使他们能够破坏RSA公钥密码系统和数字签名方案的机密性和真实性。
本文介绍了在RSA密钥生成方案中嵌入后门的极其简单的方法。其中三种方案会生成两个指定大小的真正随机素数p和q,得到公钥乘积n = pq,同时生成的公私钥指数对(d, e)看似随机,但方案的设计者仅根据公共信息(n, e)就能轻松分解n。第四种方案类似于Young和Yung的PAP方法,但更安全,能适用于任意公钥指数e,如3、17、65537,它通过在n的表示中嵌入后门来实现对n的分解。
这些方法对标准密钥生成过程的运行时间影响很小,从时间角度几乎难以察觉。并且推测,带后门的密钥分布方式使得即使有大量样本,也难以与真正的随机密钥区分开来。方案不依赖生成算法对之前执行的记忆,假设算法在无记忆设备上运行,排除了基于伪随机生成的简单方法。
2. 回顾与相关工作
RSA密码系统和数字签名方案基于生成两个大致相等大小的随机素数p和q,以及随机指数d、e,满足de ≡ 1 (mod φ(n)),其中n = pq。
RSA密钥生成算法如下 :
Algorithm 2.1 ( RSA key ge