改进的RSA私钥恢复攻击与对策

一种改进的恢复含噪声RSA私钥的攻击及其对策

摘要

本文讨论了如何从侧信道攻击所观测到的含噪版本中恢复RSA私钥。在CRYPTO2009上,亨宁格和沙赫姆提出了一种多项式时间算法,能够从部分私钥位中恢复原始私钥。随后,在CRYPTO2010上,赫内卡等人提出了一种多项式时间算法,可从含有错误的含噪声的私钥位中恢复正确的私钥,并给出了私钥可在多项式时间内恢复的界限。在PKC2013上,国广信等人提出了一种针对存在擦除和错误的错误私钥位的密钥恢复算法,同时给出了恢复私钥的条件及其理论界限。他们指出,所推导出的条件与理论界限之间仍存在微小差距,填补这一差距是一个开放问题。本文中,我们首先通过引入比霍夫丁界更紧的不等式并选择更具进取性的参数设置,改进了该界限并降低了计算开销。我们所得的界限是渐近最优的。此外,基于我们的分析,我们提出了一种针对私钥提取攻击的实际对策。在此对策中,私钥中的部分位被故意翻转,然后将带有错误的私钥存储在内存中。借助这些故意添加的错误,安全性得以增强。例如,通过故意引入0.15比例的错误,可使系统对错误率为0.13的私钥提取攻击者具有安全性。最后,我们重新研究了非对称错误情况,并给出了交叉概率的可证明界限。

关键词 :RSA密码系统 · Key-recovery · 物理密码分析 · 错误纠正

1 引言

1.1 背景

在RSA密码系统的安全分析中[13],除了数论攻击之外,物理密码分析也非常重要。例如,部分私钥位可能会泄露,或者通过侧信道攻击和冷启动攻击等物理攻击观察到一些带有错误的私钥位。

在RSA[13]中,模数 $N = pq$ 是两个不同素数的乘积,整数 $e$ 和 $d$ 满足 $ed \equiv 1 \pmod{(p-1)(q-1)}$。公钥(或加密密钥)为 $(N, e)$,私钥(或解密密钥)为 $(N, d)$。PKCS#1标准[12]建议使用 $(p, q, d, d_p, d_q, q^{-1} \bmod p)$ 作为私钥,其中 $d_p = d \bmod p - 1$ 且 $d_q = d \bmod q - 1$。上述元组除了包含 $d$ 外,还包含了附加分量 $p, q, d_p, d_q, q^{-1} \bmod p$,从而可通过中国剩余定理实现快速解密。自冷启动攻击[2]提出以来,已有多项关于针对PKCS#1标准的物理密码分析研究被提出。

在CRYPTO2009上,亨宁格和沙查姆(HS)[5]提出了一种针对RSA的多项式时间攻击算法,该算法可以从私钥的部分比特中恢复出完整的私钥。我们用 $\delta$ 表示每个比特被擦除的概率,这意味着有 $(1 - \delta)$-分数的比特是已知的。当 $\delta < 0.73$ 时,他们的算法可以在多项式时间内恢复私钥。在CRYPTO2010上,赫内卡、迈和默勒(HMM)[4]研究了对称错误情况,即每个密钥比特以相同的交叉概率被翻转。随后,他们提出了一种期望多项式时间攻击,能够从含噪声的密钥中恢复出原始私钥。我们用 $\varepsilon$ 表示每个比特被翻转的概率。当 $\varepsilon < 0.237$ 时,他们的算法可以在多项式时间内恢复私钥。

在Asiacrypt2012上,帕特森、波利赫罗尼阿多和西伯恩(PPS)[11]提出了一种高效的算法,该算法适用于每个比特位发生不对称翻转的情况。这意味着两种可能的比特翻转 $0 \to 1$ 和 $1 \to 0$ 具有不同的概率。他们的算法采用基于最大似然的方法,而HMM算法则采用基于阈值的方法。此外,他们还表明,在对称错误情况下,条件可改进为 $\varepsilon < 0.243$。

在PKC2013上,国广信、篠原和泉(KSI)[9]考虑了统一情况;即错误与擦除同时发生,并提出了一个多项式时间攻击,可以从含噪声的密钥中恢复私钥。设 $\delta$ 为擦除概率,$\varepsilon$ 为错误概率,他们证明当 $\varepsilon + \delta/2 \leq 1/2 - 0.263\sqrt{1 - \delta}$ 时,可以在多项式时间内恢复私钥。如果 $\delta = 0$(无擦除情况),则上述条件简化为 $\varepsilon < 0.237$,此时结果与HMM结果完全等价。他们给出了私钥恢复在多项式时间内的理论界限:如果 $(1 - \delta)(1 - H(\frac{\varepsilon}{1-\delta})) < \frac{1}{5}$,则无法在多项式时间内恢复私钥,其中 $H(\cdot)$ 是所谓的二元熵函数。他们指出,所推导出的条件与理论界限之间仍存在微小差距。在CHES2014上,国广信和本田对模拟泄漏[8]进行了分析。他们的分析也适用于离散泄漏,并包含了PPS[11]的结果。然而,他们未考虑私钥位中的擦除情况。

2014年,OpenSSL加密软件库[6]中发现了心脏出血漏洞。该漏洞允许在正常条件下窃取秘密信息。攻击者每次心跳最多可访问64千字节的内存内容,且日志中不会出现异常。攻击者可以持续请求任意数量的64千字节内存块内容。然后,利用该漏洞,攻击者可以获得私钥的某一部分。

1.2 我们的贡献

本文主要讨论RSA私钥比特位发生对称位翻转和擦除的情况,我们称之为私钥提取攻击。

