Special Subject on White-Box Cryptography

A survey of side-channel analysis on white-box cryptography

  • ZHAO Liangju 1 ,
  • TANG Yufeng 1, 2 ,
  • GONG Zheng , 1, *
Expand
  • 1. South China Normal University, Guangzhou 510631, China
  • 2. School of Physical and Mathematical Sciences, Nanyang Technological University, Singapore 637371, Singapore

Online published: 2025-01-25

Copyright

Copyright ©2024 Journal of Aeronautical Materials. All rights reserved.

Abstract

White-box attacks assume that the execution device of the encryption algorithm is completely controlled by an attacker, and all the internal data can be observed and tampered with, making the traditional cryptographic algorithms ineffective against such threats. To address the challenges posed by white-box attacks on the block cipher security, white-box cryptography implementations have become a research hotspot. However, the existing white-box cryptography implementations not only struggle to withstand white-box attacks but also are vulnerable to side-channel attacks with more limited capabilities, such as computation analysis and fault analysis. A series of protective strategies have been proposed to counter these threats, but also leading to the development of stronger countermeasures. Currently, side-channel techniques have become the primary challenge during the white-box cryptographic design. The existing attack methods were categorized based on algorithm frameworks and attack types, and the protective strategies along with their corresponding counterattacks were summarized. The threats and challenges currently faced were discussed, and future side-channel attack techniques and defensive solutions were explored.

Cite this article

ZHAO Liangju , TANG Yufeng , GONG Zheng . A survey of side-channel analysis on white-box cryptography[J]. Journal of Cybersecurity, 2024 , 2(6) : 57 -73 . DOI: 10.20172/j.issn.2097-3136.240604

0 前言

随着移动互联网、物联网的蓬勃发展,用户对信息的安全存储、安全处理和安全传输有着迫切的需要。特别是随着移动支付、数字版权管理、多媒体通信、智能家居、共享出行等互联网应用的广泛普及,信息的安全保护问题显得更加重要。安全的网络通信包括信息的机密性、认证性、不可抵赖性等,其中机密性通常使用密码技术,如流密码、分组密码与公钥密码等。相比于其他密码技术,分组密码具有速度快、易于标准化和便于软硬件实现等特点,其通常是用于网络通信中数据加密、消息鉴别、认证和密钥管理的核心密码算法[1]
分组密码的设计与安全性分析通常假设密码算法运行在一个封闭、可信的计算环境中,攻击者仅能监听获取分组密码算法的输入、输出信息。该攻击环境假设密码算法的执行环境是一个黑盒,攻击者无法获取算法内部包含中间变量等的任何信息。而在实际硬件设备中,算法的执行通常会泄露一些侧信道信息,如算法执行的时间参数、能量消耗、功率变换、电磁信息等。利用这些侧信道信息,攻击者在灰盒攻击环境下能够获取与密钥相关的算法中间状态信息,从而建立统计学分析模型,恢复密钥信息。常见的侧信道分析有能量分析(Power Analysis,PA)[2]、故障分析(Fault Analysis,FA)[3]、Cache攻击[4]等。
随着智能终端的普及,密码算法通常以软件形式运行。在移动支付与数字版权管理等场景下,密码算法在终端设备中对机密信息,如支付内容与付费订阅视频等,进行加密/解密操作。但是,由于密码算法软件执行环境的安全性难以保障,攻击者可使用逆向工程、动态调试、二进制追踪以及静态分析等技术对设备内存中的密钥信息进行提取。白盒攻击环境(White-Box Attack Context)[5]假设攻击者对密码算法的执行设备拥有最高的控制权,传统的分组密码在该攻击环境下,其密钥可直接被攻击者得到。基于Kerckhoffs原则[6],一个密码系统的安全性仅依赖其密钥安全性。因此,白盒环境对分组密码的算法安全造成了极大的威胁。
白盒密码(White-Box Cryptography)用于构建软件环境下的密钥保护技术,其利用混淆(Obfuscation)、编码(Encoding)等手段对密码算法的执行过程进行保护,使得密钥信息不会在计算过程中暴露。目前,白盒分组密码的研究与安全性分析工作已经发展了20余年,其间,有多个白盒密码的设计框架以及多个分组密码的白盒实现方案被提出。然而这些设计框架与方案均被证实无法抵御白盒攻击环境下的代数攻击。
尽管已发表的白盒密码实现已被证明在白盒攻击环境下难以保持安全,但许多公司和企业仍在使用或销售基于白盒密码的产品。这主要是因为白盒攻击环境对攻击者提出了较高的要求,攻击者不仅需要了解白盒密码算法实例的具体实现细节,还必须能够完全访问其运行过程中所有的中间数据。因此,为了执行代数攻击并分析白盒密码实例,攻击者往往需要首先通过逆向工程、代码提取等手段获取这些关键信息。
在CHES 2016上,Bos等[7]提出了差分计算分析(Differential Computation Analysis,DCA),这是一种将硬件上差分能量分析(Differential Power Analysis,DPA)[2]的思想迁移到软件上的侧信道分析方法。同时,Sanfelix等[8]和Teuwen等[9]应用差分故障分析(Differential Fault Analysis,DFA)对白盒密码进行攻击,成功恢复了轮密钥。
与代数分析需要逆向工程、已知编码细节等攻击前提不同,侧信道分析拥有自动化分析工具,是目前白盒密码的首要威胁。DFA和DCA基本上对当时所有的白盒实现造成了威胁,并拥有不受混淆层干扰、无须知道白盒密码设计细节、无须恢复编码、攻击复杂度低以及可自动化的特点。这一威胁在CHES WhibOx 2017 [10] 和CHES WhibOx 2019[11]举办的白盒分组密码夺旗赛中得到了验证。由于比赛中参赛作品的设计细节未公开,攻击者在不掌握内部编码具体构造的情况下,主要依靠DCA和DFA等侧信道分析手段成功恢复了密钥。这表明,即便白盒密码的设计初衷是为了抵御白盒攻击,其安全性仍难以抵御约束更少的灰盒攻击。随着研究的深入,越来越多针对白盒分组密码的DCA和DFA相关工作被提出,不断丰富了对其攻击方法与防御机制的理解。
现有综述如《白盒密码研究》[12]、《密码技术的现状与白盒化发展趋势》[13]、《国内白盒密码算法发展状况的思考》[14]等都是对现有白盒密码的代数攻击以及应用的综述,而对CHES 2016中Bos等开创的白盒密码侧信道分析的新方法DCA、DFA及其进展工作综述较少。
本文首先介绍现有白盒密码实现的框架,并总结各个白盒密码实现及其应用编码保护密码算法的形式。其次,介绍现有白盒侧信道分析方法,并总结攻击方法和攻击复杂度。再次,总结基于DCA和DFA的已有防御手段。最后,从攻击和防御两方面对白盒密码侧信道分析技术的发展趋势进行展望。

1 白盒密码技术

1.1 CEJO框架

2002年,Chow等基于查找表编码网络提出了首个AES(Advanced Encryption Standard)[5]与DES(Data Encryption Standard)[15]的白盒实现。其构造方法可归纳为一种通用的白盒分组密码构造框架,并根据四位作者姓氏(Chow,Eisen,Johnson,Oorschot)的首字母命名为CEJO框架。CEJO框架将分组密码轮函数中与密钥相关的运算合并为查找表(Look-Up Tables,LUTs)操作,并应用随机生成的线性/非线性编码对查找表的输入与输出进行保护。白盒分组密码构造中所使用的编码可分为内部编码(Internal Encoding)与外部编码(External Encoding)。令$ T $表示与密钥相关的查找表运算,$ I $$ O $均表示随机的线性/非线性编码,则受内部编码保护的查找表$ {T}^{{\prime}}=O\circ T\circ I $。前一个查找表的输出编码与后一个查找表的输入编码互为可逆运算,因而将分组密码转换成受编码保护的查找表网络。CEJO框架查找表网络如图1所示,其中上色部分表示用于保护查找表的编码。令$ {E}_{k} $表示受保护的分组密码,对查找表网络进行组合运算后,即可得到受外部编码保护的分组密码$ {E}_{k}^{{\prime}}=G\circ {E}_{k}\circ F $,其中$ F $为首轮函数的输入外部编码,$ G $为末轮函数的输出外部编码。为确保白盒分组密码的安全性,外部编码$ F $$ G $的解码需要在可信环境下(如安全芯片、可信执行环境等)进行。
图 1 CEJO框架查找表网络

Fig.1 Look-up table network of CEJO framework

2004年,Billet等[16]针对CEJO-WBAES进行了编码恢复与密钥提取,该代数攻击过程需要对白盒密码的查找表进行组合,并通过同构函数将双射非线性编码映射为线性编码,随即大幅降低恢复单个查找表编码的攻击复杂度。针对CEJO-WBAES的缺点,随后几年里,许多白盒AES被不断提出。例如,2006年Bringer等[17]为CEJO-WBAES引入了扰动函数,2009年Xiao等[18]设计了16比特的T-box,并将ShiftRows操作制作成查找表,2010年Karroumi[19]提出了将Dual AES与CEJO-WBAES等技术结合,但上述AES算法白盒实现方案都已被相应的代数攻击所破解[20-23]
在CEJO框架下,密码算法非线性部件是由8比特S盒拼接而成的。为了满足前后输出输入内部编码之间的互逆运算以及编码实现开销,CEJO应用非线性编码是8比特或4比特大小,如图2所示。
图 2 CEJO的4比特非线性编码(a)和8比特非线性编码(b)

Fig.2 4-bit nonlinear encoding (a) and 8-bit nonlinear encoding (b) of CEJO

1.2 自等价框架

2016年,McMillion等[22]使用自等价编码提出了一种面向SPN(Substitution Permutation Network)结构的白盒分组密码实现框架。令$ F $表示一个函数,若存在一对比特仿射(线性)变换$ (A,B) $使得$ F=B\circ F\circ A $,则称函数的仿射(线性)自等价。基于S层的仿射自等价,即$ S=B\circ S\circ A $,结合轮密钥信息对轮函数的线性层进行编码,使得轮函数仅由S层以及仿射自等价编码保护、嵌入密钥信息的线性层组成。
在ACNS 2022上,Vandersmissen等[24]将自等价框架引入到ARX(Add-Rotate-Xor)结构分组密码中,并提出了SPECK算法的首个白盒实现。与SPN结构的分组密码不同,SPECK的非线性层由大宽度模加(如32、64、128比特)组成,而不是小宽度(如4、8比特)S盒组成,使得SPECK非线性层的自等价编码取值空间更大,直观上可提升自等价框架白盒实现的安全性。图3描绘了自等价框架SPECK白盒实现前3轮的函数结构,其中$A $B为大宽度自等价编码,为ARX算法轮函数中公开的移位参数。
图 3 自等价框架SPECK白盒实现前3轮函数的结构

