CN113940028A - 实现白盒密码的方法和装置 - Google Patents

实现白盒密码的方法和装置 Download PDF

Info

Publication number
CN113940028A
CN113940028A CN202080039898.7A CN202080039898A CN113940028A CN 113940028 A CN113940028 A CN 113940028A CN 202080039898 A CN202080039898 A CN 202080039898A CN 113940028 A CN113940028 A CN 113940028A
Authority
CN
China
Prior art keywords
box
software application
implementation
mask
field representation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202080039898.7A
Other languages
English (en)
Other versions
CN113940028B (zh
Inventor
T·林
D·娄
M·冯维利奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Irdeto BV
Original Assignee
Irdeto BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Irdeto BV filed Critical Irdeto BV
Publication of CN113940028A publication Critical patent/CN113940028A/zh
Application granted granted Critical
Publication of CN113940028B publication Critical patent/CN113940028B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

一种用于在软件应用中实现白盒块密码以创建与软件应用具有相同功能的安全软件应用的装置、方法和计算机介质。通过以下方式创建块密码的实现:应用原始有限域表示和复合域表示之间的同构,并使用所述同构将密码重构为仅使用复合域元素的操作,包括异或、线性变换和S‑box;将原始S‑box分解成几个代数步骤,并将这些步骤中的一些合并到密码的其他部分中;在S‑box的非线性步骤中,利用复合域表示中的算法实现原始有限域表示中的取逆;应用m个输入共享因子和n个输出共享因子的初始阈值实现来为S‑box的非线性步骤生成查找表;将进一步的阈值实现应用于密码的不同步骤以生成查找表。将块密码应用于软件应用的至少一部分,以创建安全软件应用,并且由此提高执行安全软件应用的计算平台的安全性。

Description

实现白盒密码的方法和装置
技术领域
本公开涉及白盒安全实现和可以应用于SM4编码方案的相关白盒密码。
背景技术
术语“密码学”指代在第三方存在的情况下用于安全通信的技术,第三方有时被称为“对手”或“攻击者”。可以构建防止第三方或公众读取私人消息的各种协议。密码学的应用包括电子商务、基于芯片的支付卡、数字货币、计算机密码和内容流。现代密码算法是围绕计算难度假设设计的,这使得这样的算法在实践中难以被任何对手破解。从理论上讲,打破这样的系统是可能的,但是为了阻止潜在的攻击者,这样做优选是不切实际的。
密码学的“黑盒”攻击模型基于如下前提:对手无法访问密码的内部操作及其使用的密钥,对手只能访问其输入和输出。该模型是大多数现代密码算法的开发和设计的基础,包括数据加密标准(DES)、高级加密标准(AES)和许多其他算法。然而,黑盒攻击模型的该前提,即攻击者无法访问设备的内部操作,不适用于许多现实世界的安全问题。
“白盒”攻击模型假设对手具有更高的可见性和控制水平。白盒攻击模型可以应用在许多更现代的实现中,在这些实现中,攻击者诸如在可能具有调试工具或安装了恶意软件的移动电话或个人计算机中可以具有对操作的完整可见性和控制。这提出了一个挑战,即开发对策以防止对手提取信息(诸如密码密钥)或影响操作从而在白盒模型中产生不期望的结果。因此,研究对白盒模型中的颠覆的对策变得越来越重要。
“White-box cryptography and an AES implementation”(Chow, S., Eisen,P., Johnson, H.和Van Oorschot, P.C.)密码学中所选领域国际研讨会,第250-270页(Springer,柏林,海德堡,2002年8月)描述了对白盒攻击的对策,并且从而使学术界普遍认识到白盒场景中的对策可能是可行的思想。白盒AES实现的一般思想是将秘密密钥隐藏在AES的S-box中,将AES分解成几个步骤,并插入秘密随机双射来混淆每个步骤。为了保持实现在功能上等同于AES,插入的部分最终将被取消。然而,AES白盒实现已经被成功攻击。2004年,Billet、Gilbert和Ech-Chatbi提出了一种对AES白盒实现的高效攻击(称为BGE攻击)。BGE攻击提取了工作因子为230的嵌入式AES密钥,并且所述攻击因此是一种实用的攻击。
许多专用的白盒实现是已知的。一些在白盒攻击环境中实现标准密码,并且一些人专注于各种非标准密码的设计,所述非标准密码预期在白盒攻击下是安全的。这样的密码被称为“白盒密码”。然而,针对白盒实现的密码分析研究已经取得了重大进展。一些攻击是白盒模型独有的,因为它们需要详细的结构来进行分析。这包括代数攻击,诸如BGE攻击。附加地,在某些场景下,“提升攻击”是可能的,因为确实需要确定密钥,因为提升的算法可以用作预言机,并且随机性的源可以被覆盖。
诸如DPA(差分功率分析)之类的“灰盒”攻击已经以DCA(差分计算分析)的名义被重新利用,并且可以重新评估在白盒场景中的有效性。例如,简单共享方案的优势是,当没有噪声时,共享因子(share)数量的功率丢失,从而增加了必须收集用于分析的轨迹数量,白盒场景中就是这样的情况。保留了这些对策的一些益处。任何设计良好的共享方案、包括用于对抗由于硬件电子脉冲(glitch)引起的泄漏的阈值方案都提供了一些优势,因为通过隐藏直接相关性使得标识信息泄漏变得更复杂。
由于其流行性,AES一直是分析和对策的焦点,并且文献中已经公布和分析了AES的几种白盒实现。SM4是较新的标准化密码,并且在白盒环境中没有得到太多分析。SM4是无线LAN WAPI的中国国家标准中使用的块密码(block cipher)。SM4算法由Lu Shuwang发明,并于2016年8月成为中国国家标准(GB/T 32907-2016)。SM4密码具有大小为128位的块(block)。它使用8位S-box,并且密钥大小为128位。唯一使用的操作是32位按位异或、32位循环移位和S-box应用。一个数据的块的加密或解密由32轮组成。每一轮更新内部状态的四分之一(即32位)。非线性密钥调度用于产生轮密钥。解密使用与加密相同的轮密钥,只是它们的顺序相反。SM4的圆形结构与AES具有几个相似之处,包括由有限域中的取逆确定的8位S-box,然后是在四个S-box的输出之间进行的线性扩散。
第一个白盒SM4实现由Xiao, Y.、Lai, X.的“White-Box Cryptography and aWhite-Box Implementation of the SMS4 Algorithm”(上海交通大学:中国上海,2009年,第24-34页)提出。Xiao等人的密码在类似BGE攻击的攻击中被证明是不安全的。另一个白盒SM4实现方案是在Shi, Y.、Wei, W.和He, Z.的“Lightweight White-box SymmetricEncryption Algorithm Against Node Capture for WSNs”(Sensors, 15(5), pp.11928-11952, 2015)中提出的。该实现使用对偶密码的概念和随机选择的非奇异矩阵来构造SM4的功能等同的白盒加密算法。Lin, Tingting等人的“Security Evaluation andImprovement of a White-Box SMS4 Implementation Based on Affine EquivalenceAlgorithm”(The Computer Journal 61.12: 1783-1790, 2018)对该实现进行了分析,并描述了可以如何使用仿射等价算法来提取密钥。
发明内容
本文描述的实现是可以应用于SM4的白盒实现。以一种新颖的方式应用技术来创建抵抗白盒攻击的固定密钥SM4的实际实现。所述技术包括使用通过S-box结构使其可能的复合域,用4位中间变量重新表述整个密码以减小总表大小,专用查找表,以及应用
Figure 258022DEST_PATH_IMAGE001
阈值方案,其中在生成共享因子时使用处理状态的其他部分来生成共享因子。本文描述的白盒SM4实现抵抗已知的白盒攻击,诸如仿射等价攻击、类BGE攻击和类DCA攻击。
一种实现包括一种用于在软件应用中实现白盒块密码以创建与软件应用具有相同功能的安全软件应用的方法、装置或计算机可读介质,该方法包括通过以下各项创建块密码的实现:
在原始有限域表示和复合域表示之间应用同构,并使用该同构将密码重构为仅使用复合域元素的操作,包括异或、线性变换和S-box;将原始S-box分解成几个代数步骤,并将这些步骤中的一些合并到密码的其他部分中;在S-box的非线性步骤中,利用复合域表示中的算法实现原始有限域表示中的取逆;应用m个输入共享因子和n个输出共享因子的初始阈值实现来为S-box的非线性步骤生成查找表;将进一步的阈值实现应用于密码的不同步骤以生成查找表;和
将块密码应用于软件应用的至少一部分,以创建安全软件应用,并且由此增加执行安全软件应用的计算平台的安全性。
附图说明
下面将结合附图描述本发明的实现,其中:
图1是根据公开的实现的关于一轮SM4块密码的框图;
图2是根据所公开的实现的SM4中的逐字节操作示例的框图;
图3是根据所公开的实现的由阈值实现生成的查找表的框图;
图4是根据所公开的实现的第一轮的一个分支的处理的框图;
图5是根据所公开的实现的用于掩码生成的查找表的框图;
图6是基于图5的查找表的掩码生成的框图;
图7是根据所公开的实现的计算步骤的框图;
图8是根据所公开的实现的计算步骤的框图;
图9是根据所公开的实现的计算步骤的框图;
图10是根据所公开的实现的计算步骤的框图;
图11是根据所公开的实现的用于创建T-box的过程的框图;
图12是根据所公开的实现的查找表的框图;
图13是根据所公开的实现的第二轮的第一分支的计算的框图;
图14是根据所公开的实现的掩码消除数据流的框图;
图15是根据所公开的实现的第三轮的第一分支的计算的框图;
图16是根据所公开的实现的第三轮的第一分支的加法操作的计算的框图;
图17是根据所公开的实现的第四轮的第一分支的计算的框图;
图18是根据所公开的实现的第四轮的第一分支的加法操作的计算的框图;
图19是根据所公开的实现的改变的查找表的框图;
图20是根据所公开的实现的密文恢复计算的框图;
图21是根据所公开的实现的“类型II表”的框图;
图22是根据所公开的实现的“类型III 表”的框图;
图23是根据所公开的实现的“类型Iv表”的框图;
图24是根据所公开的实现的针对单个列的组合查找表的框图;
图25是根据所公开的实现的简化的T-box的框图;
图26是根据所公开的实现与8×16表组合的4个T-box的框图;
图27是根据所公开的实现用于执行功能的架构的示意图;
图28是根据所公开的实现的高级方法的流程图。
具体实施方式
在描述公开的实现的新颖方面之前,将更详细地描述SM4。SM4被选择用在有线认证和隐私基础设施(WAPI)标准中,在中国获得官方授权,并且在为WLAN产品提供数据机密性方面发挥重要作用。SM4具有128位密钥大小、128位块大小和32轮不平衡Feistel网络结构。令
Figure 175163DEST_PATH_IMAGE002
Figure 954900DEST_PATH_IMAGE003
是明文,
Figure 287792DEST_PATH_IMAGE004
是轮密钥。然后,图1中的100示出了SM4加密操作。如所示,输入的是明文
Figure 102165DEST_PATH_IMAGE005
。然后,对于
Figure 924627DEST_PATH_IMAGE006
Figure 191660DEST_PATH_IMAGE007
所得到的输出,密文是:
Figure 328244DEST_PATH_IMAGE008
其中:
○ 变换
Figure 997122DEST_PATH_IMAGE009
是可逆的置换。它由线性变换L和非线性变换S组成,并且即
Figure 990486DEST_PATH_IMAGE010
○ 线性变换L被定义为对于
Figure 744816DEST_PATH_IMAGE011
Figure 918046DEST_PATH_IMAGE012
Figure 441431DEST_PATH_IMAGE013
○ 变换S并行应用四个8×8双射S-box:对于
Figure 871275DEST_PATH_IMAGE014
Figure 50584DEST_PATH_IMAGE015
Figure 325707DEST_PATH_IMAGE016
○ 解密过程与加密过程相同,只是使用轮密钥的顺序相反。
复合域通常用于伽罗瓦域算术的实现中。当k不是素数并且可以写成
Figure 969178DEST_PATH_IMAGE017
时,域
Figure 304345DEST_PATH_IMAGE018
是复合域。域
Figure 970949DEST_PATH_IMAGE018
Figure 49764DEST_PATH_IMAGE019
彼此同构。利用同构,元素和操作可以从一个映射到另一个。
对于实现,使用复合域
Figure 547741DEST_PATH_IMAGE020
。元素在
Figure 257071DEST_PATH_IMAGE021
中被映射到
Figure 207710DEST_PATH_IMAGE022
,其中
Figure 90215DEST_PATH_IMAGE023
中的算术由下列域多项式
Figure 442699DEST_PATH_IMAGE024
Figure 821466DEST_PATH_IMAGE025
构成,两者都是不可约的:
Figure 259400DEST_PATH_IMAGE026
Figure 680017DEST_PATH_IMAGE027
Figure 152587DEST_PATH_IMAGE028
Figure 203719DEST_PATH_IMAGE029
上。
Figure 128950DEST_PATH_IMAGE030
的一般元素g可以表示为,
Figure 353258DEST_PATH_IMAGE027
上的线性多项式(以Y为单位),表示为
Figure 414755DEST_PATH_IMAGE031
,具有乘法模多项式
Figure 636789DEST_PATH_IMAGE032
。所有系数都在4位子域
Figure 49316DEST_PATH_IMAGE027
中。所以这一对
Figure 77315DEST_PATH_IMAGE033
依据多项式基来表示g,其中Y是
Figure 258897DEST_PATH_IMAGE032
的一个根。
同构映射和操作表示取决于域多项式和不同的基。我们在每个级别自由选取任一类型的基。
Figure 386253DEST_PATH_IMAGE034
Figure 286076DEST_PATH_IMAGE035
之间的同构映射可以以已知的方式找到,诸如由以下各项教导的:Rudra, A., Dubey、P.K., Jutla、C.S., Kumar、V., Rao, J.R.和Rohatgi, P.的“Efficient Rijndael Encryption Implementation with Composite FieldArithmetic”(国际密码硬件和嵌入式系统研讨会,第171-184页,Springer,柏林,海德堡,2001年5月);Paar, C. 的“Efficient VLSI Architectures for Bit-parallelComputation in Galois fields”(实验数学研究所博士论文,埃森大学,1994年);和Wong,M.M.、Wong, M.L.D.、Hijzin, I.和Nandi, A.K.的“Composite field GF (((2 2) 2) 2)AES S-box with Direct Computation in GF (2 4) Inversion”(亚洲信息技术(CITA11),2011年第7届国际会议,第1-6页,IEEE)。诸如乘法和乘法逆的用于表示操作的已知方法的细节可以在Canright, D.的2005年8月的“A Very Compact S-box for AES”(密码硬件和嵌入式系统国际研讨会,第441-455页,Springer,柏林,海德堡,2011年7月)中找到。
阈值实现是众所周知的侧信道攻击对策,如由Nikova, S., Rechberger, C. andRijmen, V. December的“Threshold implementations Against Side-channel Attacksand Glitches”(国际信息和通信安全会议,第529-545页,Springer,柏林,海德堡。2006年12月)教导的。这样的攻击基于秘密共享和多方计算。在公开的实现中,使用了
Figure 852187DEST_PATH_IMAGE036
阈值系统,该系统需要n个函数f i 的集合来计算函数f的输出。n个函数f i 的输出的集合被称为输出共享因子。
Figure 153855DEST_PATH_IMAGE037
标示一个函数。当
Figure 974085DEST_PATH_IMAGE038
Figure 361204DEST_PATH_IMAGE039
时,变量A被拆分成n个共享因子A i 。安全阈值实现可以满足三个特性:
○ 特性1(不完整性)。每个函数都独立于输入变量
Figure 731005DEST_PATH_IMAGE040
中的每个的至少一个共享因子
Figure 621601DEST_PATH_IMAGE041
Figure 356339DEST_PATH_IMAGE042
Figure 965175DEST_PATH_IMAGE043
○ 特性2(正确性)。共享因子的总和给出了期望的输出。
Figure 138667DEST_PATH_IMAGE044
○ 特性3(一致性)。如果与A一致的输入共享因子
Figure 149348DEST_PATH_IMAGE045
是均匀分布的,并且对于BC,…,是相似的,则与z一致的输出共享因子必须是均匀分布的。
输入共享因子和输出共享因子的数量影响阈值实现的特性。例如,如果在针对每个输入X、Y和Z有三个共享因子的情况下应用阈值实现,并且对于函数
Figure 258250DEST_PATH_IMAGE046
有三个输出共享因子,则不保证一致性。如何为此类函数创建阈值实现的细节是众所周知的,并且本文不进一步讨论。例如,更多的细节和构造可以在以下各项中找到:Bilgin B、Nikova S、Nikov V、Rijmen V、Stütz G的“Threshold implementationsof all 3×3 and 4×4 S-boxes”(加密硬件和嵌入式系统国际研讨会,9,第76-91页,Springer,柏林,海德堡,2012年9月);Nikova, S.、Rechberger, C. 和Rijmen, V.的12月“Threshold Implementations Against Side-channel Attacks and Glitches”(信息和通信安全国际会议,第529-545页,Springer,柏林,海德堡,2006年12月);Nikova, S.、Rijmen, V.和Schläffer, M.的“Secure Hardware Implementation of Non-linearFunctions in the Presence of Glitches”(信息安全和密码学国际会议,第218-234页,Springer,柏林,海德堡,2008年12月)。所公开的实现使用TI来指示阈值实现。
在详细描述所公开的实现之前,下面讨论几种技术。Chow, S.、Eisen, P.、Johnson, H. 和Van Oorschot, P.C.的“White-box cryptography and an AESimplementation”(密码学中所选领域国际研讨会,第250-270页,Springer,柏林,海德堡,2002年8月)教导了S-box的代数结构可以表示为:
Figure 354382DEST_PATH_IMAGE047
其中
Figure 65986DEST_PATH_IMAGE049
并且,
Figure 931174DEST_PATH_IMAGE050
上的
Figure 804452DEST_PATH_IMAGE051
的基础不可约多项式是:
Figure 387880DEST_PATH_IMAGE052
然而,申请人发现这与SM4的S-box表不匹配。因此,矩阵A 2 和不可约多项式以一种新颖的方式被修改。验证示出,以下参数和不可约多项式将正确生成SM4 S-box的查找表:
Figure 637596DEST_PATH_IMAGE053
Figure 622869DEST_PATH_IMAGE054
并且,对于
Figure 368846DEST_PATH_IMAGE050
Figure 439570DEST_PATH_IMAGE051
的基础不可约多项式是:
Figure 492977DEST_PATH_IMAGE055
可以注意到,多项式仅仅是互反多项式(相反的系数),并且C 1 A 2 C 2 是相同的,但是矩阵A 2 实质上是不同的。
在每轮中,并行应用四个8位S-box,并且线性变换L可以表述为8×8矩阵组成的块矩阵。这允许整个SM4操作以用字节范围的操作来表述。32×32线性变换L表述为8×8矩阵的4×4块矩阵:
Figure 332757DEST_PATH_IMAGE056
每轮中的32位输入/输出和轮密钥表示为四个字节的级联,各自为:
Figure 751100DEST_PATH_IMAGE057
轮密钥可以嵌入S-box中:
Figure 43541DEST_PATH_IMAGE058
。每轮中的输出的一个字节可以计算如下:
Figure 900639DEST_PATH_IMAGE059
其中,
Figure 594925DEST_PATH_IMAGE060
例如,如果密钥字节固定在S-box中,则可以利用图2中200所示的过程来计算X4的第一个字节。在图2中最终异或之前的并行四个逐字节操作序列(分别为201、202、203和204)在本文被称为四个“分支”。
Figure 246486DEST_PATH_IMAGE061
中的乘法可以利用
Figure 229486DEST_PATH_IMAGE062
上的4次不可约多项式来定义。仅三个不可约的4次多项式存在,其中任何一个都可以用于定义:
Figure 624695DEST_PATH_IMAGE063
域乘法“
Figure 173488DEST_PATH_IMAGE064
”被定义为:
Figure 261530DEST_PATH_IMAGE065
阈值实现的输入共享因子和输出共享因子的数量可能不同。当m个输入共享因子和n个输出共享因子的阈值实现应用于函数
Figure 669509DEST_PATH_IMAGE066
(标示为
Figure 868409DEST_PATH_IMAGE067
)时,以下步骤生成查找表:
1.当生成表时,将输入X的每个可能值随机拆分成m个共享因子。输入X的共享因子的集合是
Figure 271708DEST_PATH_IMAGE068
,其中它们中的m-1个是从伪随机数生成器(PRNG)生成的随机值(例如
Figure 530651DEST_PATH_IMAGE069
),并且最后一个共享因子由
Figure 517937DEST_PATH_IMAGE070
Figure 254948DEST_PATH_IMAGE071
计算。与Y、Z等相同。注意,输入共享因子仅在表的生成中使用,但是查找表的输入是X、Y、Z…。
2.给定函数F i ,利用以下各项计算n个输出共享因子:
Figure 778334DEST_PATH_IMAGE072
如上所述,假设存在这样的阈值实现,并且TI用于指示应用了阈值实现。
可以对所有可能的输入X、Y、Z…重复步骤1和2,以获得对应的输出共享因子。图3中所示的查找表是基于输入及其对应的输出共享因子生成的。本文用虚线框标示查找表。
为了提供对诸如仿射等价攻击、BGE攻击和类DCA攻击之类的现有白盒攻击的抵抗,所公开的实现可以基于以下规则来创建:
1.应用掩码的方式(至少在S-box上)不应该是仿射的。
2.掩码可以是数据相关的。
3.算法的结构应该尽可能模糊。
4.白盒SM4实现中和标准SM4中每个步骤的输出之间的相关性不能用于应用分析。
5.每个掩码可以取决于倒置树结构中较早的掩码。
在所公开的实现中,每个中间变量被拆分成四位半字节。在将SM4中的操作(诸如异或、移位和S-box)划分成几个步骤的情况下,将处理4位数据以及掩码,并且将生成对应的查找表。阈值实现用于扩展一些查找表的输出空间,并且同时产生掩码。对S-box中的4位数据应用同构映射来模糊内部操作。整个加密仅由查找表组成,不需要其他计算。
在第一轮中,描述了实现图2的第一分支的示例。其他分支可以以类似的方式实现。如图4中所示,选择每个输入的4个共享因子和3个输出共享因子的阈值实现
Figure 208178DEST_PATH_IMAGE073
,并将其应用于生成图5中所示的查找表500的函数
Figure 121907DEST_PATH_IMAGE074
。每个输入划分成两个四位半字节:
Figure 662610DEST_PATH_IMAGE075
。使用查找表,掩码
Figure 306081DEST_PATH_IMAGE076
Figure 641247DEST_PATH_IMAGE077
Figure 511114DEST_PATH_IMAGE078
生成,并且掩码
Figure 589929DEST_PATH_IMAGE079
Figure 87906DEST_PATH_IMAGE080
Figure 593974DEST_PATH_IMAGE081
生成,其中
Figure 544612DEST_PATH_IMAGE082
Figure 427118DEST_PATH_IMAGE083
。数据流在图6中的600处描绘,在这两种情况下使用相同的表。
为了计算
Figure 779602DEST_PATH_IMAGE084
Figure 722150DEST_PATH_IMAGE085
,加法是通过几个步骤完成的。在每个步骤中,取消一些掩码并添加新的掩码。首先,函数
Figure 799565DEST_PATH_IMAGE086
用于生成查找表。使用查找表,我们得到
Figure 220182DEST_PATH_IMAGE087
Figure 692752DEST_PATH_IMAGE088
,其中r和i与之前相同。该数据流在图7中的700处描述,其中相同的表被使用两次。注意,表的生成不特定于变量,但是数据流是利用该示例中使用的特定变量示出的。
然后,选择每个输入的2个共享因子和2个输出共享因子(
Figure 540622DEST_PATH_IMAGE089
)的阈值实现,并将其应用于函数
Figure 200274DEST_PATH_IMAGE090
,以生成
Figure 424582DEST_PATH_IMAGE091
的查找表。使用查找表,我们从
Figure 751658DEST_PATH_IMAGE092
得到
Figure 36008DEST_PATH_IMAGE093
,并且从
Figure 386218DEST_PATH_IMAGE094
得到
Figure 148638DEST_PATH_IMAGE095
,其中r和i与之前相同
Figure 330221DEST_PATH_IMAGE096
。该数据流在图8中的800处示出。接下来,选择每个输入的4个共享因子和3个输出共享因子(
Figure 785473DEST_PATH_IMAGE097
)的阈值实现,并将其应用于函数
Figure 685296DEST_PATH_IMAGE098
,以生成
Figure 392352DEST_PATH_IMAGE099
的查找表。使用查找表,我们从
Figure 428441DEST_PATH_IMAGE100
得到
Figure 54594DEST_PATH_IMAGE101
,并且从
Figure 441713DEST_PATH_IMAGE102
得到
Figure 778891DEST_PATH_IMAGE103
,其中r和i与之前相同
Figure 935066DEST_PATH_IMAGE104
。该数据流在图9中的900处示出。因此,我们从左侧数据流得到
Figure 732121DEST_PATH_IMAGE105
Figure 340957DEST_PATH_IMAGE106
并且从右侧数据流得到
Figure 655395DEST_PATH_IMAGE107
Figure 666076DEST_PATH_IMAGE108
如以上指出的,固定密钥S-box的代数结构可以表示为:
Figure 634032DEST_PATH_IMAGE109
我们首先计算“
Figure 730164DEST_PATH_IMAGE110
”。
Figure 113872DEST_PATH_IMAGE111
其中
Figure 244639DEST_PATH_IMAGE112
Figure 383496DEST_PATH_IMAGE113
的4×4块矩阵,
Figure 966924DEST_PATH_IMAGE114
是4×1向量。
乘法“
Figure 951061DEST_PATH_IMAGE115
”可以表示为:
Figure 936334DEST_PATH_IMAGE116
可以为函数生成六个查找表:
Figure 246093DEST_PATH_IMAGE117
图10的数据流1000示出了该计算。从左手边的数据流中,我们得到:
Figure 316817DEST_PATH_IMAGE118
,和
Figure 370224DEST_PATH_IMAGE119
其中
Figure 849484DEST_PATH_IMAGE120
的子表达式
Figure 330144DEST_PATH_IMAGE121
Figure 622585DEST_PATH_IMAGE122
,并且
Figure 479683DEST_PATH_IMAGE123
可以视为掩码;
Figure 908390DEST_PATH_IMAGE124
的子表达式
Figure 559951DEST_PATH_IMAGE125
Figure 605268DEST_PATH_IMAGE126
Figure 477DEST_PATH_IMAGE127
,并且
Figure 690216DEST_PATH_IMAGE128
可以看作是掩码。
标准S-box的剩余部分可以计算为:
Figure 778257DEST_PATH_IMAGE129
现在可以使用图11中所示的数据流1100创建T-box。掩码数据
Figure 45291DEST_PATH_IMAGE130
Figure 978611DEST_PATH_IMAGE131
是T-box的输入。为了混淆T-Box的输入和输出之间的关系,利用阈值实现创建了查找表。然而,为具有8位输入的逆函数构造均匀的阈值共享因子是不切实际的,因此使用同构将8位操作映射到所选复合域的4位操作。当取逆完成时,
Figure 585173DEST_PATH_IMAGE132
将用于将值映射回到域
Figure 844116DEST_PATH_IMAGE133
。利用以下步骤,为所有可能的输入和对应的输出生成查找表T-box。在图11的步骤1中,通过计算
Figure 332866DEST_PATH_IMAGE134
Figure 335458DEST_PATH_IMAGE135
来抵消来自
Figure 91799DEST_PATH_IMAGE136
Figure 256064DEST_PATH_IMAGE137
的掩码。我们得到
Figure 497689DEST_PATH_IMAGE138
的y。在图11的步骤2中,计算
Figure 38392DEST_PATH_IMAGE139
。在图11的步骤3中,在复合域
Figure 557229DEST_PATH_IMAGE140
中计算
Figure 157975DEST_PATH_IMAGE141
。然后同构映射T被用于将标准8位值变换成复合域中的两个4位值
Figure 621317DEST_PATH_IMAGE142
。申请人已经实现了寻找T的程序,并且实验示出存在120个2次不可约多项式,并且对于每个
Figure 965711DEST_PATH_IMAGE143
,存在128个从
Figure 401371DEST_PATH_IMAGE144
Figure 907439DEST_PATH_IMAGE145
的映射。因此,对于T存在15360个候选。每个T都是8×8可逆矩阵。选取一个,并在图11的步骤4中计算
Figure 123657DEST_PATH_IMAGE146
。在图11的步骤5中,
Figure 6162DEST_PATH_IMAGE147
Figure 358646DEST_PATH_IMAGE148
被计算为
Figure 973298DEST_PATH_IMAGE149
的逆。由于选取了多项式基
Figure 411233DEST_PATH_IMAGE150
Figure 97429DEST_PATH_IMAGE151
Figure 304419DEST_PATH_IMAGE152
的逆由下式给出:
Figure 854087DEST_PATH_IMAGE153
其中Y是
Figure 779318DEST_PATH_IMAGE154
的一个根。我们将每个输入的4个共享因子和3个输出共享因子的阈值实现(
Figure 3626DEST_PATH_IMAGE155
)应用于函数
Figure 330702DEST_PATH_IMAGE156
Figure 349474DEST_PATH_IMAGE157
,它们的输出共享因子分别为
Figure 496421DEST_PATH_IMAGE158
Figure 524420DEST_PATH_IMAGE159
。在图11的步骤6中,令
Figure 706003DEST_PATH_IMAGE160
其中
Figure 302200DEST_PATH_IMAGE161
Figure 202023DEST_PATH_IMAGE162
的4×4块矩阵,
Figure 768134DEST_PATH_IMAGE163
Figure 804223DEST_PATH_IMAGE164
的前4位半字节的三个共享因子,
Figure 430376DEST_PATH_IMAGE165
Figure 489599DEST_PATH_IMAGE166
的后4位半字节的三个共享因子。计算
Figure 859401DEST_PATH_IMAGE167
Figure 15575DEST_PATH_IMAGE168
,其中
Figure 812630DEST_PATH_IMAGE169
。该矩阵
Figure 857684DEST_PATH_IMAGE170
用于将复合域的两个4位值变换回标准的8位值;
Figure 765597DEST_PATH_IMAGE171
Figure 776279DEST_PATH_IMAGE172
分别是SM4的仿射变换的线性和常数部分。结果是我们从第一分支获得了六个掩码值
Figure 744235DEST_PATH_IMAGE173
。利用上面小节中使用的相同方法,针对剩余三个分支我们得到(
Figure 778050DEST_PATH_IMAGE174
Figure 489654DEST_PATH_IMAGE175
。为了计算
Figure 620421DEST_PATH_IMAGE176
,我们将
Figure 759278DEST_PATH_IMAGE177
与每个分支的输出相乘并将它们相加到一起:
Figure 14810DEST_PATH_IMAGE178
Figure 530105DEST_PATH_IMAGE179
其中,
Figure 515379DEST_PATH_IMAGE180
Figure 825137DEST_PATH_IMAGE181
是4×4块矩阵。
通过将每个矩阵的上半部分相加,我们得到
Figure 630282DEST_PATH_IMAGE182
的掩码值。我们可以构建16个查找表来实现该步骤。该数据流在图12中的1200处描绘,其中
Figure 621372DEST_PATH_IMAGE183
可以验证的是
Figure 461152DEST_PATH_IMAGE184
。通过将每个矩阵的下半部分相加,结果是
Figure 941812DEST_PATH_IMAGE185
的掩码值。我们构建另外16个查找表来计算
Figure 499832DEST_PATH_IMAGE186
。该数据流也在图12中描绘,除了j=1。人们可以验证
Figure 527569DEST_PATH_IMAGE187
Figure 487435DEST_PATH_IMAGE188
Figure 138996DEST_PATH_IMAGE189
其中
Figure 918733DEST_PATH_IMAGE190
是4×4块矩阵,
Figure 251625DEST_PATH_IMAGE191
Figure 65998DEST_PATH_IMAGE192
的其他三个掩码字节以类似的方式生成。此时,将构建16个查找表来分别计算
Figure 888460DEST_PATH_IMAGE193
Figure 155493DEST_PATH_IMAGE194
。数据流与图12中描绘的相同,除了对于
Figure 292077DEST_PATH_IMAGE195
Figure 960955DEST_PATH_IMAGE196
人们可以验证
Figure 954319DEST_PATH_IMAGE197
Figure 708649DEST_PATH_IMAGE198
Figure 648923DEST_PATH_IMAGE199
Figure 172308DEST_PATH_IMAGE200
Figure 336573DEST_PATH_IMAGE201
Figure 578198DEST_PATH_IMAGE202
Figure 118901DEST_PATH_IMAGE203
对于第二轮,也使用该轮的第一分支,如图13中的1300所示,作为示例。在该分支中,除了加法操作之外,所有的步骤都与第一轮的第一个分支相同。由于
Figure 933011DEST_PATH_IMAGE204
Figure 533757DEST_PATH_IMAGE205
是掩码数据,因此在加法操作中应该取消掩码。查找表仅在步骤3中改变,即使用4个输入共享因子和3个输出共享因子的阈值实现(
Figure 997099DEST_PATH_IMAGE206
)来计算
Figure 341493DEST_PATH_IMAGE207
Figure 511574DEST_PATH_IMAGE208
。该数据流在图14中的1400处描绘。该轮的结果是:
Figure 283221DEST_PATH_IMAGE209
图15在1500图示了第三轮的第一分支的数据流。该轮的第一个分支如下,并且如图16中的1600所示。与第二轮类似,除了加法操作外,所有步骤与第一轮的第一个分支相同。由于
Figure 233860DEST_PATH_IMAGE210
Figure 116365DEST_PATH_IMAGE211
是掩码数据,因此可以在该部分中取消掩码。我们仅在步骤2中改变查找表,即使用2个输入共享因子和2个输出共享因子的阈值实现(
Figure 406532DEST_PATH_IMAGE212
)来计算
Figure 349080DEST_PATH_IMAGE213
Figure 787015DEST_PATH_IMAGE214
该轮的结果是:
Figure 473211DEST_PATH_IMAGE215
第五轮的第一分支的处理如图17的1700所示。与第二轮和第三轮类似,除了加法操作之外,所有步骤都与第一轮的第一个分支相同。如在图18的1800处所示,在此重复使用在前几轮中生成的查找表。该轮的结果是:
Figure 617885DEST_PATH_IMAGE216
Figure 731334DEST_PATH_IMAGE217
对于剩余的轮次,除了在计算
Figure 656565DEST_PATH_IMAGE218
Figure 880873DEST_PATH_IMAGE219
的剩余三个字节中之外,数据流与第四轮相同。因为在第五轮中,所有输入都是掩码数据。第五部分中的二输入查找表:计算
Figure 644167DEST_PATH_IMAGE220
可以改变为三输入查找表,以取消附加的掩码,并且其他查找表保持相同。第一个半字节用作示例,并且图19指示了1900处改变的表和数据流。对于其他半字节,可以用类似的方式改变查找表。
在最后一轮之后,得到了掩码密文
Figure 662939DEST_PATH_IMAGE221
,其中
Figure 75466DEST_PATH_IMAGE222
可以划分为八个4位半字节:
Figure 103464DEST_PATH_IMAGE223
Figure 285047DEST_PATH_IMAGE224
,其中
Figure 677982DEST_PATH_IMAGE225
Figure 312226DEST_PATH_IMAGE226
Figure 878336DEST_PATH_IMAGE227
Figure 180005DEST_PATH_IMAGE228
Figure 743841DEST_PATH_IMAGE229
Figure 865381DEST_PATH_IMAGE230
Figure 235183DEST_PATH_IMAGE231
Figure 391357DEST_PATH_IMAGE232
Figure 126095DEST_PATH_IMAGE233
现在可以为八个函数构建八个查找表,如图20的2000所示:
Figure 734931DEST_PATH_IMAGE234
结果是以下密文:
Figure 642844DEST_PATH_IMAGE235
任何白盒实现的一个重要准则是性能。下面评估上述实现的性能。作为第一步骤,通过以下算法评估查找表的存储成本。
对于
Figure 653526DEST_PATH_IMAGE236
在部分I中:生成掩码,所有分支和轮次仅存在一个查找表。存储成本为
Figure 57700DEST_PATH_IMAGE237
位。
在部分II中:加法操作,第一轮中存在三个查找表。在第二轮和第三轮中,分别生成一个附加的查找表。所有轮次和分支共享五个查找表。存储成本为
Figure 153832DEST_PATH_IMAGE238
位。
在部分III计算
Figure 865436DEST_PATH_IMAGE239
中,存在六个查找表用于所有轮次和所有分支。存储成本为
Figure 730624DEST_PATH_IMAGE240
位。
在部分IV创建T-box,因为每一轮的轮密钥不同,所以必须在每一轮和每一个分支中生成T-box。存储成本为
Figure 807164DEST_PATH_IMAGE241
位。
在部分V:计算X40和部分VI:X4的剩余三个字节中,对于一个分支存在32个查找表。四轮之后,必须添加八个查找表。
存储成本为
Figure 390592DEST_PATH_IMAGE242
。如上面指出的,该实现具有276个查找表。后两部分具有最高的存储要求。在部分IV中:创建T-box,为每个密钥字节生成T-box,以将密钥保存在算法的唯一非线性组件中。为了降低存储要求,可以将密钥字节从T-box中移除,并嵌入到小的查找表中。影响是针对所有回合和所有分支将仅存在一个T-box。降低存储需求的另一种方法是使用矩阵操作,而不是部分V:计算X40和部分VI:X4的剩余三个字节中的查找表。这两种方法都以安全性换取性能。上述存储成本分析是在PC(CPU E3-1240 v5 @ 3.50GHz,内存:16GB)上进行的。实验示出,该实现的吞吐量为119KB/s。
不言而喻,块密码的首要标准是安全性。感兴趣的三种主要密码系统攻击模型包括黑盒攻击、灰盒攻击和白盒攻击。黑盒是常规的攻击模型,其中对手仅具有对密码系统的输入和输出的访问权。作为官方的加密标准,SM4在抵抗诸如差分和线性攻击之类的经典块密码攻击方面具有良好的性能。
“灰盒”是一种攻击模型,其中对手可以使用泄露的信息来部署侧信道密码分析。不同的泄露信息可以导致不同的灰盒攻击。DCA(差分计算分析)是针对密码系统白盒实现的强有力的侧信道攻击。DCA成功的主要原因是期望值(来自标准密码规范)和掩码中间值(来自白盒实现)之间不可忽略的相关性,这是由白盒实现中使用的编码中的线性不平衡引起的。所公开的实现是抗DCA的,因为当输入均匀分布时,来自阈值实现的输出均匀分布,因此SM4和其白盒实现之间的数据相关性被削弱。
在白盒攻击模型中,实际的对称加密实现通常无法找到严格的安全证明。代替将白盒安全性降低到解决计算上不可行的数学问题,白盒实现的安全性是通过检查它对已知攻击是否安全来评估的。下面评估所公开的实现对抗两种众所周知的白盒攻击(BGE攻击和仿射等价攻击)的安全性。
除了灰盒攻击之外,针对白盒实现的最早的攻击是BGE攻击。该攻击最初是为了恢复Chow等人的白盒AES实现的轮密钥而构建的。白盒AES实现包括几个表述(外部输入和输出编码除外):
1.通过利用T-box替换每个S-box,将轮密钥嵌入S-box中:
Figure 905887DEST_PATH_IMAGE243
2.表示混合列的32×32矩阵MC被拆分成四个32×8矩阵
Figure 625581DEST_PATH_IMAGE244
3.为了保护
Figure 935340DEST_PATH_IMAGE245
,在
Figure 943747DEST_PATH_IMAGE246
之前插入8×8仿射“混合”双射,并且在
Figure 997154DEST_PATH_IMAGE244
之后插入32 × 32仿射双射MB。同时,级联非线性置换被用于解码/编码4位输入/输出,并被称为输入解码/输出编码。结果得到的查找表被命名为类型II表,并在图21中的2100处示出。为了消除MB的影响,查找表负责取逆。MB的逆被预先乘以适当的四个混合双射的逆,并被拆分成四个子映射
Figure 836934DEST_PATH_IMAGE247
。该查找表被命名为类型III表,并在图22中的2200处示出。
5.来自一列的四个字节与前面的步骤并行处理,并与异或操作相组合,并且称为类型IV表,如图23中2300所示。
BGE攻击过程总结如下。
阶段1。将四个字节的查找表组合成一列一轮。MB和相邻内部编码的影响被抵消。其他编码被保留并标示为
Figure 317594DEST_PATH_IMAGE248
Figure 813297DEST_PATH_IMAGE249
(图24中的2400):
阶段2。移除编码
Figure 404816DEST_PATH_IMAGE250
的非线性部分(与
Figure 99102DEST_PATH_IMAGE251
相同)。
阶段3。通过函数
Figure 16243DEST_PATH_IMAGE252
Figure 232198DEST_PATH_IMAGE253
之间的仿射关系检索编码
Figure 627407DEST_PATH_IMAGE254
的仿射部分(与
Figure 441780DEST_PATH_IMAGE251
相同)。
阶段4。在仿射恢复过程期间,通过使用S-box的逆来抵消S-box在函数
Figure 264242DEST_PATH_IMAGE255
中的影响,从而获得依赖于密钥的仿射映射
Figure 468958DEST_PATH_IMAGE256
。这通过
Figure 667859DEST_PATH_IMAGE257
使能实现密钥恢复。
阶段5。使用相同的方法恢复轮的轮密钥字节。
BGE攻击的两个基石是阶段2和阶段3。阶段3的关键点是
Figure 336737DEST_PATH_IMAGE258
Figure 330101DEST_PATH_IMAGE259
之间仿射关系的存在。为了对所公开的实现应用类似BGE的攻击,检查两个阶段。由于在实现中不使用非线性编码,因此可以跳过阶段2。对于阶段3,应该考虑构造函数集。函数是依赖于密钥的,因此必须包括T-box。
考虑到T-box本身。
Figure 22114DEST_PATH_IMAGE260
Figure 759125DEST_PATH_IMAGE261
都不能表示为输入
Figure 282511DEST_PATH_IMAGE262
的函数。T-box 2500的输入和输出如图25中所示。在不失一般性的情况下,通过删除一些下标来简化图25的T-box2500。
Figure 712355DEST_PATH_IMAGE263
Figure 891664DEST_PATH_IMAGE264
是用
Figure 166787DEST_PATH_IMAGE265
Figure 810258DEST_PATH_IMAGE266
计算的,它们是来自阈值实现的输出。基于阈值实现的特性1,每个输出都独立于输入变量中的每个的至少一个共享因子。换句话说,输入
Figure 145424DEST_PATH_IMAGE267
Figure 310564DEST_PATH_IMAGE268
Figure 389379DEST_PATH_IMAGE269
中的每一个之间不存在函数关系。用于计算
Figure 887356DEST_PATH_IMAGE270
Figure 659003DEST_PATH_IMAGE271
的函数使用
Figure 609642DEST_PATH_IMAGE272
作为输入,这意味着
Figure 429830DEST_PATH_IMAGE270
Figure 782314DEST_PATH_IMAGE273
中的每一个不具有与输入
Figure 724862DEST_PATH_IMAGE274
的函数关系。因此,以T-box结尾的查找表的任何组合都不能用于构造具有仿射关系的函数集。
T-box后面的查找表是上面的部分V中生成的两组16个表。为了抵消阈值实现的影响,我们可以将四个T-box与来自四个分支的
Figure 162797DEST_PATH_IMAGE275
个表相组合,如图26中的2600所示。可以获得函数集
Figure 521097DEST_PATH_IMAGE276
,并且容易证明该集的函数具有仿射关系。然而,注意到,
Figure 993667DEST_PATH_IMAGE277
是12位输入,这
Figure 107116DEST_PATH_IMAGE278
与的输入大小不匹配。因此,S-box在函数
Figure 32347DEST_PATH_IMAGE279
上的影响不能被抵消,并且在阶段4中攻击失败。
现在看仿射等价攻击抗性。对于两个S-box
Figure 194338DEST_PATH_IMAGE280
Figure 255835DEST_PATH_IMAGE281
,仿射等价算法的目的是测试是否存在两个可逆的
Figure 540186DEST_PATH_IMAGE282
矩阵
Figure 952712DEST_PATH_IMAGE283
Figure 980711DEST_PATH_IMAGE284
,以及两个n维向量
Figure 598512DEST_PATH_IMAGE285
Figure 788185DEST_PATH_IMAGE286
,使得
Figure 688008DEST_PATH_IMAGE287
。在Biryukov, A.、De Canniere, C.、Braeken, A.等人的“A Toolbox for Cryptanalysis: Linear and Affine Equivalence Algorithms”(密码学进展-欧洲密码2003,第33-50页,Spring,柏林海德堡,2003年5月)中,提出了解决仿射等价问题的几种算法。通常,非线性变换或仿射映射被用来模糊S-box。由于BGE攻击中的阶段2可以用于移除变换的非线性部分并保留仿射部分,因此模糊的S-box(在本文称为T-box)可以近似等同于原始S-box。因此,仿射等价算法是对大多数常规白盒实现的高效攻击。然而,这样的仿射等价攻击不适用于所公开的实现,因为T-box的输入和输出的大小分别是12位和24位,这与标准S-box的大小不同,并且矩阵
Figure 254118DEST_PATH_IMAGE288
Figure 493470DEST_PATH_IMAGE284
将是非正方形的。
常规的白盒实现将SM4拆分成几个步骤,并使用仿射变换来保护每个步骤。然而,上述公开的实现采用了不同的方法。S-box拆分为两个步骤,从而模糊了S-box的边界,并有助于在密钥嵌入S-box中时保护密钥。其次,
Figure 854044DEST_PATH_IMAGE289
中的元素和操作被映射到复合域
Figure 241163DEST_PATH_IMAGE290
,这增加了标识原始操作的难度。第三,使用了阈值实现技术,削弱了白盒实现和标准SM4之间的相关性。这些技术共同保护SM4免受类BGE攻击、仿射等价攻击和DCA攻击。下面的表1比较了公开的实现和常规的实现。虽然所公开的实现具有较大的存储需求,但是它在抵抗流行的白盒攻击方面具有良好的性能。
表1.WB-SM4实现之间的比较
Figure 610965DEST_PATH_IMAGE291
* Xiao, Y.; Lai, X.的“White-Box Cryptography and a White-BoxImplementation of the SMS4 Algorithm”;上海交通大学:中国上海,2009年,第24-34页。
** Shi, Y.、Wei, W.和He, Z.的“lightweight white-box symmetricencryption algorithm against node capture for WSNs”,传感器,15(5),第11928-11952页,2015年。
所公开的实现基于复合域和阈值实现。该实现在4位半字节上工作,而不是在字节上工作。阈值实现使得掩码值的分布均匀,并且独立于对应的未掩码值。较小的复合域中的操作减小了查找表的大小。所公开的实现抵抗常规的白盒攻击,诸如仿射等价攻击、类BGE攻击和类DCA攻击。
如图27中所示,上述实现可以由计算机或计算系统2700完成。计算系统27可以包括计算设备2712,计算设备2712具有一个或多个处理器2714和存储指令的一个或多个存储器,当指令被处理器2714执行时,完成所公开的计算和存储。计算机系统可以包括服务器、客户端计算平台和/或外部资源2720,它们可以经由一个或多个电子通信链路可操作地链接。例如,这样的电子通信链路可以至少部分地经由诸如互联网和/或其他网络的网络来建立。作为非限制性示例,计算系统可以包括一个或多个远程计算设备2718,包括台式计算机、膝上型计算机、手持计算机、平板计算平台、上网本、智能手机、游戏控制台、服务器和/或其他计算平台。计算设备2712可以包括通信线路或端口,以使能实现与网络和/或其他计算平台的信息交换。存储器可以包括电子存储设备,该电子存储设备可以包括以电子方式存储信息的非暂时性存储介质。电子存储的电子存储介质可以包括与计算设备2712集成(即,基本上不可移动)提供的系统存储装置和/或经由例如端口(例如,USB端口、火线端口等)或驱动器(例如,磁盘驱动器等)可移除地连接到计算设备2712的可移除存储中的一个或这两者。电子存储装置可以包括一个或多个光学可读存储介质(例如,光盘等)、磁可读存储介质(例如磁带、磁硬盘驱动器、软盘驱动器等)、基于电荷的存储介质(例如,EEPROM、RAM等)、固态存储介质(例如闪存驱动器等)和/或其他电子可读存储介质。电子存储装置可以包括一个或多个虚拟存储资源(例如,云存储、虚拟专用网络和/或其他虚拟存储资源)。电子存储装置可以存储软件算法、由(一个或多个)处理器确定的信息、从计算设备2712接收的信息、所描述的数据结构和/或处理器2714用来执行如本文描述的功能的其他信息和机器可读指令2716。
(一个或多个)处理器可以包括数字处理器、模拟处理器、设计用于处理信息的数字电路、设计用于处理信息的模拟电路、状态机和/或用于以电子方式处理信息的其他机制中的一个或多个。(一个或多个)处理器可以被配置成通过软件;硬件;固件;软件、硬件和/或固件的某种组合;和/或用于配置(一个或多个)处理器上的处理能力的其他机制执行模块。如本文使用的,术语“模块”可以指代执行归因于该模块的特定功能的任何组件或组件集。这可以包括在执行处理器可读指令期间的一个或多个物理处理器2714、处理器可读指令、电路、硬件、存储介质或任何其他组件。
图28图示了根据所公开的实现的用于在软件应用中实现白盒块密码以创建具有与软件应用相同功能的安全软件应用的高级方法。该过程可以由诸如图27中所示的系统的任何计算平台完成。在2802,在原始有限域表示和复合域表示之间应用同构,并且该同构用于将密码重构为仅使用复合域元素的操作,包括异或、线性变换和S-box。在2804,原始的S-box被分解成几个代数步骤,并将这些步骤中的一些合并到密码的其他部分。在2806,在S-box的非线性步骤中,用复合域表示中的算法实现原始有限域表示中的取逆。在2808,应用m个输入共享因子和n个输出共享因子的阈值实现来为S-box的非线性步骤生成查找表。在2810,进一步的阈值实现被应用于所得到的密码的不同步骤,以生成查找表。在2812,将所得到的块密码应用于软件应用的至少一部分,以创建安全软件应用,并且从而增加执行安全软件应用的计算平台的安全性。
尽管已经基于当前被认为是最实用和优选的实现方式,出于说明的目的详细描述了本技术,但是应当理解,这样的细节仅仅是为了该目的,并且该技术不限于所公开的实现,而是相反,旨在覆盖在所附权利要求的精神和范围内的修改和等同布置。例如,应当理解,本技术考虑到,在可能的程度上,任何实现的一个或多个特征可以与任何其他实现的一个或多个特征相组合。此外,可以从实现中添加或移除特征以对应于特定应用。

Claims (18)

1.一种用于在软件应用中实现白盒块密码以创建与软件应用具有相同功能的安全软件应用的方法,所述方法包括:
通过以下方式创建块密码的实现:
在原始有限域表示和复合域表示之间应用同构,并使用所述同构将密码重构为仅使用复合域元素的操作,包括异或、线性变换和S-box;
将原始S-box分解成几个代数步骤,并将这些步骤中的一些合并到密码的其他部分中;
在S-box的非线性步骤中,利用复合域表示中的算法实现原始有限域表示中的取逆;
应用m个输入共享因子和n个输出共享因子的初始阈值实现来为S-box的非线性步骤生成查找表;
将进一步的阈值实现应用于密码的不同步骤以生成查找表;和
将块密码应用于软件应用的至少一部分,以创建安全软件应用,并且由此增加执行安全软件应用的计算平台的安全性。
2.根据权利要求1所述的方法,其中所述原始有限域表示包括8位元素。
3.根据权利要求1所述的方法,其中所述复合域表示包括两个4位元素。
4.根据权利要求1所述的方法,其中,同构是将
Figure DEST_PATH_IMAGE002A
中的元素构造到复合域
Figure DEST_PATH_IMAGE004AA
以用于S-box,并且阈值实现被应用于对密码的输入和输出进行掩码处理。
5.根据权利要求1所述的方法,其中所述初始阈值实现生成掩码并扩展所述查找表的输出,由此模糊所述S-box。
6.根据权利要求5所述的方法,其中每个掩码取决于倒置树结构中较早的掩码。
7.一种用于在软件应用中实现白盒块密码以创建与软件应用具有相同功能的安全软件应用的装置,所述装置包括:
至少一个硬件处理器;和
至少一个存储器,可操作地耦合到所述处理器,并在存储器上存储指令,当所述指令被所述至少一个硬件处理器执行时,使得所述至少一个硬件处理器:
通过以下方式创建块密码的实现:
在原始有限域表示和复合域表示之间应用同构,并使用所述同构将密码重构为仅使用复合域元素的操作,包括异或、线性变换和S-box;
将原始S-box分解成几个代数步骤,并将这些步骤中的一些合并到密码的其他部分中;
在S-box的非线性步骤中,利用复合域表示中的算法实现原始有限域表示中的取逆;
应用m个输入共享因子和n个输出共享因子的初始阈值实现来为S-box的非线性步骤生成查找表;
将进一步的阈值实现应用于密码的不同步骤以生成查找表;和
将块密码应用于软件应用的至少一部分,以创建安全软件应用,并且由此增加执行安全软件应用的计算平台的安全性。
8.根据权利要求7所述的装置,其中所述原始有限域表示包括8位元素。
9.根据权利要求7所述的装置,其中所述复合域表示包括两个4位元素。
10.根据权利要求7所述的装置,其中同构是将
Figure DEST_PATH_IMAGE005A
中的元素构造到复合域
Figure DEST_PATH_IMAGE006A
以用于S-box,并且阈值实现被应用来对密码的输入和输出进行掩码处理。
11.根据权利要求7所述的装置,其中所述初始阈值实现生成掩码并扩展所述查找表的输出,由此模糊所述S-box。
12.根据权利要求11所述的装置,其中每个掩码取决于倒置树结构中较早的掩码。
13.其上存储有指令的非暂时性计算机可读介质,当所述指令被计算平台的处理器执行时,使得计算平台执行用于在软件应用中实现白盒块密码的方法,以创建与软件应用具有相同功能的安全软件应用,所述方法包括:
通过以下方式创建块密码的实现:
在原始有限域表示和复合域表示之间应用同构,并使用所述同构将密码重构为仅使用复合域元素的操作,包括异或、线性变换和S-box;
将原始S-box分解成几个代数步骤,并将这些步骤中的一些合并到密码的其他部分中;
在S-box的非线性步骤中,利用复合域表示中的算法实现原始有限域表示中的取逆;
应用m个输入共享因子和n个输出共享因子的初始阈值实现来为S-box的非线性步骤生成查找表;
将进一步的阈值实现应用于密码的不同步骤以生成查找表;和
将块密码应用于软件应用的至少一部分,以创建安全软件应用,并且由此增加执行安全软件应用的计算平台的安全性。
14.根据权利要求13所述的方法,其中所述原始有限域表示包括8位元素。
15.根据权利要求13所述的方法,其中所述复合域表示包括两个4位元素。
16.根据权利要求13所述的方法,其中同构是将
Figure DEST_PATH_IMAGE007A
中的元素构造到复合域
Figure DEST_PATH_IMAGE004AAA
以用于S-box,并且阈值实现被应用来对密码的输入和输出进行掩码处理。
17.根据权利要求13所述的方法,其中所述初始阈值实现生成掩码并扩展所述查找表的输出,由此模糊所述S-box。
18.根据权利要求17所述的方法,其中每个掩码取决于倒置树结构中较早的掩码。
CN202080039898.7A 2019-03-29 2020-03-23 实现白盒密码的方法和装置 Active CN113940028B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/368922 2019-03-29
US16/368,922 US20200313850A1 (en) 2019-03-29 2019-03-29 Method and apparatus for implementing a white-box cipher
PCT/IB2020/052693 WO2020201899A1 (en) 2019-03-29 2020-03-23 Method and apparatus for implementing a white-box cipher

Publications (2)

Publication Number Publication Date
CN113940028A true CN113940028A (zh) 2022-01-14
CN113940028B CN113940028B (zh) 2024-03-15

Family

ID=70190010

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080039898.7A Active CN113940028B (zh) 2019-03-29 2020-03-23 实现白盒密码的方法和装置

Country Status (4)

Country Link
US (2) US20200313850A1 (zh)
EP (1) EP3949246A1 (zh)
CN (1) CN113940028B (zh)
WO (1) WO2020201899A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116566588A (zh) * 2023-04-25 2023-08-08 广州南网科研技术有限责任公司 一种白盒sm4算法的防护方法及装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
FR3108225B1 (fr) * 2020-03-16 2022-11-11 St Microelectronics Rousset Détection de fautes par un circuit électronique
CN112636903A (zh) * 2021-03-11 2021-04-09 北京信安世纪科技股份有限公司 构造方法、加密方法、解密方法、装置、设备及存储介质
CN113691364B (zh) * 2021-08-31 2024-02-09 衡阳师范学院 一种基于位片技术的动态s盒分组密码的加密及解密方法
WO2023081222A1 (en) * 2021-11-03 2023-05-11 Arris Enterprises Llc White-box processing for encoding with large integer values
WO2023107285A1 (en) * 2021-12-07 2023-06-15 Cryptography Research, Inc. Low-latency multi-domain masking
CN114205157B (zh) * 2021-12-13 2024-04-12 航天信息股份有限公司 基于冗余轮的sm4白盒加密实现方法、计算机设备和介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139340A1 (en) * 2000-12-08 2004-07-15 Johnson Harold J System and method for protecting computer software from a white box attack
US20120254625A1 (en) * 2011-03-30 2012-10-04 Apple Inc. Protecting states of a cryptographic process using group automorphisms
CN103119888A (zh) * 2010-08-20 2013-05-22 苹果公司 用于不安全环境中的块密码处理的装置和方法
WO2013189253A1 (zh) * 2012-06-18 2013-12-27 西安西电捷通无线网络通信股份有限公司 一种利用对称密码算法进行数据加解密的方法及查表装置
CN104065473A (zh) * 2014-06-25 2014-09-24 成都信息工程学院 Sm4分组密码算法s盒的紧凑实现方法
US20150278554A1 (en) * 2014-03-31 2015-10-01 Stmicroelectronics S.R.L. Encryption device of a substitution-box type, and corresponding encryption method and computer program product
CN105681025A (zh) * 2016-01-29 2016-06-15 中国科学院信息工程研究所 一种国家密码标准算法sm4的安全白盒实现方法和装置
US20170093571A1 (en) * 2015-09-24 2017-03-30 Intel Corporation Double affine mapped s-box hardware accelerator
WO2018113014A1 (zh) * 2016-12-22 2018-06-28 深圳国微技术有限公司 掩码s盒、分组密钥计算单元、装置及对应的构造方法
CN109450632A (zh) * 2019-01-11 2019-03-08 西安电子科技大学 基于白盒分组密码clefia分析的密钥恢复方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189425B2 (en) * 2011-09-01 2015-11-17 Apple Inc. Protecting look up tables by mixing code and operations
US10505709B2 (en) * 2015-06-01 2019-12-10 Nxp B.V. White-box cryptography interleaved lookup tables
DE102016008456B4 (de) * 2016-07-12 2018-03-29 Giesecke+Devrient Mobile Security Gmbh White Box AES Implementierung

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139340A1 (en) * 2000-12-08 2004-07-15 Johnson Harold J System and method for protecting computer software from a white box attack
CN103119888A (zh) * 2010-08-20 2013-05-22 苹果公司 用于不安全环境中的块密码处理的装置和方法
US20120254625A1 (en) * 2011-03-30 2012-10-04 Apple Inc. Protecting states of a cryptographic process using group automorphisms
WO2013189253A1 (zh) * 2012-06-18 2013-12-27 西安西电捷通无线网络通信股份有限公司 一种利用对称密码算法进行数据加解密的方法及查表装置
US20150278554A1 (en) * 2014-03-31 2015-10-01 Stmicroelectronics S.R.L. Encryption device of a substitution-box type, and corresponding encryption method and computer program product
CN104065473A (zh) * 2014-06-25 2014-09-24 成都信息工程学院 Sm4分组密码算法s盒的紧凑实现方法
US20170093571A1 (en) * 2015-09-24 2017-03-30 Intel Corporation Double affine mapped s-box hardware accelerator
CN105681025A (zh) * 2016-01-29 2016-06-15 中国科学院信息工程研究所 一种国家密码标准算法sm4的安全白盒实现方法和装置
WO2018113014A1 (zh) * 2016-12-22 2018-06-28 深圳国微技术有限公司 掩码s盒、分组密钥计算单元、装置及对应的构造方法
CN109450632A (zh) * 2019-01-11 2019-03-08 西安电子科技大学 基于白盒分组密码clefia分析的密钥恢复方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
GUOQIANG BAI等: "Differential Power Attack on SM4 block cipher", 《2018 17TH IEEE INTERNATIONAL CONFERENCE ON TRUST, SECURITY AND PRIVACY IN COMPUTING AND COMMUNICATIONS/ 12TH IEEE INTERNATIONAL CONFERENCE ON BIG DATA SCIENCE AND ENGINEERING》 *
WEI LI等: "Hardware Implementation of SM4 Based on Composite Filed S-box and It’s Security against Machine Learning Attack", 《2018 IEEE INTERNATIONAL CONFERENCE ON ELECTRON DEVICES AND SOLID STATE CIRCUITS (EDSSC)》 *
李新超;钟卫东;刘明明;李栋;: "基于秘密共享的SM4算法S盒实现方案", 计算机工程, no. 11 *
李新超;钟卫东;张帅伟;马双棚;: "一种基于门限实现的SM4算法S盒实现方案", 计算机工程与应用, no. 17 *
梁浩;乌力吉;张向民;: "基于复合域的SM4算法的设计与实现", 微电子学与计算机, no. 05 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116566588A (zh) * 2023-04-25 2023-08-08 广州南网科研技术有限责任公司 一种白盒sm4算法的防护方法及装置
CN116566588B (zh) * 2023-04-25 2023-12-01 广州南网科研技术有限责任公司 一种白盒sm4算法的防护方法及装置

Also Published As

Publication number Publication date
US20220271916A1 (en) 2022-08-25
EP3949246A1 (en) 2022-02-09
WO2020201899A1 (en) 2020-10-08
US20200313850A1 (en) 2020-10-01
CN113940028B (zh) 2024-03-15

Similar Documents

Publication Publication Date Title
CN113940028B (zh) 实现白盒密码的方法和装置
US20120170739A1 (en) Method of diversification of a round function of an encryption algorithm
US8966279B2 (en) Securing the implementation of a cryptographic process using key expansion
US8504845B2 (en) Protecting states of a cryptographic process using group automorphisms
AU2011292312B2 (en) Apparatus and method for block cipher process for insecure environments
US9143317B2 (en) Protecting against white box attacks using column rotation
CN110235409A (zh) 使用同态加密被保护的rsa签名或解密的方法
US20120121083A1 (en) Encryption apparatus and method
US8675866B2 (en) Multiplicative splits to protect cipher keys
EP3477889B1 (en) Using white-box in a leakage-resilient primitive
JP2020510879A (ja) 楕円曲線点乗算デバイス及び方法
JP2020521392A (ja) 暗号装置及び方法
KR102290025B1 (ko) 화이트 박스 aes 구현
Yap et al. On the effective subkey space of some image encryption algorithms using external key
Biryukov et al. Multiset-algebraic cryptanalysis of reduced Kuznyechik, Khazad, and secret SPNs
KR102327771B1 (ko) 테이블 기반 구현에서의 차수 2 이상의 dca 공격에 대응하는 방법
Lin et al. A new Feistel-type white-box encryption scheme
EP3258639A1 (en) Cryptography apparatus protected against side-channel attack using constant hamming weight substitution-box
Baek et al. Analytic Toolbox for White-Box Implementations: Limitation and Perspectives.
Kim A White-box Implementation of SEED
US20200342787A1 (en) Method and apparatus for decrypting cryptogram using auxiliary secret key
Yang et al. LWARX: Lightweight ARX white-box cipher for satellite communications
Yang et al. WAS: improved white-box cryptographic algorithm over AS iteration
Banerjee et al. A New Proposed Data Security Model in Cloud Computing Environment
Lin et al. A DCA-resistant Implementation of SM4 for the White-box Context

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant