分组密码算法的模板攻击

本文详细介绍了针对密码芯片的模板攻击,这是一种侧信道攻击方式,通过获取和分析测试芯片的功耗信息来破解密码。文章详细阐述了模板攻击的两个主要阶段——模板构建和模板匹配,以及现有模板攻击存在的不足,如模板数量过多、协方差矩阵规模大和样本容量问题,并提出了解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  针对密码芯片的模板攻击属于侧信道攻击的一种,它要求攻击者能够获得一个与目标芯片相同且可控的芯片,称为测试芯片,继而通过采集测试芯片工作中的功耗信息,分析其数据相关性与操作相关性,实现对密码芯片的攻击。

模板攻击的一般步骤

  模板攻击通常由两个阶段构成:第一个阶段对侧信道信息数据进行刻画(又称为模板构建);第二个阶段利用第一步所得特征实施攻击(又称为模板匹配)。

模板构建

  在对密码芯片攻击前,需要在测试芯片上,为每个猜测密钥构建一个模板。这里的模板即是由一个均值向量 MMM 和协方差矩阵 COVCOVCOV构成。假设所攻击的密码芯片所使用的密钥长度为 nnn bits,因此该算法所有可能的密钥个数为 2n2^n2n个,所需要构建的模板总数也为2n2^n2n个。具体构建方法如下:

   a) 求取均值矩阵 MMM

   首先针对每一个猜测密钥,采集测试芯片使用该密钥进行运算时的侧信道信息。为确保所构建模板的精确性,需要进行多次测量。即测量次数为 mmm ,采样点个数为 lll,即得到的侧信道信息对应的曲线有 mmm 条,每条曲线包含 lll 个点,这样就得到了一个 m×lm \times lm×l的矩阵。其中,第 iii 条曲线可表示为 [ti1,ti2,⋯til],i∈{ 1,2,⋯m}[t_{i1}, t_{i2}, \cdots t_{il}], i\in \{1,2,\cdots m\}[ti1,ti2,til],i{ 1,2,m}。然后,对所有 mmm 次测量结果求取平均值,将第 jjj 个采样点的平均值记录为 MjM_jMj,计算公式如下:
Mj=∑i=1mtij/mM_j = \sum_{i=1}^mt_{ij}/mMj=i=1mtij/m
计算所有采样点的均值,组成均值向量 MMM, 如下式:
M=[M1,M2,⋯ ,Ml]=[∑i=1mti1/m,∑i=1mti2/m,⋯ ,∑i=1mtil/m]M = [M_1, M_2, \cdots, M_l] = [\sum_{i=1}^mt_{i1}/m, \sum_{i=1}^mt_{i2}/m, \cdots, \sum_{i=1}^mt_{il}/m]M=[M1,M2,,Ml]=[i=1mti1/m,i=1mti2/m,,i=1mtil/m]

   b) 求取噪声矩阵 NNN

  在求取均值矩阵的过程中,每次测量的噪声都得到了抑制。由于所采集的泄露信息都是密码芯片处理相同数据产生。因此,泄露信息中的随机噪声可以通过使用每一次采集的曲线与均值矩阵做差的方法获得。

N=[t11−M1t12−M2⋯t1l−Mlt21−M1t22−M2⋯t2l−Ml⋮⋮⋱tm1−M1tm2−M2⋯tml−Ml] N = \left[ \begin{array}{cccc} t_{11} - M_1& t_{12} - M_2& \cdots & t_{1l} - M_l \\ t_{21} - M_1& t_{22} - M_2& \cdots & t_{2l} - M_l \\ \vdots & \vdots & \ddots \\ t_{m1} - M_1& t_{m2} - M_2& \cdots & t_{ml} - M_l \end{array} \right] N= t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_74043383

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值