Fig.3 Structure of the first three rounds of self-equivalence framework SPECK white-box implementation

1.3 隐函数框架

在Crypto 2022上,Ranea等[25]为提高ARX结构分组密码白盒实现的安全性,为自等价框架提出了两点改造方案。一是从编码上,为白盒实现引入非线性的自等价编码;二是从轮函数形式上,以隐函数的形式表示,将轮函数输出变为求解多变元的线性方程组形式推导,并使用仿射变换编码对稀疏的自等价编码进行混淆,因而将密钥信息隐藏于方程组的系数中。令$ F $表示一个$ n $比特函数,$ P $为一个从$ 2n $比特映射到$ m $比特的函数。当函数$ P $满足$ P\left(x,y\right)= 0\Leftrightarrow y=F\left(x\right) $,则称$ P $$ F $的隐函数。其中$ n $比特$ x $$ y $被称为输入/输出向量。图4展示了基于隐函数框架的SPECK白盒实现前2轮的显式编码结构,其中$ B $为模加的2阶非线性自等价编码,函数$ C $为随机仿射变换编码。
图 4 隐函数框架SPECK白盒实现前2轮函数的结构

Fig.4 Structure of the first two rounds of the implicit function framework SPECK white-box implementation

由于ARX结构分组密码的模加非线性层特性,隐函数框架拥有自等价编码取值空间大、非线性以及轮函数编码宽度大、执行可隐藏编码信息等优点。与自等价框架的安全性相比,隐函数框架通过随机仿射置换提高了随机性,并且当编码组成选自模加的仿射二次自等价类时,编码为非线性的二次编码。但是从SPECK算法的白盒实现来看,隐函数比自等价框架的实现性能损失更大。
表1对比了CEJO、自等价与隐函数白盒以及将在第4节讲述的抵御计算分析的掩码方案实现算法的性能。实验平台为Intel Core i7-11800H 2.30 GHz,内存为40 GB,实验数据为取10 000次单分组运算的平均值。其中SE表示自等价框架,IF表示隐函数框架,BU-Masking和SEL-Masking表示抵御白盒侧信道分析的两种掩码方案。在表1中AES为128 比特分组大小,SPECK为64 比特分组大小。“次数”列在隐函数框架中表示隐函数的代数次数(Algebraic degree),在掩码中表示掩码的次数(Degree)。
表 1 白盒实现性能对比

Table 1 Comparison of the performances of white-box implementations

算法 框架 次数 内存占用
(MB)
加密单
分组时
间(ms)
文献
AES-CEJO CEJO 1.05 0.001 7 [5]
AES-XiaoLai CEJO 20.33 0.001 9 [18]
SM4-XiaoLai CEJO 1.32 0.025 [26]
SM4-BaiWu CEJO 33.71 0.000 79 [27]
SM4-WSISE CEJO 1.42 0.026 [28]
SPECK SE 1.74 0.23 [24]
SPECK IF 2 4.70 18.87 [25]
SPECK IF 3 45.10 166.67
SPECK IF 4 788.20 2 390.00
AES BU掩码 3.50 3.79 [29]
SEL掩码 1 2.56 4.49 [30]
SEL掩码 2 2.57 5.09
SM4 BU掩码 5.01 2.77 [29]
SEL掩码 1 3.54 3.84 [30]
SEL掩码 2 3.62 4.30

2 白盒实现下的侧信道分析技术

侧信道分析是一种通过观察加密算法执行过程中的额外信息(如执行时间、功耗、电磁干扰辐射等)来获取密钥或其他敏感信息的技术。白盒密码中的侧信道分析可以归类为两种分析方法:计算分析(Computation Analysis,CA)和故障分析。计算分析基于算法执行的统计信息,如中间值的变化,通过统计学方法分析这些信息并恢复密钥。与之不同,故障分析通过故意引入计算故障,观察输出与故障前结果的差异,从而推测中间值或密钥信息。但是与代数攻击不同的是,在白盒实现下的侧信道分析往往需要白盒密码算法在外部编码的使用上受到限制,通常情况是只有输入外部编码或者只有输出外部编码。

2.1 针对CEJO框架的计算分析

计算分析受到物理侧信道攻击的启发。在动态二进制插桩工具(如Intel PIN[31])的帮助下,攻击者通过多次调用密码算法实现来收集计算轨迹。这些轨迹由访问的内存地址、数据和关联的指令组成。
$ v= ({v}^{\left(1\right)},{v}^{\left(2\right)},...,{v}^{\left(T\right)}) $表示一个由T个样本组成的计算轨迹。对手收集了N个与N个输入$ ({x}^{\left(1\right)},{x}^{\left(2\right)},..., {x}^{\left(N\right)}) $相关的计算轨迹$ ({v}^{\left(1\right)},{v}^{\left(2\right)},...,{v}^{\left(N\right)}) $。这个计算轨迹的采集位置主要是S盒输出和列混淆输出。
由于缺乏外部编码,对于每个$ t\in \left[N\right] $的输入$ {x}^{\left(t\right)} $,它是明文的一个状态。将轨迹解释为一个$ N\times T $矩阵,其中的每一行是一个计算轨迹$ {v}^{\left(t\right)} $,每一列由相同位置在不同计算中的N个中间值组成。一个将输入$ \left\{{x}^{\left(t\right)}\right\} $和轨迹$ \left\{{x}^{\left(t\right)}\right\} $映射为区分分数的区分器D被定义为:
$ {\delta }_{k}=D\left(\right({x}^{\left(1\right)},...,{x}^{\left(N\right)}),({v}^{\left(1\right)},..., {v}^{\left(N\right)}\left)\right) $
在这种情况下,对手做出密钥猜测k,以预测一个敏感的中间变量$ s={\delta }_{k}\left(x\right) $,并计算预测值与轨迹之间的依赖性。分数最高的$ {\delta }_{{k}^{*}} $被选为最可能是正确密钥$ {k}^{*} $的候选。
本节根据采集轨迹的位置将CEJO的计算分析分为采集S盒输出轨迹和采集列混淆输出轨迹的计算分析。首先介绍各类采集S盒输出轨迹的计算分析,并总结这些计算分析的特点和攻击的时间复杂度,然后再介绍采集列混淆输出轨迹的计算分析。

2.1.1 差分计算分析(DCA)

