首页 > 其他分享 >2006 An AES smart card implementation resistant to power analysis attacks

2006 An AES smart card implementation resistant to power analysis attacks

时间:2022-11-12 19:24:24浏览次数:53  
标签:AES 字节 power implementation 随机化 中间 DPA 掩码 操作

一、对 DPA 攻击的反制措施

1 掩码

  • 定义:所有中间值通过一个随机值(掩码)m 隐藏起来,该掩码由密码设备内部生成,通常与中间值进行异或
  • 原理:由于掩码是随机的且对攻击者未知,被掩码中间值无法与能量迹对应起来
  • 问题:只要有使用相同掩码的两个中间值(产生掩码和对中间值使用掩码),即可进行二阶 DPA 攻击
  • 解决办法:将掩码方案和其它反制措施结合起来

2 随机化

  • 定义:随机改变密码算法的执行序列,将对中间值的操作随机分布在一段时间内,降低中间值和能量消耗的相关性

  • 具体措施:插入随机伪操作、等待状态

  • 分类:

    (1)在算法执行前后加入额外轮,隐藏算法的开始或结束时间

    (2)在算法内部随机化操作序列

  • 效果:根据 [CCD00],如果中间值对应某一确定时刻的概率为 p,则所需能量迹数量为 \(p^2\)

二、AES 实现

1 反制措施

将掩码和随机化结合起来,所有轮中间值都使用了掩码,第一轮和最后一轮为随机化区域

2 掩码实现(见《能量分析攻击》9.2.1)

  • 使用 6 个不同掩码字节,前 2 个 M 和 M' 为字节替换操作的输入和输出掩码,其余 4 个 \(M_1\), \(M_2\), \(M_3\) 和 \(M_4\) 为列混淆操作的输入掩码

  • 对加密函数的掩码

    • 预计算被掩码 S 盒 S' 使得 \(S'(x\oplus M)=S(x)\oplus M'\)

    • 预计算列混淆输出掩码 (\(M_1'\), \(M_2'\), \(M_3'\), \(M_4'\)) = MixColumns(\(M_1\), \(M_2\), \(M_3\), \(M_4\))

    • 轮函数

      • 对明文使用 (\(M_1'\), \(M_2'\), \(M_3'\), \(M_4'\)) 掩码
      • 轮密钥加操作将掩码转换为 M
      • 使用 S' 盒进行字节替换操作将掩码转换为 M'
      • 列混淆输入掩码将掩码转换为 (\(M_1\), \(M_2\), \(M_3\), \(M_4\))
      • 列混淆操作将掩码转换为 (\(M_1'\), \(M_2'\), \(M_3'\), \(M_4'\))
      • 行移位操作不改变掩码

      注:此处轮函数与传统 AES 算法实现顺序不同是为了方便随机化

    • 最后一轮执行轮密钥加操作后消除掩码

  • 对密钥方案的掩码

    使用 \(M_i'\oplus M\) 掩码

3 随机化实现

3.1 随机化操作序列(只在随机化区域实现,即第 1 轮行移位前和第 9 轮行移位后)

在 AES 算法每一轮轮密钥加和字节替换操作重复进行多次且相互独立,列混淆操作列的顺序也可以进行替换

3.2 前后加入额外轮

在智能卡中其它存储区域,基于与真实状态地址相同汉明重量的地址上的虚拟状态生成伪操作

三、安全性分析

1 理论分析

  • 所有中间值都进行掩码处理,能够抵抗 SPA、一阶 DPA 和模板攻击
  • 随机化区域内操作在确定位置的概率为 \(p=\frac{1}{16+4×n}\),需要 \((16+4×n)^2\) 倍能量迹,能够抵抗二阶 DPA 攻击
  • 随机化区域外操作已经经过列混淆处理,需要猜测的密钥至少为 32 位,实际难以实现

2 实践分析

  • 没有一阶 DPA 攻击能够成功
  • 选定第一轮字节替换的 2 个输出字节(随机化区域内)作为 2 个中间值进行二阶 DPA 攻击,相关系数从 0.24 降为 0.04

标签:AES,字节,power,implementation,随机化,中间,DPA,掩码,操作
From: https://www.cnblogs.com/buaa19231055/p/16884438.html

相关文章