52、密码学中的攻击与防御:碰撞攻击与冷启动攻击解析

密码学中的攻击与防御:碰撞攻击与冷启动攻击解析

1. 基于碰撞的指数运算算法攻击

在指数运算算法的研究中,碰撞攻击是一种重要的攻击手段。通过分析相关系数,可以为指数的每一位生成假设。当假设不同时,会选择与平均相关系数差异最大的假设,因为这可能是最强的区分器。

在蒙哥马利阶梯实现中,确定指数估计后不能直接应用Stinson算法。这是因为每次翻转一位时,所有低位也需要翻转,但对算法进行调整并不复杂,攻击的预期时间复杂度不变。

对ARM7实现的攻击可以轻松进行,因为使用相关系数时,中位数情况远低于定义的简单攻击阈值。以下是对1000条跟踪数据进行攻击的结果总结:
|平台|算法|匹配方法|E (#Errors)|σ|Pr(triv.)|Pr(prac.)|
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
|ARM7|Add-only|Euclidean distance|5.78|4.30|0.926|0.991|
|ARM7|Add-only|Correlation Coefficient|5.52|4.96|0.935|0.993|
|ARM7|Dummy|Euclidean distance|6.10|7.10|0.894|0.968|
|ARM7|Dummy|Correlation Coefficient|8.40|8.66|0.820|0.920|
|ARM7|Montgomery|Euclidean distance|14.7|4.35|0.306|0.926|
|ARM7|Montgomery|Correlation Coefficient|21.7|4.74|0.0110|0.409|
|SASEBO|Add-only|Euclidean distance|7.69|2.68|0.955|1|
|SASEBO|Add-only|Correlation Coefficient|24.8|4.93|0.00338|0.190|
|SASEBO|Dummy|Euclidean distance|37.7|5.88|0.00188|0.00225|
|SASEBO|Dummy|Correlation Coefficient|24.4|4.88|0.00525|0.207|

对于SASEBO实现,未得出实际可行的攻击方法,推测是因为进行此攻击所需的泄漏信息不存在,即数据在不同时间点不会以相似方式泄漏。

为抵抗上述攻击,需要使用高度规则的指数运算算法。这里定义了完全规则的指数运算:由操作$g_1, g_2, \cdots, g_{\kappa}$组成,形式为$g_{\kappa} \circ \cdots \circ g_2 \circ g_1$,其中$\kappa$对于给定比特长度的指数是固定的,且每个$g_i$形式为$z_i = g_i(x_i, y_i)$,对于$i \in {1, \cdots, \kappa}$,函数$H = g_i$时,$x_i, y_i, z_i$的地址是固定的。然而,这样的指数运算算法是不可能存在的。

下面是证明完全规则的基于加法链的指数运算算法不存在的流程:

graph TD;
    A[假设存在加法链A可计算s^χ] --> B[存在函数F:s -> s^χ使用A计算];
    B --> C[若F完全规则,A对相同比特长度的所有指数不变];
    C --> D[但根据定义,A的最后元素是s^χ且χ不能通过修改s0, s1改变];
    D --> E[得出F和A相互依赖,完全规则算法不存在];
2. 冷启动攻击在离散对数设置中的应用

冷启动攻击是通过分析密码系统内部状态的噪声版本来破坏系统。例如,计算机重启后,内存内容很少完全重置,攻击者可能恢复旧内存内容的噪声图像,并以此为基础重建密钥。以往冷启动攻击主要针对基于RSA的方案或分组密码,对离散对数设置(DL)尤其是椭圆曲线密码学(ECC)的冷启动攻击研究较少。

冷启动攻击依赖于计算机内存断电重启时保留信息的特性,但断电时内存位会随时间衰减,导致信息“嘈杂”。攻击重点在于对噪声的质量和数量进行建模,并应用智能算法从提取的内存图像中完全恢复密钥。信息在无电源情况下保留的时间取决于内存类型和环境温度,断电后衰减过程有一定规律,内存被划分为区域,每个区域有“基态”(0或1),在0基态下,1位最终会衰减为0,0位衰减为1的概率很小但不为零;在1基态下则相反。

之前的冷启动密钥恢复算法中,RSA密钥恢复算法最为流行,对称密钥密码方案受到关注较少,离散对数设置方面的研究相对匮乏。已发表的冷启动分析大多假设攻击者能获取以某种冗余形式存储的私钥的噪声副本,如RSA的PKCS#1标准建议存储额外值以提高效率,这些冗余被用于在高噪声水平下恢复私钥。而Lee等人对离散对数的分析假设攻击者仅能访问公钥$X = g^x$和私钥$x$的衰减版本,在高噪声水平下无法有效恢复密钥。

本文关注两种广泛使用的ECC实现中的私钥表示:OpenSSL中使用的窗口非相邻形式(wNAF)表示和PolarSSL的基于梳状的方法。通过利用私钥内存表示中的冗余,大大改进了之前的结果。以下是相关内容的总结列表:
- 冷启动攻击原理:利用计算机内存断电重启保留信息但有噪声的特点。
- 以往研究重点:RSA和对称密钥方案,离散对数研究少。
- 本文关注场景:OpenSSL的wNAF表示和PolarSSL的梳状方法。
- 优势:利用冗余改进密钥恢复结果。

3. 多项分布与多项检验

冷启动攻击的密钥恢复程序通常一次只考虑目标密钥的小部分。例如,基于RSA的重建程序通常从最低有效位(LSB)开始,但也可以从最高有效位(MSB)开始。一般采用迭代过程猜测密钥的几位,并根据衰减过程模型和编码中的可用冗余评估猜测的合理性。之前的冷启动论文提出了多种确定猜测合理性的方法,如汉明距离方法和最大似然方法,但理论成功通常基于特定密钥的假设,难以推广。

多项分布是二项分布的推广,有$k$个互斥事件,概率为$p = (p_1, \cdots, p_k)$,$\sum_{i = 1}^{k} p_i = 1$且$p_i \neq 0$。$n$次试验中,随机变量$X_1, \cdots, X_k$表示第$i$个事件发生的次数,$X = (X_1, \cdots, X_k)$服从参数为$n$和$p$的多项分布。给定观测值$x = (x_1, \cdots, x_k)$,可以使用多项检验来查看这些值是否与概率向量$p$一致(原假设$H_0$),备择假设$H_1$的概率向量为$\pi = (x_1/n, \cdots, x_k/n)$,通过计算$-2 \sum_{i = 1}^{k} x_i \ln(p_i/\pi_i)$(多项检验统计量)来比较两个假设,当原假设为真时,该统计量的分布在$n \to \infty$时收敛到自由度为$k - 1$的卡方分布。

在冷启动密钥恢复算法中,设$s_i$为私钥的部分候选解,$r$为噪声信息。定义$n_{i01}$为候选解中为0而噪声信息中对应位置为1的位数,类似定义$n_{i00}, n_{i10}, n_{i11}$,则$n = n_{00} + n_{01} + n_{11} + n_{10}$。对于正确的候选解$s_c$,观察四个值$(n_{c00}, n_{c01}, n_{c11}, n_{c10})$的概率为$H_0 : p = (p_0(1 - \alpha), p_0\alpha, p_1(1 - \beta), p_1\beta)$,其中$\alpha$是0位翻转到1的概率,$\beta$是1位翻转到0的概率,$p_b$是正确候选解中$b$位出现的概率。

定义统计检验$Correlate’$如下:
$Correlate’(s_i, r) := -2n_{i00} \ln(\frac{np_0(1 - \alpha)}{n_{i00}}) - 2n_{i01} \ln(\frac{np_0\alpha}{n_{i01}}) - 2n_{i11} \ln(\frac{np_1(1 - \beta)}{n_{i11}}) - 2n_{i10} \ln(\frac{np_1\beta}{n_{i10}})$

当原假设正确时,该检验统计量在$n \to \infty$时收敛到自由度为3的卡方分布。可以设置阈值$C$,若候选解的检验统计量小于$C$则保留,否则丢弃,定义$Correlate_C(s_i, r) = pass \Leftrightarrow Correlate’(s_i, r) < C$。通过卡方分布可以设置阈值$C$以达到所需的成功率。由于$Correlate’$检验只考虑算法每个阶段新生成的位,之前的位被忽略,所以每个$Correlate$检验通过的概率是独立的。如果私钥被解析为$m$个不同部分,攻击者对每个部分应用$Correlate$检验,那么整个私钥恢复成功的概率与各部分的检验结果相关。

下面是使用多项检验进行冷启动密钥恢复的步骤:
1. 确定私钥的部分候选解$s_i$和噪声信息$r$。
2. 计算$n_{i00}, n_{i01}, n_{i11}, n_{i10}$。
3. 根据上述公式计算$Correlate’(s_i, r)$。
4. 设置阈值$C$,判断$Correlate’(s_i, r) < C$是否成立,决定是否保留候选解。
5. 重复上述步骤对私钥的各个部分进行检验。

密码学中的攻击与防御:碰撞攻击与冷启动攻击解析

4. 冷启动攻击密钥恢复的实际应用与优化

在实际应用中,冷启动攻击的密钥恢复过程需要根据不同的场景和需求进行优化。对于之前提到的多项检验方法,虽然它为密钥恢复提供了一种有效的统计手段,但在实际操作中,还需要考虑更多因素来提高攻击的成功率和效率。

首先,在选择阈值 $C$ 时,需要平衡成功率和执行速度。较小的阈值 $C$ 可以提高保留正确候选解的概率,但可能会导致保留过多的候选解,增加后续处理的时间和复杂度;较大的阈值 $C$ 则会减少保留的候选解数量,但可能会误判丢弃正确的候选解。以下是不同阈值 $C$ 对攻击效果影响的表格示例:
| 阈值 $C$ | 保留候选解数量 | 成功率 | 执行时间 |
| ---- | ---- | ---- | ---- |
| 较小值 | 多 | 高 | 长 |
| 中间值 | 适中 | 适中 | 适中 |
| 较大值 | 少 | 低 | 短 |

其次,为了进一步优化攻击过程,可以对私钥进行合理的划分。将私钥划分为多个不同的部分,对每个部分分别应用多项检验,可以降低计算的复杂度,并且由于各部分的检验概率相互独立,有助于提高整体的成功率。以下是私钥划分和检验的流程:

graph TD;
    A[获取私钥] --> B[将私钥划分为 m 个部分];
    B --> C[对每个部分确定候选解 si 和噪声信息 r];
    C --> D[计算 ni00, ni01, ni11, ni10];
    D --> E[计算 Correlate'(si, r)];
    E --> F[设置阈值 C 判断是否保留候选解];
    F --> G[汇总各部分结果得到最终密钥恢复结果];

另外,在实际操作中,还可以结合其他信息来辅助判断候选解的合理性。例如,利用已知的密码系统的特性、密钥生成的规则等信息,对候选解进行筛选,减少不必要的计算和判断。

5. 碰撞攻击与冷启动攻击的防御策略

面对碰撞攻击和冷启动攻击,需要采取有效的防御策略来保护密码系统的安全。

对于碰撞攻击,由于完全规则的指数运算算法不存在,因此可以采用一些折中的方法来减少攻击的风险。例如,在指数运算算法中引入随机性,打乱操作的顺序,使得攻击者难以通过比较操作的输入和输出找到有意义的碰撞。具体操作步骤如下:
1. 在指数运算算法中,随机选择操作的执行顺序。
2. 对操作的输入和输出进行随机变换,增加攻击者分析的难度。
3. 定期更新指数运算算法的参数和规则,避免攻击者通过长期观察找到规律。

对于冷启动攻击,主要的防御思路是减少内存信息的保留和增加信息的噪声。可以采用以下措施:
1. 使用具有快速衰减特性的内存,减少断电后信息的保留时间。
2. 在系统关机时,对内存进行清零操作,确保内存中不保留敏感信息。
3. 引入硬件级的噪声注入机制,增加攻击者获取的信息的噪声水平,降低其恢复密钥的成功率。

6. 总结与展望

碰撞攻击和冷启动攻击为密码系统的安全带来了新的挑战。碰撞攻击通过分析指数运算中的碰撞信息来尝试恢复密钥,而冷启动攻击则利用计算机内存的特性,从噪声的内存信息中恢复私钥。虽然目前已经有一些针对这些攻击的研究和应对策略,但密码学领域的攻防对抗是一个不断发展的过程。

未来,随着计算机技术和密码学的不断发展,可能会出现更复杂的攻击方法和更有效的防御策略。一方面,攻击者可能会结合多种攻击手段,提高攻击的成功率和效率;另一方面,密码系统的设计者需要不断创新,开发出更加安全、高效的密码算法和防御机制。同时,对于冷启动攻击和碰撞攻击的研究也需要进一步深入,探索更多可能的攻击场景和应对方法,以保障密码系统在各种环境下的安全性。

总之,密码学的安全是一个长期而艰巨的任务,需要研究者、开发者和用户共同努力,不断提高密码系统的安全性和可靠性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值