我们的第一个贡献是改进 $\delta$ 擦除率和 $\varepsilon$ 错误率的界,相较于[9]中推导出的界。我们通过激进的参数设置给出了更紧密的分析。我们证明,在满足以下条件时,可以在多项式时间内恢复正确的私钥:
$$
(1 - \delta)(1 - H\left(\frac{\varepsilon}{1 - \delta}\right)) > \frac{1}{5}.
$$
我们的结果表明,可达界从 $1 - \delta - 2\varepsilon \geq \sqrt{\frac{2(1-\delta) \ln 2}{5}}$ 得到提升。以2048位RSA和 $\delta = 0.5$ case为例,KSI算法能够从含有最多328($= 0.064 \times 1024 \times 5$) 个错误的噪声密钥比特中恢复原始私钥,而我们的算法能够从含有最多374($= 0.073 \times 1024 \times 5$)个错误的噪声密钥比特中恢复私钥。

我们的第二个贡献是提出一种针对私钥提取攻击的实用对策。在该对策中,合法解密者(或签名者)首先向原始私钥添加少量随机错误(即每位以较小概率翻转,记为 $\varepsilon’$),然后将带有错误的私钥存储到内存(侧信道攻击场景)/服务器(心脏出血漏洞场景)中。解密者随后丢弃原始私钥序列。在每次解密过程中,他首先从存储的含噪声且有误的私钥版本中重构出正确的私钥,然后执行正常的解密过程。假设攻击者可以通过侧信道攻击从解密者的存储中以错误率 $\varepsilon$ 和擦除率 $\delta$ 提取私钥。此类攻击的典型示例如下:(i)可以获取完整的私钥位,但其中部分比例的位发生了位翻转($\varepsilon > 0, \delta = 0$);(ii)可以无任何错误地获取部分比例的私钥位($\delta > 0, \varepsilon = 0$)。

我们证明,如果我们将 $\varepsilon’$ 设置为,我们的对策可以防止错误率为 $\varepsilon$ 的类型(i)秘密密钥提取攻击:
$$
\frac{0.243 - \varepsilon}{1 - 2\varepsilon} \leq \varepsilon’ \leq 0.243.
$$
例如,如果我们将 $\varepsilon’$ 设置为 $0.15 \leq \varepsilon’ \leq 0.243$ 以用于 $\varepsilon = 0.13$,则我们的对策是有效的。

然后,我们证明了在设置 $\varepsilon’$ 的情况下,我们的对策能够防止擦除率为 $\delta$ 的类型(ii)秘密密钥提取攻击:
$$
(1 - \delta)(1 - H(\varepsilon’)) < \frac{1}{5}.
$$
例如,如果我们设置 $\varepsilon’ = 0.15$,攻击者需要以擦除率 $\delta < 0.49$ 提取私钥位,以便在多项式时间内恢复私钥。如果我们设置 $\varepsilon’ = 0.24$,攻击者需要以擦除率 $\delta < 0.024$ 提取私钥位。在这种情况下,攻击者需要获取几乎全部的噪声私钥才能恢复原始私钥;其中私钥的 $0.976$ 分数是必需的。

我们的第三个贡献涉及非对称误差情况。我们给出了非对称错误情况的一个可证明边界。具体而言,在满足 $\beta < 0.653$ 的条件下,我们可以高效地恢复私钥。这一部分源于理论兴趣。

2 预备知识

本节概述了使用二叉树恢复RSA密码系统私钥的方法[13]。我们首先解释亨宁格和沙查姆提出的基于二叉树的方法[5],然后描述赫内卡等人[4]和国广信等人[9]的方法。

2.1 符号说明

我们采用与[9]相同的符号表示。为了内容的完整性,我们在附录A中给出了详细说明。在本文中,$\log x$ 表示以2为底的二进制对数,$\ln x$ 表示以e为底的自然对数 $\approx 2.71828$。我们用 $n$ 表示 $N$ 的位长度。对于一个 $t$ 位序列 $x = (x_{t-1}, \ldots, x_0) \in {0, 1}^t$,我们用 $x[i] = x_i$ 表示 $x$ 的第 $i$ 位,其中 $x[0]$ 是 $x$ 的最低有效位。令 $\tau(M)$ 表示满足 $2^{\tau(M)} | M$ 的最大指数。

2.2 HS算法[5]– 使用二叉树恢复RSA私钥 –

我们回顾[5]的工作。首先,我们讨论RSA密码系统[13],特别是PKCS#1标准[12]的密钥设置。公钥为$(N, e)$,私钥为$sk = (p, q, d, d_p, d_q, q^{-1} \bmod p)$。与之前的工作一样,我们也忽略私钥中的最后一部分$q^{-1} \bmod p$。

公钥与私钥具有以下关系:
$$
N = pq,\quad ed \equiv 1 \pmod{(p-1)(q-1)},\quad ed_p \equiv 1 \pmod{p-1},\quad ed_q \equiv 1 \pmod{q-1}.
$$
根据密钥设置,存在一些整数$k, k_p, k_q$,使得
$$
N = pq,\quad ed = 1 + k(p-1)(q-1),\quad ed_p = 1 + k_p(p-1),\quad ed_q = 1 + k_q(q-1).\tag{1}
$$
假设我们知道$k, k_p$和$k_q$的确切值。方程(1)中存在五个未知数$(p, q, d, d_p, d_q)$。较小的公钥指数$e$通常在实际应用中使用[14],因此我们假设$e \leq 2^{16} + 1$以与[4,5,9,11]相同的方式。

亨宁格和沙赫姆提出了一种基于二叉树的技术来恢复私钥$sk$。我们用$sk$表示正确的私钥,以及带噪声的私钥对应的私钥$sk$由$\tilde{sk}$表示。我们还用$m$表示涉及的密钥数量。例如,$m = 5$当$sk = (p, q, d, d_p, d_q)$被涉及时;$m = 2$当$sk = (p, q)$被涉及时。

