当前位置: 首页 > news >正文

侧信道攻击的评估指标

一、密钥排名(Key Rank)

密钥排名是侧信道攻击中用于评估攻击效果的基础概念。它指的是在每次攻击实验中,攻击者根据能量迹或其他泄漏信息对所有可能的密钥候选值进行评分,并按得分高低进行排序的过程。例如,在AES-128的攻击中,一个密钥字节有256种可能取值,攻击者会计算每个候选密钥的匹配分数(如相关系数、似然概率等),并生成一个从最可能到最不可能的排序列表。这个列表即为密钥排名,而正确密钥在该列表中的位置直接反映了攻击的有效性。

密钥排名的数学表达可以定义为:

R=argsort_{k\in \{0,1,...,255\}}(-score(k))

 其中,score(k) 是密钥候选 k 的匹配分数(如相关系数或模板匹配概率),R 是按分数降序排列的密钥索引列表。正确密钥k^{*}的秩 rank(k^{*})是该列表中k^{*}的位置(从1开始计数)。

密钥排名不仅用于单次攻击分析,还可以通过多次实验观察其统计特性。例如,如果正确密钥在90%的实验中都排名前5,说明攻击方法非常有效;而如果其排名分布较为分散,则表明攻击稳定性较差。因此,密钥排名是后续计算猜测熵和成功率的基础。

在实际应用中,密钥排名的生成方式因攻击方法而异。例如,在相关能量分析(CPA)中,分数是能量迹与假设中间值的Pearson相关系数;在模板攻击中,分数是能量迹与模板的似然概率;而在深度学习中,分数可能是神经网络输出的类别概率。无论采用何种方法,密钥排名的核心目标都是量化攻击者对正确密钥的逼近程度。

二、猜测熵(Guess Entropy, GE)

猜测熵是衡量侧信道攻击稳定性的重要指标,它表示正确密钥在密钥排名中的平均位置。与单次实验的密钥排名不同,猜测熵通过对多次实验的结果取平均,消除了随机波动的影响,从而更全面地反映攻击方法的性能。例如,若猜测熵为3,意味着攻击者平均需要尝试3次猜测才能找到正确密钥,这比随机猜测高效得多。

猜测熵的数学定义为:

GE=\mathbb{E}[rank(k^{*})]

 其中,\mathbb{E} 表示期望值,rank(k^*) 是正确密钥在单次实验密钥排名中的位置。在实际计算中,通常通过多次独立实验的秩取平均来估计:

GE\approx \frac{1}{M}\sum_{i=1}^{M} rank_i(k^*)

 其中M是实验次数,rank_i(k^*)是第i次实验中k^*的秩。

猜测熵的值域为[1,256](对8位密钥字节而言),需要注意在代码实现时为了方便通常设置为[0,255]。值越小,攻击效果越好:

  • GE = 1:完美攻击,正确密钥始终排名第一。

  • GE ≈ 128:攻击无效,等同于随机猜测。

  • 1 < GE ≪ 128:攻击有效,且GE越小,所需能量迹越少。

 猜测熵的实用性体现在其对攻击资源的量化。例如,在评估防护措施时,若某掩码方案使GE从5升至50,说明其显著增加了攻击者的猜测成本。此外,GE还可用于比较不同攻击方法的效率,如深度学习模型中CNN与LSTM的GE差异可能揭示其特征提取能力的优劣。

三、成功率(Success Rate, SR)

成功率是侧信道攻击中最直观的指标,表示正确密钥在单次实验中直接排名第一的概率。它反映了攻击的“一击即中”能力,适用于评估攻击的即时有效性。例如,SR=80%意味着攻击者在100次实验中有80次能立即恢复正确密钥,无需进一步猜测。

成功率的数学定义为:

SR=\mathbb{P}(rank(k^*)=1)

 其中\mathbb{P}表示概率。通过统计多次实验中正确密钥排名第一的频率,可估计SR

SR\approx \frac{1}{M}\sum_{i=1}^{M}\mathbb{I}(rank_i(k^*)=1)

 这里\mathbb{I}是指示函数(若条件成立则为1,否则为0),M是实验次数。

在实际攻击场景中,SR的定义可以根据具体研究需求灵活调整,不一定要求正确密钥严格排名第一,成功率的定义可以扩展为正确密钥的排名落在前r位的概率,即广义或宽松的成功率:

SR(r)=\mathbb{P}(rank(k^*)\leqslant r)

 其中r是人为设定的阈值(如r=1,5,10等),相应的,SR的估算公式为:

SR(r)\approx \frac{1}{M}\sum_{i=1}^{M}\mathbb{I}(rank_i(k^*)\leqslant r)

 至于为什么要定义宽松的成功率指标,是因为在一些带防护或高噪声的环境中,攻击效率会变低,严格成功率极低,此时宽松的成功率更能反映实际威胁。此外,当训练数据较少时,模型可能无法完美区分正确密钥,但正确密钥仍可能稳定出现在前几位。当正确密钥稳定出现在前几位时,我们仅需要少量的穷举猜测便可找到真正的正确密钥。

相关文章:

  • SpringBoot电脑商城项目--新增收获地址
  • springboot入门之路(一)
  • 【AI Study】第四天,Pandas(3)- 数据处理进阶
  • Redission实现的分布式锁的可重入性
  • Linux驱动学习day5
  • 利用Java进行验证码的实现——算数验证码
  • vue | vue 插件化机制,全局注册 和 局部注册
  • docker|redis的面试题——七道
  • AppBarLayout+ CoordinatorLayout,ViewPager2为什么不会覆盖AppBarLayout
  • Saucer 页面嵌入使用举例
  • (LeetCode 每日一题) 2966. 划分数组并满足最大差限制 (贪心、排序)
  • 【java】@RestController和@Controller的区别
  • 【python 读取抖音/小红书/微博今日头条/百度热点等平台的热点新闻】
  • C++ Primer Plus 9.2.7 mutable
  • Windows11下搭建Raspberry Pi Pico编译环境
  • AutoHotkey 脚本生成器:一键打开网页到指定位置(v2版本:自定义位置)
  • C语言——枚举
  • 基于python的web系统界面登录
  • 前端开发面试题总结-vue2框架篇(四)
  • 利用Java进行验证码的实现——字母数字验证码
  • 有哪些网站可以找兼职做/网络营销题库案例题
  • wordpress怎么注册用户/seo点击
  • 网站建设中源码编程同样重要/2022年关键词排名
  • 吐鲁番网站建设/手机app软件开发
  • 网站建设公司3lue/2023新冠结束了吗
  • 岳阳公司网站制作/惠州seo优化服务