深度学习赋能侧信道攻击实战
字数 2130 2025-08-13 21:33:20

深度学习赋能侧信道攻击实战教学文档

1. 前言与背景

在IoT时代,针对IoT设备上密码芯片的侧信道分析是安全研究的重要领域。同时,深度学习作为AI第三次复兴的引领技术,与侧信道分析结合可以产生新的攻击方法。

本文实战目标:通过分析ARM CPU上AES算法实现的power trace(能耗轨迹),使用深度学习技术恢复AES-128的16字节密钥。

2. 基础知识

2.1 AES加密算法

  • 定义:高级加密标准(AES),又称Rijndael加密法,是NIST于2001年发布的对称密钥加密标准
  • 关键参数
    • 区块长度固定为128比特
    • 密钥长度:128/192/256比特(本文针对128比特/16字节)
  • 加密过程
    1. 初始状态:4×4字节矩阵(state),初值为明文区块
    2. 加密循环(除最后一轮外)包含4个步骤:
      • AddRoundKey:state矩阵与回合密钥(round key)做XOR
      • SubBytes:非线性替换(使用查找表)
      • ShiftRows:行循环移位
      • MixColumns:列混合(线性转换)
    3. 最后一轮省略MixColumns,以AddRoundKey取代

2.2 侧信道攻击(SCA)

  • 攻击过程

    1. 采集密码算法运行时泄露的旁路信息(功耗、电磁辐射等)
    2. 分析这些信息与中间运算/状态的关系(这些中间值依赖密钥)
    3. 恢复密钥
  • 关键概念

    • Power trace:采集的旁路泄露信息(能耗轨迹)
    • 攻击点(Attack Points)
      • 内存中与密钥相关的敏感变量
      • 实际攻击中预测的是攻击点而非直接捕获密钥
      • AES中的可逆攻击点位于第一轮:key、sub_bytes_in、sub_bytes_out

2.3 深度学习

  • 定义:以人工神经网络为架构的表征学习算法
  • 在SCA中的优势
    1. 直接从原始power trace学习,无需人工设计特征
    2. 直接学习预测中间值,无需近似模型
    3. 支持概率攻击(利用softmax输出)

3. 实战流程

3.1 构建数据集

  1. 采集power trace

    • 使用示波器捕获流程:
      1. 启动示波器
      2. 触发硬件加密过程(选定/随机key和明文)
      3. 加密结束时停止捕获
    • 硬件连接:示波器probe连接芯片和通信接口
    • 典型power trace特征:可清晰看到10轮AES运算
  2. 数据处理

    • 缩放power trace到[-1,1]范围
    • 计算攻击点值(sub_bytes_in和sub_bytes_out)
    • 矩阵转置:[byte_id][example_id]格式
    • 对字节值进行分类编码(256个潜在值)
  3. 数据打包

    • 分片(shard)包含给定key的所有样本
    • 便于调整每个key的样本数量
    • 确保训练和测试使用不同key

3.2 模型训练

  1. 配置设置

    • 攻击目标:设备类型和算法(AES-128)
    • 攻击方式:3个攻击点×16字节=48个模型
    • 数据需求:shard数量=key数量;每个shard的trace数量
    • 模型架构:参数、优化器等
  2. 网络架构

    • 基于ResNet的1D CNN(处理时间序列数据)
    • 关键修改:
      • 使用1D卷积(非图像处理的2D)
      • 初始max pooling(处理过采样)
      • 简化的卷积增长函数stack
    • 结构组成:
      • Dropout层(增强泛化)
      • 全连接层
      • 激活层
      • BatchNormalization层
      • 输出层:256输出的softmax全连接层
    • 残差块结构:
      • 批归一化→激活层→Conv1D
  3. 训练过程

    • 加载数据集和配置
    • 使用训练集训练模型

3.3 攻击实施

  1. 攻击原理

    • 累计模型预测值(softmax输出概率)
    • 累计值越大,对应字节值可能性越高
  2. 评估指标

    • 恢复key所需的最少trace数量
    • 平均需要的trace数量
    • 恢复所有key需要的trace总数
    • 攻击曲线(累计成功率)
  3. 攻击步骤

    • 设置参数:
      • 攻击点(如sub_bytes_out)
      • trace数量(如5条)
      • 目标shard(不同key)
    • 运行16次字节恢复算法(每次恢复1个key字节)
  4. 典型结果

    • 1条trace可恢复约40%的key
    • 4条trace累计成功率83.79%
    • 5条trace可完整恢复16字节密钥

4. 关键技术与注意事项

  1. 攻击点选择

    • 优先选择第一轮的可逆攻击点
    • sub_bytes_in和sub_bytes_out最易受攻击
  2. 数据预处理

    • 必须缩放power trace到[-1,1]
    • 确保数据格式正确(byte_id优先)
  3. 模型设计要点

    • 1D卷积处理时间序列
    • 残差连接加速收敛
    • softmax输出支持概率攻击
  4. 性能优化

    • 通过攻击曲线选择最优trace数量
    • 平衡计算成本和攻击成功率

5. 总结