DCA[7]被认为是计算分析的开端,其原理类似于DPA,但它将分析目标从物理信号转为程序运行的计算轨迹。DCA的核心是通过对输入轨迹分组,计算均值差异以区分密钥候选。
对于一个密钥猜测k,根据S盒的第i个输出位的值b,DCA将计算轨迹分成两个不同的集合$ {A}_{0} $$ {A}_{1} $,如下所示:
$ {A}_{b}=\{{v}^{\left(t\right)}|1 \leqslant t \leqslant N,{S}^{i}\left(x\oplus k\right)=b \} 。 $
均值轨迹则可以通过下式进行计算:
$ \overline{{A}_{b}}=\frac{{\displaystyle\sum }_{v\in {A}_{b}}v}{\left|{A}_{b}\right|} 。 $
均值的差异定义为:$ \varDelta = |\overline{{A}_{0}}-\overline{{A}_{1}}| $。该均值差异是为特定位按密钥假设计算的,然后DCA对S盒输出的8个目标位和每个密钥猜测在$ {F}_{2}^{8} $上重复计算。其中S盒的输出对应图1中①的位置。
获得的均值差异轨迹$ {\varDelta }^{{k}^{*}} $中峰值最高的对应密钥 $ {k}^{*} $最有可能是正确的密钥。因此,其区分器定义为:
$ {\delta }_{k}^{\mathrm{D}\mathrm{C}\mathrm{A}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{ }\mathrm{m}\mathrm{a}\mathrm{x}|\varDelta | 。 $
DCA 的时间复杂度为 $ O\left(\right|k| \cdot |i| \cdot T\cdot N) $

2.1.2 改进的差分计算分析(IDCA)

由于DCA尚未完全揭示其成功恢复密钥的原因,Bock等[32-33] 研究了针对 DCA 攻击的内部编码。他们还引入了一些改进的DCA(Improved Differential Computation Analysis,IDCA)。
定理1[32]$ {\oplus }_{k} $为轮密钥加,当$ S\circ {\oplus }_{k} $通过可逆矩阵${\boldsymbol{A}} $进行编码时,对于正确的键猜测,DCA攻击返回的平均差值等于1,当且仅当矩阵${\boldsymbol{A}} $中至少有一行i的汉明重量(Hamming Weight,HW)等于1。否则,对于正确的键猜测,DCA攻击返回的平均差值等于0。
定理1阐述了线性编码的性质,它指出线性编码中的一个单位行是 DCA 中密钥泄露的主要原因。为了对抗线性编码,IDCA会穷尽搜索S盒输出的所有可能的线性组合$ \mathrm{L}\mathrm{C} $,即计算目标位$ b={\mathrm{LC}}\cdot S\left(x\oplus k\right) $。接下来的过程是根据每个可能$ \mathrm{L}\mathrm{C} $的结果对轨迹进行排序。因此,它可以计算出计算轨迹和恢复编码位之间的高相关系数。定理2则用于对4比特编码(nibble编码)进行统计分析。对于4比特编码下的正确键猜测,平均差值曲线仅由5个可能值构成。
定理2[32]:当$ S\circ {\oplus }_{k} $通过4比特编码进行编码时,对于正确的键猜测,k得到的平均差值曲线仅由值0、0.25、0.5、0.75或1组成。
基于定理2,IDCA会选择具有足够高峰值(至少0.3)的假设密钥,以便从其他候选项中脱颖而出。否则,IDCA会寻找趋近于0.25或0的值,并选择其对应的键猜测作为最佳项。IDCA区分器的定义与DCA相同,为:
$ {\delta }_{k}^{{\mathrm{IDCA}}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{m}\mathrm{a}\mathrm{x}|\varDelta | $
由于计算所有线性组合,IDCA的时间复杂度有一个额外因子$ O\left({2}^{8}\right) $。然而,IDCA无须选择S盒输出的目标位,因为S盒输出的每个线性组合都是预测的敏感变量。IDCA的时间复杂度为$ O({2}^{8}\cdot |k|\cdot T\cdot N) $

2.1.3 相关能量分析(CPA)

Rivain等[34]形式化了相关能量分析(Correlation Power Analysis,CPA)对白盒实现的攻击。CPA假设中间变量的函数是非注入的且编码是双射的。对于一个密钥猜测k,CPA计算预测敏感变量与每个计算轨迹样本的相关系数。设预测敏感变量 $ {\phi }_{i}\left(x\right)={S}_{i}\left(x\oplus k\right),1\leqslant i \leqslant 8 $,每个计算轨迹的样本为$ {v}_{j}\in \mathit{v},j\in \left[T\right] $。CPA的区分器利用相关系数的最大绝对值进行区分:
$ {\delta }_{k}^{{\mathrm{CPA}}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{ }\mathrm{m}\mathrm{a}\mathrm{x}\left|{\mathrm{Cor}}\right({\phi }_{i}\left(x\right),{v}_{j}\left)\right| $
CPA 通过计算S盒输出的每一位与轨迹样本的所有相关系数,选择具有最大值$ {\delta }_{k}^{*} $的密钥猜测$ {k}^{*} $。因此,CPA 的时间复杂度为 $ O\left(\right|k|\cdot |i|\cdot T\cdot N) $

2.1.4 碰撞攻击(CA)

碰撞攻击(Collision Attack, CA) [34]根据每对输入$ ({x}^{\left({t}_{1}\right)},{x}^{\left({t}_{2}\right)}) $,其中$ {t}_{1},{t}_{2}\in (1,N) $$ {t}_{1}\ne {t}_{2} $,及其轨迹$ ({v}^{\left({t}_{1}\right)},{v}^{\left({t}_{2}\right)}) $计算出一个碰撞计算轨迹,其定义为:
$ {\mathit{w}}^{({t}_{1},{t}_{2})}=({w}_{1}^{({t}_{1},{t}_{2})},{w}_{2}^{({t}_{1},{t}_{2})},...,{w}_{T}^{({t}_{1},{t}_{2})}) $
其中,每个样本$ {w}_{j}^{({t}_{1},{t}_{2})}={v}_{j}^{\left({t}_{1}\right)}\odot {v}_{j}^{{(t}_{2})},j\in (1,T) $,运算符$ \odot $表示同或运算。密钥猜测k的碰撞预测(Collision Prediction)定义为$ {\phi }_{k} $,则每对输入$ ({x}^{\left({t}_{1}\right)},{x}^{\left({t}_{2}\right)}) $的碰撞预测值则为:
$ {\phi }_{k}({x}^{({t}_{1})},{x}^{({t}_{2})})={\phi }_{i}({x}^{({t}_{1})})\odot {\phi }_{i}({x}^{({t}_{2})}) $
其中,敏感变量为$ {\phi }_{i}\left(x\right)={S}_{i}\left(x\oplus k\right),1\leqslant i\leqslant 8 $
CA 区分器计算碰撞预测与相应碰撞轨迹的每个样本之间相关系数的最大绝对值,如下所示:
$ {\delta }_{k}^{{\mathrm{CA}}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{ }\mathrm{m}\mathrm{a}\mathrm{x}\left|\mathrm{C}\mathrm{o}\mathrm{r}\right({\phi }_{k}({x}^{\left({t}_{1}\right)},{x}^{\left({t}_{2}\right)}) ,{w}_{j}^{({t}_{1},{t}_{2})}\left)\right| $
其主要思想是,如果一些敏感变量在某对输入中发生碰撞,那么它们编码后的变量也可能会发生碰撞。CA 的时间复杂度为 $ O\left(|k|\cdot |i|\cdot T\cdot \left(\genfrac{}{}{0pt}{}{N}{2}\right)\right) $

2.1.5 互信息分析(MIA)

互信息分析(Mutaul Information Analysis,MIA)[34]计算预测的敏感变量$ {\phi }_{i}\left(x\right)={S}_{i}\left(x\oplus k\right) $与样本轨迹$ {v}_{j}\in \mathit{v} $的最大互信息。MIA的时间复杂度为$ O\left(\right|k|\cdot |i|\cdot T\cdot N) $。其区分器定义如下:
$ {\delta }_{k}^{{\mathrm{MIA}}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{ }\mathrm{m}\mathrm{a}\mathrm{x}I\left({\phi }_{i}\right(x),{v}_{j}) $

2.1.6 频谱分析(SA)

频谱分析(Spectral Analysis,SA)[35]通过计算函数的沃尔什变换来检测密钥泄露。对于一个猜测密钥$ k $,SA 通过选择目标函数$ \bar{O}_{k} $的输入$ {x}^{\prime}={S}_{i}\left(x\oplus k\right) $,得到一个新函数$ {g}_{k}\left(x\right) $
$ {g}_{k}\left(x\right)=\bar{O}_{k}\left({x}^{\prime}\right)=N\circ L\circ S\circ {\oplus }_{{k}^{*}}\circ {\oplus }_{k}\circ {S}^{-1} $
如果候选密钥$ k={k}^{*} $,则函数可以变换为$ {g}_{{k}^{*}}\left(x\right)=N\circ L $。SA 区分器定义为:
$ {\delta }_{k}^{{\mathrm{SA}}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{ }\mathrm{m}\mathrm{i}\mathrm{n}{\sum} _{u\in {F}_{2}^{8}}{\sum }_{i=1}^{8}|{W}_{{({g}_{k})}_{i}}(u)| $
该区分器对每个候选密钥k和输入u 的不平衡进行求和。由于正确的密钥具有更多的相关免疫函数,因此相比于其他候选密钥可以被区分。在实践中,SA需要计算将输入映射到每个轨迹样本的布尔函数的沃尔什变换。因此,SA 的时间复杂度为$ O\left(\right|k|\cdot |u|\cdot T\cdot N) $

2.1.7 修改后的频谱分析(MSA)

Lee等[36]通过仅选择汉明重量为1的输入u修改了SA区分器,提出了修改后的频谱分析(Modified Spectral Analysis,MSA)。相比于SA的多比特模型,MSA利用单比特模型进行分析,它检测坐标函数$ {g}_{i} $与输入位$ x $之间的相关系数。MSA 区分器描述如下:
$ {\delta }_{k}^{{\mathrm{MSA}}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{ }\mathrm{m}\mathrm{i}\mathrm{n}{\sum} _{u=\mathrm{1,2},4,\cdots,128}{\sum }_{i=1}^{8}|{W}_{{({g}_{k})}_{i}}(u)| $
与 SA 类似,MSA 计算将输入映射到每个轨迹样本的沃尔什变换。因此,MSA 的时间复杂度也是$ O\left(\right|k|\cdot |u|\cdot T\cdot N) $,其中u只有 8 种不同的值,而非$ {F}_{2}^{8} $的空间大小。
基于MSA,Lee等[36]证明了密钥泄露取决于线性编码的不平衡,而非其汉明重量。函数$ h\left(x\right)={\left({g}_{k}\right)}_{i}\left(x\right)\oplus u\cdot x $的平衡性$ B\left(h\right) $$ {\left({g}_{k}\right)}_{i} $的沃尔什变换计算得到:
$ B\left(h\right)=\sum _{x\in {F}_{2}^{8}}{(-1)}^{h\left(x\right)}= {2}^{8}-2\cdot {\mathrm{wt}}\left(h\right) $
其中,当$ B\left(h\right)=0 $时,函数$ h\left(x\right) $为平衡线性编码,同时也满足$ {\mathrm{wt}}\left(h\right)=128 $。然而,MSA指出中间值会受到密钥依赖的分布影响,导致$ \mathrm{w}\mathrm{t}\left(h\right)=0 $。因此,当沃尔什变换值为256时,区分器能区分出正确密钥。

2.1.8 改进的频谱分析(ISA)

改进的频谱分析(Improved Spectral Analysis,ISA)[37]分析目标函数的相关免疫特性并计算沃尔什变换。相较于前两个频谱分析,ISA要求攻击者具有白盒攻击能力。ISA运用沃尔什变换中0最多的数量来区分正确密钥。ISA 区分器定义如下:
$ {\delta }_{k}^{{\mathrm{ISA}}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{ }\mathrm{m}\mathrm{a}\mathrm{x}\#\{{W}_{{({g}_{k})}_{i}}(u,v)=0|u,v\in {F}_{2}^{8}\} $
不同于SA计算坐标的沃尔什变换,ISA计算向量布尔函数的沃尔什变换。因此,需要引入v来计算函数$ {g}_{k} $的布尔函数组成。ISA的时间复杂度为$ O\left(\right|k|\cdot |u|\cdot |v|\cdot N) $。ISA攻击成功与否取决于线性编码的秩。若线性编码对应的矩阵为满秩,则ISA无法攻击函数$ {g}_{k} $;若线性编码对应的矩阵是不可逆的,则ISA甚至能够攻击字节编码的白盒实现。

2.1.9 代数次数计算分析(ADCA)

Tang等[38]提出了代数次数计算分析(Algebraic Degree Computation Analysis,ADCA),其利用编码的阶代数次数差异来区分正确的密钥。在ADCA下,攻击者首先根据一个猜测的密钥$ k $,通过选择输入$ {x}^{\prime}={S}^{-1}\left(x\right)\oplus k $,收集对应的计算轨迹$ ({v}_{1},{v}_{2},\cdots,{v}_{T}) $,这些计算轨迹蕴含着输出函数的分量布尔函数。之后,攻击者通过轨迹计算出每个布尔函数$ ({{f}_{k})}_{j} $的代数次数$ \mathrm{d}\mathrm{e}\mathrm{g}\left(\right({{f}_{k})}_{j}) $。对于一个给定的代数次数d,假设猜测密钥$ {k}^{*} $是正确密钥时,其对应的轨迹应该满足$ \mathrm{d}\mathrm{e}\mathrm{g}\left(\right({{f}_{{k}^{*}})}_{j})\leqslant d $。ADCA区分器的具体描述如下:
$ {\delta }_{k}^{\mathrm{A}\mathrm{D}\mathrm{C}\mathrm{A}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{ }\mathrm{m}\mathrm{a}\mathrm{x}\#\{\mathrm{d}\mathrm{e}\mathrm{g}(({{f}_{k})}_{j})\leqslant d|j\in [T]\} $
ADCA区分器需要构建一个线性方程组来求解每个分量布尔函数的代数次数。因此,其时间复杂度与该线性方程组的秩r有关,为$ O\left(\right|k|\cdot r\cdot T) $

2.1.10 采集列混淆输出的DCA

除了上述对S盒输出采集轨迹进行分析外,Rivian等[34]提出了在列混淆输出位进行采集。列混淆输出位置如图1中②所示,通过采集这部分轨迹,DCA可以无视字节大小内部编码对正确密钥进行区分。但是与S盒输出对应的密钥位相比,列混淆输出的密钥位包含32比特。为了减少密钥位的猜测,他们提出了将一半密钥位看作常数,只猜测16比特的密钥位。对于随机生成的字节编码,此攻击的成功率达到99.995%。
在CHES 2024上,Castelnovi等[39]对剩余无法攻击的编码细分为编码的沃尔什谱值为0和非0的情况。
对于0的情况,首先通过DCA攻击列混淆输出得到部分候选密钥(至少有511个),然后对每个候选密钥进行取模256运算,运算结果值中频率最高的对应正确密钥的第一个字节。再对剩余的候选密钥进行对256除法运算,运算结果值中频率最高的对应另一个正确密钥的字节。此时,16比特的猜测密钥位得以唯一确定。
对于非0情况,应用Rivian等[34]的结果可以在240的时间复杂度恢复16比特的密钥。Castelnovi等[39]提出了一种优化方法:在DCA攻击列混淆输出后,将剩余的无法区分的候选密钥构建为关于256条轨迹的256个组。每个组对应的轨迹中包含同一个8比特猜测密钥。如果一个组中相关轨迹的样本值有且仅有$ 0\mathrm{、}256\mathrm{、}\pm 8 $$ \pm 16\mathrm{、}\pm 24\mathrm{、}\pm 32 $这10个,则这个组对应的8比特密钥为正确密钥。对于编码的沃尔什谱非0情况,恢复16比特密钥的时间复杂度降低至232
因此,使用随机生成的字节型编码无法抵御采集列混淆输出的DCA。

2.1.11 对CEJO计算分析的总结

采集S盒输出的基于相关系数计算的分析如DCA、CPA、IDCA和CA,通过计算并跟踪密钥猜测与敏感变量之间的相关性进行分析。频谱分析如SA、MSA和ISA的区分器,通过选择与某些密钥猜测相关的输入,计算目标函数的沃尔什变换,再利用计数最大或最小的沃尔什变换值来检测相关免疫性并提取正确的密钥。而ADCA则是直接根据编码次数与S盒次数的不同进行筛选密钥。ISA要求攻击者具备白盒攻击能力,并计算向量布尔函数的沃尔什变换的0值。基于编码值的碰撞,CPA、CA和MIA要求目标函数是非单射的,而编码则必须是双射的。然而,目标函数可能并非不可逆,因此,在可逆目标函数下,这三种攻击方法无法区分正确密钥。IDCA利用线性编码的行汉明重量构建区分器,而MSA则利用线性编码的非平衡性。同时,ISA揭示了在不可逆线性编码下,8比特非线性编码的安全性会有所下降。与其他方法相比,ADCA在攻击字节编码时,能够达到与具有白盒能力的ISA相同的效果,且在实现最优攻击效果的同时,具有最低的攻击时间复杂度。
对于采集列混淆输出的DCA,最新的研究表明,所有字节型的内部编码均无法对白盒密码算法抵御密钥提取攻击进行保护。
在白盒环境下,攻击者采集轨迹的能力是不受限制的。因此,在采集S盒的输出轨迹分析中,攻击者拥有对每个字节的穷举输入能力,并可以采集对应的256条轨迹。
表2给出了在这种采集最多轨迹的情况下不同计算分析方法的对比,并列出了它们对不同代数次数内部编码的攻击效果。其中,“能攻击的编码代数次数”表示对应代数次数的编码攻击案例的成功率,数据选自文献[33-34]。从表中可以看出,虽然SA、ISA和ADCA均能攻击代数次数小于7的内部编码,但是对于代数次数与S盒次数相同的情形,这三种采集S盒输出的计算分析均无法区分正确密钥。然而对于采集列混淆输出的DCA,1~7次的内部编码都无法抵御这种攻击。
表 2 不同计算分析方法的对比以及对不同次数的内部编码的攻击效果

Table 2 Comparison of different computational analyses and the attack effectiveness on internal encodings with varying degree

攻击 采集轨迹位置 方法 攻破编码能力的解释 能攻击的编码代数次数 时间复杂度
>50% 100%
DCA S盒输出 相关系数分析 线性编码的HW = 1 2,3,4,5 222
IDCA 1,2,3,4,5 1,5 227
CPA 中间变量的函数是非注入的且编码是双射 2,3,4,5 222
CA 2,3,4,5 229
MIA 2,3,4,5 222
SA 频谱分析 1,2,3,4,5,6 1,2,3,4,5,6 227
MSA 线性编码的非平衡性 1,2,3,4,5 1 222
ISA 线性编码的不可逆性 1,2,3,4,5,6 1,2,3,4,5,6 232
ADCA 代数次数分析 S盒和编码次数不同 1,2,3,4,5,6 1,2,3,4,5,6 221.32~224.07
DCA 列混淆输出 相关系数分析 线性编码的HW = 1 1,2,3,4,5,6,7 1,2,3,4,5,6,7 235

2.2 自等价和隐函数框架的计算分析

对于自动化分析的攻击者而言,自等价和隐函数框架为密码算法提供的保护主要在其应用编码的次数、大小和随机性上。自等价框架所使用的编码大小是加密轮的分组大小,编码次数为1即线性编码(仿射编码),其编码的随机性取决于非线性层的仿射自等价类。而隐函数框架同样是加密轮的分组大小,它的编码次数取决于非线性层的自等价类类别。当使用仿射自等价类时,隐函数框架所提供的编码次数为线性编码(仿射编码)。由于隐函数框架在实现时额外添加了一个随机的线性置换,因此其仿射编码在随机性上比自等价框架更优。然而使用仿射-二次自等价类时,隐函数可以提供非线性编码(二次编码)。因此,接下来对两个框架攻击的分析仅聚焦于编码次数(线性与非线性)和编码大小。
与CEJO框架应用8比特编码不同的是,自等价框架和隐函数框架应用的编码至少是32比特的。设密钥长度为n比特,分组大小为2n比特,DCA攻击应用仿射编码的自等价和隐函数实现的SPECK需要的时间复杂度为$ O({2}^{3n}\cdot T\cdot N) $。在最坏情况下,DCA甚至需$ N={2}^{2n} $个明文来采集$ {2}^{2n} $条轨迹。因此,在时间和空间复杂度上,都说明DCA无法从轨迹中计算相关系数进行区分。对于利用二次编码保护的隐函数框架,DCA因为应用非线性大编码而无法从轨迹中得到高相关系数。而ADCA根据猜测密钥k构建一个输入集合$ \left\{x^\prime\right\} $满足$ x^\prime={S}^{-1}\left(x\right)\oplus k $。对于ARX密码来说,非线性层$ S $由模加组成,并且在SPECK中,非线性运算模加的大小为编码大小的一半。由于编码大小和结构差异,ADCA并不能直接应用于自等价和隐函数框架的白盒ARX密码中。
针对大编码白盒实现,在CHES 2024上,Tang等[40]提出了选择明文计算分析(Chosen-Plaintext Computation Analysis,CP-CA)。CP-CA通过构造一个基于猜测密钥k的逆函数$ {G}_{k} $来减少输入空间和编码空间,然后利用滑动攻击窗口猜测并验证部分密钥降低计算分析的时间复杂度,最后通过另一个逆函数验证轮密钥是否正确。
Tang等[40]根据CP-CA的思想,针对基于ARX密码的白盒实现提出了选择明文差分分析(Chosen-Plaintext Differential Computation Analysis,CP-DCA),并基于ADCA提出了选择明文线性编码分析(Chosen-Plaintext Linear Encoding Analysis,CP-LEA)。

2.2.1 选择明文差分计算分析

作为一种计算分析方法,CP-DCA 计算所选中间值与痕迹之间的相关系数。区分器对密钥的猜测基于最大数量的最高相关系数。
$ {z}^{j}\in {\left\{\mathrm{0,1}\right\}}^{{n}_{b}}(1\leqslant j\leqslant N) $表示逆函数$ {G}_{k} $$ N $$ {n}_{b} $比特的第j个输入。对于一个猜测密钥k,CP-DCA采集$ N $T大小的样本计算轨迹$ ({v}_{1}^{\left(j\right)},{v}_{2}^{\left(j\right)},\cdots,{v}_{T}^{\left(j\right)}) $,这些轨迹包含逆函数$ {G}_{k}({N}_{a}||{z}^{(j)}||{N}_{c},c) $的输出。根据逆函数的原理,若猜测密钥正确,则敏感数据的值应该与选择输入$ {z}^{\left(j\right)} $相同。因此,CP-DCA需要枚举输入$ {z}^{\left(j\right)} $的2nb种线性组合L,然后计算$ L\cdot {z}^{\left(j\right)} $与轨迹中每个样本$ {v}_{i}^{\left(j\right)} $的相关系数。
对于2n比特线性编码,在正确猜测密钥的情形下,轨迹中的2n个样本可以被敏感数据的值的位表示出来。若密钥猜测故障,则轨迹中不足2n个样本并由敏感数据值线性表示。因此,CP-DCA的区分器可以根据最大数量的最高相关系数来区分正确密钥,其定义如下:
$ {\delta }_{k}^{\mathrm{C}\mathrm{P}\text{-}\mathrm{D}\mathrm{C}\mathrm{A}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{ }\mathrm{m}\mathrm{a}\mathrm{x}\#\left\{\mathrm{m}\mathrm{a}\mathrm{x}\right|\mathrm{C}\mathrm{o}\mathrm{r}(L\cdot {z}^{\left(j\right)}\cdot {v}_{i}^{\left(j\right)})\left|\right\} $
由于在部分猜测密钥时,CP-DCA需要迭代$ n/{n}_{b} $次来恢复整个轮密钥,因此,攻击仿射编码白盒实现的时间复杂度为$ O(n/{n}_{b}\cdot |k|\cdot {2}^{{n}_{b}}\cdot N\cdot T) $
对于非线性编码,根据CP-CA的模型,Tang等[40]提出了针对基于ARX密码白盒实现的非线性编码的选择明文高次计算分析(Chosen-Plaintext Higher-degree Computation Analysis,CP-HDCA)。
对于一个选择输入$ {z}_{d}^{\left(j\right)} $,攻击者计算其所有比特位的次数$ l(2\leqslant l\leqslant d) $扩展(Extension)。通过结合原本的$ {n}_{b} $个输入比特位,这个扩展由$ q=\left(\genfrac{}{}{0pt}{}{{n}_{b}}{1}\right)+\cdots+\left(\genfrac{}{}{0pt}{}{{n}_{b}}{d}\right) $个项组成。攻击者首先计算$ {2}^{q} $个扩展比特位$ {z}_{d}^{\left(j\right)} $的线性组合L,然后计算$ L\cdot {z}_{d}^{\left(j\right)} $与每个样本轨迹$ {v}_{i}^{\left(j\right)}(1\leqslant i\leqslant t, 1\leqslant j\leqslant N) $的相关系数并实施区分攻击。因此,其CP-HDCA的时间复杂度为$ O\left(\right|k|\cdot {2}^{q}\cdot N\cdot T) $

2.2.2 选择明文编码攻击

CP-DCA和CP-HDCA在枚举编码的线性组合时需要指数级的时间复杂度。理论上,针对二次编码,CP-HDCA需要$ O({2}^{52}\cdot T) $的时间复杂度。为了降低分析所需的时间复杂度,Tang等[40]利用CP-CA模型将ADCA重构,提出了CP-LEA。此攻击恢复部分计算轨迹与选择中间值之间的线性系统,并以此作为区分器。
对于线性编码,CP-LEA构建输入z和每个样本v的线性系统,攻击者可以通过最高可解线性系统的数量来确定正确密钥。由于轨迹的值是由选择中间值线性映射得出的,所以猜测密钥如果正确,则其对应的线性系统可解。令$ Z $表示选择输入对应的线性系统系数,$ {v}_{i} $表示相同样本的不同轨迹。对于每个可能的解向量a,线性系统表示为$ Z\cdot a={v}_{i} $。令$ r\left(Z\right) $表示矩阵$ \boldsymbol{Z} $的秩,若线性系统可解,则$ r\left(Z\right)\geqslant r\left(Z\right|{v}_{i}) $。CP-LEA的区分器定义如下:
$ {\delta }_{k}^{\mathrm{C}\mathrm{P}\text{-}\mathrm{L}\mathrm{E}\mathrm{A}}=\mathrm{a}\mathrm{r}\mathrm{g}\;\mathrm{ }\mathrm{m}\mathrm{a}\mathrm{x}\#\left\{r\right(Z)\geqslant r(Z\left|{v}_{i}\right)\} $
与CP-DCA相同,由于在部分猜测密钥时,CP-LEA需要迭代$ n/{n}_{b} $次以恢复整个轮密钥,因此攻击仿射编码白盒实现的时间复杂度为$ O(n/{n}_{b}\cdot |k|\cdot ({n}_{b}+1)\cdot N\cdot T) $
对于非线性编码,Tang等将CP-LEA拓展为高次编码分析(Higher-Degree Encoding Analysis,HDEA)。与CP-HDCA类似,对于一个选择输入$ {z}^{\left(j\right)} $,一个次数为d的CP-HDEA计算其所有比特位的次数l$ (2\leqslant l\leqslant d) $扩展。CP-HDEA计算输入扩展与轨迹向量的线性系统,并验证线性系统$ Z\cdot a={v}_{i} $的可解性。因为这个线性系统的行系数的约减可以提前计算,因此计算秩$ r\left(Z\right|{v}_{i}) $的次数为$ N\cdot p $,其中全部扩展型式的个数为$ p=\left(\genfrac{}{}{0pt}{}{{n}_{b}}{0}\right)+ \left(\genfrac{}{}{0pt}{}{{n}_{b}}{1}\right)+\cdots+\left(\genfrac{}{}{0pt}{}{{n}_{b}}{d}\right) $。因此,CP-HDEA的时间复杂度为$ O(p\cdot |k|\cdot N\cdot T) $

2.3 故障分析

故障分析由Boneh等[3]提出,攻击者在密码算法执行过程中注入故障,采集相应的密文进行密钥恢复。DFA由Biham等提出[41]。在密码算法执行过程中注入故障,攻击者会获得一个故障输出,攻击者重复这一过程,始终使用相同的输入并在相同的位置注入故障,从而收集多个故障输出。随后,攻击者再次使用相同的输入执行相同的密码算法,但这次不注入任何故障,这样攻击者就会获得一个正确的输出。最后,使用差分密码分析技术对这些输出进行分析,以发现输出与密钥的依赖关系。故障分析通常分为两步:
(1)攻击者多次使用相同的输入执行目标密码算法,并记录正确输出和故障输出。为了生成故障输出,攻击者通常会在算法执行的后期注入故障(如在分组密码的最后一轮之前)。
(2)攻击者随后构建引入的故障模型,并分析收集到的输出(包括正确输出和故障输出),以确定所使用的密钥。

2.3.1 白盒注入故障方法

在硬件方面,注入故障的方法包括时钟/电压故障(Clock/Voltage Glitching)、脉冲激光(Pulsed Laser)和电磁辐射(Electromagnetic Emanation)等。在硬件实现中,对现代智能卡进行故障攻击较为困难且存在较高的风险,因为如果智能卡检测到攻击,可能会导致芯片自毁。因此,DFA论文集在减少所需故障的数量,但代价是增加了暴力破解密钥部分的复杂度,有时还需要精确控制故障的注入位置或类型。
在白盒攻击模型中,注入故障相比硬件来说非常简单且成本低廉,也不会导致程序自毁。在一般情况下,攻击者对白盒实现实施差分故障分析时,首先运行正常的加密程序,得到正确密文并记录,然后在加密程序的二进制流和白盒查找表中注入故障,最终筛选合适的故障密文用于计算可能的轮密钥候选值。2019年,Bock等[32]提出了5种能在软件环境下对密码算法进行故障注入的方法:
(1)通过代码提取(Code Lifting)将白盒加密程序转换为高级语言,再将故障注入到白盒加密过程中。
(2)将白盒程序运行在二进制动态插桩分析(Dynamic Binary Instrumentation,DBI)的框架下(如intel PIN[31]或Valgrind[42])并插入诱导故障的代码。
(3)使用支持脚本的程序调试器(如gdb)对白盒程序进行调试,然后自动地注入故障并采集对应的密文。
(4)将程序运行在Unicorn Engine[43]或PANDA(Platform for Architecture-Neutral Dynamic Analysis)[44]等模拟器中,可以随时改变数据的值或插入代码,从而达到对密码程序注入故障的目的。
(5) 在某些特定的情况下(如白盒查找表或程序缺乏完整性检测机制),向白盒查找表或程序注入故障,使其输出故障密文并对故障密文进行筛选。

2.3.2 对白盒密码的DFA

Teuwen等[9]对白盒密码实现进行DFA,并阐述了工作原理,并提出了两个基本要求:
(1)白盒加密程序所产生的密文不应该带有外部编码(External Encodings),以确保攻击者能拿到标准的密文。
(2)加密程序需要多次运行,以确保能获得多对正确和故障密文。
在CEJO框架中,当内部编码应用于nibble(半字节)或字节级别时,向编码输入注入的单字节故障仅会影响该特定字节。故障对中间值的影响局限于一个字节,不会传播至其他字节。因此,该框架本身并未提供对抗故障分析的保护能力,因为故障模型仍可被视为随机字节故障。此外,与计算分析不同,由于故障模型依然可视为随机字节故障,编码的次数对故障注入效果并无实质性影响。
在AES的CEJO实现中,文献[45]中介绍的DFA被认为是目前最有效的攻击之一。因为在该方案中,攻击者无须知道注入故障的确切值,且攻击者可以通过密文判断故障是否注入到确切的位置。判断方法如图5所示,若注入的字节型故障导致输出密文有4个字节发生改变,则此时故障注入到第9轮。
图 5 注入第9轮AES的DFA示意图

Fig.5 DFA diagram illustrating for the injection of the ninth round of AES

在白盒环境下,软件故障注入不会像在硬件中导致芯片等运行设备自毁[32]。因此,攻击者可以重复对查找表进行故障注入,直到获取所需的故障密文。
在获得第9轮的某个字节注入故障的密文后,攻击者可以根据此密文与未注入故障的正确密文进行差分分析,得出轮密钥4个字节的候选值。根据其差分关系,通过对同一字节再次进行故障注入,能够筛选出唯一确定的轮密钥4个字节值。在精确注入故障到第9轮的情况下,利用此攻击攻击者仅需要8个故障即可恢复AES主密钥。
基于此DFA,Teuwen等[46]提出了开源白盒故障分析工具 Deadpool,并成功攻击了Karroumi[19]和SECCON 2016[47]中的白盒 AES 实现方案。2020年,Sun等[48]利用此工具对多个公开发表的白盒AES实现进行了分析。但是在Xiao-Lai的AES白盒实现[18]中未能成功求出密钥,原因在于其采用了16比特的线性编码。该线性编码的特点是,单字节故障的注入不仅影响目标字节,还会波及相邻的一个字节,从而导致该故障分析方法失效。同样地,在应用大编码的自等价框架和隐函数框架的实现中,目前的故障分析方法也不再有效。在大编码保护下如何应用故障分析攻击仍是一个未解决的开放性问题。

3 白盒密码侧信道分析与防御技术的改进

白盒分组密码易受计算分析和故障分析这两类侧信道分析的攻击,针对这两种分析方式,学界提出了相应的防御技术。掩码(Masking)和冗余轮(Dummy Rounds)等技术被引入到白盒侧信道防御中。此外,由于这些防御技术的提出,针对防御技术的改进计算分析和故障分析手段也被提出。本节将对CA和FA各自的防御及针对防御方案的改进攻击进行讲述。

3.1 计算分析防御与高阶计算分析

掩码方案旨在屏蔽加密数据与侧信道泄露信息之间的关系,是抵御能量分析攻击、故障攻击和缓存攻击等侧信道攻击应用最广泛的对策。侧信道防御中首个线性掩码方案由Ishai等[49]于Crypto 2003上提出,该方案将密码算法以布尔逻辑电路形式实现,将算法中的每个比特值分解为$ n $个随机比特值,并在密码算法计算过程中不恢复任何密钥相关值,从而使密码算法泄露的侧信道信息均与密钥比特相互独立。其具体定义如下:一个n阶的线性掩码将一个敏感变量x分解为n+1个共享因子,并且满足
$ x={x}_{0}\oplus {x}_{1}\oplus \cdots \oplus {x}_{n} 。 $
其中,变量$ {x}_{0} $, ···, $ {x}_{n-1} $的生成符合均匀分布并且相互独立,$ {x}_{n}={x}_{0}\oplus {x}_{1}\oplus \cdots \oplus x $。掩码方案具有可证明安全性,n+1阶掩码方案能够抵御n阶侧信道攻击。
然而,在白盒攻击模型下,攻击者能够无噪声地采集每一个中间值。根据攻击者的这种能力,线性解码分析(Linear Decoding Analysis,LDA)[29, 50]被提出。LDA能够攻击任何由线性掩码方案保护的白盒实现。
在Asiacrypt 2018上,Biryukov等[29]为布尔逻辑实现的白盒分组密码引入非线性掩码技术(BU掩码方案),该技术将密钥相关的计算中间值分解为相互独立的随机值,因而隐藏了密钥信息。在CHES 2020上,Goubin等[51]讨论了三种基于线性与非线性掩码的组合形式(GRW掩码),但并未给出详细的安全计算函数构造方法。同年,Lee等[36]为CEJO-WBAES引入了随机掩码,这种掩码在MixColumns输出后新增了异或掩码操作,并衍生出掩码查找表,通过随机掩码的引入消除了中间值的密钥相关性。但该方案于CHES 2019上被碰撞攻击[34]破解,原因在于新引入的掩码值在轮输出之前已被抵消,从而暴露出了密钥相关值。Bogdanov等[52]提出了高阶DCA(Higher-Order DCA,HO-DCA),此攻击使用指数级的攻击复杂度,可以完全恢复高阶掩码保护的密钥信息。
之后,Lee等[53]改进了原掩码方案,将掩码保护的轮输出与掩码本身作为下一轮查找表的输入,扩大了查找表的输入空间,使得轮操作中的所有中间值均受掩码保护,而且DCA无法收集到密钥相关值作为能量曲线。Tang等[54]提出了自适应侧信道分析模型(Adaptive Side-Channel Analysis Model),并给出了自适应DCA对Lee等改进掩码方案的攻击实例。在CHES 2022上,Goubin等[51]提出了数据依赖(Data-Dependency)HO-DCA,并给出了BU掩码方案的安全性分析。在CHES 2021上,Seker等[30]为布尔逻辑实现的白盒分组密码提出了线性与非线性的组合掩码方案 (SEL掩码方案)。BU和SEL掩码方案的具体性能开销如表1所示。
同年,Biryukov等[55]在欧密上介绍了冗余混洗(Dummy Shuffling)技术(BU混洗方案),该技术可作为掩码方案的补充手段,为白盒密码的计算中间值引入噪声,使得攻击者采集的轨迹中,密钥相关的中间值无法对齐,从而增大了密钥恢复的难度。Battistello等[56]基于半同态加密(Semi-homomorphic Encryption)为白盒分组密码提出了一个非线性掩码方案,并给出了一个相应的AES白盒实现。表3总结了各掩码方案的掩码计算形式。
表 3 现有掩码方案计算形式

Table 3 Calculation forms of existing masking schemes

方案 计算形式 次数(Degree) 阶数(Order)
线性掩码 $ x={x}_{0}\oplus {x}_{1}\oplus \cdots \oplus {x}_{n} $ n
BU掩码 $ x=ab\oplus c $ 1 1
GRW掩码 $ x=\left({a}_{1}\oplus {a}_{2}\oplus \cdots \oplus {a}_{n}\right)\left({b}_{1}\oplus {b}_{2}\oplus \cdots \oplus {b}_{n}\right)\oplus \left({c}_{1}\oplus {c}_{2}\oplus \cdots \oplus {c}_{n}\right) $ 1 $ {n}^{2}+n-1 $
$ x=\left({a}_{1}{b}_{1}\oplus {c}_{1}\right)\oplus \left({a}_{2}{b}_{2}\oplus {c}_{2}\right)\oplus \cdots \oplus \left({a}_{n}{b}_{n}\oplus {c}_{n}\right) $ 1 $ 2n-1 $
$ x=ab\oplus {c}_{1}\oplus {c}_{2}\oplus \cdots \oplus {c}_{n} $ 1 $ n $
SEL掩码 $ x={\prod }_{j=0}^{d}{\stackrel{~}{x}}_{j}\oplus {\sum }_{i=1}^{n}{x}_{i} $ d $ n $
Tang等[57]提出了高次(Higher-Degree) HO-DCA,并改进了数据依赖的HO-DCA,证实了Seker掩码方案与BU混洗方案可以被高阶DCA攻击。Lee等[58]提出了一种平衡编码(Balanced Encoding)的方案,使得DCA在攻击白盒AES实现时,无法从线性相关峰值中区分出正确密钥。原梓清等[59]为白盒SM4实现中的部分关键查找表引入了8比特非线性编码,并验证了该方案抵御DCA攻击的有效性。但是,平衡编码方案由于应用的非线性编码的代数次数小于S盒的代数次数,因此无法抵御ADCA。
在CHES 2023上,Charlès等[60]探讨了BU和SEL掩码及相关方案的安全性与学习奇偶关系带噪声问题(Learning Parity with Noise,LPN)之间的关系,并提出了一种通过将LPN求解算法应用于白盒实现的新型自动化攻击方法。该攻击有效地利用了掩码方案的强线性近似,因此可以视为DCA和LDA技术的结合。与以往的攻击方法不同,该算法的复杂度依赖近似误差,从而为那些之前能够抵御自动化分析的掩码方案提供了新的实用攻击方法。
次年,Charlès等[61]提出了一种可以与任意基于采集轨迹的攻击方法相结合的新的白盒攻击技术,称为过滤技术(Filtering)。其基本思路是固定部分敏感变量值,然后根据白盒实现的中间变量对轨迹数据进行过滤,从而降低掩码方案的安全性。他们将过滤技术与LDA结合使用,能够在四次方时间内攻破任意参数的SEL掩码方案。并且还提出通过冗余节点移除(Redundant Node Removal)、LDA的线性代数性质和选择明文过滤方法(Chosen-Plaintext Filtering)进一步优化攻击效率。

3.2 故障分析防御技术及其改进

在 SAC 2019 上,Amadori 等[62]通过DFA结合 BGE 攻击技术,使得故障分析攻击能对增加了8 比特输出外部编码的白盒 AES 方案进行攻击, 该方法的密钥恢复攻击复杂度为 O(232)。Lee等[63]提出了表冗余(Table Redundancy)防御方案,该方案采用两路并行查找表的方式给出白盒AES实现,并对第9轮密钥表的输出编码进行修改,使得注入故障在随后的编码抵消环节产生扩散。然而在Inscrypt 2021上,Tang等[54]提出了自适应(Adaptive)的DFA攻击,证实了表冗余方案是不安全的。孙涛等[48]为白盒AES实现提出了一种基于NoisyRounds的DFA防御方案,该方案为白盒分组密码中易受攻击的首轮与末轮加密函数引入使用随机密钥初始化的加密与解密操作,更改了白盒分组密码的执行结构,隐藏了真实密钥所在的攻击位置,从而增大了DFA攻击的时间复杂度。然而Deng等[64]使用卷积神经网络(Convolutional Neural Networks)对基于NoisyRounds保护的白盒分组密码程序计算轨迹进行训练与分析,证实了使用深度学习手段可以有效识别出冗余轮,从而可以成功恢复该类防御方案的密钥信息。Kim等[63]利用故障注入攻击成功恢复了受高阶掩码防御的白盒分组密码的密钥信息,验证了掩码方案易受故障攻击。Gravouil[65]在布尔逻辑实现的基础上,结合掩码方案和纠错码(Error-Correcting Codes)提出了同时抵御DCA和DFA的防御方法。

4 总结与展望

4.1 白盒密码实现框架的特性

目前,基于CEJO、自等价及隐函数框架的白盒密码实现方法已成为理论与实践的主要方向。这三种框架的共同目标是通过编码保护中间值,从而防止密钥信息泄露。
CEJO框架是白盒密码实现的开端,其采用查找表网络并结合线性和非线性编码保护轮函数。然而,由于查找表的大小与输入输出的规模呈指数关系,CEJO框架的实际应用通常局限于4位或8位的非线性编码,难以满足现代密码应用的复杂需求。
为了打破这些限制,学术界提出了自等价框架,其创新之处在于利用S盒的仿射自等价类保护非线性层之间的中间值。该设计显著减少了对查找表的依赖,同时支持大规模编码,使得该框架在轮函数级别提供了更为全面的线性保护。
相比之下,隐函数框架是目前最新的白盒密码实现框架。通过结合非线性层的自等价编码和轮函数间的随机仿射变换编码,隐函数框架将轮函数计算转换为隐匿式多变量线性方程组求解,从而进一步提升了抗攻击能力。然而,隐函数框架在编码的稀疏度和非线性次数方面仍存在不足。而且,随着隐函数次数的升高,其存储需求和运行时间都随之增大,如表1所示。因此,提高隐函数框架的编码次数及优化隐函数实现效率,是隐函数框架改进的核心挑战。

4.2 白盒实现框架的侧信道分析总结

尽管白盒密码的设计目标是抵御白盒攻击,但其往往仍然无法避免灰盒攻击带来的威胁。侧信道分析,特别是计算分析和故障分析,已成为评估白盒密码实现的重要标准。
在计算分析方面,对于CEJO框架,当攻击的轨迹采集是S盒输出时,计算分析能够成功破解编码代数次数低于S盒代数次数的白盒密码实现。当白盒密码方案应用的编码代数次数达到7阶时,则需要使用采集列混淆输出轨迹的计算分析才可以破解。而对于自等价和隐函数框架,计算分析可以通过滑动窗口和选择明文技术,显著降低因大编码引起的高计算复杂度,从而实现有效攻击。
在故障分析方面,由于CEJO应用的内部编码大多是单字节或者半字节的,因此,对黑盒实现的故障分析大多可以直接应用到白盒实现上。并且与计算分析不同的是,对于单字节大小的内部编码,故障分析可以不受编码次数限制而对密钥进行恢复。但当编码规模超过8位时,故障会因为编码而扩散到其他位置,从而无法攻击。目前,针对大编码实现框架的故障分析方法尚未有深入研究。现阶段,自等价和隐函数框架在抗故障分析能力方面仍具优势。
在防御策略方面,掩码技术是应对计算分析的主要方法,其通过随机分解中间值降低密钥与轨迹之间的相关性,高阶掩码及其组合进一步提升了防御能力。然而,高阶计算分析和数据依赖攻击的提出,证明了单一防御机制在面对复杂攻击时的脆弱性。同样,表冗余方案和NoisyRounds在提升防御效果的同时,也易受深度学习辅助攻击的影响,表明在设计防御策略时,需要更加全面的考量。值得一提的是,龚征等在2019年全国密码设计竞赛中设计了一种分组密码SWAN(Substitution-based White-box block cipher with Affine Networks)[66]及其白盒实现。SWAN采用了“仿射-置换-仿射-置换”的结构,这有利于算法在白盒实现安全上由防护者在仿射和置换层中间增加安全参数。由于在设计阶段采用了2-step 3-share模式下最优的4比特S盒,该算法能基于门限化实现(Threshold Implementation)来抵御DCA攻击,但实际抵御效果还需要进一步的理论分析与实验证明。

4.3 计算分析与故障分析共同防御方案的讨论

目前,已公开发表的白盒密码侧信道防御工作以计算分析或故障分析的单一防御为主,较少有计算分析与故障分析共同防御方案的研究。由于计算分析的攻击场景为被动模型,其主要防御方法为降低算法运算中间值与密钥信息之间的相关性,使得攻击者采集的程序计算轨迹与密钥相关性较低。而故障分析的攻击场景为主动模型,其主要防御方法为扩散或检验注入故障对算法计算中间值的影响,使得攻击者获得的故障输出无法有效求解密钥信息。然而,由于两种分析的攻击场景与防御方法存在较大差异,关于二者共同防御方法的研究存在一定的困难与挑战。目前,对于计算分析与故障分析共同防御方案的研究有以下四个观点:
(1)掩码与纠错码方案。Gravouil[65]在掩码方案的基础上引入纠错码方案,使得以布尔逻辑门电路表示的白盒密码实现同时具有防御计算分析与故障分析攻击的能力。然而,对高阶计算分析的防御能力要求掩码方案同时具有高次与高阶两个性质,所以每个布尔逻辑门电路需要大量的非线性与线性掩码进行保护。此外,在此基础上增加的纠错码将扩大布尔逻辑电路的规模,该类掩码与纠错码方案性能较差,在时间和空间维度上对算法的设备有较高的要求。因此,需要从性能和安全两个角度寻找折中方案。
(2)大宽度的高阶非线性编码。一方面,大宽度的编码使计算分析在攻击过程中需要枚举或猜测的输入、密钥以及编码空间与编码的宽度呈指数级增长关系,导致计算分析在实际的攻击中不可行。因此,隐函数框架中与轮函数宽度相等的大宽度编码在设计初期被认为是抵御计算分析的可行方法之一。然而,选择明文的计算分析方法[40]的提出,证实了基于仿射变换编码或低阶非线性的隐函数实现无法抵御计算分析一类的侧信道攻击。在计算分析防御方面,大宽度的编码将扩散故障注入的影响,导致攻击者在分析过程中难以联立有效方程进行密钥求解。因此,大宽度的高阶非线性编码的构造,既可以增大计算分析攻击的时间复杂度,也可以保持扩散故障的影响,降低计算分析的实际可行性。
(3)组合轮函数实现。从目前公开的侧信道研究工作可知,计算分析与故障分析主要攻击白盒密码算法的首轮或末轮函数,并依据可逆推的密钥扩展函数,最终恢复主密钥信息。由于在分组密码的设计中,一方面单一一轮的轮函数较难有较高的扩散性,使得计算分析在攻击过程中部分猜测密钥,大大降低全轮宽度密钥恢复的攻击时间复杂度;另一方面单一轮函数也难以扩散故障注入的影响。因此,若能将分组密码的多轮轮函数进行组合,增大攻击者可采集映射的扩散性与混淆性,则可以降低计算分析与故障分析的攻击可行性。
(4)特殊S盒构造。在Asiacrypt 21上,Baksi等[67]提出了可抵御故障分析攻击的S盒构造及其相应的轮函数构造。该类S盒利用特殊的线性结构,使得故障分析在攻击过程中无法唯一确定密钥的值,从而增大密钥恢复空间。虽然,Nageler等[68]在Eurocrypt 22上提出了联合信息的故障分析攻击,证实了该类特殊构造的S盒无法抵御修改后的故障分析类攻击。但由于白盒密码框架会引入额外的随机编码对S盒进行隐藏,该类S盒在白盒密码框架构造中抵御故障分析的能力具有一定的可行性。而该类S盒是否也具备抵御计算分析的能力还有待进一步研究。因此,从白盒分组密码的设计角度,探究同时抵御计算分析和故障分析的特殊S盒构造,具备一定的可行性和挑战性。

4.4 现存挑战与未来前景展望

现有的白盒密码框架在性能、攻击与防御等方面仍然面临诸多挑战。
在性能方面,隐函数框架虽然提供了更高的安全性,但存储需求和计算开销限制了其在资源受限环境下的实际应用。因此,实现轻量化的隐函数设计仍是未来的研究方向。
在攻击方面,计算分析技术,如代数次数计算分析和选择明文计算分析,已能有效破解复杂编码防御的白盒实现。然而,针对大规模非线性编码和隐函数设计的故障攻击方法仍未被完全探索。此外,如何利用故障分析突破当前轮分组大小编码保护的瓶颈,也是一个重要的开放性问题。
在防御方面,现有防御策略(如掩码和冗余混洗技术)大多独立于白盒密码的设计,而非在构造框架时提高抗侧信道攻击的能力。同时,这些防御方法在面对高次攻击(如高次计算分析和自适应侧信道分析)时仍然存在显著漏洞。因此,未来设计的白盒密码应该结合侧信道攻击模型和防御机制,在设计阶段就融入抗计算分析和故障分析的能力,从而形成抗侧信道和抗代数分析的白盒密码框架。此外,在白盒密码应用场景下,还可以探索实时动态监测技术,通过主动引入随机性或动态调整算法结构干扰攻击者的分析过程。
在新兴应用场景方面,白盒密码的研究可以进一步拓展至物联网、区块链、数字版权保护等领域,并与同态加密、零知识证明等新型密码学技术相结合。同态加密允许在密文状态下进行计算,从而避免密钥在计算过程中暴露,这对于需要在不安全环境中进行计算的场景至关重要。而白盒密码作为一种软件层面的密钥保护技术,可以在一定程度上弥补同态加密在性能上的不足,两者结合有望实现高效且安全的密文计算。因此,白盒密码技术与同态加密的结合将是未来重要的研究方向。在多方协作场景中,白盒密码可以确保参与方无法访问其他方的密钥,而零知识证明则可用于证明各方操作均符合协议要求,从而保证计算过程的正确性和安全性。例如,在区块链智能合约中,可以利用零知识证明验证交易的合法性,同时利用白盒密码保护合约的关键算法和隐私数据,如签名算法(Elliptic Curve Digital Signature Algorithm)和密钥,防止恶意攻击者窃取或篡改。因此,白盒密码在区块链领域具备重要的应用价值,其应用不仅需要解决性能和效率问题,更需要与新型密码学技术紧密结合,以应对复杂多变的安全挑战。
综上所述,白盒密码侧信道分析与防御技术的研究仍处于发展阶段,相应分析技术与防御策略还需要进一步的理论分析与实践证明。随着业界对端到端安全的日益重视,作为终端安全的技术手段之一,白盒密码技术也将扮演更加重要的角色。
1
吴文玲,冯登国,张文涛. 分组密码的设计与分析[M]. 北京:清华大学出版社,2009.

WU W L,FENG D G,ZHANG W T. Design and analysis of block ciphers [M]. Beijing:Tsinghua University Press,2009.

2
KOCHER P C,JAFFE J,JUN B. Differential power analysis[C]//Advances in Cryptology-CRYPTO’99,19th Annual International Cryptology Conference. Berlin,Heidelberg:Springer,1999:388-397.

3
BONEH D,DEMILLO R A,LIPTON R J. On the importance of checking cryptographic protocols for faults[C]//Proceedings of the Advances in Cryptology-EUROCRYPT’97. Berlin,Heidelberg:Springer,1997:37-51.

4
TSUNOO Y,SAITO T,SUZAKI T,et al. Cryptanalysis of DES implemented on computers with Cache[C]//International Workshop on Cryptographic Hardware and Embedded Systems. Berlin,Heidelberg:Springer,2003:62-76.

5
CHOW S,EISEN P,JOHNSON H,et al. White-box cryptography and an AES implementation[C]//International Workshop on Selected Areas in Cryptography. Berlin,Heidelberg:Springer,2003:250-270.

6
KERCKHOFFS A. La cryptographie militaire[J].Journal des Sciences Militaires,1883,9:5-38.

7
BOS J W,HUBAIN C,MICHIELS W,et al. Differential computation analysis:hiding your white-box designs is not enough[C]//International Conference on Cryptographic Hardware and Embedded Systems. Berlin,Heidelberg:Springer,2016:215-236.

8
SANFELIX E,MUNE C,DE HAAS J. Unboxing the white-box:practical attacks against obfuscated ciphers[Z]. Presentation at BlackHat Europe. 2015.

9
TEUWEN P,HUBAIN C. Differential fault analysis on white-box AES implementations [EB/OL]. (2016-01-19)[2024-12-09]. https://blog.quarkslab.com/differential-fault-analysis-on-white-box-aes-implementations.html.

10
PROUFF E,CHENG C M,YANG B Y,et al. The WhibOx contest:an ecrypt white-box cryptography competition[EB/OL]. (2017-09-30)[2024-12-09]. https://whibox-contest.github.io/2017/.

11
CryptoExperts,CyberCrypt. CHES 2019 capture the flag challenge-the WhibOx contest[EB/OL]. (2019-09-13)[2024-12-09]. https://whibox.io/contests/2019/.

12
林婷婷,来学嘉. 白盒密码研究 [J]. 密码学报,2015,2(3):258-267.

LIN T T,LAI X J. Research on white-box cryptography [J]. Journal of Cryptologic Research,2015,2(3):258-267.

13
荆继武, 李畅. 密码技术的现状与白盒化发展趋势[J]. 中国信息安全, 2021, (8): 49- 53.

JING J W, LI C. Current status of cryptographic technology and the development trend of white-box implementation[J]. China Information Security, 2021, (8): 49- 53.

14
王锦良, 魏英凯. 国内白盒密码算法发展状况的思考[J]. 工业信息安全, 2023, (3): 41- 46.

WANG J L, WEI Y K. Reflections on the development of domestic white-box cryptographic algorithms[J]. Industry Information Security, 2023, (3): 41- 46.

15
CHOW S,EISEN P,JOHNSON H,et al. A white-box DES implementation for DRM applications[C]//ACM Workshop on Digital Rights Management. Berlin,Heidelberg:Springer,2003:1-15.

16
BILLET O,GILBERT H,ECH-CHATBI C. Cryptanalysis of a white-box AES implementation[C]//International Workshop on Selected Areas in Cryptography. Berlin,Heidelberg:Springer,2005:227-240.

17
BRINGER J,CHABANNE H,DOTTAX E. White-box cryptography:another attempt [DB/OL]. (2006-12-20)[2024-12-09]. https://eprint.iacr.org/2006/468.

18
XIAO Y,LAI X. A secure implementation of white-box AES[C]//Proceedings of the 2009 2nd International Conference on Computer Science and Its Applications.IEEE,2009:1-6.

19
KARROUMI M. Protecting white-box AES with dual ciphers[C]// International Conference on Information Security and Cryptology. Berlin,Heidelberg:Springer,2010:278-291.

20
DE MULDER Y,WYSEUR B,PRENEEL B. Cryptanalysis of a perturbated white-box AES implementation[C]//International Conference on Cryptology in India. Berlin,Heidelberg:Springer,2010:292-310.

21
DE MULDER Y,ROELSE P,PRENEEL B. Cryptanalysis of the Xiao-Lai white-box AES implementation[C]//International Conference on Selected Areas in Cryptography. Berlin,Heidelberg:Springer,2013:34-49.

22
MCMILLION B,SULLIVAN N. Attacking white-box AES constructions[C]//2016 ACM SIGSAC Conference on Computer and Communications Security. Association for Computing Machinery,2016:85-90.

23
LEPOINT T,RIVAIN M,DE MULDER Y,et al. Two attacks on a white-box AES implementation[C]//International Conference on Selected Areas in Cryptography. Berlin,Heidelberg:Springer,2014:265-285.

24
VANDERSMISSEN J,RANEA A,PRENEEL B. A white-box speck implementation using self-equivalence encodings[C]//International Conference on Applied Cryptography and Network Security. Cham:Springer,2022:771-791.

25
RANEA A,VANDERSMISSEN J,PRENEEL B. Implicit white-box implementations:White-boxing ARX ciphers[C]//Annual International Cryptology Conference. Cham:Springer,2022:33-63.

26
肖雅莹. 白盒密码及AES 与SMS4 算法的实现[D]. 上海:上海交通大学,2010.

XIAO Y Y. White-box cryptography and implementations of AES and SMS4 [D]. Shanghai:Shanghai Jiao Tong University,2010.

27
BAI K, WU C. A secure white-box SM4 implementation[J]. Security Communication Networks, 2016, 9 (10): 996- 1006.

DOI

28
姚思, 陈杰. SM4 算法的一种新型白盒实现[J]. 密码学报, 2020, 7 (3): 358- 374.

YAO S, CHEN J. A new method for white-box implementation of SM4 algorithm[J]. Journal of Cryptologic Research, 2020, 7 (3): 358- 374.

29
BIRYUKOV A,UDOVENKO A. Attacks and countermeasures for white-box designs[C]//International Conference on the Theory and Application of Cryptology and Information Security. Cham:Springer,2018:373-402.

30
SEKER O,EISENBARTH T,LISKIEWICZ M. A white-box masking scheme resisting computational and algebraic attacks[DB/OL]. (2021-01-23)[2024-12-09]. https://eprint.iacr.org/2020/443.

31
Intel. Pin-a dynamic binary instrumentation tool [EB/OL]. (2024-12-23)[2024-12-09]. https://software.intel.com/content/www/us/en/develop/articles/pin-a-dynamic-binary-instrumentation-tool.html/.

32
ALPIREZ BOCK E, BOS J W, BRZUSKA C, et al. White-box cryptography: don’t forget about grey-box attacks[J]. Journal of Cryptology, 2019, 32, 1095- 1143.

DOI

33
BOCK E A,BRZUSKA C,MICHIELS W,et al. On the ineffectiveness of internal encodings-revisiting the DCA attack on white-box cryptography[C]//International Conference on Applied Cryptography and Network Security. Cham:Springer,2018:103-120.

34
RIVAIN M, WANG J. Analysis and improvement of differential computation attacks against internally-encoded white-box implementations[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2019, (2): 225- 255.

35
SASDRICH P,MORADI A,GÜNEYSU T. White-box cryptography in the gray box[C]//International Conference on Fast Software Encryption. Berlin,Heidelberg:Springer,2016:185-203.

36
LEE S,JHO N S,KIM M. On the linear transformation in white-box cryptography[DB/OL]. (2020-02-28)[2024-12-09]. https://eprint.iacr.org/2018/1047.

37
CARLET C, GUILLEY S, MESNAGER S. Structural attack (and repair) of diffused-input-blocked-output white-box cryptography[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2021, (4): 57- 87.

38
TANG Y, GONG Z, LI B, et al. Revisiting the computation analysis against internal encodings in white-box implementations[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2023, (4): 493- 522.

39
CASTELNOVI L, HOUZELOT A. On the (im)possibility of preventing differential computation analysis with internal encodings[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2024, (3): 452- 471.

40
TANG Y, GONG Z, ZHAO L, et al. Unboxing ARX-based white-box ciphers: chosen-plaintext computation analysis and is applications[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2024, (3): 634- 670.

41
BIHAM E,SHAMIR A. Differential fault analysis of secret key cryptosystems[C]//Advances in Cryptology-CRYPTO’97,17th Annual International Cryptology Conference Santa Barbara. Berlin,Heidelberg:Springer,1997:513-525.

42
NETHERCOTE N, SEWARD J. Valgrind: a framework for heavyweight dynamic binary instrumentation[J]. ACM Sigplan notices, 2007, 42 (6): 89- 100.

DOI

43
ENGINE U. Unicorn CPU emulator framework[EB/OL]. (2015-8-1)[2022-11-1]. https://www.unicorn-engine.org/.

44
Panda. Platform for architecture-neutral dynamic analysis[EB/OL]. (2018-05-07)[2024-12-09]. https://github.com/panda-re/panda.

45
DUSART P,LETOURNEUX G,VIVOLO O. Differential fault analysis on AES[C]//International Conference on Applied Cryptography and Network Security. Berlin,Heidelberg:Springer,2003:293-306.

46
SideChannelMarvels. Repository of various public white-box cryptographic implementations and their practical attacks[EB/OL]. (2024-07-06)[2024-12-09]. https://github.com/SideChannelMarvels.

47
SECCON. SECCON 2016 online CTF for public [EB/OL]. (2016-12-11)[2024-12-09]. https://github.com/SECCON/SECCON2016_online_CTF/.

48
孙涛,唐国俊,吴昕锴,等. 一种NoisyRounds 保护的白盒AES 实现及其差分故障分析 [J]. 密码学报,2020,7(3):342-357.

SUN T,TANG G J,WU X K,et al. White-box AES implementation protected by NoisyRounds and its differential fault analysis [J]. Journal of Cryptologic Research,2020,7(3):342-357.

49
ISHAI Y,SAHAI A,WAGNER D. Private circuits:securing hardware against probing attacks[C]//Annual International Cryptology Conference. Berlin,Heidelberg:Springer,2003:463-481.

50
GOUBIN L, PAILLIER P, RIVAIN M, et al. How to reveal the secrets of an obscure white-box implementation[J]. Journal of Cryptographic Engineering, 2020, 10 (1): 49- 66.

51
GOUBIN L, RIVAIN M, WANG J. Defeating state-of-the-art white-box countermeasures with advanced gray-box attacks[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2020, (3): 454- 482.

52
BOGDANOV A,RIVAIN M,VEJRE P S,et al. Higher-order DCA against standard side-channel countermeasures[C]//International Workshop on Constructive Side-Channel Analysis and Secure Design. Cham:Springer,2019:118-141.

53
LEE S,KIM M. Improvement on a masked white-box cryptographic implementation[DB/OL]. (2020-12-18)[2024-12-09]. https://eprint.iacr.org/2020/199.

54
TANG Y,GONG Z,SUN T,et al. Adaptive side-channel analysis model and its applications to white-box block cipher implementations[C]//International Conference on Information Security and Cryptology. Cham:Springer,2021:399-417.

55
BIRYUKOV A,UDOVENKO A. Dummy shuffling against algebraic attacks in white-box implementations[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Cham:Springer,2021:219-248.

56
BATTISTELLO A,CASTELNOVI L,CHABRIER T. Enhanced encodings for white-box designs[C]//International Conference on Smart Card Research and Advanced Applications.Cham: Springer,2022:254-274.

57
TANG Y, GONG Z, CHEN J, et al. Higher-order DCA attacks on white-box implementations with masking and shuffling countermeasures[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2022, (1): 369- 400.

58
LEE S, KIM J N. Balanced encoding of near-zero correlation for an AES implementation[J]. IEEE Transactions on Information Forensics and Security, 2024, (19): 6589- 6603.

59
原梓清, 陈杰. 一种抗差分计算分析的白盒 SM4 方案[J]. 密码学报, 2023, 10 (2): 386- 396.

YUAN Z Q, CHEN J. A white-box SM4 scheme resistant to differential computational analysis[J]. Journal of Cryptologic Research, 2023, 10 (2): 386- 396.

60
CHARLÈS A, UDOVENKO A. LPN-based attacks in the white-box setting[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2023, (4): 318- 343.

61
CHARLÈS A, UDOVENKO A. White-box filtering attacks breaking SEL masking: from exponential to polynomial time[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2024, (3): 1- 24.

62
AMADORI A,MICHIELS W,ROELSE P. Automating the BGE attack on white-boxx implementations of AES with external encodings[C]//2020 IEEE 10th International Conference on Consumer Electronics (ICCE-Berlin). IEEE,2020:1-6.

63
LEE S,JHO N S,KIM M. Table redundancy method for protecting against fault attacks[DB/OL]. (2021-06-28)[2024-12-09]. https://eprint.iacr.org/2019/959.

64
DENG T,LI P,YANG S,et al. A deep-learning approach for predicting round obfuscation in white-box block ciphers[C]//Applied Cryptography and Network Security Workshops. Cham:Springer,2023:419-438.

65
GRAVOUIL C. A new generic fault resistant masking scheme using error-correcting codes [DB/OL]. (2023-02-27)[2024-12-09]. https://eprint.iacr.org/2023/118.

66
龚征,黎伟杰,廖国鸿,等. SWAN 分组密码算法 [EB/OL]. (2019-12-31)[2024-12-09]. https://sfjs.cacrnet.org.cn/site/content/397.html

GONG Z,LI W J,LIAO G H,et al. SWAN block cipher [EB/OL]. (2019-12-31)[2024-12-09]. https://sfjs.cacrnet.org.cn/site/content/397.html

67
BAKSI A, BHASIN S, BREIER J, et al. DEFAULT:cipher level resistance against differential fault attack[C]//International Conference on the Theory and Application of Cryptology and Information Security. Cham:Springer,2021:124-256.

68
NAGELER M, DOBRAUNIG C, EICHLSEDER M. Information-combining differential fault attacks on DEFAULT [DB/OL].(2024-06-07)[2024-12-09]. https://eprint.iacr.org/2021/1374.

Outlines

/