这里我们以$sk = (p, q, d, d_p, d_q)$为例,说明如何恢复私钥。我们首先解释如何生成树。由于$p$和$q$是$n/2$位的素数,并且$d$的最高有效位(MSB)的一半可以高效计算,因此在$(p, q, d, d_p, d_q)$中的每个密钥最多只有$2^{n/2}$个候选值。

亨宁格和沙赫姆[5]定义了每个位索引的$i$-th位片,我们将其表示为$i$,并用
$$
\text{slice}(i) := (p[i], q[i], d[i + \tau(k)], d_p[i + \tau(k_p)], d_q[i + \tau(k_q)]).
$$
假设我们已经计算出一个部分解私钥$sk’ = (p’, q’, d’, d’_p, d’_q)$,直至$\text{slice}(i - 1)$。

亨宁格和沙赫姆[5]应用亨泽尔引理到公式(1)并给出了以下方程
$$
p[i] + q[i] = (N - p’q’)[i] \bmod 2, \tag{2}
$$
$$
d[i + \tau(k)] + p[i] + q[i] = (k(N + 1) + 1 - k(p’ + q’) - ed’)[i + \tau(k)] \bmod 2, \tag{3}
$$
$$
d_p[i + \tau(k_p)] + p[i] = (k_p(p’ - 1) + 1 - ed’_p)[i + \tau(k_p)] \bmod 2, \tag{4}
$$
$$
d_q[i + \tau(k_q)] + q[i] = (k_q(q’ - 1) + 1 - ed’_q)[i + \tau(k_q)] \bmod 2. \tag{5}
$$
我们可以很容易地看出,$p[i], q[i], d[i + \tau(k)], d_p[i + \tau(k_p)]$,和$d_q[i + \tau(k_q)]$并非相互独立。每一次亨泽尔提升恰好产生两个候选解。因此,所有候选解的数量由$2^{n/2}$给出。

接下来我们解释剪枝步骤。由于假设有一部分比特是确定已知的,因此可以剪除与已知比特不一致的分支。[5]中的分析表明,如果$\delta < 0.73$,则树的大小在$n$中保持多项式级别。

2.3 HMM算法[4]和KSI算法[9]

首先,我们简要说明HMM算法[4]。该算法对某个参数$t$执行$t$次亨泽尔提升。然后,将二叉树分割为深度为$t$的子树,并对每个子树执行剪枝步骤。实际上,从子树的根节点到叶节点的节点序列的$mt$位与$sk$对应的位进行比较。如果该子序列与候选值之间的汉明距离大于$C \in [0, mt]$,则丢弃该叶节点。如何设置$C$在HMM算法中至关重要。赫内卡等人考虑了以下两个限制条件,以帮助确定参数$(t, C)$的选择。注意,$E[X]$是随机变量$X$的均值。

限制条件1 设$Z_{b,i}$为在第$i$个剪枝步骤中由一个错误部分解生成的错误候选数量。然后,我们选择参数$(t, C)$,使得$E[Z_{b,i}] \leq 1/2$成立。

限制2 。对于每个剪枝步骤,我们选择参数$(t, C)$,使得正确节点被丢弃的概率小于$1/n$。

通过适当选择参数$C$和$t$,赫内卡等人展示了以下结果。HMM算法在计算时间$O(n^2 + \frac{\ln^2 5}{\zeta^2})$内恢复私钥$(p, q, d, d_p, d_q)$,前提是错误率$\varepsilon$不超过$0.237 - \zeta$,其中$\zeta$为任意正数。对于相关秘密信息的一般情况$m$,只要满足$\varepsilon \leq 1/2 - \sqrt{\frac{\ln 2}{2m}} - \zeta$,即可在计算时间$O(n^2 + \frac{\ln^2 m}{\zeta^2})$内恢复密钥。

在[4]的分析中提出了以下启发式假设,我们在分析中也采用相同的假设。

启发式假设1 。对一个不正确的部分解应用扩展阶段所生成的每一个解,都是由$t$个随机选择的比特片组成的集合。

备注1 . 帕特森等人提出了较弱的随机性假设,并在该假设下评估了成功条件[11]。在第3节的分析中,我们采用更强(而非更弱)的随机性假设,以精确评估计算复杂度。

KSI算法[9]是HS算法[5]和HMM算法[4]的统一变体。它基于HMM算法,但跳过擦除符号并在剪枝阶段使用汉明距离。在其方法中,汉明距离的阈值根据跳过的擦除符号数量而可变;而在HMM算法中该阈值是固定的。在第3节中,我们提出了一种来自[9]的改进算法。该算法本身与KSI算法[9]完全相同。与[9]中分析的不同之处在于如何设置剪枝阶段的参数。

我们重新审视如何在剪枝阶段选择阈值,这在我们的分析中非常重要。首先,我们回顾概率论和信息论的相关事实,然后介绍所谓的切尔诺夫-霍夫丁界。我们注意到,[4]中的分析使用了霍夫丁界。

2.4 概率论与信息论综述

我们回顾了概率论和信息论中一些基本的定义和定理,这些是我们分析所必需的。我们重点关注二进制源的情况。

定义1(二项分布) 。设$X$为服从参数为$n$和$p$的二项分布的随机变量。我们记作$X \sim \text{Bin}(n,p)$。对于$k = 0,1,\ldots,n$,$X = k$的概率由以下公式给出
$$
\Pr[X = k] = \binom{n}{k} p^k (1 - p)^{n-k}.
$$

定义2(二元熵[1]) 。二元熵函数$H(x)$定义为$H(x) := -x \log x - (1 - x) \log(1 - x)$。

