文献实验复现笔记-One Network to rule them all. An autoencoder approach to encode datasets
前置文章: 文献阅读笔记
数据集
第一次处理侧信道攻击的数据集,过程比较坎坷,记录较为详细一点。
ASCAD fixed key
数据集介绍:6w条能量迹,700个特征,算法:AES128,采集设备:ATMega8515
作者选择使用5w条能量迹作为训练集,1w条作为测试集。能量迹下载地址,解压后的目录如图1所示。
红色框中的文件是后来自己添加的
环境需求:本机Python 3.8.16
, pip h5py, numpy, matplotlib, tensorflow 2, keras
Mac电脑配置tf2环境另开一章。
数据集生成
原始数据集并没有一阶掩码AES128的数据,需要执行对应文件去生成。阅读源码可知输入参数个数为1时将读取params文件内的参数。
1 | python ASCAD_generate.py "ATMEGA_AES_v1/ATM_AES_v1_fixed_key/example_generate_params" |
这里ATMEGA_AES_v1/ATM_AES_v1_fixed_key/example_generate_params
是配置参数的文件,内容如下,在生成数据时目前只需要修改labeled_traces_file的值,即指定输出能量迹文件地址。
1 | example_generate_params |
报错
1
2
3
4
Error: provided file path '' does not exist!
注释掉ASCAD_generate.py的第154行
check_file_exists(os.path.dirname(labeled_traces_file))
以此类推,此数据集中生成其他能量迹只需要修改对应param文件中的参数,后续会在基于深度学习的侧信道攻击入门中补充。
ASCAD fixed key with desynchronization
在之前的命令python ASCAD_generate.py
直接回车即可生成
序号 | 文件名 |
---|---|
1 | ASCAD_desync50.h5 |
2 | ASCAD_desync100.h5 |
ASCAD variable key
CHESCTF
DPAcV42
自编码器
作者这里采用的是Vanilla AutoEncoder(结构较简单的自编码器), 文章中将自编码器的Hidden Layer(隐藏层)设置为1层,即无论输入多少维数据,经过Encoder后都降为500层,超参数如表1所示。
Hyperparameters | Training values |
---|---|
Optimizer | Adamax |
Epochs | 500,700,1000 |
Learning_rate | 0.01, 0.001, 0.0025 |
Batch_size | 200, 400 |
Shuffle | True |
表1 AE超参数
代码实现
1 | import keras |
1 | f = h5py.File("../../datasets/ASCAD/ASCAD_fixed.h5", 'r') |
1 | # 构建VAE模型 |
1 | # 训练 |
1 | plt.plot(history.history['loss']) |
这loss???
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 全世界的面我都吃一遍!
评论