fbv81bp/Side_channels

GitHub: fbv81bp/Side_channels

一套基于 Python 的侧信道攻击模拟工具集,涵盖 DPA、CPA、MIA 等多种分析方法,用于 AES 加密算法的抗侧信道能力研究与教学演示。

Stars: 3 | Forks: 1

# 侧信道攻击 * Hweight_dpa_sca_aes_sbox.py:一个针对高级加密标准(AES)S盒进行基于相关性功耗分析的侧信道攻击的教学示例。 * Hdist_dpa_sca_aes_sbox.py:大致相同,但以汉明距离作为主要的泄漏源进行考量。 * AES_cpa_sca_16x.py:一个更贴近实际的解决方案,其中泄漏由多个 S-box 计算组合而成。因此,该示例也表明此攻击在存在噪声的情况下依然有效,因为在猜测特定 S-box 的输入时,所有其他 S-box 的替换在泄漏数据中都相当于无意义的(算法)噪声。 * AES_mia_sca.py:一种基于互信息分析核心概念的侧信道攻击,它测量特定输出值相对于选定输入的似然度,然后类似地关联这两种直方图分布,以寻找特定密钥的最佳匹配。同样适用于任意数量的 S-box,使用户能够在算法噪声下进行测试。该实现猜测大多数密钥所需的样本量与 CPA 大致相同,但其计算速度要快得多! * AES_mia_sca_corr_vs_err.py:测试寻找分布之间的最小误差是否会比寻找最大相关性产生更好的结果。(事实表明并不能。) * AES_mia_sca_16x_Hweight.py:带来的结果已经与关于互信息分析的描述更为相似——它需要大量的计算,大约需要 2400 万步才能猜出任何一个密钥,然而在 16 个 S-box 的情况下,只需大约 500 个长度仅为 16 倍的样本就足以猜出密钥,即使所有的功耗都被同时测量,这意味着其余 15 个 S-box 的功耗构成了算法噪声(!)。 * AES_mia_sca_1x_2nd-order-masked.py:是一种针对二阶掩码 AES S-box 方案的类似 MIA 的攻击。它多次使用相同的选定明文序列来平均掉随机掩码的影响,然后将获得的汉明重量分布与预先建立的假设分布进行关联。 * supply_penetrating-DPA.py:是我基于差分功耗分析开发的一个想法,但我没有分离轨迹,而是将输入分离,使得输出中嵌入特定的功耗轨迹。 * supply_penetrating-DPA-w_encoding.py:与前一个相同,但可以操纵嵌入到输出中的形状,以便更容易将其与噪声区分开来。 * XTS_mode_hack_PoC.py:展示了一个攻击 XTS 硬盘加密的概念验证,其方式类似于电源穿透 DPA,只需将一个特殊格式的文件保存到磁盘上,同时测量加密过程的功耗:它利用了伽罗瓦乘 2 运算(在大多数字节上只是一个简单的移位操作),从而能够每隔 8 次移位就在功耗轨迹中产生自相关(!)
标签:AES, Python, S盒, 二阶掩码, 互信息分析(MIA), 仿真, 侧信道仿真, 侧信道攻击, 功耗泄漏, 反取证, 安全评估, 密码分析, 密码学, 密钥恢复, 差分功耗分析(DPA), 手动系统调用, 掩码破解, 无后门, 汉明距离, 汉明重量, 白盒密码, 相关性功耗分析(CPA), 算法噪声, 网络与系统安全, 逆向工具