定义3 (Kullback-Leibler散度[1]) 。考虑在${0, 1}$上的两个分布$P$和$Q$。令$P(0) = 1 - p, P(1) = p, Q(0) = 1 - q, Q(1) = q$。$P$与$Q$之间的Kullback-Leibler散度定义为
$$
D(P|Q) := p \log \frac{p}{q} + (1 - p) \log \frac{1 - p}{1 - q}.
$$
为简便起见,我们使用符号$D(p, q)$来代替$D(P|Q)$。

根据定义3可知,Kullback-Leibler散度始终为非负值,且$D(p, q) = 0$当且仅当$p = q$。我们用${0, 1}$表示$U$上的均匀分布,这意味着$U(0) = U(1) = 1/2$。根据定义3可直接得到
$$
D(P|U) = D(p, 1/2) = p \log(2p) + (1 - p) \log 2(1 - p) = 1 - H(p).
$$
关于二元熵函数$H(x)$,已知以下内容。

命题1 。二元熵函数$H(x)$可以表示为以下无穷级数之和
$$
H(x) = 1 - \frac{1}{\ln 2} \sum_{u=1}^\infty \frac{(1 - 2x)^{2u}}{2u(2u - 1)}.
$$
对于二项分布,以下结论是众所周知的。

命题2 (霍夫丁界[7]) 。假设$X \sim \text{Bin}(n,p)$。那么,对于所有$0 < \gamma < 1$,我们有
$$
\Pr[X \leq n(p - \gamma)] \leq \exp(-2n\gamma^2) \quad \text{and} \quad \Pr[X \geq n(p + \gamma)] \leq \exp(-2n\gamma^2).
$$
我们分析的主要工具。二项分布的霍夫丁界是分析[4,9]中的一个关键工具。这是一个众所周知且易于使用的界,但也存在更紧的界。更紧的界可以使我们更精确地评估恢复私钥的成功条件和计算开销。我们以Kullback-Leibler散度的形式引入二项分布的界。

命题3 (切尔诺夫-霍夫丁界) 。假设$X \sim \text{Bin}(n,p)$。那么,对于每个$0 < \gamma < 1$,我们有
$$
\Pr[X \leq n(p - \gamma)] \leq \exp(-nD(p - \gamma, p) \ln 2) \quad \text{and}
$$
$$
\Pr[X \geq n(p + \gamma)] \leq \exp(-nD(p + \gamma, p) \ln 2).
$$
关于命题3的证明,参见[10]。附录B中讨论了两个界的关联。由命题3可直接得到以下推论。

推论1 。假设$X \sim \text{Bin}(n, 1/2)$。对于所有每个$0 < \gamma < 1$,我们有
$$
\Pr[X \leq n(1/2 - \gamma)] \leq \exp(-n(1 - H(1/2 - \gamma)) \ln 2) = 2^{-n(1-H(1/2-\gamma))}
$$

3 利用切尔诺夫-霍夫丁界改进KSI界

3.1 KSI算法

为保证内容完整,我们首先更详细地回顾KSI算法[9],该算法用于从含有擦除和错误的含噪私钥位中恢复原始私钥。在该算法中,我们将序列划分为跳过私钥$\tilde{sk}$中擦除位的$T$位子序列,其中$T$为某个固定的正整数。这里我们用$t_i$表示在第$i$次剪枝步骤中新生成的节点序列长度,并用$\Delta_i$表示在第$i$次剪枝步骤时$\tilde{sk}$中$E$的数量。由于条件$T \geq m$在实际中成立,因此我们有$t_i = \lfloor(T+\Delta_i)/m\rfloor$或$\lceil(T+\Delta_i)/m\rceil - 1$。相比之下,当$\tilde{sk}$被分割为个子序列时,我们使用阈值$C_1, \ldots, C_\ell$。第3.2节中的定理1提供了如何设置每个$C_i$的方法。注意,$k$、$k_p$和$k_q$的未知值可以从私钥$sk$高效计算得到。

The KSI Algorithm[9]

输入 : 公钥$(N, e)$,含噪声的私钥位$\tilde{sk}$错误率为$\varepsilon$,擦除概率为$\delta$,以及参数$T$。

输出 : 正确的私钥$sk$

初始化阶段 。 计算$(k, k_p, k_q)$和$\text{slice}(0)$,并计算子树的深度$t_i$以及剪枝阶段中使用的$(C_1,\ldots, C_\ell)$。从$i = 1$到$\ell$,执行以下扩展与剪枝阶段:

扩展阶段(在$i$-轮) 。 利用公钥($N, e$)和部分解$sk’$,通过使用公式(2)–(5)生成候选集。计算$t_i$个片段:$\text{slice}(\sum_{j=1}^{i-1} t_j+1), \text{slice}(\sum_{j=1}^{i-1} t_j+2)\ldots,$ $\text{slice}(\sum_{j=1}^{i} t_j)$,并生成深度为$t_i + 1$的局部树。

剪枝阶段(在$i$‐轮) 。 对于每个新候选$sk’$,计算扩展的片段:$\text{slice}( \sum_{j=1}^{i-1} t_j+ 1)\ldots,\text{slice}(\sum_{j=1}^{i} t_j)$与$\tilde{sk}$对应位之间的汉明距离。如果汉明距离大于$C_i$,则丢弃该候选解。

最终化阶段 。 借助公开信息测试每个候选解是否确实为$sk$。

3.2 擦除与错误情况下的改进可达界

我们展示了如何从[9]改进可达界。KSI与我们的算法之间的主要区别在于如何设置阈值$C_i$。然后,我们将集中讨论$C_i$的选择问题。