本教学文档详细介绍了如何将深度学习应用于侧信道攻击来破解AES-128加密。关键点包括:

  1. 理解AES算法和侧信道攻击原理
  2. 正确采集和处理power trace数据
  3. 设计适合时间序列分析的深度学习模型
  4. 实施有效的概率攻击策略
  5. 合理评估攻击效果

这种方法相比传统模板攻击的优势在于无需人工设计特征和近似模型,直接从数据中学习攻击模式,大大简化了攻击设计流程。

深度学习赋能侧信道攻击实战教学文档 1. 前言与背景 在IoT时代,针对IoT设备上密码芯片的侧信道分析是安全研究的重要领域。同时,深度学习作为AI第三次复兴的引领技术,与侧信道分析结合可以产生新的攻击方法。 本文实战目标:通过分析ARM CPU上AES算法实现的power trace(能耗轨迹),使用深度学习技术恢复AES-128的16字节密钥。 2. 基础知识 2.1 AES加密算法 定义 :高级加密标准(AES),又称Rijndael加密法,是NIST于2001年发布的对称密钥加密标准 关键参数 : 区块长度固定为128比特 密钥长度:128/192/256比特(本文针对128比特/16字节) 加密过程 : 初始状态:4×4字节矩阵(state),初值为明文区块 加密循环(除最后一轮外)包含4个步骤: AddRoundKey:state矩阵与回合密钥(round key)做XOR SubBytes:非线性替换(使用查找表) ShiftRows:行循环移位 MixColumns:列混合(线性转换) 最后一轮省略MixColumns,以AddRoundKey取代 2.2 侧信道攻击(SCA) 攻击过程 : 采集密码算法运行时泄露的旁路信息(功耗、电磁辐射等) 分析这些信息与中间运算/状态的关系(这些中间值依赖密钥) 恢复密钥 关键概念 : Power trace :采集的旁路泄露信息(能耗轨迹) 攻击点(Attack Points) : 内存中与密钥相关的敏感变量 实际攻击中预测的是攻击点而非直接捕获密钥 AES中的可逆攻击点位于第一轮:key、sub_ bytes_ in、sub_ bytes_ out 2.3 深度学习 定义 :以人工神经网络为架构的表征学习算法 在SCA中的优势 : 直接从原始power trace学习,无需人工设计特征 直接学习预测中间值,无需近似模型 支持概率攻击(利用softmax输出) 3. 实战流程 3.1 构建数据集 采集power trace : 使用示波器捕获流程: 启动示波器 触发硬件加密过程(选定/随机key和明文) 加密结束时停止捕获 硬件连接:示波器probe连接芯片和通信接口 典型power trace特征:可清晰看到10轮AES运算 数据处理 : 缩放power trace到[ -1,1 ]范围 计算攻击点值(sub_ bytes_ in和sub_ bytes_ out) 矩阵转置:[ byte_ id][ example_ id ]格式 对字节值进行分类编码(256个潜在值) 数据打包 : 分片(shard)包含给定key的所有样本 便于调整每个key的样本数量 确保训练和测试使用不同key 3.2 模型训练 配置设置 : 攻击目标:设备类型和算法(AES-128) 攻击方式:3个攻击点×16字节=48个模型 数据需求:shard数量=key数量;每个shard的trace数量 模型架构:参数、优化器等 网络架构 : 基于ResNet的1D CNN(处理时间序列数据) 关键修改: 使用1D卷积(非图像处理的2D) 初始max pooling(处理过采样) 简化的卷积增长函数stack 结构组成: Dropout层(增强泛化) 全连接层 激活层 BatchNormalization层 输出层:256输出的softmax全连接层 残差块结构: 批归一化→激活层→Conv1D 训练过程 : 加载数据集和配置 使用训练集训练模型 3.3 攻击实施 攻击原理 : 累计模型预测值(softmax输出概率) 累计值越大,对应字节值可能性越高 评估指标 : 恢复key所需的最少trace数量 平均需要的trace数量 恢复所有key需要的trace总数 攻击曲线(累计成功率) 攻击步骤 : 设置参数: 攻击点(如sub_ bytes_ out) trace数量(如5条) 目标shard(不同key) 运行16次字节恢复算法(每次恢复1个key字节) 典型结果 : 1条trace可恢复约40%的key 4条trace累计成功率83.79% 5条trace可完整恢复16字节密钥 4. 关键技术与注意事项 攻击点选择 : 优先选择第一轮的可逆攻击点 sub_ bytes_ in和sub_ bytes_ out最易受攻击 数据预处理 : 必须缩放power trace到[ -1,1 ] 确保数据格式正确(byte_ id优先) 模型设计要点 : 1D卷积处理时间序列 残差连接加速收敛 softmax输出支持概率攻击 性能优化 : 通过攻击曲线选择最优trace数量 平衡计算成本和攻击成功率 5. 总结 本教学文档详细介绍了如何将深度学习应用于侧信道攻击来破解AES-128加密。关键点包括: 理解AES算法和侧信道攻击原理 正确采集和处理power trace数据 设计适合时间序列分析的深度学习模型 实施有效的概率攻击策略 合理评估攻击效果 这种方法相比传统模板攻击的优势在于无需人工设计特征和近似模型,直接从数据中学习攻击模式,大大简化了攻击设计流程。