首页 > 其他分享 >2010 Principles on the Security of AES against First and Second-Order Differential Power Analysis

2010 Principles on the Security of AES against First and Second-Order Differential Power Analysis

时间:2022-11-11 22:13:15浏览次数:71  
标签:AES 字节 Power Differential 密钥 delta theta oplus omega

一、对于 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)

  • 指定 \(v\) 为第 2 轮字节替换操作后的某个中间字节,\(\omega\) 为第 8 轮轮密钥加操作前的某个中间字节

  • 有两种二阶 DPA 攻击方式

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

      其中 \(\theta\) 是 3 个明文字节和 4 个密钥字节的函数,\(\omega\) 是 4 个密文字节和 9 个密钥字节的函数

      当与 \(\theta\) 和 \(\omega\) 相关的明密文字节固定时,这两个变量也被确定

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

    • \(v\oplus\omega=S^{-1}(m_0'*S^{-1}(c_0\oplus k_0)\oplus\theta)\oplus\delta\)

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

      当与 \(\theta\) 和 \(\delta\) 相关的明密文字节固定时,这两个变量也被确定

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

三、实验验证

3.1 对 Herbst 的攻击

3.2 对 Tillich 的攻击

四、对于 AES 算法的 DPA 保护准则

  • 对准则 (1) 至 (5) 涉及的任何一个或两个字节都不应处于未保护状态
  • 对原则 (3) 至 (5) 涉及的任何两个字节都不应仅有同一掩码保护
  • 至少应该充分保护 AES 的前两轮半和后三轮(具体取决于攻击环境的方式)

标签:AES,字节,Power,Differential,密钥,delta,theta,oplus,omega
From: https://www.cnblogs.com/buaa19231055/p/16882172.html

相关文章