定理1 . 假设1成立。设$(N, e)$为一个具有$n$位$N$的RSA公钥,且$e$固定。我们选择
$$
T= \left\lceil \frac{\log n}{D(\varepsilon+ \zeta, \varepsilon)}\right\rceil \quad \text{and} \quad C_i= T\left(\frac{1}{2} + \gamma_i\right), \tag{6}
$$
其中$\gamma_i$是满足条件的正实数
$$
T(1 - H(1/2 - \gamma_i))= t_i+ 1 \tag{7}
$$
和$t_i$和$\Delta_i$在第3.1节中定义。此外,设私钥$\tilde{sk} = (sk_1,\ldots,sk_m)$为具有噪声率$\varepsilon$的RSA私钥,使得
$$
\varepsilon \leq \frac{1}{2} - \gamma_i - \frac{1}{T - \zeta} \tag{8}
$$
对于每个$i$。那么,约束条件1和2对每个固定的$\zeta> 0$成立。我们的方法在期望时间$O(n^2+2( \frac{\ln^2 m}{\zeta^2} + \frac{\Delta m \ln 2}{\ln n}))$内纠正私钥$\tilde{sk}$,成功概率至少为$1 -(\frac{(1−\delta)mD(\varepsilon+\zeta,\varepsilon)}{2 \ln n} + \frac{1}{n})$,其中$\Delta=\max{\Delta_i}$和$\delta mn/2=\sum\Delta_i$。

我们省略了证明,因为我们采用了与[9]中相同的策略。在[9]中的证明与我们的证明之间的主要区别在于使用了不同的$C_i$设定,该设定基于命题3。有关该定理的证明,请参见完整版本。

由定理1,我们得到以下定理。

定理2 . 假设1成立,并且每个块的擦除位数为$\Delta$。我们选择
$$
T= \left\lceil \frac{\log n}{D(\varepsilon+ \zeta, \varepsilon)}\right\rceil ,\quad t= \frac{T+\Delta}{m} ,\quad \text{and} \quad C= T\left(\frac{1}{2}+ \gamma’\right),
$$
其中$\gamma’$是方程$(1 - \delta)(1 - H(1/2 - x))=(1+ 1/t) \frac{1}{m}$的解。进一步,设$\tilde{sk}$为具有错误率的RSA私钥$sk$
$$
(1 - \delta)\left(1 - H\left( \frac{\varepsilon}{1 - \delta} + \zeta\right)\right) \geq\left(1+ \frac{1}{t}\right) \frac{1}{m}.
$$
然后,我们的算法在平均时间$O(n^2+ 2^{\frac{mD(\varepsilon+ \zeta,\varepsilon)}{\ln 2} + \delta t \ln 2 \ln n})$内以至少$1 -(\frac{mD(\varepsilon+\zeta,\varepsilon)}{\log n} + \frac{1}{n})$的成功概率恢复正确的私钥。然后,我们的方法对于每个固定的$\zeta> 0$均满足限制条件1和2。它还以期望时间$O(n^2+2( \frac{\ln^2 m}{D(\varepsilon+ \zeta,\varepsilon)} + \frac{\delta t \ln 2}{\ln n} ))$修正私钥$\tilde{sk}$,并以至少$1 -(\frac{(1−\delta)mD(\varepsilon+\zeta,\varepsilon)}{2 \log n} + \frac{1}{n})$的成功概率完成。

证明 。 我们从分析方法中的公式(8)开始讨论。为简便起见,我们仅考虑所有$\Delta_i$相同的情况。假设私钥$\tilde{sk}$被分为$\ell$个子序列。那么,每个部分包含$m n/2$位。通过令$t = n/(2\ell)$,我们得到$\Delta = \delta t m$且$T = t m - \Delta = (1 - \delta)t m$,因此我们可以说
$$
1 - H\left(\frac{1}{2} - \gamma’\right) = \left(1+ \frac{1}{t}\right) \frac{1}{m} \frac{1}{1 - \delta}.
$$
因此,在这种情况下,上界(8)意味着
$$
\frac{1}{2}+ \gamma’ \leq \frac{1 - \varepsilon - \delta\varepsilon}{1 - \delta} - \zeta.
$$
我们可以将条件转换如下:
$$
\Rightarrow \frac{\varepsilon}{1 - \delta}+ \zeta \leq \frac{1}{2} - \gamma’\Rightarrow H\left( \frac{\varepsilon}{1 - \delta}+ \zeta\right) \leq H\left(\frac{1}{2} - \gamma’\right)
$$
$$
\Rightarrow 1 - H\left( \frac{\varepsilon}{1 - \delta}+ \zeta\right) \geq 1 - H\left(\frac{1}{2} - \gamma’\right)=\left(1+ \frac{1}{t}\right) \frac{1}{m} \frac{1}{1 - \delta} \Rightarrow(1 - \delta)\left(1 - H\left( \frac{\varepsilon}{1 - \delta}+ \zeta\right)\right) \geq\left(1+ \frac{1}{t}\right) \frac{1}{m}.
$$
然后,我们有了这个条件。

备注2 . 当$n$足够大时,$t$趋于无穷,成功概率接近于1。此后,为简便起见,我们忽略“$\zeta$”项,仅将成功条件写为
$$
(1 - \delta)\left(1 - H\left( \frac{\varepsilon}{1 - \delta}\right)\right) \geq \frac{1}{m}. \tag{9}
$$
图1说明了攻击对$\varepsilon$和$\delta$成功的区域。

备注3 . 我们此处不展示实现结果,因为数值实验结果将与[9]完全相同。如有需要,请参见[9]以获取具体的实验结果。

我们给出了参数的不同设置$C_i$,见附录C。第一种设置使我们能够以解析方式计算$C_i$,最后一种设置则在KSI和我们的算法之间进行插值。

4 针对私钥提取攻击的实用对策

4.1 攻击模型

