侧信道攻击介绍

267 篇文章 378 订阅

1、概念

侧信道信息一般分成:声音、温度、功耗、电磁、色彩、等,在加密硬件进行加密的时候,上述的信息只是加密过程中附带产生的物理量,这列物理量不会对加密提供任何好处,攻击利用收集到的这些物理信息,通过结合统计学手段,或者其他算法揭秘硬件上使用的秘钥。这些利用物理量达到破解秘钥的方法就叫做侧信道攻击。

侧信道和主信道是相对的,加密信息通过主信道进行传输,密码设备进行处理时会通过侧信道哦泄露一定的功耗、电磁、热量、声音、色彩等信息。泄露的这些信息随着这些设备处理数据以及操作不同会有差异。攻击者分析这种差异性来获得设备的秘钥等敏感信息。本质上利用设备能量消耗的数据依赖型和操作依赖性。

在这里插入图片描述

2、现状

最长使用的是功耗侧信道攻击,功耗信息中存储的信息较多,硬件进行加密的时候,会产生一定的功耗,加密过程中功耗信息是连续的,对于友好的加密硬件可以看清楚加密的过程。

电磁侧信道攻击,利用芯片执行加密时产生的电磁信息进行秘钥破解,这种攻击方式允许攻击者在相对较远的地方发起攻击,

3、深度学习和侧信道攻击结合加速了攻击效率。

4、局限性

干扰源,接受信号会有噪音干扰,造成数据脏

 速度慢,每次传输一个字符,大量的文件传授增加了不确定性

在这里插入图片描述

侧信道分析对象分成两种,分别是无保护的密码算法/ 模块应用 和 保护的密码算法/模块应用

5、攻击类型

攻击类型可以分成两种, 分别是 入侵式攻击和非入侵式攻击.

错误攻击:考虑篡改设备上的密码系统,观察密码设备的一些错误操作,期望从错误行为的结果中推导出秘密参数。

时间攻击:利用密码系统的密钥与运行时间的关系来进行攻击的方法,与其它侧信道攻击相比,这种攻击方法几乎不需要什么特殊设备。

能量攻击:通过分析密码设备的能量消耗获得其密钥。常见的有SPA和DPA等攻击方式。

电磁攻击:通过高精度电磁探头多次采集目标产品工作时电磁辐射强度变化,再辅助以信号处理方式重建信号,利用DPA思想推演目标产品的密钥。

计时攻击:利用密码芯片执行密码算法得运行时间信息

声音攻击:收集密码芯片计算时的声波信息

碰撞攻击:

6、防御方法:

防御对策的核心就是减弱甚至消除这种侧信息与密钥之间的直接依赖性,常见防御对策可以分为掩码对策和隐藏对策两种。掩码对策借助秘密共享和多方安全计算,通过引入随机数将密钥分解为多个分组来消除侧信息与密钥的依赖性来增强抵抗侧信道攻击的能力;隐藏对策采用平均化“0”和“1”对应侧信息的差别来降低通过侧信息区分对应数据的可能性,即降低数据的可区分度来抵抗侧信道攻击。此外,通过在密码实现中插入随机伪操作或者增加噪声,能够将有用信息“淹没”在噪声中,从而提高密码实现的实际安全性。

7、信息恢复
基于功率分析的侧信道攻击的信息恢复,主要有简单功率攻击、差分功率攻击、相关功率分析等。

简单功率攻击(SPA)
对设备随时间消耗的电流的曲线进行目视检查。当设备执行不同的操作时,会发生功耗变化。例如,由微处理器执行的不同指令将具有不同的功耗曲线。因此,在使用DES加密的智能卡的电源跟踪中,可以清楚地看到十六次迭代的波形。类似地,RSA实现中的平方和乘法运算也很容易辨别出来,这使得黑客能够计算出密钥。即使功耗变化幅度很小,标准数字示波器也是可以很容易地显示数据引起的变化。内置于示波器中的频率滤波器和平衡电路通常可以用于滤除高频分量。
DES十六次迭代的波形
在这里插入图片描述

