51、简单的 RSA 密钥生成后门方案解析

简单的 RSA 密钥生成后门方案解析

1. RSA 密钥生成与攻击算法概述

在 RSA 密钥生成过程中,若在步骤 3 要求 (|\epsilon| = t)((t \in [1, \cdots, k/2])),则拼接输入 ((\delta_H, \delta_L, \epsilon)) 的总大小为 (2t + k/4)。当设 (t := \gamma k)((\gamma) 为小的正数)时,其大小近似为 (k/4)。通过额外的随机填充或增大 (t),可生成范围在 ( \sqrt[4]{n} < e < \varphi(n)) 的指数 (e),但要确保 (\gamma k) 至少为 80,以防止暴力攻击。

在运行时间方面,该算法与标准 RSA 密钥生成算法相比表现良好。步骤 1 和 6 的运行时间与原算法相同,步骤 2 到 5 的循环次数大致与原循环相同,循环内的最大公约数(gcd)计算次数约为原算法的 3 倍。只要 (\pi_{\beta}(\epsilon)) 的计算相对于 gcd 等计算可忽略不计,运行时间的差异就可忽略。

当 (n) 和 (e) 公开后,给定秘密后门 (\beta),可按以下算法对 (n) 进行因式分解:

Algorithm 3.6 ( RSA - HSEβ attack (n, e) )
1: 给定 (n, e),计算 (δH :δL :ϵ) := π−1β (e)。
2: 使用 BDF 低公共指数攻击(定理 2),结合部分私钥知识,从 (n, δH, δL, ϵ) 计算 δ。
3: 根据 (ϵ, δ) 将 n 分解为 p 和 q。
4: 返回 (p, q)。
2. (\pi_{\beta}) 的选择
  • 主要简单置换 :(\pi_{\beta}(x) = x \oplus (2\beta) \lfloor |x| \rfloor),对于相关方案来说似乎足够,因为实例空间足够大,即使区分者试图发现方案的使用,也可能失败。例如在 RSA - HSD 方案中,区分者可通过计算对应 (e) 的异或来计算小 (\delta) 对应的 (\epsilon) 的异或,但这些结果看起来非常随机。
  • 更多示例
    • 可依赖不同的密码系统生成有效的 (\pi),如 (\pi_{\beta}(x) = DES_{\beta}(x)) 或 (\pi_{\beta}(x) = AES_{\beta}(x)),但使用与 RSA 相同算术运算的置换更可取,因为这些操作在正常密钥生成中容易实现。在智能卡场景中,实现 DES 或 AES 可能会占用程序空间。
    • 当处理固定大小 (k) 位信息的置换时,可选择 (\beta) 为 (2^{k - 1} \pm 2^{k/2}) 范围内的素数,然后定义 (\pi_{\beta}(x) = x^{-1} \mod \beta),通过单次扩展 gcd 计算即可实现。
  • 模 (n + 1) 运算的置换
    • 另一个示例是对奇数指数 (x) 进行模偶数 (n + 1) 的偶数平移。设 (N) 为密钥生成方案产生的所有 (n) 的上界,随机选取固定参数 (\beta) 使得 (N \leq \beta \leq 2N),置换 (\pi_{\beta}(x) = (x + 2\beta) \mod (n + 1)) 将模 (n + 1) 的奇数映射到自身。该置换将元素映射到大于 (\varphi(n)) 的值的概率可忽略不计,因为 ((n + 1) - \varphi(n) = p + q) 相对于 (\varphi(n)) 呈指数级小。但该特定置换在某些情况下不是好选择,因为有人找到方法在方案发布后 24 小时内识别出 RSA - HSD 生成的密钥。
    • 可通过引入额外隐藏参数进行推广,如 (\pi_{\beta, \mu}(x) = (x + 2\beta) \mod (n + 1 - 2m)),其中 (m := \mu \mod \lfloor \sqrt{n} \rfloor),(\sqrt{N} \leq \mu \leq 2\sqrt{N})。然而,若将表达式 (e + 2\beta) 推广为仿射函数 (\pi_{n, \alpha, \beta, \mu}(e) = ((2\alpha + 1)e + 2\beta) \mod (n + 1 - 2m)),且 (\gcd(2\alpha + 1, \varphi(n), n + 1 - 2m) > 2),则会出现问题。
