文章信息

  • 作者:Lichao Wu, Amir Ali-pour, Azade Rezaeezade, Guilherme Perin and Stjepan Picek

  • 单位:Radboud University, The Netherlands Delft University of Technology, The Netherlands Leiden University, The Netherlands Independent Researcher

  • 出处:Eprint

  • 标题:Breaking Free: Leakage Model-free Deep Learning-based Side-channel Analysis

  • 日期:2023年7月17日

背景

现如今基于深度学习结合侧信道攻击已经成为了较为强大的攻击手段,攻击者将采集到的原始能量迹经预处理后的兴趣点作为特征,选择的算法某一处泄露的中间值作为标签来完成攻击。通常,研究人员通过汉明重量或身份等泄露模型来完成对标签的刻画,然而在实际攻击环境中,采用这种预设的泄露模型可能会得到较差的性能[1]

文章内容

字节建模

假设密钥为$$k^*$$, 对应第i个密钥、(明文或密文)字节为ki,dik_i, d_i, 令y=f(ki,di)y=f(k_i, d_i),泄露函数为ψ\psi,噪声ZZ服从正态分布,标签值则对应为ψ(y)+Z\psi(y) + Z

多比特建模

每个字节都对应8个bit,相较于HW,多比特建模把所有bit都考虑在内,而且并不需要了解某个bit的重要性。

仿真

泄露模型

上图是四种不同的泄露模型,HW跟ID泄露模型已有实现的代码,贴出来自己写的case3与case4的伪代码,这里+z并不知道要如何体现出来,应该是不用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def b(y):
return binarr(y) #将y转为二进制数组

def case3(y):
leak = 0
for i in range(2, 6):
leak += b(y)
return leak

def case4(y):
leak_1 = 0
leak_2 = 0
for i in range(4):
if i == 0:
leak_1 = b(y)[i]
else:
leak_1 *= b(y)[i]
for j in range(4, 8):
if j == 4:
leak_2 = b[y][j]
else:
leak_2 *= b[y][j]
return leak_1 + leak_2

实验结果

这个计算方法需要等公开源码了再看

HW&ID泄露模型对单独计算每个bit的准确率

攻击效果

四个数据集上多Bit多任务模型攻击结果


  1. Lennert Wouters, Victor Arribas, Benedikt Gierlichs, and Bart Preneel. Revisiting a methodology for efficient cnn architectures in profiling attacks. IACR Transactions on Cryptographic Hardware and Embedded Systems , 2020(3):147– 168, Jun. 2020. ↩︎