一、汉明距离模型

  • 原理:CMOS 电路中电流消耗与反转比特有关

  • 假设:相同数据下同时间总线比特位相同(不考虑非同步效应)、反转比特(0 -> 1 和 1 -> 0)消耗能量相同、消耗能量与汉明距离间存在线性关系

  • 汉明距离形式: \(H(D\oplus R)\) 其中 H() 表示汉明重量,R 和 D 表示总线前后状态

    均值为 m / 2,方差为 m / 4,其中 m 为总线位数

  • 总能量消耗公式

    \(W=aH(D\oplus R)+b\) (1)

    其中 a 为线性增益(斜率),b 为测量偏差、噪声等因素

二、线性相关系数

  • 方差:由(1)式 \(σ_W^2=a^2σ_H^2+σ_b^2\)

  • 汉明距离与消耗能量的相关系数

    \(ρ_{WH}=\frac{cov(W,H)}{σ_Wσ_H}=\frac{aσ_H}{σ_W}=\frac{aσ_H}{\sqrt{a^2σ_H^2+σ_b^2}}=\frac{a\sqrt{m}}{\sqrt{ma^2+4σ_b^2}}\)(2)

    由(2)式当噪声方差接近 0 时相关系数将趋于 1

  • 将模型应用于总线 m 位中的 l 位时,相关系数修改为

    \(ρ_{WH_{l/m}}=\frac{cov(W,H_{l/m})}{σ_Wσ_{H_{l/m}}}=\frac{aσ_H}{σ_W}\frac{cov(H,H_{l/m})}{σ_Hσ_{H_{l/m}}}=ρ_{WH}\frac{\frac{l}{m}σ_H}{σ_{H_{l/m}}}\)

    \(σ(H)=\frac{\sqrt{m}}{2}\)\(σ(H_{l/m})=\frac{\sqrt{l}}{2}\) 代入得

    \(ρ_{WH_{l/m}}=ρ_{WH}\sqrt{\frac{l}{m}}\) (3)

三、基于 CPA 的推理

  • 总线值预测错误时的相关系数计算

    假设 R 为正确的参考状态,则 \(H(D\oplus R)\) 为对汉明距离的正确估计;R’ 为对参考状态的假设,则 \(H’=H(D\oplus R’)\)

    假设 R 与 R’ 有 k 位不同,则相关系数 \(ρ_{WH’}\) 计算如下

    \(H=H_{m-k}+H_k\)

    \(H’=H_{m-k}’+H’_k=H_{m-k}-H_k+k\)

    \(cov(H,H’)=<(H_{m-k}+H_k)(H_{m-k}-H_k)>-<H_{m-k}+H_k><H_{m-k}-H_k>=<H_{m-k}^2>-<H_k^2>-<H_{m-k}>^2+<H_k>^2\)

    \(H_k=\frac{k}{2}\)\(H_{m-k}=\frac{m-k}{2}\)\(H_k^2=σ_{H_k}^2+<H_k>^2=\frac{k}{4}+\frac{k^2}{4}\)\(H_{k-m}^2=σ_{H_{m-k}}^2+<H_{k-m}>^2=\frac{m-k}{4}+\frac{(m-k)^2}{4}\) 代入得

    \(cov(H,H’)=\frac{m-2k}{4}\)

    \(ρ_{HH’}=\frac{cov(H,H’)}{σ_Hσ_{H’}}\frac{m-2k}{m}\)

    \(ρ_{WH’}=\frac{cov(W,H’)}{σ_Wσ_{H’}}=\frac{aσ_H}{σ_W}\frac{cov(H,H’)}{σ_Hσ_{H’}}=ρ_{WH}ρ_{HH’}=ρ_{WH}\frac{m-2k}{m}\)(4)

  • 相关系数应用

    判断预测总线值是否正确,由(4)式当 \(ρ_{WH’}\) 取最大值时表明 \(R=R’\),即对初始总线值(参考状态)的猜测正确

    对于已知的 D 遍历所有的 R 并对每个 R 测出能量和汉明重量的相关系数,最大的即为正确 R 值

  • 应用扩展:对于密码学中常用的其它操作,如算数、逻辑运算以及查找表可以将 H() 函数修改为 \(H(LUT(M*K)\oplus R)\),其中 * 表示 \(\oplus,+,-,OR,AND\) 或其它操作

四、对相关系数的估计

对 N 个任意明文 \(M_i\) 收集 N 个能量迹 \(W_i\),对于每个 R 的备选值,计算 \(H_{i,R}\) 并求得相关系数关于时间的曲线

\(\hat{\rho}_{WH}(R)=\frac{N\sum{W_i H_{i,R}}-\sum W_i\sum H_{i,R}}{\sqrt{N\sum W_i^2-(\sum W_i)^2}\sqrt{N\sum H_{i,R}^2-(\sum H_{i,R})^2}}\)(5)

五、实验结果

  • 实验过程:在一个 8 位芯片上测试异或算法

    • 加载一个字节 \(D_1\) 到累加器
    • \(D_1\) 和常量 \(D_2\) 进行异或
    • 将结果从累加器存储到目标存储单元

    对上述程序执行 256 次,每次选用不同的 \(D_1\) 值(0-255)作为明文 \(M_i\),测定消耗能量 W 并计算 H 值,画出相关系数关于时间的曲线

  • 在相关性强的位置参考状态分别为 \(D_1\) 地址和 XOR 指令 OpCode

  • 在 32 位芯片上预测 32 位参考状态和只预测 4 位参考状态的相关系数比接近 \(\sqrt8\),如(2)式所示

原文地址:http://www.cnblogs.com/19231055zjf/p/16804361.html

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