CN107798248B - 防止差分故障分析的软件保护 - Google Patents
防止差分故障分析的软件保护 Download PDFInfo
- Publication number
- CN107798248B CN107798248B CN201710788493.3A CN201710788493A CN107798248B CN 107798248 B CN107798248 B CN 107798248B CN 201710788493 A CN201710788493 A CN 201710788493A CN 107798248 B CN107798248 B CN 107798248B
- Authority
- CN
- China
- Prior art keywords
- cryptographic operation
- input data
- data block
- cryptographic
- rounds
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 67
- 230000008569 process Effects 0.000 claims abstract description 41
- 230000003111 delayed effect Effects 0.000 claims 3
- 238000012545 processing Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 11
- 238000013459 approach Methods 0.000 description 8
- 238000013478 data encryption standard Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/004—Countermeasures against attacks on cryptographic mechanisms for fault attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/005—Countermeasures against attacks on cryptographic mechanisms for timing attacks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及防止差分故障分析的软件保护。一种用于执行加密/解密过程的加密模块和方法在多个阶段中并行地执行两个密码操作。所述两个密码操作被执行,以使得所述两个密码操作的不同轮次由相同指令或相同有限状态机FSM状态并行地执行,以用于硬件实施。
Description
技术领域
本发明的实施例大体上涉及嵌入式***,且更具体地说,涉及具有密码功能的嵌入式***。
背景技术
例如智能卡、电子护照、物联网(IoT)装置和智能仪表等嵌入式***可包括密码功能,以对敏感数据(例如,用于认证的私用密钥)进行加密和/或解密。这些密码功能可通过密码算法(例如,数据加密标准(DES)或高级加密标准(AES)算法)提供。
然而,可使用差分故障分析(DFA)方法使执行密码算法(例如AES算法)的嵌入式***受到攻击。此攻击方法尤其危险,这是因为在一些状况下,其允许从单个故障输出的观测结果中完全恢复敏感数据(例如,秘密密钥)。归因于密码算法的真实性质(例如,高非线性和高扩散),实施免于此类攻击的保护措施是一项具有挑战性的任务。防止此类攻击的常规对策通常是将运行时间乘以因数二(2)或大于二(2)的因数,且不提供防止对执行流攻击的充足保护。
用于执行加密/解密过程的加密模块和方法在多个阶段中并行地执行两个密码操作。所述两个密码操作被执行,以使得密码操作的不同轮次由相同指令或相同有限状态机FSM状态并行地执行,以用于硬件实施。
发明内容
在实施例中,一种用于执行加密/解密过程的方法包括在多个阶段中在第一输入数据块上执行所述加密/解密过程的第一密码操作的多个轮次,以及在所述多个阶段中在第二输入数据块上执行所述加密/解密过程的第二密码操作的多个轮次,其中所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作和所述第二密码操作的不同轮次由相同指令和相同有限状态机(FSM)状态中的一个并行地执行。
在实施例中,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的i轮次和所述第二密码操作的i-l轮次在所述多个阶段中的至少一个阶段期间执行。
在实施例中,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的第一轮次和所述第二密码操作的零个轮次在所述多个阶段的第一阶段期间执行。
在实施例中,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的零个轮次和所述第二密码操作的最后一个轮次在所述多个阶段的最后阶段期间执行。
在实施例中,所述第一输入数据块和所述第二输入数据块是十六(16)位的。
在实施例中,所述第一输入数据块和所述第二输入数据块是八(8)位的。
在实施例中,其中所述第一密码操作和所述第二密码操作中的每一个包括十(10)个轮次。
在实施例中,一种计算机可读存储媒体包含用于执行加密/解密过程的程序指令,其中所述程序指令由计算机***的一个或多个处理器执行使得所述一个或多个处理器执行包括以下各者的步骤:在多个阶段中在第一输入数据块上执行所述加密/解密过程的第一密码操作的多个轮次,以及在所述多个阶段中在第二输入数据块上执行所述加密/解密过程的第二密码操作的多个轮次,其中,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作和所述第二密码操作的不同轮次由相同指令和相同有限状态机(FSM)状态中的一个并行地执行。
在实施例中,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的i轮次和所述第二密码操作的i-l轮次在所述多个阶段中的至少一个阶段期间执行。
在实施例中,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的第一轮次和所述第二密码操作的零个轮次在所述多个阶段的第一阶段期间执行。
在实施例中,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的零个轮次和所述第二密码操作的最后一个轮次在所述多个阶段的最后阶段期间执行。
在实施例中,所述第一输入数据块和所述第二输入数据块是十六(16)位的。
在实施例中,所述第一输入数据块和所述第二输入数据块是八(8)位的。
在实施例中,所述第一密码操作和所述第二密码操作中的每一个包括十(10)个轮次。
在实施例中,一种加密模块包括存储器、寄存器、有限状态机和算术逻辑单元,其中所述算术逻辑单元被配置成在多个阶段中在第一输入数据块上执行所述加密/解密过程的第一密码操作的多个轮次,且在所述多个阶段中在第二输入数据块上执行所述加密/解密过程的第二密码操作的多个轮次,且其中所述算术逻辑单元进一步被配置成使得所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作和所述第二密码操作的不同轮次由相同指令和相同有限状态机(FSM)状态中的一个并行地执行。
在实施例中,所述算术逻辑单元被配置成使得所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的i轮次和所述第二密码操作的i-l轮次在所述多个阶段中的至少一个阶段期间执行。
在实施例中,所述算术逻辑单元被配置成使得所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的第一轮次和所述第二密码操作的零个轮次在所述多个阶段的第一阶段期间执行。
在实施例中,所述算术逻辑单元被配置成使得所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的零个轮次和所述第二密码操作的最后一个轮次在所述多个阶段中的最后阶段期间执行。
在实施例中,其中所述第一输入数据块和所述第二输入数据块是十六(16)位的。
在实施例中,所述第一密码操作和所述第二密码操作中的每一个包括十(10)个轮次。
附图说明
从结合借助于本发明原理的实例而描绘的附图理解的以下详细描述中将显而易见本发明的实施例的其它方面和优势。
图1是根据本发明的实施例的可用于嵌入式***中的加密模块的框图。
图2是根据本发明的实施例的具有加密模块的嵌入式***的框图。
图3是根据本发明的实施例的实施于硬件中的加密模块的框图。
图4是根据本发明的实施例的用于执行加密/解密过程的方法的过程流程图。
在整个说明书中,类似的附图标号可用于识别类似的元件。
将容易理解,如本文中大体描述且在附图中示出的实施例的组件可以用各种各样不同的配置来布置和设计。因此,如图中所表示的各种实施例的以下详细描述并非意图限制本发明的范围,而仅仅是表示各种实施例。虽然在图式中呈现了实施例的各个方面,但是除非特别说明,否则图式未必按比例绘制。
具体实施方式
所描述的实施例应视为在所有方面均仅为说明性而非限制性的。因此,本发明的范围由所附权利要求书而不是由此具体实施方式来指示。在权利要求书等效物的含义和范围内的所有变化均涵盖在权利要求书的范围内。
贯穿本说明书对特征、优势或类似语言的参考并不暗示可通过本发明实现的所有特征和优势应在或在任何单个实施例中。相反,提到特征和优势的语言应理解成结合实施例而描述的具体特征、优势或特性包括于至少一个实施例中。因此,贯穿本说明书对特征和优势以及类似语言的论述可(但未必)指代同一实施例。
此外,本发明的所描述的特征、优势和特性可以任何合适的方式在一个或多个实施例中组合。相关领域的技术人员应认识到,鉴于本文中的描述,本发明可以在没有特定实施例的具体特征或优势中的一个或多个具体特征或优势的情况下实践。在其它情况下,可在某些实施例中辨识可不存在于本发明的所有实施例中的额外特征和优势。
本说明书通篇提到“一个实施例”、“实施例”或类似语言,意味着结合所指示实施例而描述的具体特征、结构或特性包括在至少一个实施例中。因此,本说明书通篇的短语“在一个实施例中”、“在实施例中”和类似语言可(但未必)全部指代同一个实施例。
“位片”是实施密码算法的普遍方法。所述方法之所以普遍是因为其能够大大加快通用中央处理单元(CPU)上软件实施的执行。此方法由Eli Biham在其论文“软件中的快速新型DES实施(A Fast New DES Implementation in Software)”(1997)中介绍。此位片式DES方法通过同时执行n个硬件逻辑栅极而并行地计算若干块上的密码,其中n是寄存器大小。可有效地实施密码(如DES),这是因为位排列被转变成寄存器交换或少量的指针上操作。然而,缺点是从一个块中获取结果的延迟通常更短,且归因于并行处理的许多块,需要更多的存储器。举例来说,需要10,000次循环以计算三十二(32)个块的AES的位片实施可实现每块低次数的循环(312次循环/块)。然而,应用仍需要等待10,000次循环以获取单个块的结果。相比之下,基于T框的AES的实施可在2,000次循环中处理单个块。这仍是大量循环处理单个块,但整体更有用,这是因为嵌入式***中的许多应用(例如,使用密码块链接(CBC)模式)一次处理单个块。
现代的块密码(如AES)具有常规内部结构,所述常规内部结构具有以下特性:
添加密钥(add key)仅被均一地应用到状态
子字节(sub-byte)是状态的每个字节的均一映射
移位行(shift row)不改变字节的值;其仅仅对字节的值进行重新排序
混合列(mix column)是4字节对1字节的均一映射
因此,由此可见,可使用十六(16)位寄存器以“封装”位片方式实施AES和类似密码。在此实施中,位片被用以并行地处理AES状态的十六(16)个字节,而非并行地计算十六(16)个块。此实施的延迟大约比传统的位片实施(其将产生每块625次循环)少十六(16)次。如果具有三十二(32)个位的寄存器可用,那么此实施可并行地计算两(2)个块。然而,延迟将仍是625次循环,但处理量将达到312次循环/块。
取决于现有CPU和密码,“封装”位片实施并非始终比其它做法更快。即使此方法不是最快的方法,但此方法在嵌入式***的情况下具有巨大优势,这是因为所述方法可与“掩蔽”组合,所述掩蔽是防止邻信道攻击的公认对策。位片实施(封装或未封装)可通过复制内部状态而被转变成掩蔽式实施。每一份在执行线性运算(如“异或”)或位重新排序时被独立地处理,那些操作因此减缓了二(2)倍。非线性运算(例如,“与”)的处理较不直接,这通常引发减缓七(7)或八(8)倍。尽管存在显著的运行时开销,所述方法仍受到关注,这是因为其适用于任何位片实施,所述位片实施遵循简单方法论且产生极好的防止邻信道攻击的保护。
保护嵌入式***免于邻信道的攻击是必要的,但遗憾的是,这是不够的。在大多数状况下,还需要防止差分故障分析(DFA)的保护。
从掩蔽式封装位片实施开始,显而易见的解决方案是并行地处理同一块两次且比较最终结果,预期两次处理的结果相同。举例来说,可在具有32位寄存器的CPU上并行地计算两(2)个AES操作。位0到位15可保持用于第一块的位,且位16到31可保持用于第二块的位。在此例子中,每个AES操作由十(10)个轮次处理组成,其中每轮次可包括一个基于单个字节的取代步骤、逐行排列步骤、逐列混合步骤和轮次密钥添加步骤。此例子在下表中示出。
在此做法中,同时计算两个操作,且因此,对策无运行时开销。遗憾的是,此简单做法将不可靠,这是因为指令的扰动将可能以相同方式影响两个操作。因此,最终比较将无法检测到任何操纵。
较好的做法是链接操作且并行地计算两个不相关的块。举例来说,为了处理三个块A、B和C,首先在无位16到位31中的任何其它块的情况下使用位0到位15经由所有必要轮次处理块A。接着,并行地处理块A和块B。具体地说,使用位0到位15处理块B,且使用位16到位31处理块A。接着比较块从第一处理中得出的块A的结果与从第二处理中得出的块A的结果,以观察所述结果是否是等效的。接下来,并行地处理块B和块C。具体地说,使用位0到位15处理块C,且使用位16到位31处理块B。接着比较从先前处理(当并行地处理块A和块B时)中得到的块B的结果和从后续处理(当并行地处理块B和块C时)中得到的块B的结果,以观察所述结果是否是等效的。接下来,单独处理块C。具体地说,在无位0到位15中的任何其它块的情况下使用位16到位31处理块C。接着比较从先前处理(当并行地处理块B和块C时)中得到的块C的结果和从后续处理(当单独处理块C时)中得到的块C的结果,以观察所述结果是否是等效的。此例子在下表中示出。
如果需要处理单个块,那么块B可能被硬编码测试向量代替。
此做法比显而易见的解决方案更稳固。然而,所述做法具有以下缺点:
●运行时开销是一个块操作,这使得少量块的开销接近100%。对于单个块,运行时开销实际上是200%!
●由于三(3)个块同时“活动”,因此增加了存储器需求。
●在必须计算单个块的状况下,整个过程仅具有三(3)个步骤。如果相同指令在这些步骤中被破坏,那么不会检测出故障。
图1示出根据实施例的加密模块100,所述加密模块100解决上文所描述的关于安全性(例如,DFA保护)、运行时开销和存储器需求的问题中的一些。如图1中所示出,加密模块可以用于任何智能卡102、电子护照104、物联网(IoT)装置106和智能仪表108中。所述加密模块可实施为软件、硬件或软件和硬件的任何组合。如下文所解释,加密模块在不显著增加运行时开销或存储器需求的情况下提供对数据(包括差分故障分析(DFA)攻击)的保护。
现转而参看图2,示出根据本发明的实施例的具有加密模块100的嵌入式***200。嵌入式***包括处理器210、存储器212、存储装置214和加密模块100。处理器210可以是存在于嵌入式***(例如,微控制器或中央处理单元(CPU))中的任何处理器。存储器212可以是任何类型的易失性存储器,例如随机存取存储器。存储装置214可以是任何类型的计算机数据存储装置,例如固态存储器。嵌入式***可包括可存在于嵌入式***中的其它组件。然而,未在本文中示出或描述这些其它组件,以免混淆本发明的嵌入式***的特征。
加密模块100操作以对所要的过程执行密码操作,所述密码操作可以是加密过程或解密过程。取决于加密/解密过程,每个密码操作包括多个轮次,作为一个实例,AES128算法包括十(10)个轮次。每一轮次可包括许多不同操作,例如基于单个字节的取代步骤、逐行排列步骤、逐列混合步骤和轮次密钥添加步骤。具体轮次操作和执行轮次操作的次序取决于加密/解密过程。
在操作中,在使用从处理器210接收的密钥的情况下,加密模块100通过相同指令或相同有限状态机(FSM)状态同时执行两个密码操作(用于硬件实施),但一个操作相对于另一操作迟一个轮次。将使用例子解释此操作,在所述例子中,处理一个字节块以用于密码操作。使用位0到位15处理用于第一密码操作的块,同时处理用于第二密码操作的第二块。在第一阶段中,使用位0到位15执行第一密码操作的轮次1,且不执行密码操作的任何轮次。因此,位16到位31不用于第一阶段。在第二阶段中,使用位0到位15执行第一密码操作的轮次2,且使用位15到位31执行第二密码操作的轮次1。在后续阶段中,使用位0到位15执行第一密码操作的轮次i,且使用位15到位31执行第二密码操作的轮次i-l,直到已完成第一密码操作的最后一个轮次(即,轮次10)为止。在下一且最后阶段,不执行第一密码操作的任何轮次,且使用位15到位31执行第二密码操作的轮次10。因此,在此阶段中,未使用位0到位15。此例子在下表中示出。
位0到位15:第1AES状态 | 位16到位31:第2AES状态 |
轮次1 | 未使用 |
轮次2 | 轮次1 |
轮次3 | 轮次2 |
轮次i | 轮次i-1 |
轮次10 | 轮次9 |
未使用 | 轮次10 |
通过使用此技术,运行时开销被减少到两(2)个轮次的密码操作。此外,防止执行流上的故障的鲁棒性更强,而仅有以下两种状况未被检测到。
在所有阶段期间相同指令被破坏。
给定阶段中指令的破坏产生两个AES状态中的等效故障。
第一种状况难以实现,但不是不可能。然而,目前不存在DFA方法来利用此故障模式。如果判断为必须的,那么这可在最后一个阶段期间通过在位0到位15中处理硬编码测试向量而检测到。第二种状况极不可能,且取决于经处理数据,从而在大多数状况下使攻击不可行。
由加密模块100所采用的技术可被应用到除AES外的其它密码和不同密钥次序表。此外,如果处理器具有十六(16)位寄存器,那么由加密模块所采用的技术可仍适用。对于此处理器,加密模块在八(8)位片而非十六(16)位片中处理每个加密状态(例如,AES状态),这将需要两倍的操作。对于AES的“异或”指令,用于32位CPU的寄存器与用于16位CPU的寄存器的比较在下表中示出。
如上文所描述,对于32位CPU,寄存器r0(位0到位15)用于第一AES状态的十六(16)个位,且寄存器r1(位16到位31)用于第二AES状态的十六(16)个位。这两个AES状态被同时处理,但第二AES状态相对于另一操作迟一个轮次。对于16位CPU,寄存器r0(位0到位7)用于第一AES状态的八(8)个位,寄存器r1(位8到位15)用于第二AES状态的八(8)个位,寄存器r2(位0到位7)用于第一AES状态的另外八(8)个位,且寄存器r3(位8到位15)用于第二AES状态的另外八(8)个位。对于16位处理器,寄存器必须含有来自两个AES状态的位。可能较有吸引力的是:重新布置位,以使得寄存器r0和r1含有一个AES状态的十六(16)个位且寄存器r2和r3含有另一AES状态的位。然而,这将注定削弱所述对策,这是因为第一“异或”运算可能被破坏,而对第二运算无影响。
用于16位处理器的过程与用于32位处理器的过程的类似之处在于,存在十一(11)个阶段,即,十(10)个轮次加一个“未使用的”轮次,其中用于第二AES状态的轮次相对于第一AES状态的轮次迟一个轮次。在每一轮次中,处理AES状态的第一8位段和相同AES的第二8位段二者。轮次中的每一轮次包括依序执行的不同操作。这些操作将通常是“子字节”、“移位行”、“混合列”和“添加密钥”操作。这些操作中的每个操作再分为用以实施操作的步骤。这些步骤是如逻辑“与”、“或”和“异或”等指令。对于这些步骤中的每个步骤,首先执行AES状态的第一8位段,且接着执行相同AES状态的第二8位段。对于每一轮次的每个操作的每个步骤,通过处理AES状态的第一8位段且接着处理相同AES状态的第二8位段,AES状态的第一8位段和第二8位段被处理经过所有十(10)个轮次。
如上文所提及,加密模块100可实施于硬件中。此实施的例子在根据本发明的实施例的图3中示出。如图3中所示出,加密模块100包括有限状态机(FSM)302、随机存取存储器(RAM)304、工作寄存器306和32位算术逻辑单元(ALU)308。ALU 308至少支持以下操作:“与”、“异或”、LOAD 0×FFFFFFFF、LOAD RANDOM和ROTATE。此加密模块的结构类似于通用处理单元,这是因为故障保护机制需要处理比其需要处理的数据两倍大的数据。与通用处理单元唯一明显的不同是,缺少允许FSM 302进行数据依赖型决策的路径,所述路径不被需要是因为目的在于逐个栅极地模仿硬件电路。此省略证明实施在恒定时间中执行。在此硬件实施中,输入和密钥由处理器210(图3中未示出)写入到RAM 304。来自ALU 308的两个输出由FSM 302写入到RAM 304。输出的最终一致性检查由处理器210完成。
图4是根据本发明的实施例的用于执行加密/解密过程的方法的过程流程图。在框402处,在多个阶段中在第一输入数据块上执行加密/解密过程的第一密码操作的多个轮次。在框404处,在多个阶段中在第二输入数据块上执行加密/解密过程的第二密码操作的多个轮次,其中第一输入数据块上的第一密码操作与第二输入数据块上的第二密码操作并行地执行,以使得第一密码操作和第二密码操作的不同轮次由相同指令和相同有限状态机(FSM)状态中的一个并行地执行。
尽管以特定次序示出和描述了本文中的方法的操作,但是可以更改所述方法的操作次序,使得可以逆序执行某些操作,或使得可以至少部分地与其它操作同时执行某些操作。在另一实施例中,可以间断的和/或交替的方式实施不同操作的指令或子操作。
此外,尽管已经描述或描绘的本发明的特定实施例包括本文中描述或描绘的若干组件,但是本发明的其它实施例可包括更少或更多组件以实施更少或更多特征。
此外,尽管已经描述和描绘了本发明的特定实施例,但是本发明不限于如此描述和描绘的部分的特定形式或布置。本发明的范围将由在此所附的权利要求书和其等效物限定。
Claims (10)
1.一种用于执行加密/解密过程的方法,其特征在于,所述方法包括:
在多个阶段中在第一输入数据块上执行所述加密/解密过程的第一密码操作的多个轮次;以及
在所述多个阶段中在第二输入数据块上执行所述加密/解密过程的第二密码操作的多个轮次,
其中,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,但所述第一密码操作和所述第二密码操作中的一个操作相对于另一操作迟至少一个轮次,以使得所述第一密码操作和所述第二密码操作的不同轮次由相同指令和相同有限状态机FSM状态中的一个并行地同时执行。
2.根据权利要求1所述的方法,其特征在于,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得的所述第一密码操作的i轮次和所述第二密码操作的i-1轮次在所述多个阶段中的至少一个阶段期间同时执行。
3.根据权利要求2所述的方法,其特征在于,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的第一轮次和所述第二密码操作的零个轮次在所述多个阶段的第一阶段期间执行。
4.根据权利要求3所述的方法,其特征在于,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的零个轮次和所述第二密码操作的最后一个轮次在所述多个阶段的最后阶段期间执行。
5.根据权利要求1所述的方法,其特征在于,所述第一输入数据块和所述第二输入数据块是十六(16)位的。
6.根据权利要求1所述的方法,其特征在于,所述第一输入数据块和所述第二输入数据块是八(8)位的。
7.根据权利要求1所述的方法,其特征在于,所述第一密码操作和所述第二密码操作中的每一个包括十(10)个轮次。
8.一种计算机可读存储媒体,其特征在于,包含用于执行加密/解密过程的程序指令,其中所述程序指令由计算机***的一个或多个处理器执行使得所述一个或多个处理器执行包括以下各者的步骤:
在多个阶段中在第一输入数据块上执行所述加密/解密过程的第一密码操作的多个轮次;以及
在所述多个阶段中在第二输入数据块上执行所述加密/解密过程的第二密码操作的多个轮次,
其中,所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,但所述第一密码操作和所述第二密码操作中的一个操作相对于另一操作迟至少一个轮次,以使得所述第一密码操作和所述第二密码操作的不同轮次由相同指令和相同有限状态机FSM状态中的一个并行地同时执行。
9.一种加密模块,其特征在于,包括:
存储器;
寄存器;
有限状态机FSM;以及
算术逻辑单元,
其中所述算术逻辑单元被配置成在多个阶段中在第一输入数据块上执行所述加密/解密过程的第一密码操作的多个轮次,且在所述多个阶段中在第二输入数据块上执行所述加密/解密过程的第二密码操作的多个轮次,且其中所述算术逻辑单元进一步被配置成使得所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,但所述第一密码操作和所述第二密码操作中的一个操作相对于另一操作迟至少一个轮次,以使得所述第一密码操作和所述第二密码操作的不同轮次由相同指令和相同FSM状态中的一个并行地同时执行。
10.根据权利要求9所述的加密模块,其特征在于,所述算术逻辑单元被配置成使得所述第一输入数据块上的所述第一密码操作与所述第二输入数据块上的所述第二密码操作并行地执行,以使得所述第一密码操作的i轮次和所述第二密码操作的i-1轮次在所述多个阶段中的至少一个阶段期间同时执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/257,822 US10341085B2 (en) | 2016-09-06 | 2016-09-06 | Software protection against differential fault analysis |
US15/257,822 | 2016-09-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107798248A CN107798248A (zh) | 2018-03-13 |
CN107798248B true CN107798248B (zh) | 2023-09-01 |
Family
ID=59811074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710788493.3A Active CN107798248B (zh) | 2016-09-06 | 2017-09-04 | 防止差分故障分析的软件保护 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10341085B2 (zh) |
EP (1) | EP3291478A1 (zh) |
CN (1) | CN107798248B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10341085B2 (en) * | 2016-09-06 | 2019-07-02 | Nxp B.V. | Software protection against differential fault analysis |
US10333906B2 (en) * | 2017-03-30 | 2019-06-25 | Bank Of America Corporation | Network communication decoder using key pattern encryption |
CN110490000B (zh) * | 2019-08-23 | 2022-04-05 | 广西师范大学 | 多图数据中频繁子图挖掘的差分隐私保护方法 |
US12034831B2 (en) * | 2022-06-21 | 2024-07-09 | Silicon Laboratories Inc. | Hardware countermeasures against DFA attacks on AES operations |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1276117A (zh) * | 1997-11-28 | 2000-12-06 | 莫斯科戈罗德电话设备公开股份公司 | 用于l位输入数字数据块到l位输出数据块的加密变换的方法 |
CN103580863A (zh) * | 2012-08-01 | 2014-02-12 | ***通信集团公司 | 通信安全控制方法、装置及物联网节点 |
CN104012030A (zh) * | 2011-12-21 | 2014-08-27 | 英特尔公司 | 用于保护对称加密密钥的***及方法 |
CN107798248A (zh) * | 2016-09-06 | 2018-03-13 | 恩智浦有限公司 | 防止差分故障分析的软件保护 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6937727B2 (en) * | 2001-06-08 | 2005-08-30 | Corrent Corporation | Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels |
US7221763B2 (en) * | 2002-04-24 | 2007-05-22 | Silicon Storage Technology, Inc. | High throughput AES architecture |
US8005209B2 (en) * | 2005-01-06 | 2011-08-23 | Polytechnic University | Invariance based concurrent error detection for the advanced encryption standard |
US7949130B2 (en) * | 2006-12-28 | 2011-05-24 | Intel Corporation | Architecture and instruction set for implementing advanced encryption standard (AES) |
US8538015B2 (en) * | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
US20100306553A1 (en) * | 2009-06-01 | 2010-12-02 | Poletti Iii Joseph William | High-throughput cryptographic processing using parallel processing |
US8509424B2 (en) * | 2009-11-15 | 2013-08-13 | Ante Deng | Fast key-changing hardware apparatus for AES block cipher |
US20120008768A1 (en) * | 2010-07-08 | 2012-01-12 | Texas Instruments Incorporated | Mode control engine (mce) for confidentiality and other modes, circuits and processes |
US11194651B2 (en) * | 2019-10-11 | 2021-12-07 | EMC IP Holding Company LLC | Method for gracefully handling QAT hardware or CPU software failures by dynamically switching between QAT hardware and CPU software for data compression and decompression |
-
2016
- 2016-09-06 US US15/257,822 patent/US10341085B2/en active Active
-
2017
- 2017-08-29 EP EP17188390.3A patent/EP3291478A1/en not_active Ceased
- 2017-09-04 CN CN201710788493.3A patent/CN107798248B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1276117A (zh) * | 1997-11-28 | 2000-12-06 | 莫斯科戈罗德电话设备公开股份公司 | 用于l位输入数字数据块到l位输出数据块的加密变换的方法 |
CN104012030A (zh) * | 2011-12-21 | 2014-08-27 | 英特尔公司 | 用于保护对称加密密钥的***及方法 |
CN103580863A (zh) * | 2012-08-01 | 2014-02-12 | ***通信集团公司 | 通信安全控制方法、装置及物联网节点 |
CN107798248A (zh) * | 2016-09-06 | 2018-03-13 | 恩智浦有限公司 | 防止差分故障分析的软件保护 |
Also Published As
Publication number | Publication date |
---|---|
EP3291478A1 (en) | 2018-03-07 |
CN107798248A (zh) | 2018-03-13 |
US10341085B2 (en) | 2019-07-02 |
US20180069694A1 (en) | 2018-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Balasch et al. | DPA, bitslicing and masking at 1 GHz | |
Gierlichs et al. | Infective computation and dummy rounds: Fault protection for block ciphers without check-before-output | |
CN107798248B (zh) | 防止差分故障分析的软件保护 | |
CN108011706B (zh) | 数据处理装置和用于数据的加密处理的方法 | |
CN106487498B (zh) | 电子电路对边信道攻击的抵抗的检验 | |
US10210776B2 (en) | DPA protection of a rijndael algorithm | |
US11700111B2 (en) | Platform neutral data encryption standard (DES) cryptographic operation | |
US10187198B2 (en) | Protection of a rijndael algorithm | |
US20210152331A1 (en) | Protecting polynomial hash functions from external monitoring attacks | |
US20180212761A1 (en) | Hardware circuit to perform round computations of arx-based stream ciphers | |
US20060153372A1 (en) | Smart card and method protecting secret key | |
US20110176674A1 (en) | Countermeasure method and device for protecting data circulating in an electronic component | |
Gallais et al. | Hardware trojans for inducing or amplifying side-channel leakage of cryptographic software | |
Oukili et al. | Hardware implementation of AES algorithm with logic S-box | |
CN106462701B (zh) | 以抵抗外部监视攻击的方式执行密码编译数据处理操作 | |
Arora et al. | A double-width algorithmic balancing to prevent power analysis side channel attacks in aes | |
US20080130869A1 (en) | Method to Secure an Electronic Assembly Against Attacks by Error Introduction | |
EP3475825B1 (en) | Cryptographic operations employing non-linear share encoding for protecting from external monitoring attacks | |
Dinu et al. | Efficient masking of ARX-based block ciphers using carry-save addition on Boolean shares | |
CN107003903B (zh) | 使用多个不同且独立的分支来执行敏感计算的方法 | |
Fujishiro et al. | Scan-based side-channel attack on the LED block cipher using scan signatures | |
Shoufan | A fault attack on a hardware-based implementation of the secure hash algorithm SHA-512 | |
Portella do Canto et al. | Buying AES Design Resistance with Speed and Energy | |
Farmani | Threshold Implementations of the Present Cipher | |
Patranabis et al. | Classical countermeasures against differential fault analysis |
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 |