NTRUEncrypt掩码在ARM上的评估
基于ARM Cortex‐M4的 NTRUEncrypt掩码实际评估
托马斯·沙姆贝格尔1(B),奥利弗·米施克2,和约翰娜·塞普尔韦达1
1慕尼黑工业大学,德国慕尼黑 {t.schamberger,johanna.sepulveda}@tum.de
2英飞凌科技公司,德国慕尼黑 oliver.mischke@infineon.com
摘要
为了应对大规模量子计算带来的未来威胁,被认为对已知量子算法具有足够安全性的密码方案日益流行,并正在由美国国家标准与技术研究院(NIST)进行标准化。其中一种更具前景的所谓后量子方案是 NTRUEncrypt,该方案经受了科学界超过20年的审查。
与AES等经典算法类似,NTRUEncrypt的实现也必须防范物理攻击。尽管过去已提出多种掩码和隐藏防护措施,但目前仍缺乏对 NTRUEncrypt掩码的实际功耗分析评估。因此,我们对基于索引的乘法以及使用三元多项式的现代参数集应用加法掩码进行了实际评估。利用 Cortex‐M4微控制器中可用的SIMD指令,我们能够实现加法掩码,且相较于未掩码的实现没有显著的性能开销。我们的实现使用硬件模型和两百万条测量迹线未观察到明显的一阶泄漏。然而,针对我们使用SIMD指令的实现(同时处理掩码和被掩码数据)以及用于对比的顺序实现,成功演示了二阶攻击。最后,我们表明,将我们的低成本掩码防护措施与一种已知且同样高效的洗牌方案结合使用,可以在不造成较大性能损失的情况下,提供良好的权衡,实现高水平的安全性。
关键词 :后量子密码学 · Side-channel分析 · NTRUEncrypt · Countermeasures · Masking
1 引言
随着所谓秀尔算法的发布[11]现有的公钥加密算法在面对大规模量子计算机时被认为已不再安全。为了缓解这一威胁,必须转向基于其他抗量子数学问题的加密算法。
这一过渡可能涉及的方案研究领域被称为后量子密码学。尽管大规模量子计算机的开发仍处于持续研究阶段,但美国国家标准与技术研究院已认识到该威胁的严重性,并启动了后量子方案的标准化流程。
一个有希望被标准化的候选方案是公钥加密方案NTRUEncrypt [14]。这种基于格的算法自首次发表以来,尽管经历了一些参数变更,但在过去的二十年中经受住了数学密码分析的考验,时间可追溯至 [4]。然而,自从科彻等人 [9],首次发表侧信道攻击以来,implementations不能再在黑盒场景下进行分析。为了提供安全实现,还需额外评估其对物理侧信道攻击的抗性。
针对NTRUEncrypt的主要侧信道攻击是发表在[10]中的相关功耗分析攻击(CPA)。该攻击针对算法中利用一个乘法操作数的稀疏结构进行多项式乘法的实现,以恢复相应的密钥。在该论文中,作者还提出了几种不同的防护措施,其中随机初始化和洗牌对策在[10,15]中被证明是不安全的。据我们所知,此前尚未对所提出的掩码防护措施进行过实际评估。在本研究中,我们对现代参数集进行了此项评估。我们展示了两种不同的多项式乘法的掩码实现,并在 ARM Cortex‐M4微控制器上成功实施了二阶攻击。
我们的贡献
我们调整了[10]的相关功耗分析,以适用于使用所谓三元多项式的现代参数集,并展示了成功的攻击结果。为此,我们修改了乘法算法,以利用三元多项式的稀疏结构。与[10]不同,我们在实验验证其适用于我们的攻击目标后,在攻击中采用了汉明重量功耗模型。
我们展示了 [10] 针对三元多项式实现的掩码防护措施的两种不同的汇编实现。在我们的实验设置中,即使在汉明重量功耗模型下进行多达两百万条迹的相关功耗分析攻击,也未能发现可利用的一阶泄漏。
第一种实现以顺序方式执行被掩码密文的乘法和掩码更新。这种方法的缺点是执行时间大约增加了一倍,因为同一算法必须执行两次。我们展示了通过结合被掩码值的泄露与掩码本身的泄露所实现的成功双变量二阶攻击。我们的第二种实现利用了目标平台ARM Cortex‐M4的SIMD指令,从而在无性能损失的情况下计算掩码的变化。在此实现中,被掩码值的乘法和掩码更新是并行执行的。我们展示了使用零偏移二阶CPA的成功攻击结果。
最后一步中,我们表明将随机密钥旋转洗牌防护措施[13]与我们的掩码实现相结合后,在我们的设置上使用两百万条迹即可有效防御二阶攻击。
Outline .在第2节中,我们回顾NTRUEncrypt及其易受攻击的乘法操作。接着,在第3节中,我们讨论针对NTRUEncrypt的功耗分析攻击的先前工作以及提出的防御措施。在第4节中,我们针对使用三元多项式的最新参数集调整了已发表的相关功耗分析方法。在第5节中,我们描述了两种掩码实现的多项式乘法。两种实现的一阶和二阶攻击结果在第6节中展示。最后,我们在第7节中得出结论。
2 NTRUEncrypt
NTRU密码系统最初由霍夫施泰因等人在 1998[4]中提出。由于原始算法多年来发生了重大演变,本章概述了该算法的各个方面,涵盖了其在IEEE 1363.1‐ 2008[8]中的标准化版本以及提交至NIST后量子密码学竞赛第一轮的版本[14]。
2.1 多项式表示法与符号
NTRUEncrypt 的主要元素是以下卷积多项式环中的多项式,其形式化描述如下
$$ R= Z[x] (x^N −1) $$,
$$ R_p= (Z/pZ)[x] (x^N −1) $$,
$$ R_q= (Z/qZ)[x] (x^N −1) $$. (1)
本质上,这意味着每个多项式的次数最多为 N −1,并且具有整数系数。
对于环$R_p$和 $R_q$,多项式的系数分别对 p和 q取模。这得到如下形式的多项式:
$$ a(x)= a_0+ a_1x+ a_2x^2+ a_3x^3+ · · ·+ a_{N−1}x^{N−1} ∈ R, R_q , R_p $$ (2)
随着NTRUEncrypt算法的不断发展,提出了两种不同类型的参数集。它们的主要区别在于模p参数的选择 p。该参数定义了私钥多项式的结构,因此为不同类型的多项式命名至关重要。在[1]中,多项式 a(x)的不同类型被定义为:
–二元多项式 $(p= 2)$:
$$ B(d):\begin{cases} a(x) \text{ has } d \text{ coefficients equal to } 1 \ a(x) \text{ has all other coefficients equal to } 0 \end{cases} $$
–三元多项式 $(p= 3)$:
$$ T(d+ 1, d): \begin{cases} a(x) \text{ has } d+ 1 \text{ coefficients equal to } 1 \ a(x) \text{ has } d \text{ coefficients equal to } −1 \ a(x) \text{ with other coefficients equal to } 0 \end{cases} $$
需要注意的是,早期的参数集 [7]建议使用二元多项式,而近期的出版物 [3,14]以及标准化版本 [8]则采用三元多项式。标准中给出的典型参数集使用的 N 值范围在 401< N< 1499之间,而 q 固定为 2048。
2.2 算法描述
本章根据NIST提交文件的支撑文档描述了NTRUEncrypt的公钥加密变体,在 [14],中被称为“ntru‐pke”。为了实现CCA‐2安全性,作者使用NAEP加密方案实例化NTRU,如[7]所述。该方案的附加填充操作被简写,因为它们不影响侧信道讨论。
算法的一个实例由参数集{N,p, q}描述,该参数集定义了所使用的多项式环,以及参数 d,用于描述所使用的二元或三元多项式中非零系数的数量。基于特定的参数集,可以构造私钥多项式f及其对应的公钥h。加密函数使用公钥多项式h对消息m进行加密。
我们将算法的描述限定在解密函数,因为该函数是算法执行过程中唯一将已知输入(即密文 e)与密钥多项式 f 结合的环节,而这是实施侧信道攻击的必要条件。
解密
NTRUEncrypt的解密过程如算法1所述。利用私钥f和公钥h,可对密文e进行解密。在后续讨论中需要注意的是,私钥f是 T或 B中的稀疏多项式,而密文e属于 $R_q$。密钥以 $p · f+ 1$的形式使用,因为这可以在解密过程中省去一次乘法运算[6]。
算法1. NTRUEncrypt ‐ 解密
输入: 私钥 f,公钥 h和密文 e
1: $ m′←(p · f+1) ∗ e \mod p $
2: $ t← e− m′ $
3: $ mmask← Sampler(t) $ $ mmask ∈ T(d+1, d)$ 或 $ B(d) $
4: $ m= m′+ mmask \mod p $
5: $ r← Sampler(m|h) $ $ r ∈ T(d+1, d)$ 或 $ B(d) $
6:如果 $ p · r ∗ h= t $ 那么
7:结果 ←m
8:否则
9:结果 ←⊥
输出: 结果
2.3 多项式运算
如前几章所述,该算法的所有变量均为卷积多项式环中的元素。所用环的主要性质是元素的次数最多为 N − 1。因此,对环元素进行算术运算时必须满足此性质。此外,还需要进行模运算
对结果多项式的每个系数执行相应的操作,具体取决于相应环。
两个多项式的乘法通过相应环中的循环卷积乘积来执行。在[5]这两个多项式的乘积 a(x) ∗b(x)定义为:
$$ a(x) ∗ b(x)= \sum_{k=0}^{N−1} \left( \sum_{i+j≡k(\mod N)} a_ib_j \right) x^k $$ (3)
换句话说,公式(3)可以看作是两个多项式的乘法,并通过多项式长除法对结果进行关于$(x^N −1)$的约简。卷积乘积用符号(∗)表示,而与一个因子的简单乘法用(·)表示。
由于卷积乘积是NTRUEncrypt的瓶颈操作,因此有许多关于该乘法优化实现的出版物。需要注意的是,IEEE‐1363.1[8]中的标准化版本和 NTRUEncrypt提交至NIST的版本[14]均未定义具体的乘法实现方式。
一种面向资源受限设备的流行实现方式利用了二元或三元多项式的稀疏结构。该算法的所有卷积乘积均有一个稀疏多项式作为操作数,情况正是如此。
这一点在算法1的第一行也成立,因为$(p · f+ 1) ∗e$可重写为$(p · f ∗ e+ e)$。在 [1]中,作者提出了算法2,用于一个位于 $R_q$中的多项式与一个二元多项式 B(d)的乘法运算。通过该算法,作者将系数的乘法替换为基于二元多项式中1的索引的加法运算。由于二元多项式设计上是稀疏的,因此值为零的系数可以跳过,从而减少了需要执行的加法次数,实现了更快的乘法。需要注意的是,在假设系统无缓存的情况下,该算法可被视为恒定时间算法,因为条件分支仅依赖于算法的已知参数。
算法2 基于索引的二进制乘法
输入: $ a(x) ∈ B(d) $(存储为数组 a[d],索引为 ai); $ b(x) ∈ R_q $
1:初始化一个大小为 2N 的临时数组 t
2:对于 $ 0 ≤ j< 2N $ 执行 do 使用零初始化 t(x)
3: $ t_j← 0 $
4:对 $ 0 ≤ j< d $ 执行
5:对 $ 0 ≤ k< N $ 执行
6: $ t_{k+a[j]}← t_{k+a[j]}+ b_k $ 将多项式 b(x) 加到位置 a[j]
7:对 $ 0 ≤ j< N $ 执行
8: $ c_j←(t_j+ t_{j+N}) \mod q $ 模q约简 by $(x^N − 1)$
输出: $ c(x) ∗ b(x) $
算法3. 基于索引的三元乘法
输入: $ a(x) ∈ T(d+1, d) $(以数组 aones[d+1] 和 amones[d] 存储); $ b(x) ∈ R_q $
1:初始化一个大小为 2N 的临时数组 t(x)
2:对 $ 0 ≤ j< 2N $ 执行 do 将 t(x)初始化为零
3: $ t_j← 0 $
4:对 $ 0 ≤ j< d+1 $ 执行循环
5:对 $ 0 ≤ k< N $ 执行循环
6: $ t_{k+aones[j]}← t_{k+aones[j]}+ b_k $ 在位置 aones[j] 添加 b(x)
7:对 $ 0 ≤ j< d $ 执行循环
8:对 $ 0 ≤ k< N $ 执行循环
9: $ t_{k+amones[j]}← t_{k+amones[j]} − b_k $ 在位置 amones[j] 减去 b(x)
10:对于 $ 0 ≤ j< N $ 执行 do
11: $ c_j←(t_j+ t_{j+N}) \mod q $ 模q下对进行$(x^N − 1)$约简
输出: $ c(x) ∈ R_q= a(x) ∗ b(x) $
如第2.1节所述,近期的参数集使用了三元多项式。由于这些多项式同样具有稀疏性,因而仅包含1和‐1,乘法运算再次可以基于非零系数的索引抽象为加法或减法。我们将算法2针对三元多项式的适配版本在算法3中给出。
3 相关工作
本文重点研究基于索引乘法的NTRUEncrypt软件实现,如第2.3节所述。本章概述了针对使用二元多项式实现的此类方案所进行的功耗分析攻击的前期工作。
对NTRUEncrypt的主要功耗分析攻击是一种相关功耗分析,该方法发表于[10]。通过该攻击,作者针对私钥 f与密文 e的乘法运算,因为这是私钥唯一涉及攻击者可控制输入的操作。如果此乘法运算采用算法2中所述的基于索引的方法,则攻击者可以利用
=[1, 3, 4, 6]。)
所有针对系数 e0的加法均已标出。
第一个密文系数的加法 e0由私钥中1的索引决定 f。这种乘法的一个示例如图 1所示。
所有 d 轮加法中,密文系数 ei 按照顺序依次与对应的临时结果数组元素 ti 的内容相加,从 e0 开始到 eN−1 结束。根据与 e0 的加法操作(如图 1所示),可以找出每一轮密钥索引之间的差值。[10] 的攻击对所有轮次 j ≥ 1 分别执行独立的相关性功耗分析,攻击目标是 ti 与 e0 相加时的汉明距离(HD(ti, ti+ e0))。基于对相关密钥索引差值的假设,可以计算出 ti 的相应值。在各个相关性功耗分析成功恢复所有索引差 wi 后,可通过穷举搜索找到第一个密钥索引的位置。在本文后续部分,我们将索引 f[i] 和 f[i+ 1] 之间的差值记为 wi。例如,第一个索引 f[0] 和第二个索引 f[1] 之间的差值将称为 w0。
除了他们的攻击外,[10]的作者还提出了三种不同的防御措施:
1. 随机初始化 t:临时结果数组 t用不同的随机值 ri进行初始化,这可以在高阶差分功耗分析(HD)场景中的第一次寄存器覆写期间提供帮助。
2. 对密文 e的掩码:通过模加法,该防护措施使用随机值对每个单独的系数 ei进行掩码。本文对此防护措施进行了详细评估。
3. 洗牌:所有 d加法轮次的顺序可以随机打乱,因为顺序对最终结果没有影响。理论上,洗牌防护措施可以通过增加迹的数量来破解,因此作者仅建议将此防护措施与掩码结合使用。
已有研究表明,针对随机初始化防护措施,可通过二阶相关功耗分析[10]和一阶碰撞攻击[15]实现成功攻击。二阶相关功耗分析仍然针对的是汉明距离 HD(ti, ti+ e0),该距离被防护措施修改为HD(ti+ri, ti+ri+e0)。作者表明,将 HD(ri, ti+ ri) 的功耗从 HD(ti+ ri, ti+ ri+ e0) 中减去,可作为预处理函数,用于基于假设功耗 HW(ti) 对未掩码的值 − HW(e0) 发起攻击。
为了执行一阶碰撞攻击,攻击者必须在使用不同掩码 ri 对 t 进行初始化阶段时观察其功耗 Ti。在添加最后一个密文系数 eN−1 期间, Ti 与功耗之间的最高相关性允许计算私钥的相应索引。这可以针对所有 d 轮加法操作进行。
最近,一种名为随机密钥旋转的防护措施在[13]中被提出。该防护措施利用了多项式的环结构,允许对私钥 f和密文 e进行旋转,且不改变乘法结果。由于这种旋转可以随机执行而不改变算法2,因此可被视为一种高效的洗牌防护措施。理论上,这种防护措施可通过增加迹的数量来攻破,因此我们建议将其与我们的掩码实现结合使用。
4 对三元多项式的相关功耗分析
在本章中,我们提出了针对三元多项式卷积乘积的[10]相关功耗分析攻击的改进。
尽管作者提到他们的攻击也应适用于三元多项式,但他们并未给出具体的改进方法或攻击结果。我们使用算法3实现了三元情况下的基于索引的乘法。
三进制乘法的一个示例如图2所示。可以看出,乘法的第一部分(浅灰色背景)的执行方式与二进制情况完全相同。因此,可通过使用第3节中描述的相关功耗分析来找到f ∈ T中的 w1 i之间的差异。
我们的改进方法首先在减法的第一轮(j= 0)中,攻击1的最后一个索引 fones[d+ 1]与‐1的第一个索引 fmones[0]之间的差值。该差值称为 w0。通过查找从对应于最后一次加法操作(图2中用虚线标出)的 ti中减去的 ei的索引,来攻击正确的 w0。基于对 w0的不同假设,可计算相应中间值的汉明重量,并通过相关功耗分析进行攻击。需要注意的是,对于某些私钥构造,存在一种不太可能的情况,即在最后一次 e0加法操作后,没有从 ti中进行减法操作。这种情况也可通过依次评估不同的减法点来克服,例如对应于最后一次 e1加法操作的 ti的值。
=[1, 3, 4],[0, 6]。)
基于ARM Cortex‐M4的 NTRUEncrypt掩码实际评估
4 对三元多项式的相关功耗分析(续)
在正确的 w0情况下,可以找到‐1的索引之间的剩余差异 w−1 i 。类似于二进制情况,可以在轮次中为 e0的减法构造不同的假设中间结果 j ≥ 1(参见图 2中标记为实线的被攻击的减法结果)。通过相关功耗分析可以找到正确的假设,从而揭示相应的w−1 i 。
最终的私钥 f可以通过对 fones[0]进行穷举搜索找到,因为此时所有相对索引差都是已知的。该搜索的复杂度可以视为可忽略不计,因为攻击者最多需要尝试 N −(2d+ 1)种不同的组合。对于参数集NTRU-743,这最多导致248种不同的组合,对应于使用三元多项式的参数集中最高安全级别。
5 密文多项式掩码
由于[10]的随机初始化防护措施可能遭受的攻击已被证实,而其他方法可被视为洗牌,因此属于隐藏防护措施,我们重点评估密文的掩码。只有掩码防护措施能够可靠地提供一阶安全实现,因为它使处理的变量与已知输入(即密文)相互独立。
根据[10],我们对密文多项式 e的所有系数使用带有不同掩码的算术掩码。在本例中,算术掩码可以定义为 e与一个包含每个系数的不同掩码的多项式 masks进行模加法,即
$$ e_m = e + \text{masks} \mod 2^n $$ (4)
对于我们的实现,模数设置为 $2^{16}$,因为临时结果数组 t的元素以16位值存储。
算术掩码更适合基于索引的乘法,因为它仅执行算术运算,因此对掩码的更改是线性的。在这种情况下,可以通过对掩码本身执行相应的操作来计算掩码的变化。
针对算法3中描述的基于三元索引的乘法,实现了掩码防护措施。我们使用 ARM汇编代码提供了两种不同的掩码实现方式。第一种实现在被掩码的值和掩码本身上顺序执行乘法运算。这种方法的缺点是执行时间增加,因为需要两次执行乘法算法以计算掩码的变化。我们在第二种实现中消除了这一缺点,通过并行计算被掩码的值和掩码的乘法来实现。为达到此目的,我们利用了ARM Cortex‐M4架构特有的SIMD指令。不同实现方案的思想如图3所示。
5.1 顺序实现
顺序实现首先将掩码密文 $e_m$与私钥 f进行乘法运算,得到掩码结果 m′:
$$ m′= f ∗ e_m = f ∗(e + \text{masks}) $$ (5)
在第二步中,通过将 f与掩码的值相乘来计算对掩码的更改:
$$ \text{masks}′= f ∗ \text{masks} $$ (6)
为了获取未掩码的乘法结果 m,需从 m′中减去masks′的所有系数,并对结果模 q约简。
5.2 并行实现
掩码防护措施的并行实现利用了ARM Cortex‐M4架构中DSP扩展的SIMD指令。
通过这些指令,一个32位字被拆分为更小的部分(两个16位或四个8位值),并在这些部分上并行执行相应的算术运算。例如SADD16和SSUB16操作分别对操作数的高16位和低16位部分执行加法和减法,并确保抑制两部分之间可能发生的进位溢出。图4中给出了使用SADD16进行加法的一个示例。
和(a2+ b2)进行两个 16位加法,并行执行。使用SSUB16的减法操作同理。)
为了利用这些操作,我们将各个密文系数 $e_i$及其对应的掩码 $\text{mask}_i$构造成一个32位字,如图5所示。在算法3中将此构造作为密文系数ei的输入后,所有加法和减法均可使用相应的SIMD指令实现。在这种情况下,掩码更新是并行计算的,速度是顺序实现的两倍。隐式的模 $2^{16}$约简不会改变乘法的结果,因为结果的所有系数都已对 $2^{11}$进行模约简,其中现代参数集满足 $q = 2048$。
6 结果评估
在本节中,我们展示了对使用三元多项式的非掩码实现进行相关功耗分析( CPA)攻击的结果,以及针对前一章所述两种掩码实现的一阶和二阶攻击结果。
此外,我们还展示了将掩码实现与洗牌对策结合后的攻击结果。
所有攻击均通过对安装在NewAE CW308 UFO开发板上的STM32F303RCT7 ARM Cortex‐M4微控制器进行功耗测量来实施。目标设备在 VDD线路中配置了一个 12 Ω分流电阻,相应的功耗可通过CW308板上的SMA连接器进行测量。功耗测量使用Pico‐scope 6402D示波器,采样频率为 156.25MHz。由于功耗是在VDD与GND之间测量的,因此使用Minicircuits BLK‐89+ DC Block以充分利用示波器的整个输入范围。被测器件的时钟是固定的
提供10兆赫的是德科技33500B波形发生器。为了提供对齐的迹,设备时钟和示波器的采样时钟通过波形发生器同步。
6.1 三元多项式的相关功耗分析
本节描述了针对我们汇编实现的算法3在没有任何防御侧信道攻击措施情况下的攻击结果。与[10]中的攻击不同,我们展示了使用汉明重量功耗模型对三元多项式乘法的有效攻击。
图6展示了对私钥 $f ∈ T=[3, 7, 10],[1, 4]$进行乘法运算且最大次数为 $N= 20$时的部分攻击结果。我们示例性地提供了揭示 $w^1_0$、 $w_0$和 $w^{-1}_0$的相关性图。然而,所有针对相应密钥索引的CPA攻击均成功。相关性随时间的变化显示了算法3中第4到第9行执行全过程的情况。可以看出,即使不限制测量范围到被攻击的操作,攻击仍然成功。尽管如此,限制测量范围将消除额外的相关性峰值。
6.2 对掩码防护措施的二阶攻击
本节讨论针对两种掩码实现的二阶攻击结果。攻击结果仅针对算法j= 13中对应于密文中1的加法操作的第二轮()。换句话说,结果显示的是 fones[0]与 fones[1]之间的差异。所提出的攻击方法也适用于其余密钥索引差值。对相应实现的测量使用参数 $N= 20$和 $q= 2048$,并结合相应的私钥$f ∈ T(2,1) =[3, 7],[5]$进行。
顺序实现
在此实现中,被掩码的值和掩码本身在不同的时间点进行处理。因此,多元二阶攻击能够通过相应泄露的组合来击败掩码防护措施。在[12]归一化乘积预处理函数中,该方法最初在[2]中提出,被认为是针对汉明重量泄露模型的最优组合方式。由于我们的目标是汉明重量泄露,我们通过将相应的去均值样本点相乘来使用此组合函数。
通过针对掩码中间值和掩码本身进行独立的相关功耗分析,可以找到泄露点的位置。图7显示了这两次攻击的相关性,指出了单个值被处理的时间点。
之所以可行,是因为我们希望在尽可能理想的条件下评估攻击效果,因此在轨迹测量期间会存储掩码。如果攻击者不知道对应的掩码,则必须对可能的泄露区域进行合理推测,并尝试所有可能的样本组合,通常以时钟周期的倍数进行。
一阶和二阶攻击的结果如图8所示。使用多达两百万次迹测量进行一阶攻击时,未观察到显著的相关性。相比之下,使用二十万条迹的二阶攻击则取得了成功。
并行实现
由于并行实现同时处理掩码和被掩码的值,因此可以使用零偏移二阶攻击来攻击此实现。为了执行此攻击,需要对迹中的各个采样点进行去均值平方处理。
在图9中,显示了我们采用并行构造的掩码实现的攻击结果。使用两百万次迹测量未能发现一阶泄漏。另一方面,可以看出,所提出的二阶攻击在使用二十万条迹的情况下成功恢复了正确的密钥索引差值 $w^1_0$。
比较。 为了比较这两种实现,我们在图10中提供了随着迹测量数量增加对应的主要泄漏点的相关性图。相关性显示最多二十万次测量的结果。
可以看出,二阶攻击对并行实现的效果较差,因此我们推荐这种实现方式,因为它与顺序实现相比还表现出降低的执行时间。
6.3 掩码与洗牌组合的二阶攻击
在本节中,我们展示了将我们的两种掩码实现与[13]中提出的随机密钥旋转洗牌对策相结合的攻击结果。为了集成该洗牌对策,我们无需通过更改输入多项式来实现洗牌,从而调整我们的乘法实现。
洗牌方法通过在范围$0 ≤ i< N − 1$内生成一个随机整数 i,并将 f的系数向右循环移位 i个位置来实现。在第二步中,密文 e也以相同方式循环移位 $N − i$个位置。这使得中间加法结果随机化,但不改变乘法的结果。
对于第6.2节中所示的攻击,我们使用了参数 $N= 20$,这意味着乘法有二十种可能的洗牌方式。图11给出了并行和顺序实现的相应攻击结果。可以看出,结合这两种防御措施后,在多达两百万次迹测量的情况下未显示出明显的二阶泄漏。
7 结论
通常,使用基于索引的乘法实现的NTRUEncrypt容易受到CPA攻击。我们证明了这一点对于使用三元多项式的现代参数集仍然成立。我们对掩码进行了实际评估,评估中采用了顺序和并行两种处理掩码和掩码数据的实现方式,其中并行实现在性能开销上几乎可以忽略不计,因为它利用了所使用的ARM Cortex‐M4微控制器的SIMD指令。我们的评估表明,在最多两百万条迹的实验环境下,这两种实现均能抵御一阶攻击。当未应用洗牌时,并行实现相比顺序实现在二阶泄露方面更少。因此,它非常适合与[13]的洗牌对策结合使用,我们建议将这两种方案并行应用。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)