在本节中,我们关注情况$m= 5$。假设攻击者能够以足够小的错误率(例如,$\varepsilon= 0.1$)提取私钥。由于$\varepsilon= 0.1<0.243$,攻击者可以轻松地通过HMM算法或PPS算法从提取的私钥中恢复正确的私钥。我们能否防范此类攻击?在本节中,我们提出了一种简单的对策,以抵御私钥提取攻击,并应用了我们的研究成果。

我们考虑以下两种类型的对手。第一种类型的对手会以一些错误为代价获得完整的私钥。第二种类型的对手则无错误地获得私钥的某一部分。我们将后一种类型的对手进一步分为两类:第一类在随机位置获取多个比特;第二类在每次尝试中从整个内存的随机位置获取一个比特,并进行多次尝试。心脏出血漏洞属于后一类攻击。

如果攻击者能够毫无差错地获得完整的私钥,那么他的能力将完全等同于合法解密者。因此,在这种情况下,无法阻止攻击者恢复私钥。然而,如果两者的能力之间存在差距,我们就有机会通过扩大这一差距来防止攻击。考虑以下攻击者模型。

定义4 $((\varepsilon, \delta)$‐对手) 。 我们将能够从存储中以错误率$\varepsilon$和擦除率$\delta$提取私钥的攻击者称为$(\varepsilon, \delta)$–对手。

4.2 简单(但无效)的对策

抵御此类攻击者的最简单对策是使用另一个加密密钥对RSA私钥位进行加密,然后丢弃原始的RSA私钥并存储加密后的私钥。在解密阶段,解密器首先从加密的私钥中恢复出原始的RSA私钥,然后使用该RSA私钥来解密密文。借助该对策,原始的RSA私钥将能抵御私钥提取攻击。然而,该对策存在以下缺点:
– 解密器需要在每个解密阶段恢复原始私钥,这需要额外的计算成本。
– 解密器需要存储额外的保密信息。

特别是,后一个缺点至关重要。这种对策会导致额外的保密信息的密钥管理出现一个新的棘手问题。

防止密钥恢复的一般策略是在存储密钥时添加随机性,并在使用时移除(或抵消)该随机性。在侧信道攻击场景下最常用的方法是为随机的小值$r, r_p, r_q$,向$d, d_p, d_q$添加$r(p−1)(q−1)$, $r_p(p−1)$, $r_q(q − 1)$,然后存储$d+ r(q−11)(q −1)$, $d_p+ r_p(p −1)$, $d_q+ r_q(q −1)$,而不是$d, d_p, d_q$。在解密阶段,由于,所添加的随机性$r C^d+r(p−1)(q−1)= C^d C^{r(p−1)(q−1)}= C^d C^{r_p} C^{r_q}$, 会自动被抵消。这种对策在保护$d, d_p$和$d_q$方面效果良好。然而,此类对策无法用于隐藏$p$和$q$,因此我们需要另一种类型的对策。

4.3 我们的对策

我们提出了一种新的实用对策,该对策不依赖于其他加密密钥。我们的对策针对$(\varepsilon, \delta)$‐对手,具体如下。合法解密者的工作由以下两个阶段组成:设置阶段和解密阶段。他仅执行一次设置阶段,但对每次实际解密均执行解密阶段。
–(设置阶段)1. 估计非负实数$\varepsilon$和$\delta$,其对应攻击者的能力。2. 选择$\varepsilon’$(如何选择$\varepsilon’$将在后面讨论)。3. 存储降级的密钥;原始私钥中的每一位以概率$\varepsilon’$被有意地进行位翻转。4. 丢弃原始私钥。–(解密阶段)1. 从存储的私钥中重构原始私钥。2. 使用重构的私钥解密密文。

如果我们使用更大的$\varepsilon’$,可以防御更强的攻击者;但我们需要更多的计算时间用于解密过程。因此,正确设置$\varepsilon’$非常重要。

擦除与错误率通过合法解密者有意的位翻转以及攻击者对密钥的提取分别给出为$\delta$和$\varepsilon+\varepsilon’−2\varepsilon\varepsilon’−\varepsilon’\delta$。它们通过计算$\Pr(0 →E)= \varepsilon’\delta+(1−\varepsilon’)\delta= \delta$和$\Pr(0 → 1)= \varepsilon’(1−\varepsilon−\delta)+(1−\varepsilon’)\varepsilon= \varepsilon+\varepsilon’−2\varepsilon\varepsilon’−\varepsilon’\delta$进行验证,其中$E$是擦除符号。然后,根据公式(9),$(\varepsilon, \delta)$‐对手在多项式时间内恢复正确的私钥的成功条件为
$$
(1 - \delta)\left(1 - H\left(\frac{\varepsilon+ \varepsilon’ -2\varepsilon\varepsilon’ - \varepsilon’\delta}{1 - \delta}\right)\right)> \frac{1}{m}. \tag{10}
$$

我们的对策需要恢复原始RSA私钥,但不需要额外的保密信息,这是我们的对策的一个优势。

我们的对策存在两个(可能的)障碍。第一个是由于密钥恢复步骤引起的时间延迟。另一个是密钥恢复的成功概率较低。我们证明,如果恰当地设置$\varepsilon’$,上述障碍可以被消除。

实验结果[4,11]表明,如果$\varepsilon’ \leq 0.15$,原始私钥可以在高概率(超过0.8)下快速重构(不到一秒)。这些结果意味着在实际情况中设置$\varepsilon’= 0.15$是可行的。此后,我们讨论$\varepsilon’= 0.15$的情况。

我们的对策的问题在于恢复私钥的成功概率不是1,这意味着合法解密者也可能无法恢复原始私钥。然而,我们可以通过预先选择一个good噪声来轻松解决此问题,从而使得解密器能够恢复私钥。具体而言,设置阶段的第3步将更改为如下方式:在存储降级的密钥之前,解密器检查是否可以从该降级的密钥中真正恢复出私钥。如果密钥恢复失败,则丢弃该降级的密钥,并使用新的随机种子生成一个新的(降级的)密钥;如果密钥恢复成功,则进入第4步,并存储密钥恢复算法中使用的参数(这些参数不属于秘密信息)。由于我们的密钥恢复算法是确定性的,因此我们的对策始终有效。

