CN108512645A - 将掩蔽自动插入到算法中 - Google Patents
将掩蔽自动插入到算法中 Download PDFInfo
- Publication number
- CN108512645A CN108512645A CN201810155080.6A CN201810155080A CN108512645A CN 108512645 A CN108512645 A CN 108512645A CN 201810155080 A CN201810155080 A CN 201810155080A CN 108512645 A CN108512645 A CN 108512645A
- Authority
- CN
- China
- Prior art keywords
- calling
- variable
- built
- function
- mask
- 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
Links
Classifications
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
-
- 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
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/764—Masking
-
- 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/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7233—Masking, e.g. (A**e)+r mod n
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7233—Masking, e.g. (A**e)+r mod n
- G06F2207/7238—Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
用于将算法的调用图表示变换成所述算法的受保护调用图表示的计算机实现的方法、程序产品以及实现所述方法的系统。调用图包括输入(a,b,f)、作为图的边(c,d,e)的内部变量、作为图的节点的基本函数,所述函数是线性的或非线性的,并且包括输出(g),该方法包括:‑对调用图的每个输入进行掩蔽的步骤,‑用经掩蔽的变量替代调用图的每个未掩蔽的内部变量的步骤,‑用适用于经掩蔽的变量的等价函数至少替代调用图的每个非线性函数的步骤,‑对调用图的每个输出解除掩蔽的步骤。
Description
技术领域
本发明应用于密码领域,并且更具体地涉及用于对针对边信道攻击的算法的实现进行保护的方法。
背景技术
涉及对敏感数据加密的现有加密算法提供了针对密码分析和内容恢复攻击的有效鲁棒性。这些技术被称为“黑盒技术”,因为攻击者只知道加密算法的输入和输出。大多数加密算法是标准化的,其中已知使用最多的一种算法是高级加密标准(AES)。加密的机密性基于共享的秘密加密密钥。攻击者忽略秘密密钥的最佳选择是尝试所有可能的组合(蛮力解码)。当密钥是128位或256位长的时,所需的迭代次数使得蛮力解码在计算上非常难以管理。
然而,被称为边信道攻击(SCA)的一些攻击给予攻击者基于从加密算法的物理实现泄漏的信息(如定时信息、功耗、电磁泄漏等)取回在加密算法中执行的秘密信息的机会。
因此,首要需求是提供用于保护敏感算法的实现免受这种攻击的方法。
任何算法都可以被表示为运算图或调用图,其为有向图,其中每个节点是函数并且每个边是中间变量(也被称为内部变量)。该调用图也可以被称为数据流图或控制流图。
函数可以是单个运算或运算的线性或非线性的组合。函数是没有任何跳转的一段直线型代码。当函数包含多个操作数时,其可以分解成多个一元或二元操作数。
典型的运算是可以在给定技术中实现的运算。例如,软件程序可以计算算术和逻辑运算,例如,加法(“+”)或异布尔OR(“XOR”)。数字信号处理器(DSP)或现场可编程门阵列(FPGA)可以使用MAC单元(累乘-累加)来计算在查找表(LUT)或算术运算中实现的任何函数。专用集成电路(ASIC)可以利用标准单元库来计算任何类型的运算。
函数可以用高级语言来表达,但是也可以映射为一系列运算。编译器的职责是将这种潜在地用高级语言描述的函数变换成机器语言,从而优化处理时间和资源消耗。
表示算法的图是有向图:每个节点或函数具有与输入变元一样多的进入边以及与输出结果一样多的引出边。例如,如果函数仅是二元运算(存在两个变元和一个结果),则存在两个输入和一个输出。
边承载从节点传递到节点的类型化变量。该类型可以是字节、32位字等。
本发明的目的是考虑被描述为调用图的敏感算法(例如,密码算法),并且对该算法进行变换以便保护其免受边信道攻击,而不管算法的类型或者对其实现的任何考虑。
为了增加算法针对边信道攻击的鲁棒性,已知的是对算法的敏感数据进行掩蔽。掩蔽的一个示例是基于秘密共享,其在于将初始变量分开在多个新变量中,以使得新变量的总和产生初始变量。总和必须根据变量的根本类型来理解。例如,当变量是字节时,总和可以是按位XOR,或者是模256加法。
当影响经掩蔽的数据的运算是线性函数时,可以根据经掩蔽的输入来计算函数的经掩蔽的输出的值。然而,当函数是非线性的时(例如,幂函数、密码算法的替换盒……),掩码计算可能是不可能的。必须在函数的输入处移除掩码,并且在函数的输出处插入新的掩码。
各种掩蔽技术是已知的,其中一些已被证实。这些掩蔽技术适用于直线型程序,其为线性调用图。掩蔽在于链接运算,其中在适当的时候在运算之间随机地重新共享(或刷新)掩码。然而,当图不在一条直线上时可能会出现一些漏洞。
在M.Rivain和E.Prouff的Provably secure higher-order masking of AES(CHES 2010,第413-427页)中给出了完整的经掩蔽的AES算法。在本文中,描述了对特定线性函数和非线性函数的掩蔽,并且函数被链接以便描述完整的AES算法。然而,如在JE.Coron、E.Prouff、M.Rivain以及T.Roche的High-Order Side Channel Security andMask Refreshing(FSE 2013,第11-13页)中所指示的,即使利用专门用于AES算法的方法,也会出现一些实现问题。这些实现问题来自一些变量的重用,因此实现的安全性级别降低。
因此,如今大多数掩蔽实现方式是手动完成的,这容易出现实现错误(例如,敏感变量未被掩蔽)。只有少数研究考虑自动掩蔽。
在这些研究中有A.Moss、E.Oswald的Compiler assisted masking,Cryptographic Hardware and Embedded Systems(CHES 2012,第58-75页)的文章。在这篇文章中,敏感数据由程序员注释,并且其秘密性被视为允许编译器通过程序传播秘密性信息的网格中的值。一旦被编译,秘密数据在程序执行期间永远不会以明文形式出现,从而保证了经掩蔽的数据的秘密性,特别是针对边信道攻击。该算法然后执行在程序中的每个值中搜索敏感信息泄漏的步骤,特别是在转换表达式时引入的临时变量中,并且当发生泄漏时尝试使用一组程序变换来防止泄漏。
该文章中揭示的解决方案的缺点是其仅适用于一阶布尔掩蔽方案和直线型代码。此外,搜索泄漏和对程序进行变换以防止这种泄漏的步骤不一定收敛。
在Eldib H.、Wang C.的Synthesis of masking countermeasures against sidechannel attacks,Computer aided verification(第114-130页,SpringerInternational Publishing,2014年1月)中,提出了对整个算法进行掩蔽,包括所有中间值。为了处理非线性函数,提出了确定在功能上等价的线性函数,并且验证该函数对于所有可能的输入等价并且被完美地掩蔽。
该方法具有与Moss等人的方法类似的缺点,因为其仅适用于布尔类型的调用图,这将范围缩小到硬件实现。另外,该方法遵循反复试验方法,其执行时间不被保证。
因此,存在对于将未受到保护的算法变换成所述算法的安全版本的完全自动且鲁棒方法的更精确的需求。
发明内容
为了解决这个问题和其他问题,提供了用于将算法的调用图表示变换成所述算法的受保护调用图表示的计算机实现的方法。调用图包括一个或多个输入、一个或多个边(c,d,e)、一个或多个节点(P,Q,R,S)以及一个或多个输出(g)。调用图的边表示所述算法的内部变量(或中间变量),并且调用图的节点表示算法的线性基本函数或非线性基本函数。根据本发明的计算机实现的方法包括:
·对调用图的每个输入进行掩蔽的步骤,
·用经掩蔽的变量替代调用图的每个未掩蔽的内部变量的步骤,
·用适用于经掩蔽的变量的等价函数至少替代调用图的每个非线性函数的步骤,
·对调用图的每个输出解除掩蔽的步骤。
该方法有利地适用于线性调用图和非线性调用图,具有有限且确定的执行时间,并且不限于布尔类型的运算。
将未受到保护的算法变换成所述算法的安全版本满足两个要求的性质:
·保留语义,即,与原始程序相比,从一组确定的输入获得相同的结果,以及
·对所有中间变量(即,由顶点携带的变量)进行掩蔽。
当调用图包括被迭代地处理的部分时,可以通过以下操作来确保用经掩蔽的内部变量替代未掩蔽的内部变量的步骤:对用作调用图的被迭代地处理的部分的输入和输出两者的内部变量进行识别,以及针对这些变量在调用图的所述部分的输入中和输出中使用相同的掩码。
可替代地,可以通过以下操作来确保用经掩蔽的内部变量替代未掩蔽的内部变量的步骤:对用作调用图的被迭代地处理的部分的输入和输出两者的内部变量进行识别,以及在所述迭代部分的反馈边中插入用于对所述内部变量的掩码进行修改的附加节点。
有利地,调用图的被迭代地处理的部分中的内部变量的掩码可以以定期的间隔被改变,并且相关联的函数被相应地修改。这个机制可以通过在调用图中插入用于对所述迭代部分的内部变量的掩码进行刷新的附加节点来实现。
在根据本发明的某些实施例的计算机实现的方法中,在用适用于经掩蔽的变量的等价函数至少替代调用图的每个非线性函数的步骤中计算的等价函数可以使用匹配表来实现。根据本发明的一个实施例,调用图的线性函数可以用将输入内部变量和输出内部变量的掩码纳入考虑的等价函数来替代。
根据本发明的一个实施例,可以随机确定受保护调用图的一些或全部掩码值。
根据本发明的一个实施例,计算机实现的方法还可以包括对所述调用图进行编译以产生受到保护的可执行代码的附加步骤。
本发明还涉及存储在非易失性计算机可读数据存储介质上的计算机程序产品,包括使得计算机系统执行根据本发明的任何实施例的计算机实现的方法的计算机可执行指令,并且涉及非易失性计算机可读数据存储介质,其包含使得计算机系统执行所述计算机实现的方法的计算机可执行指令。
本发明还涉及包括耦合到存储器的处理器的系统,该存储器存储计算机可执行指令,该计算机可执行指令使得系统执行用于将算法的调用图表示变换成所述算法的受保护调用图表示的计算机实现的方法。调用图包括一个或多个输入、一个或多个边(c,d,e)、一个或多个节点(P,Q,R,S)以及一个或多个输出(g)。调用图的边表示所述算法的内部变量,调用图的节点表示算法的线性基本函数或非线性基本函数。该系统包括处理设备,该处理设备被配置为:
·对调用图的每个输入进行掩蔽,
·用经掩蔽的变量替代调用图中的每个未掩蔽的内部变量,
·用适用于经掩蔽的变量的等价函数至少替代调用图的每个非线性函数,以及
·对调用图的每个输出解除掩蔽。
附图说明
根据以下对仅为了说明目的而提供的多个示例性实施例及其附图的描述,将会更好地理解本发明,并且其各种特征和优点将显现,在附图中:
-图1a表示从现有技术已知的未受到保护的调用图,
-图1b和图1c表示根据本发明的两个实施例进行保护的调用图,有利地确保特别是应用于变量的掩码的一致性,该变量用作图的迭代部分的输入和输出,
-图2a和图2b示出了两种处理线性函数的方式,
-图3示出了一种通过考虑经掩蔽的输入和输出而构建与所述非线性函数等价的匹配表来处理非线性函数的方式,
-图4a表示未受到保护的调用图,其中迭代部分被展开以用于说明目的,
-图4b和图4c表示根据本发明的两个实施例进行保护的调用图,调用图的迭代部分中使用的内部变量的掩码在每次迭代时被修改,其中迭代部分被展开以用于说明目的,
-图5a是AES算法的典型调用图表示,并且图5b是根据本发明的一个实施例生成的对应的受到保护的调用图,
-图6是描绘根据某些实施例的计算机实现的方法的流程图,
-图7示出了可以用来处理本发明的系统。
本说明书中公开的示例仅是对本发明的一些实施例的说明。这些示例不以任何方式限制由所附权利要求限定的本发明的范围。
具体实施方式
图1a表示从现有技术已知的未受到保护的调用图。该表示是用于说明目的的标准表示。
图1a的未受到保护的调用图描述了计算机代码的执行。该未受到保护的调用图包括多个节点(P,Q,R,S),每个节点与代码执行的函数有关。如先前指示的,表示为节点的每个函数可以由单个运算或运算的组合构成。该函数可以是线性的或非线性的。
未受到保护的调用图还包括将节点的输出连接到其他节点的输入的定向链路(被称为图的边)。这些边与从一个函数传送到后续函数的中间变量(c,d,e)相关联。
未受到保护的调用图还包括一个或多个输入(a,b,f)以及一个或多个输出(g)。
未受到保护的调用图还包括迭代部分101,函数P、Q、R以及S被多次处理,随后的迭代取先前迭代的输出作为输入。
调用图是程序执行期间函数的相互依赖性关系以及为了根据输入变量(a,b,f)生成输出变量(g)所需的交互的表示。调用图可以使用各种编程语言来描述,例如,Graphcet、UML(统一建模语言)或HTML(超文本标记语言)。调用图可以使用如或的软件从源代码自动生成,或者从经编译的代码(汇编语言、LLVM-IR(低级别虚拟机-中间表示)、VHDL(VHSIC硬件描述语言)、)自动生成,或者甚至手动生成。
图1b表示根据本发明的第一实施例进行保护的调用图。
为了提供针对密码分析和内容恢复攻击的鲁棒性,本发明基于用掩码掩蔽程序的每个变量,并且根据本发明的一些有利实施例在程序执行期间改变该掩码。
为此,输入变量(a,b,f)被掩蔽(111,112,113)。掩码值(m1,m2,m6)可以随机选择。经掩蔽的变量在下文中表示为aθm1、bθm2以及fθm6。
然后用经掩蔽的变量(cθm3,dθm4,eθm5)替代调用图中的每个未掩蔽的内部变量(c,d,e)。掩码可以随机选择,或者当内部变量是线性函数的输出时,相应地从用于该函数的输入的掩码继承。
在这样的实施例中,为了保证受到保护的调用图的一致性,当内部变量用作图的迭代部分的输入和输出两者(如图1中的g)时,掩码变量可以在迭代部分的输入和输出两者中使用相同的掩码。因此,与变量b和g相关联的掩码是相同的(m2)。
因此,函数P'的输入在每次迭代时被等同地掩蔽。
在将掩码分配给每个输入并且用经掩蔽的变量替代每个未掩蔽的内部变量之后,与调用图的节点相关联的函数(P,Q,R,S)被修改(P',Q',R',S'),以符合掩码值。
当函数是线性的并且掩蔽是布尔的时,输出掩码可以从输入掩码继承。因此,该函数不需要被修改。否则,该函数必须由等价函数替代,该等价函数在取经掩蔽的变量作为输入时得到相同的结果,并且对该函数的输出进行掩蔽。
当函数是非线性的时,通常不可能在输出掩码和(多个)输入掩码之间进行链接。不能考虑到对输入数据解除掩蔽,对函数进行处理以及对结果进行掩蔽,因为未受到保护的信息将出现,并且可能被视为信息的泄漏。因此,函数可以由提供函数的所有可能结果的匹配表替代,匹配表是考虑输入掩码和输出掩码而构建的。这样,与现有技术相比,由算法处理的所有变量都受到保护,并且不会产生(多个)非线性函数的近似值。
最后,输出调用图的变量(g)可以是未掩蔽的(114)。
在第一实施例中,相应地保护所有内部变量,并且图1b的受到保护的调用图的结果与图1a的未受到保护的调用图的结果完全相同。除了对输入进行掩蔽并且对程序的输出解除掩蔽之外,该第一实施例不影响程序的节点的数量。其最终的复杂度和处理时间将不受附加保护层的影响。一旦编译完成,内部变量中的任一个将不会出现未受到保护的情况。因此,完美地保护该程序的执行免受密码分析和内容恢复攻击。
图1c表示本发明的第二实施例。在这样的实施例中,输入a、b以及f被掩蔽,未受到保护的内部变量c、d、e由受到保护的变量替代,函数被相应地修改,并且调用图的输出g是未掩蔽的,类似于图1b。
然而,通过在迭代部分的反馈循环101中插入附加节点120来确保关于图的迭代部分的掩蔽的一致性,该附加节点120被配置为修改用作迭代部分的输入和输出两者的内部变量的掩码值。
在图1c中,迭代部分的输出由经掩蔽的变量gθm7替代,并且节点120修改该变量的掩码以将gθm7变换成gθm2。为了确保信息不会出现未受到保护的情况,在输出掩码m7被移除之前应用输入掩码m2。如图1b所示,函数P'的输入在每次迭代中具有相同的掩码。
与第一实施例相比,第二实施例的优点是可以随机选择所有的掩码。
可以使用各种方法来掩蔽数据。掩蔽可以是简单的第一阶布尔掩蔽(例如,将变量与秘密共享值相加)、更高阶的布尔掩蔽、或任何其他更精细的掩蔽技术。本发明的优点之一是其与任何掩蔽技术兼容。
图2a示出了处理线性函数的方式。在这样的函数中,当掩蔽是布尔的时,应用于(多个)输出变量的掩码203取决于应用于(多个)输入变量的掩码201和202。因此,输出掩码是通过将线性函数应用于输入掩码而给出的。在这个示例中,输入变量a和b分别被值m1和m2掩蔽。该函数的输出被作为应用于掩码(f(m1,m2))的函数的结果的值掩蔽。考虑简化的示例,如果函数211是乘法函数,则f(m1,m2)等于m1*m2。
图2b示出了用于当由函数产生的受到保护的值具有特定掩码值时处理线性函数的实施例。
在这样的实施例中,可以实现两种可能性:
·在调用图中插入附加节点212,附加节点对应于影响线性函数结果的掩码f(m1,m2)到所需掩码m3的转换。为此,函数212可以在移除掩码f(m1,m2)之前将掩码m3添加到线性函数的结果中,或者
·考虑掩码的值计算等价于线性函数的匹配表221,匹配表存储在存储器中。该表包含aθm1和bθm2的所有可能值作为输入,并且将这些值中的每一个与输出cθm3的对应值进行关联。可以通过在所有可能的输入上执行函数211和212来计算匹配表。该表可以加密地存储,虽然这可能不是必需的,因为表中包含的数据不允许确定关于由该函数处理的原始未受到保护的数据的任何信息。
对如图2b表示的线性函数的处理允许针对调用图的每个内部变量使用随机掩码。
图3示出了用于处理非线性函数的实施例。在这样的实施例中,对非线性函数的处理基于考虑到经掩蔽的输入和输出而构建等价于所述函数的匹配表。应该注意,这样的处理也可以应用于处理线性函数。
与图2a和图2b中表示的线性函数相反,输出值的掩码不能根据输入值的掩码来确定。由于这个原因,非线性函数必须由等价匹配表310来替代,该等价匹配表310给出函数针对输入的每个可能集合的结果。匹配表可以通过对输入变量aθm1和bθm2解除掩蔽(301和302)、应用非线性函数303以及掩蔽(304)非线性函数的结果来进行计算。
可以浏览所有可能的输入变量以构建该表。因此,该表可以与输入的数量、输出的数量、和/或数据大小成比例。例如,考虑到输入a和b被编码在8个位上,相关联的匹配表是大小为2^8(a的可能性的数量)*2^8(b的可能性的数量)*8位(c的大小)的表。
图4a表示在算法的迭代部分被展开的实施例中的图1a的未受到保护的调用图。在下面对图4a的描述中,认为迭代部分仅执行两次,以仅用于说明目的。
函数P,Q,R以及S被执行两次,第二次迭代期间内部变量的值(c',d',e'和g')不同于第一次迭代期间相同变量的值(c,d,e和g)。
图4b和图4c表示根据本发明的其他实施例进行保护的调用图,调用图的迭代部分中使用的内部变量的掩码在每次迭代时被修改。在下面对图4b和图4c的描述中,认为迭代部分已经类似于图4a被展开。
通过在每次迭代结束时刷新掩码的值(也就是说通过改变掩码的值),获得更高级别的保护,特别是针对使用所应用的掩码的常数方面的边信道攻击。
在图4b中,通过以下操作如图1b或图1c中那样执行第一次迭代:掩蔽每个输入(a,b和f),用经掩蔽的变量(cθm3,dθm4,eθm5以及gθm7)替代每个内部变量(c,d,e和g),以及修改函数以便其考虑经掩蔽的变量(P',Q',R'和S')。
对于随后的迭代,用于内部变量(c,d,e和g)的掩码被修改,并且相关联的函数被相应地修改。应用于用作迭代的输入的变量的掩码也可以被修改。在该示例中,将掩码m1和m6应用于输入a和f的节点111和113被改变为应用新掩码m8和m12的节点401和403。经掩蔽的变量cθm3、dθm4以及eθm5被改变为新的经掩蔽的变量cθm9、dθm10以及eθm11。取由掩码m1和m2掩蔽的变量作为输入的函数P'被修改为等价函数P”,函数P”取由m8和m7掩蔽的变量作为输入。如果函数P'是线性函数,并且函数的输出由从输入的掩码继承的掩码进行掩蔽,则P'可以保持不被修改。函数Q'、R'以及S'相应地修改为函数Q”、R”以及S”。
在替代实施例中(未示出),输入a和f的掩码从一次迭代到另一次迭代可以不修改。
调用图可以例如在图1c中表示为使用附加节点,例如,迭代部分的反馈循环中的节点120,其对应于对迭代中涉及的所有变量的掩码进行刷新的步骤。
图4c表示另一实施例,其中节点402被插入到迭代的反馈循环中。该节点402与对应用于迭代中涉及的输入和变量的所有掩码进行刷新的步骤有关。另外,如图4c所示,该节点可以进一步改变影响前一次迭代的输出的掩码,从而将掩码m7变换成掩码m9。
图5a是未加密的AES算法的调用图表示。该示例性表示用于说明根据本发明的方法。这种表示只关注字节0(x0),并且关注迭代地处理的被称为“轮回步骤”的AES算法的步骤。在AES算法的标准执行中,第一个(预处理)轮回和最后一个(后处理)轮回是特定的。这些轮回在这里没有表示,图5a只关注数据路径的中间轮回(不表示对AES密钥ki执行的处理)。
每个轮回是迭代过程,这意味着作为该轮回的一次迭代的输出的y0字节循环回到作为该轮回的输入的x0上。
在调用图表示中,圆形表示对不同变量执行的运算,而图的边表示内部变量。在图5中,不存在输入或输出,因为它们在该轮回的第一次迭代和最后一次迭代中被处理(未示出)。
在该轮回中应用于x0的第一函数被称为替换盒(称为S盒)。这个替换是该算法的主要元素,并且在于对x0执行的双射非线性运算。第一替换盒的输出是图5a中的中间变量a。
应用于a的下一函数是一组三个线性运算:乘1、乘2以及乘3,其在Galois域中执行。这样的运算是线性的。
这些运算的结果(称为b、b'以及b”)与对字节5、10以及15(x5、xA、xF)执行的对应运算的结果混合。这种运算被称为“混合列(Mixcolumn)”。混合在于对四个条目执行的XOR运算。这个函数等价于三个连续的XOR运算。“混合列”运算的输出是中间变量c。
应用于c的下一函数是称为“添加轮回密钥(Addroundkey)”的步骤,其在于通过XOR运算将c与密钥(或从密钥处理的特定字节)k0混合以生成y0,其将被用作后续迭代的输入。
图5b是图5a的AES算法在根据本发明的一个实施例进行保护之后的调用图表示。
由于x0是中间变量,因此其由掩码θm00掩蔽。该掩码可以是在x0和已知的随机值之间执行的XOR,但是它也可以是多维共享,这意味着应用多个掩码层。在后一种情况下,θm00不一定是字节(8位)共享,但是可以是任何维度的共享。该掩码还可以是具有相同或不同大小的一对、三元或任何其他关联的掩码。
在S盒步骤中进行处理之后,中间变量a由掩码θm01掩蔽。由于替换盒是非线性函数,所以必须用等价的匹配表对其进行替代,该匹配表一次性地移除掩码θm00,执行非线性函数,以及用掩码θm01掩蔽结果,如图3所示。因此,θm01不一定与θm00有关。
在执行乘1、乘2以及乘3运算之后,中间变量b可以由掩码θm02掩蔽。在一些实施例中,掩码可以等于θm01,或者函数可以由等价的匹配盒替代,使得θm02可以被选择为完全独立于θm01。
在另一实施例中,可以计算执行替换盒的运算以及乘1、乘2和乘3运算的等价匹配表501。匹配表可以具有一个输入((x0θm00)和三个输出(bθm02、b'θm02、b”θm02)。可替代地,可以计算三个匹配表,每个匹配表具有一个输入和一个输出。如与乘1、乘2以及乘3运算符在匹配表中重组的替换盒表示未加密时的称为“T盒”(表盒)的运算。
在另一实施例中,不同的掩码可以分配给中间变量b、b'以及b”中的每一个。
对在各种字节上执行的计算的结果进行混合的步骤是线性函数。作为结果,输出掩码θm03可以从输入的掩码θm01、θm51、θmA1以及θmF1取回(θm51、θmA1以及θmF1是分别与用于处理变量x5、xA以及xF的T盒计算的输出相关联的掩码)。然而,可以计算等价的匹配表,其允许选择完全独立于输入掩码的输出掩码θm03。
在下一步骤中,将中间变量cθm03与密钥k0混合。由于密钥不是变量而是常量,因此密钥不需要被掩蔽。混合的结果是y0θm04。由于混合运算是线性的,所以θm04与θm03有关,或者如果混合函数由等价的匹配表替代,则θm04可以完全独立。
最后,可以插入刷新节点502。刷新节点的第一目的是通过将θm04转换为θm00来确保受到保护的调用图的一致性,因为变量y0/x0被用作调用图的迭代部分的输入/输出。在一些实施例中,刷新掩码可以进一步与对用于属于迭代循环的内部变量中的至少一些内部变量的掩码(在这种情况下是掩码θm00、θm01、θm02、θm03以及θm04)进行改变的步骤相关联。
当线性函数的节点是从其父节点继承的时,可以仅刷新作为循环的输入的变量的(多个)掩码(图5a中的θm00)以及作为(多个)非线性函数的(多个)输出的变量的掩码(图5b中的θm01或θm02,取决于实施例)。这意味着修改相关联的等价表以确保调用图一致性。经刷新的掩码将自动传播到线性函数的输入/输出。
应该注意,刷新节点512是可选的。保证受到保护的调用图的一致性的另一种方式可以包括例如选择等于θm00的θm04。
图6是描绘根据某些实施例的计算机实现的方法的流程图。
该方法包括:
-对调用图的输入进行掩蔽以产生经掩蔽的输入的步骤601;
-用经掩蔽的变量替代由图中的边表示的图的未受到保护的变量的步骤602。经掩蔽的变量的掩码可以随机地选择,或者可以是对经掩蔽的变量使用线性函数的结果;
-用等价函数至少替代由图中的节点表示的调用图的非线性函数以使得其执行与初始函数相同的运算、同时考虑到影响函数的输入/输出的掩码的步骤603。该操作也可以对调用图的线性函数执行。一种可能的实现方式在于用考虑影响输入/输出的掩码而生成的匹配表替代该函数,并且将输出值与输入值的每个可能的组合进行关联;以及
-对调用图的输出解除掩蔽的步骤604。
根据本发明的方法可以包括以下附加的可选步骤605:修改图的迭代部分以使得在循环的每次迭代处或者以较慢的速率、以定期的间隔或随机地对经掩蔽的输入和变量进行刷新(意味着掩码的值被修改)。因此,迭代地计算的变量永远不会被相同的掩码保护。虽然不限于这些应用,但是根据该实施例的方法在应用于密码算法时具有特别的优点,密码算法通常包括在少量计算上执行的大量迭代。
本文描述的方法可以通过计算机程序指令来实现,该计算机程序指令被提供给任何类型的处理器或任何软件可编程机器(例如,微处理器、微控制器、或DSP),以产生执行用于实现本文指定的功能/动作的指令的机器。这些计算机程序指令还可以存储在能够引导计算机以特定方式运行的计算机可读介质中。为此,可以将计算机程序指令加载到计算机上以引起一系列操作步骤的执行,并且因此产生计算机实现的进程,以使得所执行的指令提供用于实现本文指定的功能的过程。
该方法可以单独使用,以便从算法的未受到保护的表示生成受到保护的表示,但是该方法也可以与编译器配对,由此产生可以由计算机器执行的受到保护的经编译的代码,或者编译器生成的并且在诸如现场可编程门阵列(FPGA)、或专用集成电路(ASIC)的专用计算机器上实现的网表形式的硬件代码。
为此,该方法可以包括对受到保护的调用图进行编译以产生对密码分析和内容恢复攻击鲁棒的可执行代码的附加步骤606。
图7示出了可以用于处理本发明的系统,例如,通用计算机系统。该系统包括存储计算机程序产品的非易失性计算机可读存储器M,用于取回未受到保护的调用图或如由处理器CPU进行处理以生成调用图的源代码或可执行代码的未受到保护的数据的输入/输出接口I/O,处理器通过数据总线连接到存储器和输入/输出接口。
更一般地,本文描述的方法和设备可以通过各种手段来实现。例如,这些技术可以以硬件、软件、或其组合来实现。
本发明的各种实施例提供了包括以下的若干优点:
-这些实施例呈现高级别的方法,而与实现方式无关,
-这些实施例为算法提供了针对各种边信道攻击的鲁棒性,显著地因为算法处理的所有变量都被掩蔽,同时算法的语义被保留,
-这些实施例适用于任何类型的软件程序,适用于线性函数和非线性函数,
-这些实施例很容易实现和编译,
-这些实施例不会存在信息泄漏,因为所有变量都被掩蔽,
-这些实施例可以被编程为自动执行,而无需人类操作员参与。
虽然已经通过对各种示例的描述说明了本发明的实施例,并且虽然已经相当详细地描述了这些实施例,但是本申请人的意图不是限制或以任何方式将所附权利要求的范围限于这样的细节。对于本领域技术人员,附加的优点和修改将容易地显现。因此,本发明在其更广泛的方面不限于所示出和所描述的具体细节、代表性方法以及说明性示例。
Claims (12)
1.一种用于将算法的调用图表示变换成所述算法的受保护调用图表示的计算机实现的方法,所述调用图包括至少一个输入(a,b,f)、至少一个边(c,d,e)、至少一个节点(P,Q,R,S)以及至少一个输出(g),所述调用图的边表示所述算法的内部变量,所述调用图的节点表示所述算法的线性基本函数或非线性基本函数,所述计算机实现的方法包括:
-对所述调用图的每个输入进行掩蔽的步骤(601),
-用经掩蔽的变量替代所述调用图的每个未掩蔽的内部变量的步骤(602),
-用适用于经掩蔽的变量的等价函数至少替代所述调用图的每个非线性函数的步骤(603),
-对所述调用图的每个输出解除掩蔽的步骤(604)。
2.根据权利要求1所述的计算机实现的方法,其中,所述调用图包括被迭代地处理的部分,用经掩蔽的内部变量替代未掩蔽的内部变量的步骤(602)包括对用作所述调用图的被迭代地处理的部分的输入和输出两者的内部变量(b,g)进行识别,以及针对这些变量在所述调用图的所述部分的输入和输出中使用相同的掩码(m2)。
3.根据权利要求1所述的计算机实现的方法,其中,所述调用图包括被迭代地处理的部分,用经掩蔽的内部变量替代未掩蔽的内部变量的步骤(602)包括对用作所述调用图的被迭代地处理的部分的输入和输出两者的内部变量(b,g)进行识别,以及在所述迭代部分的反馈边中插入用于对所述内部变量的掩码进行修改的附加节点(120)。
4.根据前述权利要求中任一项所述的计算机实现的方法,其中,所述调用图的被迭代地处理的部分中的内部变量的掩码以定期的间隔被改变,并且相关联的函数被相应地修改。
5.根据权利要求4所述的计算机实现的方法,还包括在所述调用图中插入用于对所述迭代部分的内部变量的掩码进行刷新的附加节点(402)。
6.根据前述权利要求中任一项所述的计算机实现的方法,其中,在用适用于经掩蔽的变量的等价函数至少替代所述调用图的每个非线性函数的步骤(603)中计算的所述等价函数是使用匹配表来实现的。
7.根据前述权利要求中任一项所述的计算机实现的方法,其中,用适用于经掩蔽的变量的等价函数至少替代所述调用图的每个非线性函数的步骤(603)还包括:用将输入内部变量和输出内部变量的掩码纳入考虑的等价函数替代所述调用图的每个线性函数。
8.根据前述权利要求中任一项所述的计算机实现的方法,其中,所有掩码值是随机确定的。
9.根据前述权利要求中任一项所述的计算机实现的方法,还包括对所述调用图进行编译以产生受到保护的可执行代码的附加步骤。
10.一种存储在非易失性计算机可读数据存储介质上的计算机程序产品,包括使得计算机系统执行根据权利要求1至9中任一项所述的方法的计算机可执行指令。
11.一种非易失性计算机可读数据存储介质,其包含使得计算机系统执行根据权利要求1至9中任一项所述的方法的计算机可执行指令。
12.一种系统,其包括耦合到存储器的处理器,所述存储器存储计算机可执行指令,所述计算机可执行指令使得所述系统执行用于将算法的调用图表示变换成所述算法的受保护调用图表示的计算机实现的方法,所述调用图包括至少一个输入、至少一个边(c,d,e)、至少一个节点(P,Q,R,S)以及至少一个输出(g),所述调用图的边表示所述算法的内部变量,所述调用图的节点表示所述算法的线性基本函数或非线性基本函数,所述系统包括处理设备,所述处理设备被配置为:
-对所述调用图的每个输入进行掩蔽,
-用经掩蔽的变量替代所述调用图的每个未掩蔽的内部变量,
-用适用于所述经掩蔽的变量的等价函数至少替代所述调用图的每个非线性函数,以及
-对所述调用图的每个输出解除掩蔽。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP17305202.8A EP3367606B1 (en) | 2017-02-24 | 2017-02-24 | Automatic insertion of masking into an algorithm |
EP17305202.8 | 2017-02-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108512645A true CN108512645A (zh) | 2018-09-07 |
CN108512645B CN108512645B (zh) | 2021-06-25 |
Family
ID=58709897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810155080.6A Active CN108512645B (zh) | 2017-02-24 | 2018-02-23 | 将掩蔽自动插入到算法中的方法、系统和存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10735179B2 (zh) |
EP (1) | EP3367606B1 (zh) |
KR (1) | KR102049656B1 (zh) |
CN (1) | CN108512645B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3624390A1 (en) | 2018-09-17 | 2020-03-18 | Secure-IC SAS | Devices and methods for protecting cryptographic programs |
US11042634B2 (en) * | 2018-12-21 | 2021-06-22 | Fujitsu Limited | Determining information leakage of computer-readable programs |
US11507699B2 (en) * | 2019-09-27 | 2022-11-22 | Intel Corporation | Processor with private pipeline |
US11632231B2 (en) * | 2020-03-05 | 2023-04-18 | Novatek Microelectronics Corp. | Substitute box, substitute method and apparatus thereof |
US11652721B2 (en) * | 2021-06-30 | 2023-05-16 | Capital One Services, Llc | Secure and privacy aware monitoring with dynamic resiliency for distributed systems |
US11934327B2 (en) * | 2021-12-22 | 2024-03-19 | Microsoft Technology Licensing, Llc | Systems and methods for hardware acceleration of data masking using a field programmable gate array |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364203A (zh) * | 2008-09-19 | 2009-02-11 | 南京大学 | 一种面向隐蔽通道分析的系统分析和划分方法 |
US8091139B2 (en) * | 2007-11-01 | 2012-01-03 | Discretix Technologies Ltd. | System and method for masking arbitrary Boolean functions |
CN103279414A (zh) * | 2013-05-23 | 2013-09-04 | 北京大学 | 一种适用于Xen虚拟化平台的隐蔽通道检测方法 |
US9158604B1 (en) * | 2014-05-13 | 2015-10-13 | Qualcomm Incorporated | Lightweight data-flow tracker for realtime behavioral analysis using control flow |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594761B1 (en) * | 1999-06-09 | 2003-07-15 | Cloakware Corporation | Tamper resistant software encoding |
FR2950721B1 (fr) * | 2009-09-29 | 2011-09-30 | Thales Sa | Procede d'execution d'un algorithme de protection d'un dispositif electronique par masquage affine et dispositif associe |
EP2510441B1 (en) * | 2009-11-09 | 2021-05-26 | Exergy Limited | System and method for maximising thermal efficiency of a power plant |
US9230455B2 (en) * | 2009-12-11 | 2016-01-05 | Digital Immunity Llc | Steganographic embedding of executable code |
US8971526B2 (en) * | 2011-07-26 | 2015-03-03 | Crocus-Technology Sa | Method of counter-measuring against side-channel attacks |
US9424038B2 (en) * | 2012-12-10 | 2016-08-23 | Nvidia Corporation | Compiler-controlled region scheduling for SIMD execution of threads |
US9721120B2 (en) * | 2013-05-14 | 2017-08-01 | Apple Inc. | Preventing unauthorized calls to a protected function |
-
2017
- 2017-02-24 EP EP17305202.8A patent/EP3367606B1/en active Active
-
2018
- 2018-02-16 US US15/898,327 patent/US10735179B2/en active Active
- 2018-02-23 CN CN201810155080.6A patent/CN108512645B/zh active Active
- 2018-02-23 KR KR1020180022242A patent/KR102049656B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8091139B2 (en) * | 2007-11-01 | 2012-01-03 | Discretix Technologies Ltd. | System and method for masking arbitrary Boolean functions |
CN101364203A (zh) * | 2008-09-19 | 2009-02-11 | 南京大学 | 一种面向隐蔽通道分析的系统分析和划分方法 |
CN103279414A (zh) * | 2013-05-23 | 2013-09-04 | 北京大学 | 一种适用于Xen虚拟化平台的隐蔽通道检测方法 |
US9158604B1 (en) * | 2014-05-13 | 2015-10-13 | Qualcomm Incorporated | Lightweight data-flow tracker for realtime behavioral analysis using control flow |
Also Published As
Publication number | Publication date |
---|---|
EP3367606A1 (en) | 2018-08-29 |
KR102049656B1 (ko) | 2019-11-28 |
US20180248682A1 (en) | 2018-08-30 |
CN108512645B (zh) | 2021-06-25 |
EP3367606B1 (en) | 2019-09-18 |
KR20180098172A (ko) | 2018-09-03 |
US10735179B2 (en) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108512645A (zh) | 将掩蔽自动插入到算法中 | |
Moss et al. | Compiler assisted masking | |
Yu et al. | Data oblivious ISA extensions for side channel-resistant and high performance computing | |
Belaïd et al. | Tornado: Automatic generation of probing-secure masked bitsliced implementations | |
Kreuter et al. | {PCF}: A Portable Circuit Format for Scalable {Two-Party} Secure Computation | |
CN104335218B (zh) | 使用基函数编码来保护可访问的系统 | |
Coron et al. | Conversion from arithmetic to boolean masking with logarithmic complexity | |
Schrittwieser et al. | Code obfuscation against static and dynamic reverse engineering | |
CN104919750B (zh) | 计算关于函数‑输入值的数据函数的计算设备和方法 | |
EP2398182B1 (en) | A device and a method for generating software code | |
US8918768B2 (en) | Methods and apparatus for correlation protected processing of data operations | |
JP7132926B2 (ja) | コンパイルデバイス及びコンパイル方法 | |
CN104380245A (zh) | 随机数生成器和流密码 | |
JP2013524305A (ja) | サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法 | |
Eyrolles | Obfuscation with Mixed Boolean-Arithmetic Expressions: reconstruction, analysis and simplification tools | |
Agosta et al. | The MEET approach: Securing cryptographic embedded software against side channel attacks | |
CN104392154B (zh) | 一种加密方法 | |
Tomb | Automated verification of real-world cryptographic implementations | |
CN106464484B (zh) | 预定函数的混淆执行 | |
Schoolderman | Verifying branch-free assembly code in Why3 | |
Biernacki et al. | Vip-bench: a benchmark suite for evaluating privacy-enhanced computation frameworks | |
Amarilli et al. | Can code polymorphism limit information leakage? | |
Choi et al. | Architectural supports for block ciphers in a RISC CPU core by instruction overloading | |
US20200151007A1 (en) | Lightweight dispatcher for program control flow flattening | |
van den Berg | RISC-V implementation of the NaCl-library |
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 |