3. 避免和防范隐藏指数攻击的讨论
  • 选择合适的子集 :一个简单策略是确保 (d)(或 (e))从可能值的指数级大子集 (S) 中选取,该子集仅占所有 (d) 的指数级小部分,且 (\gcd(d, \varphi(n)) = 1)。例如,设有效私钥指数集合 (S = {d | \gcd(d, \varphi(n)) = 1 \text{ 且 } d < \sqrt{n}}),很难找到一个简单置换 (\pi_{\beta}(e)) 能将 (d < n^{1/4}) 的模 (\varphi(n)) 逆元以随机方式映射到 (S) 中 (d) 的模 (\varphi(n)) 逆元。但也有不好的选择,如 (S = {d | \gcd(d, \varphi(n)) = 1 \text{ 且 } (d^{-1} \mod \varphi(n)) < \sqrt{n}}) 容易被攻击。
  • 引入冗余 :在 (d) 中引入一些冗余可能有助于防范攻击。例如,(S = {d | \gcd(d, \varphi(n)) = 1 \text{ 且 } d = (x : x)})((x) 为半长度奇数)似乎是应对隐藏指数方案的良好对策。
  • 方案安全性分析 :生成方案的不可区分性在很大程度上取决于所选的置换,但在许多情况下,简单的置换似乎就足够了。同时,三个方案的安全性随着生成的 (e) 的大小减小而降低,有效 (e) 集合的大小是安全的重要因素。最后一个生成最小 (e) 的方案可能由于 (\epsilon) 的最低有效位(lsb)和 (\delta) 的相应 lsb 的冗余而存在额外弱点,需要进一步分析该冗余以制定对策。
4. 隐藏素因子方案

该方案与 PAP 方法类似,但解决了 PAP 方案中未被注意或未解决的一些缺陷。其思路是将素因子 (p) 的一些位嵌入到乘积 (n = pq) 中,选择 (q) 为满足一定约束的特殊素数。只要密钥 (\beta) 保密,就很难从生成的 (p)、(q)、(n) 的分布中发现作弊行为。该方案与 PAP 有两个主要区别:
- 只隐藏 (p) 的一半最高有效位。
- 确保 (n)、(p)、(q) 的分布与正常情况相似。PAP 方法生成的 (n) 的最高有效位均匀分布,这不是两个固定大小随机素数乘积的正确分布。例如,随机选取两个 512 位的素数,它们的乘积长度为 1023 位的概率为 38%,长度为 1024 位且前导位为 “10” 的概率为 48%,长度为 1024 位且前导位为 “11” 的概率为 14%。

设 (e) 为固定的公共指数(如 3、17、65537 等),需找到合适的 (n)。RSA - HP(_\beta) 方案的密钥生成过程如下:

Algorithm 5.1 ( RSA - HPβ(e) key generation )
1: 选择一个合适大小的随机素数 p,使得 gcd(e, p - 1) = 1。
2: 选择一个合适大小的随机奇数 q′,设置 n′ := pq′。
3: 计算 τ := n′⌉k/8,µ := πβ(p⌉k/4 ) 和 λ := n′⌋5k/8。
4: 设置 n := (τ :µ:λ) 和 q := ⌊n/p⌋ + (1 ± 1)/2,使 q 为奇数。
5: 当 gcd(e, q - 1) > 1 或 q 为合数时:
    - 选择一个随机偶数 m,使得 |m| = k/8。
    - 设置 q := q ⊕ m 且 n := pq。