总结上述讨论,如果我们在$\varepsilon’= 0.15$设定下谨慎选择私钥的降级版本,则可以在实际时间内恢复原始私钥。请注意,我们的对策不需要额外的秘密信息。

4.4 针对两种类型的对手的分析

在存在错误的情况下可获得完整的私钥:$\delta= 0$,$\varepsilon> 0$ 将$\delta= 0$代入公式(10),该攻击的成功条件可转化为
$$
H(\varepsilon+ \varepsilon’ -2\varepsilon\varepsilon’)< 1 - \frac{1}{m}.
$$
然后,如果$\varepsilon$和$\varepsilon’$满足不等式:$\varepsilon+\varepsilon’−2\varepsilon\varepsilon’< 0.243$(对于$m= 5$),则对手可以恢复私钥。值$\varepsilon’$应为$\varepsilon’< 0.243$,以便合法解密者能够执行解密过程。为了确保攻击者永远无法在多项式时间内恢复正确的私钥,$\varepsilon+\varepsilon’ − 2\varepsilon\varepsilon’$应大于$0.243$。

综上所述,当$(\varepsilon, \varepsilon’)$同时满足$\varepsilon’< 0.243$和$\varepsilon+ \varepsilon’ − 2\varepsilon\varepsilon’>0.243$时,提出的对策对$(\varepsilon,0)$‐对手有效。关于$\varepsilon’$的条件明确给出为
$$
\frac{0.243 - \varepsilon}{1 -2\varepsilon} < \varepsilon’< 0.243. \tag{11}
$$
图2说明了$\varepsilon$和$\varepsilon’$的一个区域,以使对策是安全的。

我们给出两个典型例子。假设攻击者提取密钥的能力较弱,或密钥比特受到强健保护。考虑$(\varepsilon,0)$‐对手且$\varepsilon> 0.243$的情况。在此情况下,即使将$\varepsilon’$设置为$\varepsilon’= 0$,攻击也永远不会成功。因此,在此情况下,解密器无需实施任何对策。相反,假设攻击者的能力相当高。根据上述讨论,通过适当选择$\varepsilon’$,该对策是有效的。例如,当$\varepsilon= 0.13$时,将$\varepsilon’$设置为$0.15< \varepsilon’< 0.243$可使存储系统变得安全。这意味着在设置$\varepsilon’= 0.15$下,合法解密者可以高效地恢复原始私钥,且我们的对策能够防止针对$(\varepsilon,0)$‐对手且$\varepsilon> 0.13$的密钥恢复攻击。

随机分数无误差获取:对心脏出血漏洞的影响 :将$\varepsilon= 0$代入公式(10),攻击的成功条件可转化为
$$
(1 - \delta)(1 - H(\varepsilon’))) > \frac{1}{m}. \tag{12}
$$
图3展示了为使对策安全,$\delta$和$\varepsilon’$所处的区域。

当设置为$\varepsilon’= 0.15$时,具有$\delta> 0.49$的$(0, \delta)$‐对手无法恢复私钥。在这种情况下,该对手必须收集一半的密钥。

如果我们采用更激进的设置,例如$\varepsilon’= 0.24$,攻击者需要获取几乎全部的密钥。具体而言,恢复私钥所需的密钥比例需超过$0.976(= 1 −0.024)$。

假设攻击者仅在存储中的随机位置窃取一位。我们用$M$表示存储中的总位数,用$L$表示私钥的位长度。我们首先评估获取某个小于1的正数$\alpha$对应的$\alpha L$位所需的平均尝试次数。其估计值为
$$
\frac{M}{L} + \frac{M}{L−1}+ \cdots+ \frac{M}{L(1 − \alpha)}. \tag{13}
$$
通过简单分析,其上界为
$$
M\left(\frac{1}{L} + \frac{1}{L−1}+ \cdots+ \frac{1}{L(1 − \alpha)}\right) < \frac{M}{\alpha} \frac{1}{1 − \alpha}. \tag{14}
$$
注意,它不依赖于$L$。如果$\alpha= 0.2$(即擦除率$\delta= 0.8$),则其上界为$0.25M$。如果$\alpha$接近1,则方程(14)并不是一个非常紧的界。根据所谓的优惠券收集者论点,上界由[10],给出
$$
M\left(\frac{1}{L} + \frac{1}{1}\right) < M(\ln L+ 0.5772). \tag{15}
$$
对于典型的2048位RSA情况,该值通过$9.12M$进行评估,因为$L=2048/2 \times 5= 5120$。

这一结果意味着,如果应用了我们的对策,攻击者需要完成大约36倍难度的任务;在没有我们的对策时需要$0.25M$次尝试,而在采用我们的对策后则需要$9.12M$次尝试($\varepsilon’= 0.24$)。

4.5 我们的对策的信息论视角

为简便起见,我们聚焦于无擦除情况。我们展示了我们的对策与通过窃听信道进行的密钥交换方案之间的联系[1]。首先,我们简要回顾一下通过窃听信道的密钥交换方案。假设发起方和响应方希望通过交叉概率为$\varepsilon’$的二元对称信道共享共享密钥位。其信道容量由$1 − H(\varepsilon’)$给出。香农有噪信道编码定理指出,如果信息速率$R$小于信道容量$1−H(\varepsilon’)$,则发起方和响应方可以渐近地以错误概率0共享私钥位。

