CN108370311A - 计算设备和方法 - Google Patents
计算设备和方法 Download PDFInfo
- Publication number
- CN108370311A CN108370311A CN201680073908.2A CN201680073908A CN108370311A CN 108370311 A CN108370311 A CN 108370311A CN 201680073908 A CN201680073908 A CN 201680073908A CN 108370311 A CN108370311 A CN 108370311A
- Authority
- CN
- China
- Prior art keywords
- variable
- selection
- function
- input
- output
- 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.)
- Pending
Links
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/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/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- 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
-
- 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/16—Obfuscation or hiding, e.g. involving white box
-
- 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/34—Encoding or coding, e.g. Huffman coding or error correction
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S40/00—Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
- Y04S40/20—Information technology specific aspects, e.g. CAD, simulation, modelling, system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
- Storage Device Security (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
计算设备(200)被布置为评估将若干(n)输入变量映射到若干(m)输出变量的数据函数(S)。该计算设备包括接收选择变量作为输入的选择机构(220)和被布置为接收一个或多个评估变量并针对所接收的评估变量评估评估函数的评估机构(210),评估函数接收所述评估变量作为输入。
Description
技术领域
本发明涉及计算设备、计算方法、计算机程序和计算机可读介质。
背景技术
在白箱模型中,黑客可以能够完全控制运行在计算设备(例如,智能电话或PC)上的软件。白箱加密技术的目标是保护软件实施免受这种黑客攻击。
当涉及密钥的加密方案在白箱模型中受到保护时,这通常意味着访问并完全控制安全软件及其执行环境的攻击者应该无法提取关于密钥的任何可感信息。
一种避免攻击者访问信息中的密钥的方法是将一部分或全部可感算法实现为表格网络。这些表格对编码变量进行运算。攻击者将很难确定表格执行什么运算,因为他不知道编码。通过表格访问来替换运算通常会增加代码的大小。此外,进一步保护表格的一些对策具有进一步增加代码大小的效果。
例如,攻击者访问正在运行的实现时获取密钥信息的一种可能的攻击是所谓的碰撞攻击,其中攻击者在不同输入的不同运行中测量密钥相关变量。攻击者收集碰撞、即在不同消息的不同运行中取得相同值的变量的统计信息。最终,攻击者可以能够收集足够的信息来提取密钥。互信息分析(MIA)就是这种攻击的一个例子。
为了防止碰撞攻击,可以通过n份{wi}i表示变量w,使得w上的碰撞只能从完全集{wi}i上的碰撞中被检测到。由于后者的概率较低,因此碰撞攻击变得更加困难。在份额上进行计算的效果是表格大小再次显着增加。
发明内容
提供了一种计算设备,其被布置为评估将若干输入变量映射到若干输出变量的数据函数。所述数据函数在所述计算设备中被布置为包括选择函数和评估函数的计算。所述输入变量被分成一个或多个选择变量和一个或多个评估变量。对于所述选择变量的每种特定组合值,定义了相应的选择函数和评估函数。
所述计算设备包括:
选择机构,其被布置为接收所述一个或多个选择变量,并针对所接收的选择变量评估所述选择函数;选择函数接收所述选择变量作为输入,并且所述选择函数的输出指示在所述选择函数中所接收的所述选择变量是否等于与所述选择函数相对应的所述特定组合值,
评估机构,其被布置为接收所述一个或多个评估变量,并针对所接收的评估变量评估所述评估函数;评估函数接收所述评估变量作为输入,并且所述评估函数的输出表示已将所述评估变量和与所述评估函数相对应的所述选择变量的特定组合值的联合作为输入的所述数据函数的输出,以及
组合机构,其被布置为将所述选择机构的输出和所述评估机构的输出组合成针对所述输入变量的所述数据函数的输出。
所述评估函数和选择函数两者比所述数据函数接收更少的输入作为输入。结果,用于实现所述评估和选择函数的代码大小减少了。这在白箱实现中尤其相关,在白箱实现中所述评估和/或选择函数被实现为表格或表格网络,因为这需要较小的表格。尽管由于所述评估和选择变量的划分导致电路大小可能会增加,但代码大小会减小。此外,所述选择函数是易于在基于多项式的实现中实现的特别简单的函数,例如当变量表示为多个编码份额时可以使用的函数。由于所述选择函数对于不同数据函数是相同的,因此它们可以重复用于多个数据函数;这进一步减小了代码大小。
在一个实施例中,所述选择变量被进一步划分为多组选择变量,选择函数在所述计算设备中被布置为多个子选择函数的乘积,每个子选择函数对应于多组选择变量的一组,子选择函数接收该组中的选择变量作为输入,并且子选择函数的输出指示接收到的选择变量是否等于与所述选择函数相对应的所述组中的所述特定组合值。
所述选择变量的进一步细分进一步减小了用于实现所述选择机构的代码大小。
所述选择机构使得根据所述选择变量选择正确的评估函数。所述评估机构针对所述选择变量和所述评估变量的不同可能值评估所述数据函数的结果。评估函数只需要所述评估变量作为输入。所述评估变量通过对应于所述评估函数的选择变量值的特定组合而被补充到所述评估函数中。虽然这会增加评估函数的数量,但它会减小这些函数的大小。
所述选择机构可以实现为选择系统;例如以电路和/或在处理器上运行的适当软件的形式。所述评估机构可以实施为评估系统;例如以电路和/或在处理器上运行的适当软件的形式。例如,所述软件可以包括表格网络中的多个表格查找运算。
在一个实施例中,对所述输入变量中的一个或多个进行编码。事实上,所述选择和评估变量的全部都可以被编码。对编码变量进行运算可以通过针对相同编码而编码的表格来完成。
对变量、特别是所述选择和评估变量进行编码的重要方式是将变量编码为多个编码份额。通过将运算表示为有限域中的多项式,可以对以这种方式编码的变量执行运算。多项式可以使用表示像加法和乘法这样的运算的表格来进行评估。这种类型的编码的优点是可以在整个多项式评估中重复使用针对加法和乘法的表格。这进一步减小了代码大小。
所述计算设备是电子设备,例如移动电子设备(例如移动电话)。所述计算设备可以是机顶盒、智能卡、计算机等。
这里描述的计算方法可以应用于广泛的实际应用中。这样的实际应用包括加密应用。例如,签名、解密和加密等信息可以用软件完成而不会泄露用于执行加密运算的密钥。例如,所述计算设备可以用于可感应用,例如使用专有算法。攻击者对软件进行逆向工程的难度增加了。
根据本发明的方法可以在计算机上实现为计算机实现方法,或者以专用硬件实现,或者以两者的组合方式实现。用于根据本发明的方法的可执行代码可以被存储在计算机程序产品上。计算机程序产品的示例包括存储器设备、光存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括存储在计算机可读介质上的非暂时性程序代码,用于当所述程序产品在计算机上运行时执行根据本发明的方法。
在优选实施例中,所述计算机程序包括计算机程序代码,其当所述计算机程序在计算机上运行时适于执行根据本发明的方法的所有步骤。优选地,所述计算机程序被嵌入到计算机可读介质上。
本发明的另一方面提供了一种使计算机程序可供下载的方法。当计算机程序上传到例如Apple’s App Store、Google’s Play Store或Microsoft’s Windows Store时,并且当计算机程序可从这样的商店下载时使用该方面。
附图说明
将仅通过参照附图进行举例的方式来描述本发明的进一步细节、方面和实施例。图中的元素为了简单和清楚起见进行说明并不一定按比例绘制。在附图中,对应于已描述元件的元件可以具有相同的附图标记。在附图中,
图1示意性地示出了数据函数的一个例子,
图2a示意性地示出了计算设备的实施例的示例,
图2b示意性地示出了评估机构的实施例的示例,
图2c示意性地示出了选择机构的实施例的示例,
图2d示意性地示出了选择机构的实施例的示例,
图2e示意性地示出了计算设备的实施例的示例,
图3示意性地图示了对变量进行编码的示例,
图4a示意性地示出了表格网络的实施例的示例,
图4b示意性地示出了表格网络的实施例的示例,
图5a示意性地示出了计算方法的流程图,
图5b示意性地示出了计算方法的流程图,
图6a示意性地示出了DES块加密的实施例的示例,
图6b示意性地示出了DES轮函数的实施例的示例,
图7a示意性地示出了根据实施例的包括计算机程序的具有可写部分的计算机可读介质,
图7b示意性地示出了根据实施例的处理器系统的表示。
具体实施方式
虽然本发明容许许多不同形式的实施例,但是在附图中示出并将在此详细描述一个或多个具体实施例,应理解的是,本公开应被视为本发明原理的示例并不意图将本发明限制于所示出和描述的特定实施例。
在下文中,为了理解,在运算中描述了实施例的元素。然而,将显而易见的是,各个元件被布置为执行由它们执行的正被描述的功能。
此外,本发明不限于这些实施例,并且本发明在于上面描述的或在相互不同的从属权利要求中记载的每个新颖特征或特征组合。
从FIPS 46-3中拷贝的图6a特别说明了DES块加密,并且大体说明了块加密。块加密接收一系列轮次(round)块加密作用的块加密输入610;在DES的情况下,有16轮,用于三重DES 48。第一轮块加密作用于所述块加密输入610,每下一轮作用于前一轮的输出。在一轮块加密中,轮函数f被应用于前一轮输出的部分。块加密输入具有在DES情况下64比特的数据大小。每轮块加密修改该轮块加密输入以产生一轮块加密输出。所有轮的块加密输入和输出具有相同的数据大小。请注意,DES在块加密的开始和结束时具有初始置换和反向初始置换。这些没有加密意义,因为它们不依赖于密钥。
数据加密标准描述了对64比特块的密钥块编码。密钥官方是64比特,但其中只有56比特实际用于加密。加密和解密使用16次迭代,称为轮次。在第r轮(1≤r≤16),使用48比特的轮密钥Kr,其比特是56密钥比特的(取决于轮次的)子集。
DES轮函数f如图6b所示,并由下式给出:其中P是32比特的置换,而E是扩展映射,其通过复制一半的比特将长度为32的比特串映射为长度为48的比特串。S盒S将长度为48的比特串映射为长度为32的比特串,按组作用于6比特子串:
S(b1b2b3…b48)=S1(b1…b6)||S2(b7…b12)||…||S8(b43…b48),其中每个S盒Si将长度为6的比特串映射到长度为4的比特串,而||表示串联。在图6b中,S盒S1的输入参考611,输出参考612。
块加密中通常使用S盒(代替盒)来增加块加密的Shannon混乱。S盒特别适合于被编码为根据实施例的数据函数。解密是通过倒退,即从底部到顶部来执行的。反向轮函数由下式给出
由于DES使用仅56比特的密钥,因此可以进行完整的密钥空间搜索;但是,使用差分故障攻击、尤其是在软件上实施的密钥恢复将会快几个数量级。三重DES使用三个56比特密钥(K(1)、K(2)、K(3))并且通过如下方式进行加密:首先使用密钥K(1)执行DES加密,随后使用密钥K(2)执行DES解密,随后使用密钥K(3)执行DES加密。
本文将DES用作块加密的基本示例,并将DES S盒用作数据函数的主要示例。事实上,基于DES的实施例已被广泛测试,并且发现DES的白箱编码在实施例中相当小,如下面进一步说明的。DES的结果立即转移到三重DES,因为S盒与DES中的相同。其他实施例适用于其他块加密,例如AES,特别适用于其(一个或多个)S盒。AES不是像DES那样的Feistel类型,而是代替置换网络(SPN)块加密。S盒DES的输入比输出多(6对4),而AES的S盒有相同数量的输入和输出。
通常,下面解释的系统实施例也可以用于其他功能,例如需要安全实施的功能。例如,可以使用实施例来实现诸如散列或消息认证码等的安全原语。
图1示意性地示出了数据函数100的示例。数据函数S将若干(n)输入变量110映射到若干(m)输出变量120。例如,数据函数可以是S盒,就像DES的S盒一样。数据函数100的输入可以是比特,例如在DESS盒的情况下可以有6个输入比特和4个输出比特。在AES S盒的情况下,可能有8个输入和输出比特。比特数量可以是不同的,例如8个输入比特和4个输出比特等。
下面我们将把数据函数100表示为形式的函数。这是从具有2n元素的数学字段到具有2m的字段。可能是n=m,比如在AES S-box中。其中m<n的实施例是特别有利的,因为它们允许在较小的字段中执行所有计算;我们将参考m<n的函数作为‘漏斗’函数,因为范围严格小于域。如果没有使用比特,但是说变量占用2个以上的不同值,则可以使用相应更大的字段来执行计算。
图2a示意性地示出了计算设备200的实施例的示例。实现图1的数据函数可能需要大量存储,尤其是在使用对输入和/或输出的编码时。例如,在白箱实现中,图1的数据函数可以实现为单片(monolithic)表格。但是,即使在DES S盒的情况下,这种表格中的数据量可能会迅速增加。例如,如果每个比特被编码为16个份额,并且每个份额另外有一个状态比特,总共16个状态比特(参见下面关于可能编码的更多信息),S盒的输入大小膨胀到32×6=192比特。这意味着单片表格将会非常大,具有2192个条目。因此需要一种不同的方式来对数据函数进行编码,使得该数据函数可以以安全的方式被编码在白箱中,但是需要较少的存储空间。
计算设备200被布置为接收输入211。输入211可以像数据函数100的输入那样。输入可以被编码。输入211可以是多个比特。输入211也可以来自其他字段,比如F4(4个元素的字段)而不是比特。输入变量被划分为一个或多个选择变量和一个或多个评估变量。原则上任何划分都是可能的,但不同的选择会有不同的折衷。一般而言,增加选择比特的数量将导致实现大小较小,而选择较少的选择比特则会导致更快的实现。实现大小是指实现的存储大小,特别是指在白箱实现中使用的总表格大小。大的表格反过来会导致缓存缺失,从而也导致执行速度降低。
数据函数100在计算设备200中被布置为包括选择函数和评估函数的计算。对于选择变量的每种特定组合值(υ),定义了相应的选择函数δυ和评估函数Sυ。为避免混淆,我们注意到评估函数Sυ不一定需要与任何一个DES S盒相关;此外,指数υ在这里指的是选择变量。
计算设备200包括选择机构220。选择机构220被布置为接收一个或多个选择变量222。在222处指示出输入变量211中作为选择变量的输入变量。选择机构222被布置为针对所接收的选择变量评估选择函数δυ。例如,选择机构220可以针对所述选择变量的选择变量的每种特定组合值(υ)评估每个选择函数δυ。选择函数δυ接收所述选择变量作为输入,并且选择函数的输出指示在所述选择函数中所接收的选择变量是否等于对应于所述选择函数的特定组合值(v)。在224处指示出选择机构的输出。
选择函数可以是克罗内克δ函数,除了后者可能有多个输入。在数学符号中δi(j)表示:
在上面的例子中,i和j可以代表多个输入,例如代表所有的选择变量。此外,选择函数不一定必须返回输出0和1,虽然这些是方便的,但是可以使用其他值,原则上可以使用任何两个不同的值并将其容纳在计算设备200中的其他位置。
计算设备200包括评估机构210。评估机构210被布置为接收一个或多个评估变量212并针对所接收的评估变量评估所述评估函数。在212处指示出输入变量211中作为评估变量的输入变量。
评估函数接收评估变量作为输入,并且评估函数的输出表示已将评估变量和与评估函数相对应的所述选择变量的特定组合值的联合作为输入的数据函数的输出。换句话说,如果数据函数已经将评估变量和与评估函数相对应的选择变量的特定值一起接收作为输入,则所述评估函数给出所述数据函数将给出的结果。
实施例中的想法是选择函数选择在输入处存在选择变量的哪个特定组合值,并且在某种意义上选择正确的评估函数。选择函数是特别容易实现的函数。选择函数仅取决于选择比特的数量,对于不同的数据函数可能相同。因此,选择函数可以在同一计算设备中被重复用于不同的数据函数。
评估机构和选择机构也可以被称为评估单元和选择单元。
计算设备200包括组合机构,该组合机构被布置为将选择机构和评估机构的输出组合成针对所述输入变量的数据函数的输出。例如,组合机构可以对与相同的特定组合值相对应的选择函数(δυ)和评估函数(Sυ)的乘积进行求和(∑νδυSυ)。在选择函数给出值0和1的情况下,这将精确地识别正确的评估函数。在选择函数给出除0和1以外的一些其他值的情况下,可以使用选择函数的一些其他线性组合。
在一个实施例中,在选择变量的所有组合值(υ)上进行求和。通过这种方式,将针对所有输入变量正确模拟数据函数。但是,如果知道选择变量的某些组合不能出现,那么只需要在选择变量的可能组合上求和。这将进一步减小计算设备的大小。
下面给出实施例的数学描述以进一步澄清和例证。
所考虑的数据函数是函数注意我们可能有m<n。我们从一组输入位置(或变量){1,...,n}中选择位置i1,...,in-m作为选择变量。让m个剩余位置为p1,...,pm包含评估变量。现在对于每个我们通过如下方式定义函数让Sν(x1…xm)=S(y1…yn),其中对于j=1,...,n-m,对于j=1,...,m,换句话说,对于每个通过将选定的n-m个输入设置为由v指定的值而从S中获得函数Sυ。为了计算S(x),我们考虑n-m个选定位置的输入x的值;如果这个值是v,那么我们将函数Sυ应用于其余的输入符号。
在对S(x)的安全、比如说白箱评估中,选择机构选择然后返回结果而不揭示关于输入x和输出S(x)的信息。组合机构230可以使用以下标识:
其中δi(j)满足
图2b示意性地示出了评估机构210的实施例的示例。评估机构210可以包括实现评估函数的多个评估单元;示出了评估单元215和216。评估单元可以被实现为表格(例如查找表格)或者被实现为表格网络。例如,图2b的评估机构可以针对评估机构210中所接收的评估变量评估(包括函数215和216的)评估函数中的每一个。如果针对选择函数的每个可能组合值都包含评估函数,那么正确的结果必然会包含在评估函数中。从多个评估函数的多个结果中选择正确的结果是由选择机构执行的。
图2c示意性地示出选择机构220的实施例的示例。选择机构220可以包括实现选择函数的多个选择单元;示出了选择单元225和226。选择单元可以实现为表格(例如查找表格)或者被实现为表格网络。
图2d示意性地示出选择机构220的实施例的示例。在一个实施例中,选择变量可以被进一步划分为多组选择变量。选择函数然后可以在计算设备200中被布置为多个子选择函数的乘积,每一个子选择函数对应于多组选择变量中的一组,子选择函数接收该组中的选择变量作为输入,并且子选择函数的输出指示所接收的选择变量是否等于对应于选择函数的该组中的特定组合值。
例如,在图2d的选择机构220中,选择单元225.1和选择单元226.1可以接收第一组选择变量,而选择单元225.2和选择单元226.2可以接收第二组选择变量。可能会有比2更多的组。如果需要,可以用虚拟变量(比如用0)填充,直到选择变量和虚拟变量的数量是组的数量的倍数;在后一种情况下,选择单元中的输入数量可能相同。组合单元227被布置成组合与对应于相同组合值的选择单元的输出。例如,组合单元227可以例如通过乘法或者通过逻辑与运算来组合单元225.1和225.2的输出。
例如,在一个实施例中,数据函数是漏斗函数;具有n个输入变量和m个输出变量(m<n)。在该实施例中,评估变量的数量可以被选择为m,选择变量的数量为n-m。选择变量组的数量被选择为这些选择允许在中执行所有计算,后者反过来允许比在多个不同字段中需要计算的情况更多地重复使用编码的乘法和加法表格。例如,如果n=8,且m=3,则可以使用两组选择比特,具有一个填充比特。
下面给出实施例的数学描述以用于进一步的澄清和例证。为了确保只在较小的输出字段上进行计算,我们将选择比特分成m个比特的块,比如
其中并且每个如果n-m不除以m,我们用前导零填充选择比特,直到在划分之前比特的剩余数量除以m。如果不使用比特q值变量,则上面的2m可以被qm替换。
根据(i1,i2)=(x1,x2),当且仅当i1=x1和i2=x2,我们有
后者的结果也可以表示为加的逻辑比较:在这个等式中,‘=’运算被解释为像克罗内克δ的逻辑运算,例如,在不等的情况下返回0,在相等的情况下返回1。也可以使用表格网络对编码变量执行逻辑比较。如果使用2个以上的组,公式中的‘2’可能会被组的数量所取代。
在一个实施例中,图2d的选择机构220包括针对多组选择变量中的每一组的所有组合值的选择函数。例如,如果有8个选择变量被分成两个选择变量组A和B,则选择机构220可以包括针对组A的所有可能组合值的选择函数和针对组B的所有可能组合值的选择函数。为了模拟针对全组选择函数的特定组合值的选择函数,组合单元227可以被布置为组合来自组A和组B的正确选择函数。关于一组变量的选择函数还可以输出0和1以指示不存在或存在匹配。这些值可以很容易地与乘法或加法等结合使用。
选择机构可以包括实现选择函数的多个选择单元,例如,多个选择单元可以直接表示选择函数,或者可以表示多组选择变量的选择函数。
选择单元和/或评估单元可以被实现为表格或表格网络。
在一个实施例中,输入变量的数量(n)大于输出变量的数量(m),评估变量的数量等于输出变量的数量。选择变量的数量可以等于输入变量数量与输出变量数量之间的差(n–m)。这允许使用较少数量的变量完成所有计算,例如在字段中。
存在几种编码变量w的方法。变量w可以直接对应于选择或评估变量。但是,变量w也可以一起收集几个变量。例如,计算设备200可以被布置为一起运算多个变量。例如,在一个实施例中,选择、评估和输出变量是代表单个比特的比特变量。在一个实施例中,多个比特变量可以组合成更大的变量。
例如,在一个实施例中,变量310可以表示2或4个选择或评估变量。例如,对于漏斗函数,较大的变量可能具有与输出变量的数量(m)相同的比特数量。(n-m)个选择变量被收集到一组或多组(m)变量中,每组变量都被表示在一个较大的变量中。
例如,DES S盒有4个输出比特变量和6个输入比特变量。在这种情况下,较大的变量w可以表示4比特。输入比特可以划分为4个评估比特,由单个较大的4比特变量表示,还可以划分为2个选择变量,这些选择变量也由单个(较大)的4比特变量表示。
例如,AES S盒有8个输出比特变量和8个输入比特变量。在这种情况下,较大的变量w也可以表示4比特。输入比特可以划分为4个评估比特,由单个较大的4比特变量表示,以及4个选择变量,也由单个较大的4比特变量表示。输出可以由两个较大的4比特变量表示。下面解释了变量w如何被表示为一个比特变量或更大的变量。
变量w可以通过映射Enc(w)进行编码。编码是一种加密编码,可以随机选择,也可以是使用密钥的加密等。使用的编码对于攻击者是未知的。当变量w被处理时,在设备中隐含地假定进行编码。一个变量也可以与一个状态变量s一起编码,Enc(w,s)这会进一步混淆w和编码之间的关系。更安全的编码将一个变量分成多个份额并对每个份额进行编码,最好与一个状态变量一起编码。尽管后一种编码类型是最安全的,但在这种类型编码中尤其很难与数据函数的表示方法组合为表格网络。
图3说明了一种对使用多个份额的变量w进行编码的方法。图3示出了变量310,w并且说明了如何将w编码用于诸如加密设备200的加密设备中,以避免w上的碰撞。变量310,w分布在多个份额wj上。我们将把w的比特大小称为k。在一个实施例中,份额wj的比特大小等于w的比特大小。不同的变量可能有不同的比特大小。例如,k可以是1、2、4或更多。在一个实施例中,k=1,2,3,4,5,6,7,8或更多。显示的是份额321、322和323。
份额可以被选择为使得在一个实施例中,该求和使用XOR函数进行求和,但是其他选择也是可能的。例如,所述求和可以使用算术加法模2k。
更一般地,可以定义将份额(wj)映射到变量(w)的组合函数(d(w1,…,wn-1)=w)。组合函数可以是上面提到的XOR或算术加法。组合函数具有这样的性质,即通过固定其他份额(w1,…,wk-1,wk+1,…,wn-1)的值获得的从任何单个份额(wk)到变量(w)的映射(w1,…,wk-1,wk +1,…,wn-1)是双射。即,函数是双射;元素表示固定值。该属性确保没有任何份额子集可以提供关于w的信息。存在许多这样的组合函数。例如,d可以是份额的任何线性组合,其中系数αj是奇数;使用算术加法模2k进行求和。组合函数可以是多项式。
图3进一步示出了多个状态sj。显示的是状态331、332和333。份额321-323的数量与状态331-333的数量相同。状态是将冗余引入变量编码的冗余数据。每个份额被布置一个状态并且被编码成编码份额:xj=Encj(wj,sj)。在一个实施例中,编码Encj是不同的。例如,可以在编译时随机选择编码Encj。并非严格要求编码是双射的,只要它相对于wj是可逆的,也就是说,知道Encj和xj可以恢复份额wj。尽管如此,在实施例中编码Encj是双射的。后者是实现过程中更实际的选择,并简化了分析。一旦决定了哪些变量将使用哪种编码在哪个点进行编码,表格可以简单地适用于考虑编码。状态的使用是任选的,但由于状态允许对同一数据值进行多个表示,所以状态会增加模糊处理,因此是首选使用状态。
图3示出了份额321和状态331通过编码361被编码成编码份额341。同样,份额322和状态332通过编码362被编码成编码份额342;份额323和状态333通过编码363被编码成编码份额343。我们将编码在一起以表示变量w的状态和份额称为与该变量相对应。
多个编码份额是结果,其中显示了编码份额341、342和343。在一个实施例中,变量w在加密设备200中被表示为多个编码份额。加码设备中不应该出现未编码的份额321-323和状态331-333。
状态可以简单地初始随机选择,随后通过更新变量w的相同过程进行更新。在一个实施例中,对应于相同变量w的多个状态sj被选择使得存在从输入消息M 310到多个状态的单射352,表示为Σ(Σ(M)=(s0,…,sn-1)。当且仅当M=M'时,单射具有Σ(M)=Σ(M′)的性质。特别地,Σ可以选择为双射,因为这种更严格的条件隐含了单射性。图3示出了多个状态331-333如何依赖于输入消息300,M和单射Σ,352。例如,输入消息300可以是输入消息610。输入消息300例如可以是从外部设备200接收的输入消息,例如给块加密的输入。当状态编码输入消息M,300时,不同的M将导致不同的编码变量:x0,…,xn-1。
在针对大多数或所有变量的加密函数的实现中,映射352不需要是明确的。例如,一旦编码变量与输入消息具有所需的单射关系,对编码变量的份额部分wj执行的运算可以同时对保持单射关系的状态部分执行冗余运算。由于计算是在编码域中完成的,因此状态上的计算不能与份额上的计算分离。
例如,考虑第一变量和第二变量w1和w2都如上所示被编码为多个编码份额和假设w1和w2上的运算g计算第三变量w3=g(w1,w2)。变量w3表示为编码份额在一个实施例中,编码在中的状态等于编码在和中的状态。在这种情况下,如果输入与输入消息M具有所需的关系,那么输出w3也是如此。通过这种方式,可以在整个计算过程中保留所需的关系。该运算可以被实现为用于执行该运算的表格网络,该表格网络又可以是实施加密函数的表格网络的子网络。
初始变量,例如从输入消息直接获得的变量,可以由加密装置200以正确的编码形式接收。可选地,设备200可以包括被布置为对输入进行编码的编码设备。
对变量w与状态和/或多个份额的编码使得在执行加密函数期间不太可能在编码值上发生碰撞。因此,在这一点上不可能发生碰撞攻击。
在实际的实施例中,除了通过编码份额的表示之外,不会有其他表示。此外,如果更多的可感变量以这种方式受到保护,则保护更有效。优选地,依赖于密钥和输入消息的所有变量都受到保护。为了防止碰撞攻击,在执行密钥运算之前,不要求输入消息被表示为编码份额。然而,即使在密钥被使用之前,通过使输入消息被编码为多组编码份额来简化,确保单射存在并被保持。
表格网络对于白箱加密本身是已知的。例如参见Chow等人的“White-boxcryptography and a AES implementation”。图4a中示出了表格网络420的示例,在这种情况下是用于计算叉乘的表格网络。
表格网络接收一个或多个输入,例如输入410,并产生一个或多个输出,例如输出430。在表格网络420中示出了多个查找表格;如表格421-424所示。表格直接从输入410和/或其他表格的输出中获取输入。一个表格可能需要一个输入、两个输入或两个以上的输入。
由Carlet等人在“Higher-Order Masking Schemes for S-boxes”中提供了将未编码变量w上的计算转换成编码为多个份额的变量w上的计算的便利方式。该论文不讨论碰撞攻击或用状态编码。该论文被进一步称为Carlet。Carlet不会阻止编码为多个份额的变量发生碰撞。
下面解释如何将变量w上的计算(例如计算函数值D(w))转换成以多个份额编码的变量w上的计算。函数D可以是数据函数,但是相同的方法可以用于加密函数的任何内部计算步骤,例如加法、乘法等。我们将展示如何构建计算份额上的D(w)的表格网络。首先,我们将在这里考虑D具有单个输入w的情况。多个状态可以类似地处理。我们也将首先忽略状态,稍后我们将展示如何添加状态。
如果w由n份w0,…,wn-1表示,那么我们也希望用n个份额来表示D(w),以便为结果变量提供与w相同的保护。这是可能的,对于任何函数,通过使用以下事实。
为了阐述,我们首先假设值D(w)与w一样也是一个k比特数。k比特数可以被认为是有限伽罗瓦域的元素,并且函数D作为上的函数。有限域中的所有函数都是多项式,因此,对于上的任意函数D,存在系数使得对于任何w
数据函数S(x)也可以表示为多元多项式:
其中{Pν}ν代表表示上的评估函数Sν的多项式集合而{Qν}ν,即选择多项式,代表表示上的{δi}i的多项式集合。
多项式D和多项式Qυ和Pυ,可以表示为如下份额上的计算。假设份额由X=(x0,…,xn-1)和Y=(y0,…,yn-1)给出。简单起见,我们将假设份额的总和等于未编码变量。X和Y的总和可以用份额xi+yi进行编码。标量倍数αX可以用份额αxi编码。最后,设Z是X和Y的乘积。针对0≤i<j≤n-1,定义值ri,j和rj,i。
针对ri,j取的随机元素,例如通过选择随机的k比特串。在一个实施例中,通过在编译时间从输入消息M到选择随机化函数Ri,j并设置ri,j=Ri,j(M)来获得针对ri,j的随机数。后者具有在执行时避免依赖随机数生成器的优点。只有在构建表格网络时,称为编译时间,才是需要随机性的来源。注意到Carlet在执行期间依赖于随机性。这会在执行期间打开Carlet以处理随机数源。具体来说,可以拦截随机数发生器并用常数值替换。
考虑rj,i=(xiyj+ri,j)+xjyi,这里的计算顺序很重要,并用方括号表示。现在对于0≤i≤n-1,取
叉乘表格子网络可计算rj,i。
在一个实施例中,用于计算ri,j的随机化函数Ri,j被实现为以输入消息作为输入的表格网络。这避免了在执行期间需要随机数源。
份额zi现在表示X和Y的乘积。使用加法、标量乘法和乘法运算,S的多项式表示可以表示为对份额的运算。对份额的运算又会是以查找表格的形式实现,将一个或多个份额和/或随机数作为输入。
图4a中示出了计算rj,i的可能表格网络420。表格421-424合作计算rj,i。在附图标记410处示出了表格网络420的输入。在附图标记430处示出了表格网络420的输出。
例如,表格421和422可以被布置为使它们的输入相乘,而表格423和424可以被布置为使它们的输入相加。请注意,每个表格可能使用不同的编码。
图4b示意性地示出了乘法表格网络440的实施例的示例。乘法表格网络440可以使用上面给出的公式来构造,以计算Z=(z0,…,zn-1)。乘法表格网络440被布置为将在计算设备200中(例如在其数据存储中)表示为第一多个编码份额(xj)的变量X乘以表示为第一多个编码份额(yj)的第二变量Y。乘法表格网络作用于第一和第二多个编码份额(xj,yj)并获得表示第一和第二变量的乘积的第三多个编码份额(zj)。请注意,在这里,上标指数是指份额而非幂。乘法表格网络440可以是用于计算加密函数的表格网络的一部分。
乘法表格网络440可以包括叉乘表格子网络以计算叉乘xiyj。在一个实施方案中,成对地计算叉乘xiyj+xjyi。例如,乘法表格网络440可以包括表格网络420。乘法表网络440还可以包括表格网络450以计算一个或多个随机化函数Ri,j。在图4b中,表格网络450取决于输入消息110。已用虚线指示了这种依赖性,以指示该依赖性可通过例如存储在数据存储中的中间变量获得。表格网络440可以获得其输入并将其输出存储在计算设备200的数据存储中。
作用于份额上的表格可能会转换为作用于编码份额上的表格。定义s和t,使得对于编码份额x,我们有Enc(t(x),s(x))=x。函数s和t分别从x获得状态和份额。设定t(x)的表格T。然后Enc′(T(t(x)),P(s(x)))为x定义一个表格,其实现了针对x的份额部分的表格T和针对该状态部分的函数P。函数P是冗余的,并且可以在创建表格网络时,例如在编译时间进行选择。例如,P可能是身份函数。类似的构造对于多个输入是可能的。这里使用的编码Enc也称为输入编码。编码Enc'被称为输出编码。只要用于表格输出的输出编码与使用所述输出作为输入的下一个表格的输入编码相同,则表格的输入和输出编码不需要相同。
图2e示出了计算设备200的一个实施例,例如,如关于图2a所描述的那样,该计算设备200包括数据储存器242和表格储存器244。数据储存器242被布置为存储计算设备200所作用的变量。特别地,数据储存器242可以存储编码变量,例如多个编码份额。表格储存器242被布置为存储一个或多个表格网络以实现选择机构220和评估机构230。数据储存器242和表格储存器244可以是电子存储器。它们可能是同一存储器的两部分。表格储存器244可以是非易失性存储器。数据储存器242可以是易失性存储器。
计算设备200可以包括控制单元243,该控制单元243被配置为通过将表格储存器244的多个查找表格应用于数据储存器242中表示的变量来将数据函数(例如作为块加密的一部分)应用于例如输入消息。例如,表格储存器244可以进一步包括指示将表格应用于哪些变量的顺序的指令。
计算设备200可以包括网络接口250。网络接口250可以被布置为通过计算机网络接收编码数据。例如,计算设备200可以接收加密数据,例如加密内容,其由加密设备200进行解密。通过网络接口250接收的输入可以被表示为编码份额,例如如上所述的。这是不必要的,因为编码可以在设备200内完成。
典型地,设备200包括执行存储在设备200中的适当软件的微处理器(未单独示出);例如软件可能已被下载和/或存储在相应的存储器中,例如,诸如RAM的易失性存储器或诸如闪存的非易失性存储器(未单独示出)。可选地,设备200可以全部或部分地实现为可编程逻辑,例如现场可编程门阵列(FPGA)。设备200可全部或部分地实现为所谓的专用集成电路(ASIC),即为其特定用途定制的集成电路(IC)。例如,电路可以实现为CMOS,例如使用诸如Verilog、VHDL等的硬件描述语言。
在一个实施例中,设备200包括选择电路、评估电路和组合电路。设备200可以包括附加电路,例如用于多组选择变量的选择电路等。电路实现了在此描述的相应单元和机构。该电路可以是处理器电路和存储电路,处理器电路执行存储电路中以电子方式表示的指令。这些电路也可以是FPGA、ASIC等。
下面讨论在上述划分成选择和评估比特之后对DES S盒的代码大小的影响。与Goubin等人的“Higher-Order Masking Schemes for S-Boxes”中公开的方法(进一步称为Goubin)和Coron等人的“Fast evaluation of polynomials over binary finite fieldsand application to side-channel countermeasures”中公开的方法(进一步称为Coron)进行比较。
在表1中,我们列出了三种方法,即使用上的来自Goubin的直接割圆术、和上的来自Coron的CRV方法以及使用2个选择位在上的根据实施例的方案。这里k代表用于表示变量的份额数量。
乘法 | 加法 | 总表格查找 | |
Goubin | 11 | 62 | 11k2+11k(k-1)+62k |
Coron | 4 | 92 | 4k2+4k(k-1)+92k |
实施例 | 8 | 75 | 8k2+8k(k-1)+75k |
表1:计数三种方法中的表格查找。
在表2中,用于三种方法的字节数在应用于DES时计数,其中k=16,每个n比特份额伴随着4比特状态,这意味着上的每个变量由16个比特大小n+4的份额表示。因此,表格中用于加法和乘法的大小具有22(n+4)个(n+4)比特的项。我们给出了两种DES实现的结果,其中一种使用了基于每个表格查找的不同编码的不同表格,而另一种重复使用表格和编码。在这里,我们针对Goubin和Coron的方法有n=6,但根据将6比特输入分成两个选择比特和四个评估比特的实施例n=4。
表2:计数当k=16时存储用于份额上白箱实现的表格所需的字节数。
注意,与其他方案相比,根据实施例的方案需要少于10%的存储器。底行的结果来自上面的讨论;下面详细介绍一般理论如何应用于DES。
数据加密标准具有8个S盒(S1,...,S8),将6比特输入映射到4比特输出。下面我们介绍如何通过创建上的算术电路来评估每个DES S盒。这个算术电路然后可以通过如上所述的份额算术来评估。请注意,v的大小为6-4=2比特。所以它可以用中的单个元素表示,表示为[v]。在[v]的上的不同值的数量是22=4。填充后这些是
[0]=(0,0,0,0)
[l]=(0,0,0,1)
[2]=(0,0,1,0)
[3]=(0,0,1,1)
在上的4个选择多项式Qi可以如下计算。通过如下方式计算在上的Q0、Q1、Q2、Q3
Q0=拉格朗日插值({[0],[1]},{[1],[0]},{[2],[0]},{[3],[0]})
Q1=拉格朗日插值({0],[0]},{[1],[1]},{[2],[0]},{[3],[0]})
Q2=拉格朗日插值({[0],[0]},{[1],[0]},{[2],[1]},{[3],[0]})
Q3=拉格朗日插值({[0],[0]},{[1],[0]},{[2],[0]},{[3],[1]})
然后,对于每个S盒Si,选择第一个和最后一个输入比特作为选择变量来定义v,即输入x=x0,...x5定义ν=x0,x5。然后,我们如下计算评估多项式
为ν∈{0,1,2,3}做
对于做
Z=Z∪{x,(Si)ν(x)}
结束
结束
返回
最后,为了安全地计算Si(x),评估下式:
其中每个多项式在份额上被评估。这里l={l1,...,lk}表示x0,x5,而r={r1,...,rk}表示x1,x2,x3,x4,并且s={s1,...,sk}表示结果Si(x)。
该方案需要在上进行4次乘法以使用割圆术计算所需的所有r的幂,并且进行1次乘法以计算评估3次多项式Q0,Q1,Q2,Q3所需的l的幂。然后,需要4次乘法以计算乘积总之,这个方案需要在上进行9次乘法。多项式每次需要15个加法而多项式Qj每次需要3个加法。所以我们的方案需要4*15+4*3+3=75个加法。
图5a示意性地示出了计算方法500的流程图。计算方法500被布置为评估将若干(n)输入变量映射到若干(m)输出变量的数据函数(S),该数据函数在所述计算方法中被布置为包括选择函数和评估函数的计算,输入变量被划分为一个或多个选择变量和一个或多个评估变量,对于选择变量的每种特定组合值(v),定义了相应的选择函数(Qv)和评估函数(Pv)。计算方法500包括:
选择部分510,其包括:
接收所述一个或多个选择变量,并且
针对所接收的选择变量评估选择函数;选择函数接收所述选择变量作为输入,并且所述选择函数的输出指示在所述选择函数中所接收的选择变量是否等于与所述选择函数相对应的特定组合值,
评估部分520,其包括:
接收所述一个或多个评估变量,并且
针对所接收的评估变量评估评估函数;评估函数接收所述评估变量作为输入,并且所述评估函数的输出表示已将所述评估变量和与所述评估函数相对应的所述选择变量的特定组合值的联合作为输入的所述数据函数的输出,以及
组合部分530,其被布置为将选择机构和评估机构的输出组合成针对所述输入变量的所述数据函数的输出。
计算方法550的另一个实施例包括:
接收560输入变量,优选地所述输入变量被编码为多个编码份额,
针对选择变量的每个组合值评估570选择多项式,其中所接收的输入变量的实际接收选择变量作为输入,
针对选择变量的每个组合值评估580评估多项式,其中所接收的输入变量的实际接收评估变量作为输入,
计算590选择和评估多项式的组合,例如通过将选择多项式的结果与相应的评估多项式的结果相乘并且对乘积的结果相加。
评估570和580以及计算590可以由编码变量上运算的表格网络执行。
对于本领域技术人员来说显而易见的是,执行方法500和550的许多不同方式是可能的。例如,可以改变步骤的顺序或者可以并行执行一些步骤。而且,在步骤之间可以插入其他方法步骤。插入的步骤可以表示本文所述的方法的细化,或者可以与该方法无关。例如,步骤570和580可以至少部分地并行执行。而且,在下一步开始之前,给定步骤可能还未完成。
根据本发明的方法可以使用软件来执行,该软件包括用于使处理器系统执行方法500和/或550的指令。软件可能只包含系统特定子实体采取的那些步骤。该软件可以存储在合适的存储介质中,例如硬盘、软盘、存储器、光盘等。软件可以作为信号沿着有线或无线发送,或使用数据网络(例如因特网)发送。该软件可供下载和/或在服务器上远程使用。根据本发明的方法可以使用被布置为配置可编程逻辑的比特流(例如,现场可编程门阵列(FPGA))来执行,以执行该方法。
应该理解,本发明还扩展到适用于将本发明付诸实践的计算机程序,尤其是载体上或载体中的计算机程序。该程序可以采用源代码、目标代码、代码中间源和目标代码(例如部分编译的形式)的形式,或者以适用于实现根据本发明的方法的任何其他形式。涉及计算机程序产品的实施例包括对应于所阐述方法中的至少一个的每个处理步骤的计算机可执行指令。这些指令可以细分为子程序和/或存储在一个或多个可以静态或动态链接的文件中。涉及计算机程序产品的另一实施例包括对应于所阐述系统和/或产品中的至少一个的每个装置的计算机可执行指令。
图7a示出了根据一个实施例的具有包括计算机程序1020的可写部分1010的计算机可读介质1000,计算机程序1020包括用于使处理器系统执行计算方法的指令。计算机程序1020可以在计算机可读介质1000上实现为物理标记或通过计算机可读介质1000的磁化来实现。然而,也可以想到任何其它合适的实施例。此外,将认识到,虽然计算机可读介质1000在这里被示出为光盘,但是计算机可读介质1000可以是任何合适的计算机可读介质,例如硬盘、固态存储器、闪存等等,并且可能是不可记录的或可记录的。计算机程序1020包括用于使处理器系统执行所述计算方法的指令。
图7b示出了根据实施例的处理器系统1140的示意表示。所述处理器系统包括一个或多个集成电路1110。一个或多个集成电路1110的架构在图7b中示意性地示出。电路1110包括处理单元1120,例如CPU,用于运行计算机程序组件以执行根据实施例的方法和/或实现其模块或单元。电路1110包括用于存储编程代码、数据等的存储器1122。存储器1122的一部分可以是只读的。电路1110可以包括通信元件1126,例如天线、连接器或两者等等。电路1110可以包括用于执行在该方法中定义的部分或全部处理的专用集成电路1124。处理器1120、存储器1122、专用IC 1124和通信元件1126可以经由互连1130(比如总线)彼此连接。处理器系统1110可以被布置为分别使用天线和/或连接器进行接触式和/或非接触式通信。
应该注意的是,上述实施例说明而非限制本发明,并且本领域技术人员将能够设计出许多替代实施例。
在权利要求书中,括号内的任何附图标记不应被解释为限制权利要求。动词“包括”及其变形的使用不排除权利要求中陈述的元件或步骤以外的元件或步骤的存在。在元件之前的冠词“一”或“一个”不排除多个这种元件的存在。本发明可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个可以由同一件硬件来实现。在相互不同的从属权利要求中记载了某些手段这一事实并不表示这些手段的组合不能被有利地使用。
在权利要求书中,括号内的附图标记是指实施例的附图中的附图标记或实施例的公式,因此增加了权利要求的可理解性。这些参考文献不应被解释为限制权利要求。
Claims (15)
1.一种计算设备(200),其被布置为评估将若干(n)输入变量映射到若干(m)输出变量的数据函数(S),所述数据函数在所述计算设备中被布置为包括选择函数和评估函数的计算,所述输入变量被划分为一个或多个选择变量和一个或多个评估变量,对于所述选择变量(υ)的每种特定组合值,定义了相应的选择函数(Qυ)和评估函数(Pυ),
所述计算设备包括:
选择机构(220),其被布置为接收所述一个或多个选择变量,并针对所接收的选择变量评估所述选择函数,选择函数接收所述选择变量作为输入,并且所述选择函数的输出指示在所述选择函数中所接收的所述选择变量是否等于与所述选择函数相对应的所述特定组合值;
评估机构(210),其被布置为接收所述一个或多个评估变量,并针对所接收的评估变量评估所述评估函数,评估函数接收所述评估变量作为输入,并且所述评估函数的输出表示已将所述评估变量和与所述评估函数相对应的所述选择变量的所述特定组合值的联合作为输入的所述数据函数的输出;以及
组合机构(230),其被布置为将所述选择机构的输出和所述评估机构的输出组合成针对所述输入变量的所述数据函数的输出,所述组合机构对与相同的特定组合值相对应的选择函数(Qυ)与评估函数(Pυ)的乘积进行求和(ΣυQυPυ),所述求和是在所述选择变量(υ)的所有组合值上进行的。
2.一种计算设备,其中,所述选择机构包括实现所述选择函数的多个选择单元,和/或其中,所述评估机构包括实现所述评估函数的多个评估单元。
3.如前述权利要求中任一项所述的计算设备,其中,所述选择变量被进一步划分为多组选择变量,选择函数在所述计算设备中被布置为多个子选择函数的乘积,每个子选择函数对应于所述多组选择变量中的一组,子选择函数接收该组中的选择变量作为输入,并且所述子选择函数的输出指示所接收的选择变量是否等于与所述选择函数相对应的该组中的所述特定组合值。
4.如前述权利要求中任一项所述的计算设备,其中,所述输入变量和/或输出变量是比特。
5.如前述权利要求中任一项所述的计算设备,其被布置为块加密,其中,所述数据函数是所述块加密的s盒。
6.如权利要求5所述的计算设备,其中,所述块加密是DES或三重DES块加密,并且其中,所述s盒是所述DES s盒中的一个。
7.如前述权利要求中任一项所述的计算设备,其中,输入变量的数量(n)大于输出变量的数量(m),评估变量的数量等于输出变量的数量。
8.如前述权利要求中任一项所述的计算设备,其中,对所述输入变量中的一个或多个进行编码。
9.如权利要求8所述的计算设备,其中,经编码的输入变量(xi)被编码为多个份额(wi),具体地,其中,经编码的输入变量(xi)被编码为多个编码份额(wi),更具体地,其中,所述多个份额(wi)与多个状态(si)被编码在一起。
10.如前述权利要求中任一项所述的计算设备,特别是如权利要求9所述的计算设备,其中,选择函数被实现为选择多项式,和/或,评估函数被实现为评估多项式。
11.如前述权利要求中任一项所述的计算设备,其中,所述选择函数被用于多个数据函数。
12.如前述权利要求中任一项所述的计算设备,其中,所述选择机构、评估机构和/或所述组合机构被实现为表格网络。
13.一种计算方法,其被布置为评估将若干(n)输入变量映射到若干(m)输出变量的数据函数(S),所述数据函数在所述计算方法中被布置为包括选择函数和评估函数的计算,所述输入变量被划分为一个或多个选择变量和一个或多个评估变量,对于所述选择变量(υ)的每种特定组合值,定义了相应的选择函数(Qυ)和评估函数(Pυ),
所述计算方法包括:
选择部分,其被布置为接收所述一个或多个选择变量,并针对所接收的选择变量评估所述选择函数,选择函数接收所述选择变量作为输入,并且所述选择函数的输出指示在所述选择函数中所接收的所述选择变量是否等于与所述选择函数相对应的所述特定组合值,
评估部分,其被布置为接收所述一个或多个评估变量,并针对所接收的评估变量评估所述评估函数,评估函数接收所述评估变量作为输入,并且所述评估函数的输出表示已将所述评估变量和与所述评估函数相对应的所述选择变量的所述特定组合值的联合作为输入的所述数据函数的输出,以及
组合部分,其被布置为将所述选择机构的输出和所述评估机构的输出组合成针对所述输入变量的所述数据函数的输出,所述组合部分包括对与相同的特定组合值相对应的选择函数(Qυ)与评估函数(Pυ)的乘积进行求和(ΣυQυPυ),所述求和是在所述选择变量(υ)的所有组合值上进行的。
14.一种包括计算机程序指令的计算机程序(1020),所述计算机程序指令被布置为当所述计算机程序在计算机上运行时执行权利要求13所述的方法。
15.一种计算机可读介质(1000),包括如权利要求14所述的计算机程序(1020)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15200035 | 2015-12-15 | ||
EP15200035.2 | 2015-12-15 | ||
PCT/EP2016/081062 WO2017102879A1 (en) | 2015-12-15 | 2016-12-14 | A computation device and method |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108370311A true CN108370311A (zh) | 2018-08-03 |
Family
ID=55024786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680073908.2A Pending CN108370311A (zh) | 2015-12-15 | 2016-12-14 | 计算设备和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11070358B2 (zh) |
EP (1) | EP3391583B1 (zh) |
JP (1) | JP6890589B2 (zh) |
CN (1) | CN108370311A (zh) |
RU (1) | RU2708439C1 (zh) |
WO (1) | WO2017102879A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168085A (zh) * | 2021-12-16 | 2022-03-11 | 潍柴动力股份有限公司 | 变量处理方法、装置、设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3484093A1 (en) * | 2017-11-10 | 2019-05-15 | Koninklijke Philips N.V. | A computation device and method |
Citations (5)
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 |
CN102598017A (zh) * | 2009-11-13 | 2012-07-18 | 埃德图加拿大公司 | 保护Java字节码代码免受恶意运行环境中的静态和动态攻击的系统和方法 |
EP2940919A1 (en) * | 2014-04-28 | 2015-11-04 | Nxp B.V. | Realizing authorization via incorrect functional behavior of a white-box implementation |
CN105024803A (zh) * | 2014-04-28 | 2015-11-04 | 恩智浦有限公司 | 白箱实现中的行为指纹 |
CN105024992A (zh) * | 2014-04-28 | 2015-11-04 | 恩智浦有限公司 | 在单个白箱实现中实现使用相关安全性设置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5442306A (en) | 1994-09-09 | 1995-08-15 | At&T Corp. | Field programmable gate array using look-up tables, multiplexers and decoders |
US7346161B2 (en) | 2000-01-26 | 2008-03-18 | Fujitsu Limited | Method and apparatus for designing cipher logic, and a computer product |
CA2449662C (en) | 2000-03-09 | 2004-08-17 | Mitsuru Matsui | Block encryption device using auxiliary conversion |
AU2001269086A1 (en) | 2000-07-04 | 2002-01-14 | Koninklijke Philips Electronics N.V. | Substitution-box for symmetric-key ciphers |
JP4884976B2 (ja) | 2003-12-11 | 2012-02-29 | イルデト・コーポレート・ビー・ヴイ | 各暗号化ラウンドのコア暗号化関数を隠蔽するために置換を用いたブロック暗号化システム |
KR100610367B1 (ko) | 2004-06-19 | 2006-08-10 | 삼성전자주식회사 | 정보 누출 공격을 방지하기 위한 갈로아 필드 상의 곱셈방법 및 장치, 역변환 장치 그리고 aes 바이트 치환연산장치 |
US8091139B2 (en) | 2007-11-01 | 2012-01-03 | Discretix Technologies Ltd. | System and method for masking arbitrary Boolean functions |
EP2936727A1 (en) * | 2012-12-21 | 2015-10-28 | Koninklijke Philips N.V. | Computing device comprising a table network |
JP6046870B1 (ja) * | 2013-12-05 | 2016-12-21 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | テーブルネットワークの繰り返し適用のための計算装置 |
NL2015599B1 (en) | 2015-10-12 | 2017-05-02 | Koninklijke Philips Nv | A cryptographic device and an encoding device. |
-
2016
- 2016-12-14 CN CN201680073908.2A patent/CN108370311A/zh active Pending
- 2016-12-14 EP EP16809109.8A patent/EP3391583B1/en active Active
- 2016-12-14 WO PCT/EP2016/081062 patent/WO2017102879A1/en active Application Filing
- 2016-12-14 RU RU2018125885A patent/RU2708439C1/ru active
- 2016-12-14 US US16/061,541 patent/US11070358B2/en active Active
- 2016-12-14 JP JP2018530863A patent/JP6890589B2/ja active Active
Patent Citations (5)
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 |
CN102598017A (zh) * | 2009-11-13 | 2012-07-18 | 埃德图加拿大公司 | 保护Java字节码代码免受恶意运行环境中的静态和动态攻击的系统和方法 |
EP2940919A1 (en) * | 2014-04-28 | 2015-11-04 | Nxp B.V. | Realizing authorization via incorrect functional behavior of a white-box implementation |
CN105024803A (zh) * | 2014-04-28 | 2015-11-04 | 恩智浦有限公司 | 白箱实现中的行为指纹 |
CN105024992A (zh) * | 2014-04-28 | 2015-11-04 | 恩智浦有限公司 | 在单个白箱实现中实现使用相关安全性设置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168085A (zh) * | 2021-12-16 | 2022-03-11 | 潍柴动力股份有限公司 | 变量处理方法、装置、设备及存储介质 |
CN114168085B (zh) * | 2021-12-16 | 2024-02-20 | 潍柴动力股份有限公司 | 变量处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11070358B2 (en) | 2021-07-20 |
EP3391583A1 (en) | 2018-10-24 |
WO2017102879A1 (en) | 2017-06-22 |
JP2019504343A (ja) | 2019-02-14 |
US20200266973A1 (en) | 2020-08-20 |
JP6890589B2 (ja) | 2021-06-18 |
EP3391583B1 (en) | 2019-07-24 |
RU2708439C1 (ru) | 2019-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11362802B2 (en) | Cryptographic device arranged to compute a target block cipher | |
CN102638341B (zh) | 用于计算标量乘法的结果的设备和方法 | |
CN107104783A (zh) | 使电路免受侧信道分析的方法 | |
CN107547189A (zh) | 免受侧信道分析的保护方法和设备 | |
CN109661792B (zh) | 计算分组密码的设备和方法 | |
CN108141352A (zh) | 密码设备和编码设备 | |
CN106487499B (zh) | Rijndael算法的保护 | |
CN101925875A (zh) | 用于非对称加密的对策方法和设备 | |
US20200097256A1 (en) | A calculation device for encoded addition | |
Heinz et al. | Combined fault and DPA protection for lattice-based cryptography | |
CN101911009B (zh) | 用于以签名方案进行非对称加密的对策方法和设备 | |
CN108242994A (zh) | 密钥的处理方法和装置 | |
CN107896142B (zh) | 一种执行模幂运算的方法及装置、计算机可读存储介质 | |
EP3891925B1 (en) | A computation device using shared shares | |
CN108370311A (zh) | 计算设备和方法 | |
CN105765896A (zh) | 用于表格网络的迭代应用的计算设备 | |
KR101997005B1 (ko) | 전력 분석을 통한 도청에 대항하여 전자 회로를 보호하는 방법 및 이를 이용한 전자 회로 | |
CN107534550A (zh) | 用于计算块密码的密码设备 | |
Oder | Efficient and side-channel resistant implementation of lattice-based cryptography | |
CN111480140B (zh) | 计算设备和方法 | |
CN113475034A (zh) | 电路编译设备和电路评估设备 | |
CN108475255A (zh) | 计算设备和方法 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180803 |