6: 计算 d := e−1 mod φ(n)。
7: 返回 (p, q, d, e)。

该密钥生成方案生成的实例是真正随机的 (p) 和有些随机的 (q) 的乘积,满足:
- (n) 的前 (k/8) 位具有该乘积的正确分布。
- (n) 的接下来 (k/4) 位是 (p) 的 (k/4) 个最高有效位的 “加密”。
- (q) 的最低 (k/8) 位随机选择,使 (q) 为素数。

该算法的运行时间与标准算法大致相同,素数 (p) 的生成方式与标准算法完全相同,素数 (q) 根据步骤 5 的方法选择,平均所需步骤数与步骤 1 相同,其他额外计算相对于单次素性测试可忽略不计。

给定 (n) 和 (e),可按以下算法对 (n) 进行因式分解:

Algorithm 5.2 ( RSA - HPβ attack (n, e) )
1: 给定 n,计算 p⌉k/4 := π−1β (n⌉3k/8 ⌋k/4 )。
2: 使用 Coppersmith 的部分信息攻击将 n 分解为 p 和 q。
3: 返回 (p, q)。
5. 置换安全性分析

简单置换 (\pi_{\beta}(x) = x \oplus (2\beta) \lfloor |x| \rfloor) 对于隐藏素因子方案不安全,因为接收到两对 ((p, q)) 和 ((p’, q’)) 时,可轻易验证 ((n’ \oplus n) \rceil \frac{3k}{8} \rfloor \frac{k}{4} = (p’ \oplus p) \rceil \frac{k}{4}),这在正常情况下不应发生。同样,(\pi_{\beta}(x) = x^{-1} \mod \beta) 本身也不安全,接收到一对 ((p, q)) 时,可计算 (n \rceil \frac{3k}{8} \rfloor \frac{k}{4} p \rceil \frac{k}{4}^{-1}),它应为秘密素数 (\beta) 的倍数,多次实验并进行简单的 gcd 计算可得到 (\beta)。但如果 (p \rceil \frac{k}{4}) 填充足够多的额外随机位,则可防止上述攻击。

推荐的置换是计算模一个接近 (2^{\frac{k}{4}}) 的固定预定素数的逆元,并与一个固定字符串进行异或:
(\pi_{\beta, \mu}(x) = (x \oplus (2\mu) \lfloor |x| \rfloor)^{-1} \mod \beta) 或 (\pi_{\beta, \mu}(x) = (x^{-1} \mod \beta) \oplus (2\mu) \lfloor |\beta| \rfloor),这似乎可以防范上述两种攻击。

6. 结合指数方法及相关讨论
  • 结合方案 :利用相关结果,可将隐藏素因子方法与隐藏小指数方法结合,使用更大的指数。例如,若 (n) 用于潜意识传输 (|n|/6 \approx |n - \varphi(n)| - |n|/3) 个 (n - \varphi(n)) 的最高有效位(而非 Coppersmith 方法所需的 (|n|/4) 个 (p) 的最高有效位),则 Wiener 方法的一种变体能够恢复大小达 (|n - \varphi(n)| - |n|/3/2 \approx |n|/3) 的隐藏指数 (d),优于 Wiener 和 Boneh - Durfee 方法,因此可使用并破解大小达 (n^{0.333}) 的指数 (d)。
  • 方案优缺点 :增加可接受的 (d) 的大小可提高隐藏小指数方法的安全性,减少通过 (n) 潜意识传输的信息量可提高隐藏素因子方法的安全性,但组合方法会继承两种方法的缺陷。
  • 防范隐藏素因子攻击的讨论 :像 Lenstra 工作那样设置约束似乎不是阻止攻击的有效方法,该方案在 (p) 和 (q) 的选择上有足够自由度,固定 (n) 的最高有效位或最低有效位不足以防范攻击。若试图将运行时间降低到与 Joye、Paillier 和 Vaudenay 的素数生成算法相当,该方法则不足,因为难以在使用他们的方法高效生成 (p) 和 (q) 的同时,通过 (n) 潜意识传输 (p) 的一些位。确保隐藏素因子方法安全的一个重要问题是确定当 (p) 和 (q) 从各自分布中选取时,(n) 中足够均匀分布的部分,对 (p) 和 (q) 的分布设置过于严格的限制会使该任务变得困难。
