一、对于 AES 算法的 DPA 攻击准则(无防护措施下的 AES 实现)

(1) 在第 3 轮列混淆前任意中间值可以用于一阶 DPA 攻击,该攻击将明文的 0, 3 或 15 比特固定

(2) 在第 7 轮轮密钥加后任意中间值可以用于一阶 DPA 攻击,该攻击将密文的 0, 3 或 15 比特固定

(3) 在第 3 轮字节替换前任意两个中间值可以用于二阶 DPA 攻击,该攻击将明文的0, 1, 2, 3, 4, 7 ,11 或 15 比特固定

(4) 在第 8 轮字节替换后任意两个中间值可以用于二阶 DPA 攻击,该攻击将密文的0, 2, 3, 4, 7 或 15 比特固定

(5) 在第 2 轮列混淆前及第 8 轮列混淆后任意两个中间值可以用于二阶 DPA 攻击,该攻击将明文的0, 3 或 4 比特固定并将密文的0, 4 或 3 比特固定

二、对五条准则的解释

1 解释准则 (1) 和 (2)

1.1 攻击第 8 轮轮密钥加操作
  • 指定 v 为第 8 轮轮密钥加操作前的 1 个中间字节,则它的值取决于 9 个密钥字节(其中 1 个来自 \(K_8\),4 个来自 \(K_9\),其余 4 个来自 \(K_{10}\)

  • 在第 8 轮轮密钥加和第 9 轮字节替换过程 \(v=k_0\oplus S^{-1}(u)\),其中 \(k_0\) 来自 \(K_8\),u 为第 9 轮 S 盒输出

  • 在第 9 轮行移位不影响中间字节的值,而列混淆过程中 \(u=m_0’*u_0\oplus m_1’*u_1\oplus m_2’*u_3\oplus m_3’*u_3\),其中 \(m_i’\) 为 MC 逆矩阵的对应字节,\(u_i\) 为 u 所在列经过列混淆后的对应字节

  • 在第 9 轮轮密钥加和第 10 轮过程

    \(u_0=S^{-1}(c_0\oplus k_5)\oplus k_1\)

    \(u_1=S^{-1}(c_1\oplus k_6)\oplus k_2\)

    \(u_2=S^{-1}(c_2\oplus k_7)\oplus k_3\)

    \(u_3=S^{-1}(c_3\oplus k_8)\oplus k_4\)

    其中 \(k_i\)(i <= 4) 为第 9 轮轮密钥对应字节,\(k_j\)(j > 4) 为第 10 轮轮密钥对应字节

  • \(\theta=m_0’*k_1\oplus m_1’*u_1\oplus m_2’*u_2\oplus m_3’*u_3\)

    \(v=k_0\oplus S^{-1}(m_0’*S^{-1}(c_0\oplus k_5)\oplus \theta)\)

    注意到 \(\theta\) 只与三个密文字节即 \((c_1,c_2,c_3)\),当以上密文字节固定时,\(\theta\) 为定值

  • 通过猜测 \(k_5\)\(\theta\) 的值即可进行一阶 DPA 攻击(\(k_0\) 只影响尖峰的正负)

1.2 攻击第 3 轮字节替换操作
  • 指定 v 为第 3 轮字节替换操作后的 1 个中间字节,则它的值取决于 9 个密钥字节(其中 1 个来自 \(K_8\),4 个来自 \(K_9\),其余 4 个来自 \(K_{10}\)
  • \(v=S(m_0*S(m_1*S(p_0\oplus k_0)\oplus \theta)\oplus \delta)\),其中 \(\theta\) 是 3 个明文字节和 4 个密钥字节的函数, \(\delta\) 是 12 个明文字节和 13 个密钥字节的函数
  • 固定 \(p_0\) 外的 15 个明文字节,则 \(\theta\)\(\delta\) 都可以确定,通过猜测 \(k_0\), \(\theta\)\(\delta\) 的值可以进行一阶 DPA 攻击

2 解释准则 (3) 和 (4)

2.1 攻击第 2 轮字节替换操作
  • 指定 v 为第 2 轮某个 S 盒输出,u 为该 S 盒的输入,即 v = S(u)

  • 第 1 轮列混淆和轮密钥加操作过程中 \(u=k_0\oplus m_0*u_0\oplus m_1*u_1\oplus m_2*u_3\oplus m_3*u_3\)

    其中 \(k_0\) 为第 1 轮轮密钥对应字节,\(m_i\) 为 MC 矩阵的对应字节,\(u_i\) 为 u 所在列经过列混淆前的对应字节

  • \(u_0,u_1,u_2,u_3\) 是由 4 个明文字节和 \(K_0\) 中 4 个字节求出的,分别表示为 \((p_0,p_1,p_2,p_3)\)\((k_1,k_2,k_3,k_4)\)

    \(u_0=S(p_0\oplus k_1)\)

    \(u_1=S(p_1\oplus k_2)\)

    \(u_2=S(p_2\oplus k_3)\)

    \(u_3=S(p_3\oplus k_4)\)

  • \(\theta=k_0\oplus m_1*u_1\oplus m_2*u_3\oplus m_3*u_3\),则 \(v=S(m_0*S(p_0\oplus k_1)\oplus \theta)\)

  • 对于另一个中间值 \(\omega\)\(\omega\) 也为第 2 轮 S 盒输出的其中一个字节),考虑两种情况

    • \(v\)\(\omega\) 依赖于不同的 4 个明文字节

      \(v\oplus\omega=S(m_0*S(p_0\oplus k_1)\oplus \theta)\oplus\omega\)

      \(\theta\)\(\omega\) 共涉及 7 个明文字节,当这些明文字节固定时,\(\theta\)\(\omega\) 也被确定

      通过猜测 \(k_1\)\(\theta\) 的值可以进行二阶 DPA 攻击(\(\omega\) 只影响尖峰的正负)

    • \(v\)\(\omega\) 依赖于相同的 4 个明文字节

      \(\omega=S(m_4*S(p_0\oplus k_1)\oplus \theta’)\),其中 \(\theta’\)\((p_1,p_2,p_3)\) 和 4 个密钥字节的函数

      \(v\oplus\omega=S(m_0*S(p_0\oplus k_1)\oplus \theta)\oplus S(m_4*S(p_0\oplus k_1)\oplus \theta’)\)

      \((p_1,p_2,p_3)\) 固定时,\(\theta\)\(\theta’\) 也被确定

      通过猜测 \(k_1\), \(\theta\)\(\theta’\) 的值可以进行二阶 DPA 攻击

2.2 攻击第 2 轮轮密钥加操作
  • 指定 \(v\)\(\omega\) 为第 2 轮轮密钥加操作的输出

  • \(v=m_0*S(m_1*S(p_0\oplus k_0)\oplus \theta)\oplus\delta\)

    \(\omega=m_2*S(m_3*S(p_0\oplus k_0)\oplus \theta’)\oplus\delta’\)

    其中 \(\theta\)\(\theta’\) 是 3 个明文字节和 4 个密钥字节的函数, \(\delta\)\(\delta’\) 是 12 个明文字节和 16 个密钥字节的函数

  • \(v\oplus\omega=m_0*S(m_1*S(p_0\oplus k_0)\oplus \theta)\oplus m_2*S(m_3*S(p_0\oplus k_0)\oplus \theta’)\oplus\delta\oplus\delta’\)

    \(p_0\) 外的 15 个明文字节固定时,\(\theta,\theta’,\delta,\delta’\) 也被确定

    通过猜测 \(k_0\), \(\theta\)\(\theta’\) 的值可以进行二阶 DPA 攻击

3 解释准则 (5)

三、对于 AES 算法的 DPA 攻击准则(有防护措施下的 AES 实现)

原文地址:http://www.cnblogs.com/buaa19231055/p/16881477.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性