假设窃听者除了能接收到发起方与窃听者之间的信息$\varepsilon’$外,还能以交叉概率$\varepsilon$接收信息。因此,我们可以说发起方与窃听者之间信道的交叉概率为$\varepsilon+\varepsilon’−2\varepsilon\varepsilon’$。其信道容量由$1−H(\varepsilon+\varepsilon’−2\varepsilon\varepsilon’)$给出。

信道编码逆定理指出,如果$1−H(\varepsilon+\varepsilon’−2\varepsilon\varepsilon’)< R$,则发起方和窃听者无法以渐近概率0共享共同的密钥比特。综上所述,如果$\varepsilon, \varepsilon’$且$R$满足不等式$1−H(\varepsilon+\varepsilon’−2\varepsilon\varepsilon’)< R< 1 − H(\varepsilon’)$,则响应方可共享密钥比特,而窃听者无法共享。

我们说明我们的对策类似于通过窃听信道进行的密钥交换方案。假设发起方选择$p$(原始私钥的一个分量)作为公共密钥比特,并希望发送$p$。并假设通过某种编码过程,$p$被编码为私钥$sk=(p, q, d_L, d_p, d_q)$,其中$d_L$是$d$的低半部分。信息率由$1/5$给出。在我们的对策中,响应方拥有交叉概率为$\varepsilon’$的含噪私钥,而$(\varepsilon, 0)$‐对手获得交叉概率为$\varepsilon+\varepsilon’−2\varepsilon\varepsilon’$的更嘈杂的私钥。那么,如果$\varepsilon$和$\varepsilon’$满足以下不等式$1−H(\varepsilon+\varepsilon’ −2\varepsilon\varepsilon’)< 1/5 < 1 − H(\varepsilon’)$,则合法解密者可以恢复私钥,而对手无法恢复。该条件完全等价于公式(11),因为方程$H(x)= 4/5$的解为$x= 0.243$。

5 非对称误差的可证明界

本节中,我们讨论非对称错误情况。这里引入交叉概率$\alpha := \Pr(0 → 1)$和$\beta := \Pr(1 → 0)$。帕特森等人深入分析了非对称错误情况[11]。他们采用了一种基于编码理论的方法;将获得降级的密钥的过程视为通过有噪信道的数据传输。他们提出了一个基于最大似然的算法,并指出有噪信道的信道容量起着重要作用。他们的容量分析表明,如果$\alpha= 0$且$\log(1+(1 − \beta)\beta/(1−\beta))> 1/m$,则可以实现密钥恢复。然而,他们并未对其较弱的随机性假设给出证明。另一方面,国广信等人证明了在相同的假设下,如果对称容量大于$1/m$,我们就能恢复正确的私钥[8]。由于在非对称情况下,对称容量通常小于信道容量,因此可达界低于预期。我们根据[8]给出了针对非对称错误情况的界。

首先,我们定义(所谓的互信息)$I(\alpha, \beta; P)$如下:
$$
I(\alpha, \beta; P)= H((1 − \alpha)P+(1 − P)\beta)− P(H(\alpha))−(1 − P)H(\beta).
$$
代入$P= 1/2$,我们得到对称容量:
$$
I(\alpha, \beta; 1/2)= H\left(\frac{1+ \beta − \alpha}{2}\right)− \frac{H(\alpha)}{2} − \frac{H(\beta)}{2}.
$$
From 定理2中[8],密钥恢复的成功条件由以下给出
$$
H\left(\frac{1+ \beta − \alpha}{2}\right)− \frac{H(\alpha)}{2} − \frac{H(\beta)}{2}> \frac{1}{m}. \tag{16}
$$
备注4 。 代入$\alpha= \beta= \varepsilon$,我们得到条件:$H(1/2) − H(\varepsilon) = 1−H(\varepsilon)$。这与对称错误的条件相同。这种等式成立的原因在于,如果错误是对称的,则对称容量与信道容量是等价的。

首先,我们讨论理想化的冷启动情况:$\alpha= 0$。将$\alpha= 0$代入公式(16),得到条件。在这种情况下,密钥恢复成功的条件是
$$
H\left(\frac{1+ \beta}{2}\right)− \frac{H(\beta)}{2} > \frac{1}{m}. \tag{17}
$$
我们将帕特森等人推导的界与我们基于公式(17)得到的界进行了比较。表1显示了$\beta$在$m= 2,3,5$时的最大值。正如预测的那样,[11]中的界略大于我们的方法。这表明[11]中的分析高估了可达界。根据数值实验

通过在固定$\alpha$和$\beta$的情况下优化$P$,最大化$I(\alpha, \beta; P)$来获得信道容量。

表1. 比较$\beta$在[11]和我们的方法之间的最大值
| | 帕特森等人[11] | 我们的方法 |
| — | — | — |
| $m= 2$ | 0.304 | 0.294 |
| $m= 3$ | 0.486 | 0.473 |
| $m= 5$ | 0.666 | 0.653 |

表2. 不同$\alpha$对应的$\beta$的最大值
| | $\alpha= 0$ | $\alpha= 0.001$ | $\alpha= 0.01$ | $\alpha= 0.1$ |
| — | — | — | — | — |
| $m= 2$ | 0.294 | 0.289 | 0.261 | 0.120 |
| $m= 3$ | 0.473 | 0.467 | 0.432 | 0.260 |
| $m= 5$ | 0.653 | 0.646 | 0.609 | 0.419 |

在[11],中展示的数值实验中,对于$m= 5$,我们可以以非零的成功率恢复密钥至$\beta= 0.63$,这验证了我们的分析。

我们回到一般情况:$0= \alpha< \beta$。在这种情况下,成功条件由公式(16)给出。表2展示了不同$\alpha$取值下$\beta$的最大值。我们可以看到,即使$\alpha= 0$(例如,$\alpha= 0.001$),对于某些$\beta$(例如,$\beta< 0.646$),我们仍能成功恢复私钥。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值