7. 总结

介绍了多种简单的后门方案,可用于生成看似正常的 RSA 密钥 ((p, q, d, e)),使得嵌入在生成方案中的秘密密钥所有者能够从公开信息 (e) 和 (n) 中恢复私钥素数 (p) 和 (q)。每个方案都使用 ((n, e)) 作为潜意识通道来携带对 (n) 进行因式分解有用的特殊信息,潜意识通道的安全性由秘密映射 (\pi_{\beta}) 的选择决定,并提出了几种 (\pi_{\beta}) 的可能性。

需要注意的是,这些方案的安全性尚未得到证明,引入后门类似于引入新的计算假设,只有时间才能证明这些后门是否能抵御密码分析。目前只有一个方案已公开,且已在密码分析中存活了一年多。向密码学社区发起挑战,希望能破解文中提出的几种方案和置换。

综上所述,在 RSA 密钥生成和使用过程中,需要谨慎考虑各种因素,包括指数选择、置换设计、素因子隐藏等,以确保系统的安全性。同时,不断的研究和分析对于发现和解决潜在的安全问题至关重要。

以下是相关算法流程的 mermaid 流程图:

graph TD;
    A[开始] --> B[选择合适的 p 和 q'];
    B --> C[计算 τ, µ, λ];
    C --> D[设置 n 和 q];
    D --> E{q 是否满足条件};
    E -- 否 --> F[选择随机偶数 m];
    F --> G[更新 q 和 n];
    G --> E;
    E -- 是 --> H[计算 d];
    H --> I[返回 (p, q, d, e)];
    I --> J[结束];
graph TD;
    A[开始] --> B[给定 (n, e)];
    B --> C[计算 (δH :δL :ϵ)];
    C --> D[计算 δ];
    D --> E[分解 n 为 p 和 q];
    E --> F[返回 (p, q)];
    F --> G[结束];
方案 特点 安全性
RSA - HSEβ 可生成特定范围指数 e,结合后门可因式分解 n 依赖 γk 大小和 πβ 选择
RSA - HPβ 隐藏素因子 p 部分位,生成满足特定分布的 n 依赖置换和 p、q 分布

通过以上内容,我们对 RSA 密钥生成中的各种后门方案、攻击防范方法以及置换选择有了更深入的了解,在实际应用中应根据具体需求和安全要求进行合理选择和设计。

简单的 RSA 密钥生成后门方案解析

8. 具体操作步骤总结

为了更清晰地展示 RSA 密钥生成及相关攻击算法的操作过程,下面对关键步骤进行详细总结:

8.1 RSA - HSEβ 密钥生成及攻击步骤
  • 密钥生成
    1. 在步骤 3 要求 (|\epsilon| = t)((t \in [1, \cdots, k/2])),拼接输入 ((\delta_H, \delta_L, \epsilon)) 的总大小为 (2t + k/4),设 (t := \gamma k)((\gamma) 为小的正数),可生成范围在 ( \sqrt[4]{n} < e < \varphi(n)) 的指数 (e),确保 (\gamma k) 至少为 80 防止暴力攻击。
    2. 步骤 1 和 6 的运行时间与标准 RSA 密钥生成算法相同,步骤 2 到 5 的循环次数大致与原循环相同,循环内的 gcd 计算次数约为原算法的 3 倍。
  • 攻击算法
Algorithm 3.6 ( RSA - HSEβ attack (n, e) )
1: 给定 (n, e),计算 (δH :δL :ϵ) := π−1β (e)。
2: 使用 BDF 低公共指数攻击(定理 2),结合部分私钥知识,从 (n, δH, δL, ϵ) 计算 δ。
3: 根据 (ϵ, δ) 将 n 分解为 p 和 q。
4: 返回 (p, q)。
8.2 RSA - HPβ 密钥生成及攻击步骤
  • 密钥生成
Algorithm 5.1 ( RSA - HPβ(e) key generation )
1: 选择一个合适大小的随机素数 p,使得 gcd(e, p - 1) = 1。
2: 选择一个合适大小的随机奇数 q′,设置 n′ := pq′。
3: 计算 τ := n′⌉k/8,µ := πβ(p⌉k/4 ) 和 λ := n′⌋5k/8。
4: 设置 n := (τ :µ:λ) 和 q := ⌊n/p⌋ + (1 ± 1)/2,使 q 为奇数。
5: 当 gcd(e, q - 1) > 1 或 q 为合数时:
    - 选择一个随机偶数 m,使得 |m| = k/8。
    - 设置 q := q ⊕ m 且 n := pq。
6: 计算 d := e−1 mod φ(n)。
7: 返回 (p, q, d, e)。
  • 攻击算法
Algorithm 5.2 ( RSA - HPβ attack (n, e) )
1: 给定 n,计算 p⌉k/4 := π−1β (n⌉3k/8 ⌋k/4 )。
2: 使用 Coppersmith 的部分信息攻击将 n 分解为 p 和 q。
3: 返回 (p, q)。
9. 置换选择的深入分析

不同的置换选择对 RSA 后门方案的安全性有着重要影响,下面对几种常见的置换进行更深入的分析:

9.1 简单置换 (\pi_{\beta}(x) = x \oplus (2\beta) \lfloor |x| \rfloor)
  • 优点 :计算简单,在一些方案中,实例空间足够大时,可使区分者难以发现方案的使用。例如在 RSA - HSD 方案中,区分者计算对应 (e) 的异或得到的结果看起来非常随机。
  • 缺点 :对于隐藏素因子方案不安全,接收到两对 ((p, q)) 和 ((p’, q’)) 时,可轻易验证 ((n’ \oplus n) \rceil \frac{3k}{8} \rfloor \frac{k}{4} = (p’ \oplus p) \rceil \frac{k}{4}),这在正常情况下不应发生。
9.2 (\pi_{\beta}(x) = x^{-1} \mod \beta)
  • 优点 :当处理固定大小 (k) 位信息的置换时,选择 (\beta) 为 (2^{k - 1} \pm 2^{k/2}) 范围内的素数,通过单次扩展 gcd 计算即可实现。
  • 缺点 :本身对于隐藏素因子方案不安全,接收到一对 ((p, q)) 时,可计算 (n \rceil \frac{3k}{8} \rfloor \frac{k}{4} p \rceil \frac{k}{4}^{-1}),它应为秘密素数 (\beta) 的倍数,多次实验并进行简单的 gcd 计算可得到 (\beta)。但如果 (p \rceil \frac{k}{4}) 填充足够多的额外随机位,则可防止上述攻击。
9.3 推荐置换 (\pi_{\beta, \mu}(x) = (x \oplus (2\mu) \lfloor |x| \rfloor)^{-1} \mod \beta) 或 (\pi_{\beta, \mu}(x) = (x^{-1} \mod \beta) \oplus (2\mu) \lfloor |\beta| \rfloor)
  • 优点 :似乎可以防范上述两种攻击,提高了隐藏素因子方案的安全性。
  • 缺点 :计算相对复杂,需要额外的参数 (\mu)。
10. 结合方案的效果评估

将隐藏素因子方法与隐藏小指数方法结合,使用更大的指数,虽然在某些方面有一定优势,但也存在明显的缺点:

10.1 优势
  • 提高隐藏小指数方法安全性 :增加可接受的 (d) 的大小,使得攻击者更难破解隐藏的小指数。
  • 提高隐藏素因子方法安全性 :减少通过 (n) 潜意识传输的信息量,降低了被发现隐藏素因子的风险。
10.2 缺点
  • 继承两种方法的缺陷 :组合方法会同时存在隐藏小指数方法和隐藏素因子方法的安全隐患,例如隐藏小指数方法可能存在的指数范围受限问题,以及隐藏素因子方法可能存在的素数选择约束问题。
11. 未来研究方向展望

虽然目前提出了多种 RSA 密钥生成后门方案,但这些方案的安全性尚未得到充分证明,未来可以从以下几个方向进行深入研究:

  • 安全性证明 :对现有方案进行严格的安全性证明,确定其在不同攻击场景下的安全性边界。
  • 新置换设计 :设计更安全、更高效的置换 (\pi_{\beta}),提高潜意识通道的安全性。
  • 攻击方法研究 :深入研究针对这些后门方案的攻击方法,发现潜在的安全漏洞,为方案的改进提供依据。
  • 实际应用测试 :在实际的密码系统中测试这些方案,评估其在实际环境中的性能和安全性。
12. 总结与建议

在 RSA 密钥生成和使用过程中,需要综合考虑各种因素,以确保系统的安全性。以下是一些具体的建议:

  • 谨慎选择指数 :在生成 RSA 密钥时,合理选择指数 (e) 和 (d) 的范围,避免使用过小的指数,同时要考虑指数与其他参数的关系。
  • 精心设计置换 :根据具体的应用场景和安全需求,选择合适的置换 (\pi_{\beta}),并对置换进行充分的安全性分析。
  • 严格保密密钥 :确保秘密密钥 (\beta) 的安全性,防止密钥泄露导致后门被破解。
  • 持续监测和研究 :不断关注密码学领域的最新研究成果,对现有方案进行持续的监测和分析,及时发现并解决潜在的安全问题。

通过以上的分析和建议,希望能够为 RSA 密钥生成和使用提供一些有益的参考,帮助提高系统的安全性和可靠性。

以下是置换选择的总结表格:
| 置换 | 优点 | 缺点 | 适用场景 |
| ---- | ---- | ---- | ---- |
| (\pi_{\beta}(x) = x \oplus (2\beta) \lfloor |x| \rfloor) | 计算简单,实例空间大时难被发现 | 对隐藏素因子方案不安全 | RSA - HSD 等部分方案 |
| (\pi_{\beta}(x) = x^{-1} \mod \beta) | 单次扩展 gcd 计算实现 | 对隐藏素因子方案不安全,需填充随机位 | 固定大小 k 位信息置换 |
| (\pi_{\beta, \mu}(x) = (x \oplus (2\mu) \lfloor |x| \rfloor)^{-1} \mod \beta) 或 (\pi_{\beta, \mu}(x) = (x^{-1} \mod \beta) \oplus (2\mu) \lfloor |\beta| \rfloor) | 可防范多种攻击 | 计算相对复杂 | 隐藏素因子方案 |

graph TD;
    A[选择置换类型] --> B{是否为简单置换};
    B -- 是 --> C[评估实例空间大小];
    C -- 大 --> D[可用于部分方案];
    C -- 小 --> E[安全性降低];
    B -- 否 --> F{是否为模逆置换};
    F -- 是 --> G[检查填充随机位情况];
    G -- 有 --> H[可用于隐藏素因子方案];
    G -- 无 --> I[安全性降低];
    F -- 否 --> J[考虑推荐置换];
    J --> K[评估计算复杂度和安全性];
    K --> L[确定适用场景];

通过以上的分析和总结,我们对 RSA 密钥生成后门方案有了更全面的了解,希望能够为相关领域的研究和实践提供有价值的参考。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值