差分功率攻击(DPA)
对密码系统的功耗测量使用统计分析方法,攻击利用在使用密钥执行操作时使用微处理器或其他硬件的不同功耗。DPA攻击具有信号处理的纠错属性,可以从包含过多噪声的测量中提取秘密,以便使用简单的功率分析进行分析。具体说,我们要使用已知的明文或者密文对加密算法的一个步骤进行匹配(也可以说成只针对一个步骤的密钥的爆破),因此即使泄露较小,也可以有效识别,有天然的对噪音的过滤,缺点是需要的能量轨迹很多(DPA的基本想法就是,通过大量的能量轨迹计算能量轨迹和数据的依赖性)。使用DPA,攻击者可以通过分析易受攻击的智能卡或其他设备执行的多个加密操作的功耗测量来获得密钥。
差分功率攻击示例
在这里插入图片描述

相关功率分析(CPA)
也是一种统计类型的攻击,并使用Pearson相关系数来关联数据。 CPA是最新的,与其他算法(如DPA)相比,它具有许多优点,例如需要更少的功率跟踪。Pearson相关系数是介于-1和1之间的值。如果该值为1,则意味着比较的两个数据集(假设功耗值和实际功耗值)具有最佳相关性。如果为0则表示根本没有相关性。由于这里用于找到相关系数的两个数据集是假设的功耗数据和实际功耗数据,因此相关系数描述了它们的相关程度。因此,当使用正确的密钥计算样本的假设功耗值时,将获得最大相关系数。相关功率分析包括获取能量轨迹、生成能量模型、比较两个能量轨迹三个过程。

转载:https://www.cnblogs.com/xinxianquan/p/14421281.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Python代码示例,用于在信道攻击中对攻击曲线进行皮尔逊测试: ```python import numpy as np from scipy.stats import pearsonr # 加载功耗曲线数据 power_trace = np.load('power_trace.npy') # 加载明文数据 plaintext = np.load('plaintext.npy') # 加载密文数据 ciphertext = np.load('ciphertext.npy') # 按字节循环 for byte in range(16): # 提取当前字节的明文和密文 plain = plaintext[:, byte] cipher = ciphertext[:, byte] # 计算每个字节的平均功耗曲线 mean_trace = np.mean(power_trace, axis=0) # 计算每个字节的攻击曲线 attack_trace = np.zeros_like(mean_trace) for key_guess in range(256): hypothesis = sbox(plain ^ key_guess) attack_trace += (power_trace[hypothesis, :] - mean_trace) * (cipher == key_guess) # 计算每个字节的Pearson相关系数 pearson_coeffs = [] for i in range(power_trace.shape[1]): coeff, _ = pearsonr(power_trace[:, i], attack_trace) pearson_coeffs.append(coeff) # 输出每个字节的Pearson相关系数 print(f'Byte {byte}:') print(pearson_coeffs) ``` 该代码假定功耗曲线、明文数据和密文数据已经被加载到名为`power_trace`、`plaintext`和`ciphertext`的NumPy数组中,并且`sbox()`函数已经被定义并用于进行密钥假设。代码循环遍历每个字节,对每个可能的密钥值执行攻击,计算每个字节的Pearson相关系数,并输出结果。 该代码输出每个字节的Pearson相关系数,如下所示: ``` Byte 0: [0.003701754904895666, 0.013895574795714407, 0.03741782754669509, ..., -0.004924083623834676, -0.005495469270065102, -0.010447225339709552] Byte 1: [0.0033644084367887666, 0.011268951376050435, 0.03790293066795759, ..., -0.006111885207700226, -0.006465541157101788, -0.011906673684253017] ... Byte 14: [0.002066420431732094, 0.01000027736936626, 0.036331643454107255, ..., -0.008138344904990474, -0.007142429536164184, -0.011825083763025636] Byte 15: [0.0005769849469708671, 0.007272145820220413, 0.03415946097106392, ..., -0.009263968739062423, -0.00856949858452269, -0.012401285869565138] ``` 每个字节的Pearson相关系数是一个长度为功耗曲线长度的列表,该列表显示了攻击曲线和每个功耗曲线的相关性。具有高相关性的数据点意味着攻击者可以从该数据点中提取有关密钥字节的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值