CN107534550A - 用于计算块密码的密码设备 - Google Patents

用于计算块密码的密码设备 Download PDF

Info

Publication number
CN107534550A
CN107534550A CN201680025038.1A CN201680025038A CN107534550A CN 107534550 A CN107534550 A CN 107534550A CN 201680025038 A CN201680025038 A CN 201680025038A CN 107534550 A CN107534550 A CN 107534550A
Authority
CN
China
Prior art keywords
coding
input
value
state
data
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
CN201680025038.1A
Other languages
English (en)
Other versions
CN107534550B (zh
Inventor
R.里伊特曼
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN107534550A publication Critical patent/CN107534550A/zh
Application granted granted Critical
Publication of CN107534550B publication Critical patent/CN107534550B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • 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/0625Block 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
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

一种用于对块密码输入(105)计算块密码(500)并产生块密码输出(106)的密码设备(100),块密码计算对编码值(210)操作,密码设备包括用于应用实现块密码的多轮密码处理的最后一轮(118)的轮函数单元(140;300)、用于对编码输出数据(132,152)解码的第一输出单元(160)和第二输出单元(180)。

Description

用于计算块密码的密码设备
发明领域
本发明涉及用于计算块密码的密码设备、用于计算块密码的密码方法、计算机系统和计算机可读介质。
背景技术
在S. Chow等人的论文“A White-Box DES Implementation for DRMApplications”中,提出数据加密标准(DES)的白盒实现(在下面被称为“Chow”并通过引用被并入本文)。白盒实现是设计成抵抗在白盒上下文中的攻击的密码实现。在白盒上下文中,攻击者具有对软件实现和执行的完全可见性。然而,即便如此,白盒实现旨在防止从程序提取密钥。
Chow形成完全由表查找操作组成的DES的实现。通过几个中间方法,正常密码转换成以这种形式的实现。输入和输出编码用于保护所有这些表。
发明内容
发明人发现,块密码的基于表的实现可能仍然易受一些攻击。发明人认识到,即使可能不从观察在白盒实现中的变量直接导出密钥,对变量的访问可用于执行以前只从物理攻击的领域已知的攻击。
例如,在Biham等人的论文“Differential Fault Analysis of Secret KeyCryptosystems”中,通过改变电源电压来在智能卡中引入短暂的故障,使DES计算产生不正确的结果。通过分析导致的错误,得到关于密钥的信息。
发明人有下面的见识:这样的物理故障攻击可能适合于攻击白盒实现。即使不可能从对攻击者可见的变量的分析得到秘密信息,攻击者可能仍然能够通过修改编码变量来导出秘密信息以试图仿真物理攻击。
在实验中,发明人确实能够通过有意修改变量来发现在Chow中所述的DES白盒实现中使用的密钥。变量的有意修改充当暂时故障。发明人发现,增加复杂性的对策能够渐增地阻止对白盒DES实现的故障攻击或完全彻底地避免它们。
提出了一种用于计算块密码的密码设备,其具有在轮函数之前和在对编码值解码的输出单元之前的防篡改移位函数。微分故障攻击被这些功能阻止,因为它们限制了可被做出的修改以及从因而产生的错误学到的东西。本发明由独立权利要求限定;从属权利要求限定有利的实施例。
密码设备是电子设备,且可以是移动电子设备,例如移动电话、机顶盒、计算机等。可在广泛范围的实际应用中应用本文所述的密码设备。这样的实际应用包括银行业务应用、内容保护系统、通信系统等。
根据本发明的方法可在计算机上作为计算机实现的方法或在专用硬件中或在这两者的组合中被实现。根据本发明的方法的可执行代码可存储在计算机程序产品上。计算机程序产品的示例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括存储在计算机可读介质上的非临时程序代码装置,以用于在所述程序产品在计算机上被执行时执行根据本发明的方法。
在优选实施例中,计算机程序包括适合于在计算机程序在计算机上运行时执行根据本发明的方法的所有步骤的计算机程序代码装置。优选地,计算机程序体现在计算机可读介质上。
本发明的另一方面提供了一种制造可用于下载的计算机程序的方法。当计算机程序被上传到例如苹果的App Store、谷歌的Play Store或微软的Windows Store时以及当计算机程序可用于从这样的商店下载时,使用这个方面。
附图说明
将参考附图仅作为示例来描述本发明的另外的细节、方面和实施例。附图中的元件为了简单和清楚而图示出,且并不一定按比例绘制。在附图中,与已经描述的元件相应的元件可具有相同的参考数字。在附图中,
图1示意性示出密码设备的实施例的示例,
图2.1示意性示出编码值的实施例的示例,
图2.2示意性示出编码的实施例的示例,
图2.3示意性示出第一编码输入的实施例的示例,
图2.4示意性示出第二编码输入的实施例的示例,
图2.5示意性示出编码输出的实施例的示例,
图2.6示意性示出防篡改移位函数的实施例的示例,
图2.7示意性示出编码子值序列的实施例的示例,
图2.8示意性示出防篡改移位子函数的实施例的示例,
图3示意性示出轮函数的实施例的示例,
图4示意性示出第一输出单元的实施例的示例,
图5示意性示出第二输出单元的实施例的示例,
图6.1示意性示出DES块密码的实施例的示例,
图6.2示意性示出DES轮函数的实施例的示例,
图7示意性示出用于计算块密码的方法的实施例的示例,
图8a示意性示出根据实施例的具有包括计算机程序的可写部分的计算机可读介质,
图8b示意性示出根据实施例的处理器系统的表示。
在附图和详细描述中,使用参考数字、首字母缩写词和公式。下面概述与图1-5有关的那些项。
数字 首字母缩写词 公式 概述
100 密码设备
105 BCIP 块密码输入
106 BCOP 块密码输出
108 ENC BCIP 块密码输入的编码
112, 114, 116 BCR.1, BRC.n-2, BRC.n-1 块密码轮
118 最后块密码轮
120 ENC IP1 第一编码输入
122 DTIP1 第一数据输入
124 STIP1 第一状态输入
130 ENC IP2 第二编码输入
132 DTIP2 编码第二数据输入
134 STIP2 第二状态输入
140 RFU 轮函数单元
150 ENC OP 编码输出
152 DTOP 编码输出150的数据值
154 STOP 编码输出150的状态值
160 OU1 第一输出单元
162 BCO1 块密码输出106的第一部分
180 OU2 第二输出单元
182 BCO2 块密码输出106的第二部分
190 ENU 编码器单元
210 ENC V 编码值
210.1, ..., 210.8 ENC.1 V, ..., ENC.8 V 编码子值
211 编码值
212 DT 数据值
212.1, ..., 212.8 DT.1, ..., DT.8 数据子值
214.1, ..., 214.8 ST.1, ..., ST.8 状态子值
213 数据值
214 ST 状态值
215 状态值
220 TRSF 抗篡改移位函数
220.1 TRSF.1 , 抗篡改移位子函数
222 预期状态值
222.1 预期状态子值
224 SFTV 移位值
224.1 SFTV.1 移位值
225 连接
230 ADD 加法器
230.1 ADD.1 加法器
240 SFT ENC V 移位编码值
240.1 SFT ENC.1 V 移位编码子值
242 DT 移位编码值240的数据值
242.1 DT.1 数据子值
244 ST 移位编码值240的状态值
244.1 ST.1 状态子值
300 RFU 轮函数单元
320 ITRSF 内部抗篡改移位函数
322 预期状态值
324 SFTV 移位值
330 ADD 加法器
342 DTFUN 数据轮函数单元
344 STFUN 状态轮函数单元
420 TRSF1 第一输出抗篡改移位函数
422 预期状态值
424 SFTV 移位值
430 ADD 加法器
440 输出解码
500 块密码
520 TRSF2 第二输出抗篡改移位函数
522 预期状态值
524 SFTV 移位值
530 ADD 加法器
540 输出解码。
具体实施方式
虽然本发明以以很多不同形式的实施例的影响,但是在附图中示出并将在本文详细地描述一个或多个具体的实施例,并理解本公开应被考虑为本发明的原理的示范例且并不意欲将本发明限制到所示和所述的具体实施例。
在下文中,为了理解起见,在操作中描述实施例的元件。然而,将显而易见的是,相应的元件布置成执行被描述为由它们执行的功能。
图1示意性示出密码设备100的实施例的示例。参考图2-5示出密码设备100的细节的可能实施例。
密码设备100配置成对块密码输入105计算块密码并产生块密码输出106。块密码具有对输入连续地操作以产生输出的多轮。如下面进一步所解释的,如例如在Feistel型密码中使用的,块密码(对其而言,最后一轮基于轮函数)易受到特定类型的微分故障攻击。通过对相同输出操作密码两次但在最后一轮——所谓的故障——中操纵值,攻击者可通过在有和没有故障的情况下比较输出来得到关于秘密的密码密钥的信息。传统上,通过操纵硬件来执行微分故障攻击,密码在所述硬件上被执行以物理地引起故障;例如,电压尖脉冲可被引入以使硬件在计算中引入故障。发明人认识到,微分故障攻击也可在白盒攻击模型中被执行。在白盒攻击模型中,当执行密码时,假设攻击者有操纵块密码的变量的能力。对于很多应用,白盒攻击模型更接近地类似于保护计算机数据和软件的现实。
易受到微分故障攻击的一类块密码是所谓的Feistel密码。Feistel密码的公知示例是数据加密标准(DES)和三重DES(Triple DES,TDEA),见例如FIPS 46-3。有除了DES以外的很多其它Feistel型块密码。发明人还认识到,使用最后一个块密码轮的轮函数的块密码也可能易受到微分故障攻击,既使块密码的其它轮不使用Feistel结构。
从FIPS 46-3(通过引用被并入本文)复制的图6.1特别图示出DES块密码且通常图示出Feistel块密码。块密码接收块密码输入105’,块密码轮序列作用于所述块密码输入105’上;在DES的情况下,对于三重DES 48而言,存在16轮。第一块密码轮作用于块密码输入105’上,接下来的每轮作用于前面的轮的输出上。在块密码轮中,轮函数f应用于前一轮的输出的部分。在64位的DES的情况下,块密码输入具有数据大小。每个块密码轮修改它的块密码轮输入以产生块密码轮输出。所有块密码轮输入和输出都具有相同的数据大小。注意,DES具有在块密码的开始和末尾处的初始置换和逆初始置换。这些没有密码意义,因为它们不取决于密钥,且可为了本发明的目的而被忽略,它们可分别被视为第一和最后一轮的部分,或它们可以可替换地被示为在正确的块密码轮之前和之后操作的块密码的单独部分。
数据加密标准描述64位块的使用密钥的块编码(keyed block encoding)。密钥正式地是64位,但实际上其只有56位在加密中被使用。加密和解密使用被称为轮的16个迭代。在轮r中,,使用48位轮密钥,其位是56个密钥位的(轮相关)子集。
DES轮函数f给出。在这里,P是32位的置换,以及E是扩展映射,其通过复制一半位来将长度32的位串映射到长度48的位串内。S盒S将长度48的位串映射到按组作用于6位子串上的长度32的位串内:
其中每个S盒将长度6的位串映射到长度4的位串上,以及||表示级联。通过倒退(即从底部到顶部)来执行解密。逆轮函数由下式给出:
因为DES使用只有56位的密钥,所以使得完全密钥空间搜索是可行的;然而,使用特别是在软件实现上的微分故障攻击的密钥恢复将更快几个数量级。三重-DES(Triple-DES)使用三个56位密钥,并通过首先用密钥执行DES加密,之后使用密钥的DES解密,之后使用密钥的DES加密来进行加密。
DES在本文将用作主要示例。实际上基于DES的实施例被广泛地测试,且发现微分故障攻击也在白盒上下文中被强烈地减轻。在DES上的结果立即转移到三重DES,因为三重DES的最后一轮与三重-DES的最后一轮相同。通常,下面解释的系统也适用于应用在最后一轮中的轮函数的块密码,例如至少最后一轮具有Feistel结构的块密码。
返回到图1。密码设备100可包括配置成应用实现块密码的多轮密码处理的处理器。在图1中示出多轮中的四个。三轮被示为块密码轮112、114和116;它们表示第一(轮1)、第三到最后一个(轮n-2)以及第二到最后一个(轮n-1)(倒数第二)块密码轮。最后一个块密码轮118(轮n)被更详细地示为与这里所图示的实施例有关的特征。相应于DES的传统实现的块密码轮在图6.1中被图示为轮112’和118’。在DES的情况下,有n=16轮。
没有在图1中单独地示出设备100的处理器。存在多个选项来实现块密码轮。在实施例中,只在硬件中实现密码设备。微分故障攻击最初被示为在DES的硬件实现上的物理攻击。在硬件中实现密码设备100也提供防范微分故障攻击的DES的硬件实现。
例如,密码设备100可包括多个块密码轮单元,例如对块密码的每轮有一个块密码轮单元;块密码轮单元配置成将密码处理应用于前一块密码单元的输出或块密码输入。例如,可在CMOS中例如使用硬件描述语言(诸如Verilog、VHDL等)来实现块密码轮单元以及密码设备100的其它单元。硬件实现是特别安全的。可替换地,可在软件中实现密码设备。后一选项是更灵活的,例如软件可被下载,这对硬件是不可能的。然而,软件更易受攻击,特别是在白盒模型中。
块密码计算对编码值操作。编码值(210)是数据值, 212连同状态值, 214一起的密码的和可逆的编码。在图2.1中图示出编码。可逆编码应用于一对数据值和状态值。数据值用于计算块密码输入的正确的加密或解密。状态值用于保护数据值免受逆向工程的影响,并保护数据值免于篡改,例如,如在故障攻击中完成的。块密码输出106取决于在编码块密码输入105中的数据值,且不取决于在编码块密码输入105中的状态值。特别是,块密码输出106只取决于在编码块密码输入105中的数据值并取决于在块密码中使用的密码密钥(在存在块密码算法只取编码输入108和密钥的数据值作为输入并产生相同的块密码输出106的意义上)。
注意,密钥可例如通过部分评估被合并到密码设备100中,或例如作为编码密钥被接收。编码密钥将只对使用相同的编码的密码设备100起作用。
图2.1示出包括数据值212和状态值214的编码值210。象征性地,数据值212和状态值214象征性地被图示为框,然而由于密码编码,所以这两个值在操作中不是单独地可识别的。一般,编码值210的位长度是数据和状态值的位长度的和。因为编码是可逆的,所以数据和状态值两者都可从编码值恢复;当然假定所使用的编码是已知的。所使用的编码一般在密码设备100被制造时是已知的,但将不是攻击者已知的。
数据和状态值两者都具有值的范围。一般,对于数据和状态值,给定数据位长度或状态位长度的所有可能的位序列都被包括在相应的范围内。例如,给定数据值可以是比如4位,且状态值也可以是4位。编码值将是8位。数据和状态值范围两者都是16个可能的4位序列。图2.2图示出可在密码设备100中使用的编码。在参考数字213和215下,来自数据范围的数据值和来自状态范围的状态值的所有组合都被列出:在这种情况下,数据和状态值两者都是4位序列。在这种情况下,16乘以16是数据和状态值的256个组合被列出。在213之下列出数据值。在215之下列出状态值。256个可能的8位序列的随机置换被选择并在参考211之下列出。随机置换是编码,因为状态和数据值的任何对被映射到在列211中的相应位序列。
这个编码是可逆的,因为数据和状态值的每个可能的组合接收不同的8位序列。在实施例中,状态值的位长度至少是数据值的位长度;较长的状态值可能使数据值如何被使用更大程度地混淆。例如,数据值可以是4位,而状态值可以是4位。例如,数据值可以是4位,而状态值可以是6位。在示例中,状态值是数据值的倍数;结果是,每当状态值的位长度达到数据值的位长度的下一倍数时,得到较高的保护水平。
密码编码并不给攻击者关于编码值的信息;至少没有过度的计算努力。例如,可通过选择数据和状态值的所有可能组合的随机置换来产生密码编码;随机性可以是真或伪随机性。可替换地,可使用密钥、例如使用块密码来对数据和状态值加密,所述块密码的块长度等于数据和状态值的位长度的和。使用密钥的加密也是随机置换,并具有更容易实现密码设备100的优点。
在DES的情况下,对数据值的位长度的自然选择是32位,其可与32位状态值组合。在本文将假设这个选择,然而,要强调的是,不同的长度是可能的。这样的64位编码值中的两个可表示一个DES轮的输入,不包括密钥。在白盒实现中,可通过部分地评估密钥的轮函数来将密钥合并在轮函数中。这移除了作为一轮的输入的轮密钥。
由于实际原因,较长的数据和状态值(例如32位数据和状态值)可被表示为编码子值序列。图2.7图示出数据和状态值的这种类型的编码。图2.7示出8个编码子值210.1、210.2、...、210.7和210.8。编码子值是数据子值、212.1、...、212.7和212.8连同相应的状态子值、214.1、...、214.7和214.8一起的密码地和可逆地编码成单个编码子值。数据和状态值在单个整体值中被编码,所述单个整体值不能在没有对该值解码的情况下分离。例如,在图2.7中,数据和状态值可以每个是4位的,序列对32位数据字和32位状态字编码。对编码子值210.1 – 201.8使用的编码可以是不同的。例如,编码之一可使用4位的数据值和子值,并使用比如在图2.2中所图示的示例编码。
密码设备100布置成对编码值操作以执行块密码计算。特别是,密码设备100布置成对块密码输入108的编码应用多轮密码处理。编码块密码输入108可在编码形式中由设备100接收。这具有数据的普通版本在设备上是不可用的优点。这可例如在如果为了解密而配置设备100的情况下被使用。此外,如果为了加密而配置设备100,则可接收编码输入。例如,后者在如果加密在非可信计算机上被执行的情况下则可被使用。例如在实施例中,在第一设备上,输入被编码并发送到密码设备100,密码设备100可然后对编码输入加密。这具有由块密码使用的密钥不需要在第一设备上可用且密码设备100不需要访问普通输入的优点。编码可由编码器单元190来完成。
编码器单元190可配置成接收以未编码形式(例如普通形式)的块密码输入105。编码器单元190可应用编码以得到块密码输入108的编码。在实施例中,编码器单元190包括布置成选择一个或多个状态值的状态值选择单元。例如,状态值可以是例如使用哈希函数的块密码输入105的函数;例如,可随机地选择状态值。编码器单元190可包括布置成将编码应用于从块密码输入105得到的数据值连同所选择的状态值的处理器。例如,编码器190可根据按照图2.7的编码来进行编码。在DES的情况下,编码器190可将例如在块密码块上的64位块密码输入105编码为每个64位的两个编码值;每个64位编码值包括表示块密码输入105的32位数据值和32位状态值。
编码器单元190是完全可选的,因为密码设备100可直接得到以编码块密码输入108的形式的块密码输入。
编码块密码输入108是第一块密码轮112的输入。第一块密码轮112的输出是第二块密码轮(未单独地示出)的输入。例如,第一块密码轮单元可能在置换之后接收编码块密码输入作为输入,每个随后的块密码轮单元接收前一块密码轮单元的输出作为输入。块密码轮可接收编码轮密钥,但也可具有通过部分评估而合并在轮密钥中的轮密钥。后一选项对密钥混淆是优选的。密码设备100的基于白盒表的实现特别适合于具有合并在表示轮函数的表中的轮密钥。
多轮的最后一轮118接收第一编码输入 120和第二编码输入130作为输入。
第一编码输入120对第一数据输入 122和第一状态输入 124编码。在图2.3中图示出第一编码输入120。例如,),其中表示编码。第二编码输入 130对第二数据输入 132和第二状态输入 134编码。在图2.4中图示出第二编码输入130。例如,),其中表示编码。在实施例中,第一数据输入122表示值,以及第二数据输入132表示值。通常,实现DES的密码设备100的实施例可遵循图6.1的架构(在图6.1的数据值被表示为在密码设备的编码值中的数据值的意义上)。虽然这样的对应性是可能的并提供更容易的调试,但是这不是必须的。例如,在图6.1中的连续操作可例如使用部分评估来完全或部分地合并在密码设备100中。可得到第一和第二编码输入120、130作为第二到最后一个块密码轮116的输出。
轮函数单元140布置成接收对数据值132 和数据值编码134 编码的第二编码输入130并产生编码输出150。轮函数单元140首先将内部防篡改移位函数应用于数据值132,之后在内部防篡改移位函数的应用之后作用于数据值132上并且可能也作用于状态值134上的密码轮函数。图2.5图示出对数据值152和状态值154编码的编码输出150。
所谓的防篡改函数使用状态来增加密码设备抵抗值的未授权修改的恢复力。诸如在微分故障攻击中使用的故障是这样的未授权修改的示例。然而,发明人发现,防篡改函数的谨慎放置显著提高对微分故障攻击的抵抗性。在密码设备100中,在(至少)三个位置处应用防篡改函数:在轮函数140的输入处的所述内部防篡改函数;以及在第一和第二输出单元的输入处的第一和第二输出防篡改移位函数。
假如在编码值中的状态值不等于预期状态值且不以另外方式修改数据值,则防篡改移位函数修改在编码值中的数据值。进一步参考图2.6来解释防篡改移位函数的操作的示例。图2.6示出编码值210,其对数据值212和状态值214编码。防篡改移位函数220接收状态值214作为输入,并产生移位值224。防篡改移位函数220可布置成如果在编码值中的状态值等于预期值则使得移位值224具有特定值,例如零,以及如果在编码值中的状态值不等于预期值则使得移位值224具有不同于特定值的值,例如非零。这可通过将移位值224设置为在编码值中的状态值()和预期状态值()之间的预期差来实现,例如;在状态值的范围内计算该差,例如对2的幂取模。可通过将随机双射h应用于该差来产生移位函数的其它示例,例如
如果预期状态值独立于块密码的输入数据值,则预期状态值可合并在函数220中。例如,这可通过选择在块密码输入的编码中的预定状态值来实现。块密码轮可布置成使得预定状态值遵循预定路径,使得到达函数220的状态值是已知的。另一方面,预期状态值222可以是函数220的输入。预期状态值可连同数据值一起被编码。例如,对块密码中的状态值的操作可布置成使得操作的部分是操作的另一部分的逆操作。以这种方式,预期状态值可以是相等的,或具有与在编码块密码输入中的状态值的固定关系。
可通过在加法器230中将移位值加到数据值来将移位值224应用于数据值。选择加法,使得特定值不改变数据值,例如如果特定值是零,则可使用普通的加法。加法可以是对数据值的范围的大小取算术加法模。加法可以是异或操作。通常,“加法”可以是任何函数加,使得数据值和特定值的相加等于数据值,而数据值和与特定值不同的值的相加不同于数据值。加法器230接收数据值212和移位值224作为输入,并产生移位编码值240的数据值242作为输出。移位编码值240的状态值244可与状态值214相同。然而,在从状态值214到状态值244的路径225中,可以有另一状态函数。这样的函数具有下面的优点:以后的防篡改函数必须假设状态值在另一状态函数之后已经改变。如果防篡改函数被移除或以另外的方式被篡改,则这将在以后的防篡改函数中被检测到。然而,对于移除函数的抵抗被视为比微分故障分析更不重要的威胁,因为这个攻击高级得多,所以在路径225上的另一状态函数是可选的。
在图2.6中且更一般地在与密码设备100有关的其它图中,操作220和230被示为单独的框。然而在实施例中,函数220和230将可能集成在单个操作(例如单个表网络)中。这个集成功能接收编码状态值210和可能地接收预期状态值222作为输入并产生移位编码值240作为输出。当集成功能使用操作的表时,可以完全在编码域中进行计算。
防篡改函数也可应用于被表示为编码子值序列的编码值,例如,如图2.7所图示的。此外,防篡改移位函数可包括用于修改在编码值中的相应数据子值()的防篡改移位子函数序列。在图2.8中给出适合于应用于被表示为编码子值序列的编码值的防篡改函数的示例实施例。
图2.8示出多个编码子值之一:对数据子值212.1和状态子值214.1编码的编码子值210.1;以及多个防篡改子函数之一,防篡改子函数220.1。如在图2.6中,防篡改移位子函数220.1产生移位值224.1,如果状态值214.1等于预期状态子值222.1,则所述移位值224.1具有特定值,例如零。加法器230.1将移位值加到数据子值212.1以产生移位的数据子值242.1。在路径225中的另一状态子函数的应用之后,状态子值可等于状态值214.1或等于状态值214.1。
图2.6和2.8示出应用防篡改移位函数作为编码值的结果。以这种方式,移位编码值240或序列240.1,...,可用作输入,用于进一步处理。虽然这是可能的,但是这不是必须的。也可在如图2.6和2.8中所示的编码值产生之前在另外的计算中使用应用的结果。
例如,在使用如在图2.6和2.8中的编码子值序列的图2.6的基于表的实现中,可在表的序列中组合函数220.1和加法器230.1及可选的另一状态函数225;每个表接收编码子值210.1,...,作为输入,并产生移位编码输出240.1, ....作为输出。
第一输出单元160 布置成接收第二编码输入130并将第一输出防篡改移位函数应用于第二编码输入,之后对数据值132解码以得到块密码输出106的第一部分162。
第二输出单元180 布置成接收编码输出150并将第二输出防篡改移位函数应用于编码输出,之后对数据值152解码以得到块密码输出106的第二部分182。
在实施例中,第二输出防篡改移位函数包括用于修改编码值150中的相应数据子值的防篡改移位子函数的序列。当第二编码输入130的状态子值超过所有状态值时,第二输出防篡改移位函数的每个防篡改移位子函数采用所有数据值。发现这个特征提供对保护不受故障攻击的大贡献。
修改在编码输入值130中的编码子值的攻击者将发现在块密码输出的第二部分182中的不同输出。如果攻击者偶然地碰巧修改在编码输入值130中的编码子值,使得只有数据值而不是状态值被改变,则防篡改移位函数将不检测到这样的变化。注意,攻击者不能直接实施它,因为数据值和状态值一起被编码,然而攻击者可偶然实现它。例如在图2.2中,如果攻击者将11010110改变为01001111,则(在这个特定的情况中)只有数据值而不是状态值被改变。这样的偶然变化可沿着传统故障攻击的线路泄漏关于密钥的信息。然而,如果当第二编码输入130的状态子值超过所有状态值时,第二输出防篡改移位函数的防篡改移位子函数采用所有数据值,则对于攻击者而言变得难得多的是,认识到他偶然发现了只触及数据值而非状态值的修改。
例如,数据子值可以是位宽,状态子值是位宽,以及编码子值是位宽。当在编码输入130中的编码子值贯穿所有个编码值时,对于特定的数据子值和所有可能的状态子值,第二输出防篡改移位函数的数据值(例如加法器230.1的输出)贯穿所有个可能的数据值。在实施例中,。如果,则每个数据值对每个状态值出现一次。如果,则一些数据子值将更经常地出现,因为状态值贯穿它的范围;在实施例中,每个数据子值当第二编码输入的状态子值时在第二输出防篡改移位函数的每个防篡改移位子函数中出现确切地次。
在第一和第二输出单元中移除在块密码中使用来保护编码值的内容免受分析的编码。
在微分故障攻击中,攻击者对同一输入数据执行块密码两次,但在一次运行中修改第二编码输入值130。比较两次执行的输出提供关于在轮函数单元140中完成的处理的信息。在轮函数单元140中完成的处理是秘密的,因为它定义块密码的加密或解密(的部分),并因而提供关于轮密钥的信息。三个防篡改函数的战略性放置减小攻击者操作编码输入值130的可能性。
在实施例中,密码设备包括耦合到电子处理器的存储装置,存储装置存储实现至少轮函数单元以及第一和第二输出单元的数字表网络()。处理器布置成在所述存储的表中执行表查找实现。
图3示意性示出轮函数单元300的实施例的示例。轮函数单元300可用于实现轮函数单元140。图3所示的是对数据值132和状态值134编码的编码输入值130以及对数据值122和状态值124编码的编码输入值120。
轮函数300包括防篡改移位函数320、数据轮函数单元342和状态轮函数单元344。
内部防篡改移位函数320接收状态值134,并产生相对于预期状态值322的移位值322,例如如参考图2.6和2.8解释的。轮函数300包括加法器330以将移位值加到数据值132。例如,内部防篡改移位函数320和加法器330可被实现为内部防篡改移位子函数的序列。
数据轮函数单元342对由加法器230产生移位数据值应用数据轮函数,并加上数据值122。这遵循Feistel结构。例如,如果为DES配置密码设备100,在单元342中的数据轮函数可实现扩展函数E、一系列S盒(, ..., )和如图6.2所图示的置换。注意,数据轮函数的结果的数据子值一般将取决于数据轮函数的输入的多于一个或甚至所有数据子值。这使轮函数实现为表网络比比如内部防篡改移位函数320的实现更复杂。然而,块密码(例如DES)实现为表网络本质上是已知的,见例如Chow。不同于Chow,轮函数作用于包括数据值和状态值的编码变量上。在图3中,数据函数单元342和状态函数单元344被描绘为单独的框,然而这些操作可一起在相同表网络中被执行以避免使数据值或状态值彼此分开地被编码。
轮函数300可以可选地还包括状态轮函数单元344。状态轮函数单元344对状态值134应用状态轮函数。这使通过省略一个或多个操作来篡改密码设备100更难,因为以后的防篡改移位函数预期状态函数由状态轮函数修改。在图3中,状态轮函数只取决于状态值134。
在实施例中,状态轮函数单元344将状态轮函数应用于状态值134并加上状态值124。将Feistel结构强加在状态值计算上并不是严格地必要的,但在密码设备100被实现为白盒表网络时提供很大的方便。因为状态值计算也遵循Feistel结构,相同的表结构可用于状态值。在实施例中,块密码具有Feistel结构且状态值的计算也具有Feistel结构。
在实施例中,选择在状态轮函数单元344中的状态轮函数,使得轮函数单元的编码输入(130)和输出(150)的数据值(132、152)的轮函数单元(140)的扩散与轮函数单元的编码输入(130)和输出(150)的数据值(134、154)上的轮函数单元的扩散相同。
有相同的扩散可被定义在位级上,使得对于未被数据值132中的数据位i影响的、即不依赖于数据值132中的数据位i的数据值152中的每个数据位j,情况是状态值154中的状态值位j也不被状态值134中的状态值位i影响。然而,较宽的定义也是足够的,使得对于未被数据值132中的数据子值i影响的、即不依赖于数据值132中的数据子值i的数据值152中的每个数据子值j,情况是状态值154中的状态值子值j也不被状态值134中的状态值子值i影响。这些标准避免攻击者可通过发现与数据轮函数的结构不兼容的普通输出数据值被修改来查明状态值是否被修改。
例如,这可以通过使用与状态轮函数相同或相似的数据轮函数来实现。例如,在块密码轮的最后一半中的状态轮函数可与在块密码轮的最后一半中的数据轮函数相同,而在块密码轮函数的第一半中,状态函数等于块密码轮的最后一半的数据轮的逆。以这种方式,在状态值的最后一轮中的扩散确切地与数据值的扩散相同,然而同时可预测的状态值出现在最后一轮中。
例如,在DES的情况下,最后一轮的状态轮函数可包括S盒、置换和扩展矩阵。
实现相同扩散的可替换方案是将状态轮函数()选择为
其中是在状态值上的双射,以及
其中如果在中的第j个数据值影响第i个S盒的输入,则=1,否则为0。这个结构迫使相等的扩散而不复制数据轮函数。秘密值——状态密钥——可如下合并在结构中:
状态值可在状态轮函数344中作为编码密钥被接收。这允许为不同的应用定制白盒实现。
在实施例中,密码设备配置成接收连同数据密钥一起被编码的状态密钥。数据密钥可以是DES轮密钥,特别是最后一轮的轮密钥。例如,轮函数单元可配置成接收与块密码(例如DES等)的最后一轮密钥一起被编码的状态密钥
注意,只要状态值不是非法地被修改,状态值就不影响数据值的计算。然而,如果状态值改变,则这将通过防篡改移位函数影响数据值。
图4示意性示出第一输出单元160的实施例的示例。第一输出单元160可用作密码设备100的实施例。
图4示出接收对数据值132和状态值134编码的编码输入130的输出单元160。输出单元160包括第一输出防篡改移位函数420,其基于预期状态值422和状态值134来产生移位值。用加法器430将移位值424加到数据值132。输出单元160不使用输出编码440,使得单元160的输出是普通数据值。
图5示意性示出第二输出单元180的实施例的示例。此外,可在密码设备100中使用第二输出单元180。第二输出单元180与输出单元160类似地工作,接收编码输出150作为输入。输出单元180包括第二输出防篡改移位函数520,其基于预期状态值522和状态值154来产生移位值524。用加法器530将移位值524加到数据值152。输出单元180不使用输出编码540,使得单元180的输出是普通数据值。
在基于表的实现中,输出单元160和180可被实现为表的序列,其采用编码子值作为输入并产生普通数据值作为输出。在DES的情况中,这可使用8个表来完成,每个表接收8位输入并产生4位输出。
一般,密码设备100包括执行存储在设备100处的适当软件的微处理器(未在图1中示出);例如,该软件可被下载和/或存储在相应的存储器中,所述存储器例如是诸如RAM的易失性存储器或诸如闪存(未在图1中示出)的非易失性存储器。可替换地,密码设备100可全部或部分地被实现在可编程逻辑中,例如作为现场可编程门阵列(FPGA)。设备100可全部或部分地被实现为所谓的专用集成电路(ASIC),即为其特定使用定制的集成电路(IC)。
在实施例中,密码设备100包括用于应用块密码轮的块密码轮电路、轮函数电路、第一输出电路、第二输出电路。设备100可包括额外的电路,例如通信电路等。电路实现本文所述的相应单元。电路可以是处理器电路和存储电路,处理器电路执行在存储电路中电子地表示的指令。电路也可以是FPGA、ASIC等。
另一有利的密码设备是用于对块密码输入(105)计算块密码(500)并产生块密码输出(106)的密码设备,块密码计算对编码值(210)操作,编码值(210)是数据值(, 212)连同状态值(, 214)一起的密码的和可逆的编码,密码设备包括配置成对块密码输入(108)的编码应用实现块密码的多轮(112, 114, 116, 118)密码处理的处理器(1120),其中编码值(210)包括编码子值(210.1, 210.2, ..., 210.8)序列,编码子值是数据子值(,212.1, 212.2, ..., 212.8)连同相应的状态子值(, 214.1, 214.2, ..., 214.8)一起密码地和可逆地编码成单个编码子值,
- 多轮的最后一轮(118)的输入包括对第一数据值(, 122)和第一状态值(,124)编码的第一编码输入(), 120)以及对第二数据值(, 132)和第二状态值(, 134)编码的第二编码输入(), 130),
- 处理器实现用于应用实现块密码的多轮密码处理的最后一轮(118)的轮函数单元(140; 300)和用于对编码输出数据(152)解码的第二输出单元(180),其中
- 轮函数单元(140)布置成接收第二编码输入(, , 130)并将()应用内部防篡改移位函数(, 320)到第二编码输入(130)的数据值(132),之后密码轮函数(, 342, 344)作用于所述移位的第二编码值(130)的数据输入(132)和状态值(134)上以产生编码输出(, , 150),防篡改移位函数(, 220)在编码值(210)中的状态值(, 214)不等于预期状态值(, 222)的情况下修改在编码值(210)中的数据值(, 212)且否则不修改数据值(, 212),防篡改移位函数(, 220)包括用于修改在编码值中的相应数据子值()的防篡改移位子函数(, 220.1)序列。
- 第二输出单元(, 180)布置成接收编码输出(, 150),并将第二输出防篡改移位函数(, 520)应用于编码输出(, 150),之后对数据值(152)解码以得到块密码输出(106)的至少第二部分(182),当第二编码输入(, 130)的状态子值超过所有状态值时,第二输出防篡改移位函数()的每个防篡改移位子函数采用所有数据子值。
下面描述根据本发明的另外的示例实施例。
在“灰盒”情形中最容易描述微分故障攻击(DFA)。我们假设攻击者能够以某种方式(例如通过在正确的时刻在芯片上的正确位置处发射激光脉冲)来修改,且他能够看到未知变化对输出的影响。通过波浪号表示改变的值,我们有:
取最右边等式的按位异或,未知的失去,以及使用最左边等式按照可观察的输出来表示不是直接可观察的,我们发现:
现在容易发现满足下式的所有48位密钥
(1)
事实上,对于每个S盒,这个检查可以按每6位子密钥完成。一般,显著少于64个子密钥满足这个等式,且这组解取决于。一般,真实轮16密钥是对于所有可能的输入和变化满足等式(1)的唯一密钥,且其可以一般只使用少量输入和故障注入来找到它。
当取回时,56个相关密钥位中的48个是已知的,且可通过尝试所有256个可能的密钥来找到剩余位。如果攻击者可修改三重DES的加密和解密的最后一轮中的每个的输入,则他可能以类似的方式找到完整的密钥。
在白盒情形中,攻击者可检查并修改所有变量。特别是,他可修改并试验其所有值,并观察对结果的影响。因此他能够甚至比在灰盒情形中更快地恢复密钥。
实施例防范尝试的所有值的攻击者。这也将在灰盒情形中防范DFA攻击。实施例可使用下列项中的一个或多个:
1. 对于被称为值的一些或所有内部变量,被称为状态的辅助变量。在存储器中的数字是值和状态两者的编码。
2. 状态消除:(三重-)DES算法的输出应是加密密码文本的值而没有状态。这意味着实现应相应提供从的编码(值,状态)对到它们的值的映射。有利地,这个映射并不简单地是编码函数的逆,因为这将允许攻击者完全除掉在完整的程序中的使用相同编码的所有状态变量。替代地,被表示为M的这个映射完成下式:
在这里,E表示编码函数,而是从两个状态到值空间的映射,其将两个相等的输入映射到值空间中的零位串。也就是说,M返回当状态等于正确的状态时的值,并否则给它偏移。
3. 状态演进:函数M必须“知道”正确的状态。这暗示状态变量不能是随机的,但它们必须根据可由实施者选择且是攻击者未知的某个规则来演进。
4. 状态相关值演进:如果状态是正确的,值正常演进,但如果它是不正确的,则值得到偏移。在一些实施例中,这只在第16轮中被使用,但也可在多个或所有轮中被应用。
这些要素可以以使得基于等式(1)的故障注入攻击不起作用的方式组合。这提高目前技术水平:如果不使用第四要素,则可快速找到单独子密钥。
注释:值由表示,即以及,以及状态由表示,且在程序中的每个变量可以用不同的方式被编码。已编码的LR变量,即在存储器中的数字由表示,所以我们有:
等。对于前15轮,我们让值根据DES规范来演进,即,
对于
然而,对于最后一轮,Feistel的输入不是,但,其中在此时是“正确的状态”。那意味着在最后一轮中我们有:
(2)。
因为根据Feistel来演进,让也根据Feistel来演进变得有意义。特别是,在最后一轮中,我们让它如下演进:
特别是,对某个函数g,正确的状态也必须以这种方式演进:
。下面导出g的有利特性。
使用Feistel演进,在最后8轮中的状态演进可被选择为在前8轮中的状态演进的逆,使得最终状态等于初始状态,这进而又是DES输入的简单函数。
现在我们转到用于消除状态的映射。我们使左和右输入由下式给出:
通过将函数选择为相同的来简化计算。然后我们有:
以及从等式(2)以及演进中,其遵循:
现在我们考虑修改的攻击者。在未修改的系统中,到处都存在,所以,以及
在已修改的系统中,它可以是,所以他将发现:
将这两个等式进行异或,我们得到:
现在比较此与实际攻击:攻击者试图找到对方程(1)的解,方程(1)按照输出变量写作:
如果变化是使得偏移,则解出了这个等式,但如果偏移是非零的,则不是解。事实上,对于任何K,我们可找到偏移,使得K是解,即
Offset(偏移)
当每个S盒输出四位(又称为半字节(nibble))时,对编码的最自然的选择是让每个每半字节被编码,即是8个编码半字节的序列,且每个编码半字节是半字节值和半字节状态的独立编码。半字节值是四位,我们将半字节状态选择为k倍大,即4k位。因此编码半字节是()位串。
在实施例中,我们选择。我们应在下面评论这个选择的限制和对DFA攻击的含意。
我们现在描述攻击,其中攻击者试图确定单个S盒的6位子密钥,即对第i个S盒的子密钥
(白盒)攻击者可改变中的编码半字节,但他不知道哪个编码被使用。因此我们假设对于8个编码半字节中的每个,攻击者执行个不同的扰动,且对于每个扰动找到哪些6位子密钥(从现在起,代表在最后一轮中的第i个6位子密钥,而不是代表第i个56位轮密钥)解出
(3)
其中下标i指示采用第i个半字节、S盒或位六位字节。等式3等效于:
(4)
我们想要确保攻击者没有从此学到任何东西。
如果攻击者应从未在他没有预期变化的位置处看到变化,则将是有利的:因为如果他看到这样的变化,他将断定它不与DES兼容,且他可在分析中简单地忽略它。
所有变化与某些密钥一致也将是有利的,但没有密钥应是优选的。我们通过确保下面的情况来完成此:对于它保持的每个j,如果攻击者执行的第j个编码半字节的个扰动,并从等式3中发现不与这些变化中的每个变化一致的密钥,则他有效地对的所有16个值解出等式4,并因此找到所有64个可能的子密钥。特别是,对于的第j个半字节的15个变化,其中改变,即,以及保持不变,即,它将保持且因此。对于这些扰动,真实密钥是解。对于其它扰动,其它密钥(且不是真实密钥)应表现为解。
在实施例中,和函数的演进设计成使得下面的条件成立:
1. 在最后一轮的演进中,只有右半字节(如下来自E的结构)被影响。
2.必须选择,使得当超过所有个可能的值时,采用所有个可能的4位值。
时,对于任何32位“”密钥,这些要求被满足,其中是在长度4的位串上的任意双射,以及
其中,如果的第j个半字节影响第i个S盒的输入,则,否则以及当时为0。
可省略密钥。对防篡改移位函数的其它选择是可能的。
使用这些示例选择,DFA未能给出关于单个子密钥的信息。如果选择半字节j和S盒i,使得在DES中在半字节j中的变化不影响的输入,则在输出半字节中没有变化,且任何密钥解出(3)。如果它确实影响,每个对15个扰动解出(3).
注意,在DES的可替换实现中,置换P从S盒后面移动到扩展E之前。这个防御也在这个实现中工作而有较小的修改。
可通过选择来抵御更有能力的攻击者。在上面,攻击者被假设一次以一个子密钥为目标。可通过确保的单个半字节的中的变化将导致修改的S盒输出来抵抗这个攻击,使得所有可能的输出对所有被影响的S盒出现。
然而通过这么做,在不同的被影响的S盒的输出中的变化是相关的,因为它们取决于相同的位,且这可在攻击中被利用,其中同时搜索多个子密钥,比如m个子密钥。这样的攻击需要保持子密钥组合的分数。为了有足够的空间来允许在m个不同的S盒输出中的不相关的变化,可选择,使得足够的位是可用的。
图7示意性示出用于计算块密码700的方法的实施例的示例。
密码方法对块密码输入(105)计算块密码(500)并产生块密码输出(106),所述块密码计算对编码值(210)操作,编码值(210)是数据值(, 212)连同状态值(, 214)一起的密码的和可逆的编码。
方法700包括:
- 对块密码输入(108)的编码应用710(AMR)实现块密码的多轮(112, 114, 116, 118)密码处理,例如,这可由处理器或因此布置的其它硬件完成,
- 应用720(AFR)实现块密码的多轮密码处理的最后一轮(118),多轮的最后一轮(118)的输入包括对第一数据输入(, 122)和第一状态输入(, 124)编码的第一编码输入(), 120)以及对第二数据输入(, 132)和第二状态输入(,134)编码的第二编码输入(), 130),
例如,最后一轮可包括:
- 将()应用722(AITRSF)内部防篡改移位函数(, 320)到第二编码输入(130)的数据值(132),防篡改移位函数(, 220)在编码值(210)中的状态值(, 214)不等于预期状态值(, 222)的情况下修改在编码值(210)中的数据值(,212)且否则不修改数据值(, 212),以及
- 应用724(ACRF)作用于所述移位的第二编码输入(130)的数据输入(132)和状态输入(134)上的密码轮函数(, 342, 344)以产生编码输出(,, 150),该方法的输出可由两个输出生成应用生成。这些可以按任一顺序执行。
- 将第一输出防篡改移位函数(, 420)应用732(ATRSF1)于第二编码输入(, , 130),之后对数据值(132)解码734(DEC1)以得到块密码输出(106)的第一部分(162),
- 将第二输出防篡改移位函数(, 520)应用742(ATRSF2)于编码输出(, 150),之后对数据值(152)解码744(DEC2)以得到块密码输出(106)的第二部分(182)。
如将对本领域中的技术人员明显的、执行该方法的很多不同方式是可能的。例如,步骤的顺序可改变或一些步骤可并行地被执行。而且在步骤之间,可插入其它步骤。所插入的步骤可表示诸如本文所述的方法的改进,或可与该方法无关。例如,可至少部分地、并行地执行步骤732和742。而且,给定步骤可以不在下一步骤开始之前完全完成。
可使用包括用于使处理器系统执行方法700的指令的软件来执行根据本发明的方法。软件可以只包括由系统的特定子实体采用的步骤。软件可存储在适当的存储介质中,诸如硬盘、软盘、存储器等。软件可作为信号沿着电线或无线地或使用数据网络(例如互联网)被发送。可使软件变得可用于下载和/或用于在服务器上远程使用。根据本发明的方法可使用布置成配置可编程逻辑(例如现场可编程门阵列(FPGA))以执行该方法的比特流来执行。
将认识到,本发明也扩展到适合于将本发明付诸实践的计算机程序,特别是在载体上或载体中的计算机程序。程序可以具有源代码、对象代码、代码中间源和诸如部分编译形式的对象代码的形式,或具有适合于在根据本发明的方法的实现中使用的任何其它形式。与计算机程序产品有关的实施例包括相应于所阐述的方法中的至少一个方法的处理步骤中的每个处理步骤的计算机可执行指令。这些指令可细分成子例程和/或存储在可静态或动态链接的一个或多个文件中。与计算机程序产品有关的另一实施例包括相应于所阐述的系统和/或产品中的至少一项中的装置的每一项装置的计算机可执行指令。
图8a示出具有包括计算机程序1020的可写部分1010的计算机可读介质1000,计算机程序1020包括根据实施例的用于使处理器系统执行计算块密码的方法的指令。计算机程序1020可体现在计算机可读介质1000上作为物理标记或借助于计算机可读介质1000的磁化来体现。然而,也可设想任何其它适当的实施例。此外,将认识到,虽然计算机可读介质1000在这里被示为光盘,但是计算机可读介质1000可以是任何适当的计算机可读介质,诸如硬盘、固态存储器、快闪存储器等,且可以是不可记录的或可记录的。计算机程序1020包括用于使处理器系统执行计算块密码的所述方法的指令。
图8b示出根据实施例的处理器系统1100的示意性表示。处理器系统包括一个或多个集成电路1110。在图8b中示意性示出一个或多个集成电路1110的架构。电路1110包括用于运行计算机程序部件以执行根据实施例的方法和/或实现它的模块或单元的处理单元1120(PROC),例如CPU。电路1110包括用于存储编程代码、数据等的存储器1122(MEM)。存储器1122的部分可以是只读的。电路1110可包括通信元件1126,例如天线、连接器或这两者等。电路1110可包括用于执行在方法中定义的处理的部分或所有处理的专用集成电路1124(DDIC)。处理器1120、存储器1122、专用IC 1124和通信元件1126(COMM)可经由互连1130(比如总线)连接到彼此。处理器系统1110可布置成分别使用天线和/或连接器来用于接触和/或无接触通信。
应注意,上面提到的实施例图示出而不是限制本发明,以及本领域中的技术人员能够设计很多可替换的实施例。
在权利要求中,放置在括弧中的任何参考数字不应被解释为限制权利要求。动词“包括”及其词形变化的使用并不排除除了在权利要求中陈述的那些元件或步骤以外的元件或步骤的存在。在元件前面的词“一”或“一个”并不排除多个这样的元件的存在。本发明可借助于包括几个不同的元件的硬件并借助于适当编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个可由硬件的一个且相同项体现。某些手段在相互不同的从属权利要求中被陈述的单纯事实并不指示这些手段的组合不能有利地被使用。在权利要求中,在括弧中的参考数字指在实施例的附图中的参考符号或实施例的公式,因而增加权利要求的可理解性。这些参考符号不应被解释为限制权利要求。

Claims (16)

1.一种用于对块密码输入(105)计算块密码(500)并产生块密码输出(106)的密码设备(100),所述块密码计算对编码值(210)操作,编码值(210)是数据值(212)连同状态值(214)一起的密码的和可逆的编码,所述密码设备布置成对所述块密码输入(108)的编码应用实现所述块密码的多轮(112, 114, 116, 118)密码处理,所述密码设备包括:
- 轮函数单元(140; 300),其布置成应用实现所述块密码的多轮密码处理的最后一轮(118),
- 所述多轮的最后一轮(118)的输入包括对第一数据输入(122)和第一状态输入(124)编码的第一编码输入( 120)以及对第二数据输入(132)和第二状态输入(134)编码的第二编码输入(130),
- 所述轮函数单元(140)布置成接收第二编码输入(130)并将()应用内部防篡改移位函数(320)到第二编码输入(130)的第二数据值(132),之后密码轮函数(342, 344)作用于所述移位的第二数据输入(132),以产生编码输出(150),防篡改移位函数(220)在编码值(210)中的状态值(214)不等于预期状态值(222)的情况下修改在编码值(210)中的数据值(212),并且否则不修改数据值(212),
- 第一输出单元(160)布置成接收所述第二编码输入( 130)并将第一输出防篡改移位函数(420)应用于所述第二编码输入( 130),之后对所述移位的第二数据输入(132)解码以得到块密码输出(106)的第一部分(162);以及
- 第二输出单元(180),其布置成接收所述编码输出(150)并将第二输出防篡改移位函数(520)应用于所述编码输出(150),之后对数据值(152)解码以得到块密码输出(106)的第二部分(182)。
2.如权利要求1所述的密码设备,其中编码值(210)包括编码子值(210.1, 210.2,..., 210.8)序列,编码子值是数据子值( 212.1, 212.2, ..., 212.8)连同相应的状态子值(214.1, 214.2, ..., 214.8)一起密码地和可逆地编码成单个编码子值,防篡改移位函数(220)包括用于修改在编码值中的相应数据子值()的防篡改移位子函数(220.1)的序列。
3.如权利要求2所述的密码设备,其中所述第二输出防篡改移位函数()的每个防篡改移位子函数布置成使得:
- 如果所述第二编码输入(130)的状态子值采用所有状态值,则所述第二输出防篡改移位函数()采用所有数据子值。
4.如前述权利要求中的任一项所述的密码设备,其中所述轮函数单元布置成将所述第一编码输入(120)的所述第一数据输入(122)加到所述密码轮函数的结果的所述数据值()。
5.如前述权利要求中的任一项所述的密码设备,其中所述轮函数单元(140)布置成将数据轮函数(f)应用于所述移位数据值并将状态轮函数(g)应用于所述第二编码输入(130)的所述第二状态输入(134)。
6.如前述权利要求中的任一项所述的密码设备,其中所述轮函数单元的编码输入(130)和输出(150)的数据值(132,152)的轮函数单元(140)的扩散与所述轮函数单元的编码输入(130)和输出(150)的状态值(134,154)上的所述轮函数单元的扩散相同。
7.如在前述权利要求中的任一项中所述的密码设备,其中所述块密码具有Feistel结构。
8.如在前述权利要求中的任一项中所述的密码设备,其中对所述编码块密码输入中的所述状态值的计算是Feistel结构。
9.如在权利要求7或8中所述的密码设备,其中所述块密码是DES或三重Des。
10.如在权利要求5和9的组合中所述的密码设备,其中所述状态轮函数(g)是:
其中是在状态值上的双射,以及
其中如果在中的第j个数据值影响第i个S盒的输入,则,否则为0,或
其中是状态密钥。
11.如在前述权利要求中的任一项中所述的密码设备,其中防篡改移位函数()通过将在所述编码值中的所述状态值()和预期状态值()之间的差加到所述数据值来修改在所述编码值中的所述数据值()。
12.如在前述权利要求中的任一项中所述的密码设备,其中所述内部防篡改移位函数和所述第一和第二输出防篡改移位函数是相同的函数。
13.如在前述权利要求中的任一项中所述的密码设备,其中状态值和数据值具有位大小,状态值的所述位大小是数据值的所述位大小的倍数。
14.一种用于对块密码输入(105)计算块密码(500)并产生块密码输出(106)的密码方法,所述块密码计算对编码值(210)操作,编码值(210)是数据值(, 212)连同状态值(,214)一起的密码的和可逆的编码,所述方法包括:
- 对所述块密码输入(108)的编码应用实现所述块密码的多轮(112, 114, 116, 118)密码处理,
- 应用实现所述块密码的所述多轮密码处理的最后一轮(118),所述多轮的最后一轮(118)的输入包括对第一数据输入( 122)和第一状态输入( 124)编码的第一编码输入( 120)以及对第二数据输入( 132)和第二状态输入( 134)编码的第二编码输入(130),
-将()应用内部防篡改移位函数(320)到第二编码输入(130)的第二数据值(132),之后应用作用于所述移位的数据输入(132)上的密码轮函数( 342, 344)以产生编码输出( 150),防篡改移位函数( 220)在编码值(210)中的所述状态值( 214)不等于预期状态值( 222)的情况下修改在所述编码值(210)中的所述数据值( 212),并且否则不修改所述数据值( 212),
- 将第一输出防篡改移位函数( 420)应用于第二编码输入( 130),之后对所述数据值(132)解码以得到所述块密码输出(106)的第一部分(162),
- 将第二输出防篡改移位函数( 520)应用于编码输出( 150),之后对所述数据值(152)解码以得到所述块密码输出(106)的第二部分(182)。
15.一种包括计算机程序指令的计算机程序,所述计算机程序指令布置成当所述计算机程序在计算机上运行时执行权利要求14的方法。
16.一种存储如在权利要求15中的计算机程序的计算机可读介质。
CN201680025038.1A 2015-04-30 2016-04-19 密码设备、密码方法、计算设备和计算机可读存储介质 Active CN107534550B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15166051.1 2015-04-30
EP15166051 2015-04-30
PCT/EP2016/058591 WO2016173882A1 (en) 2015-04-30 2016-04-19 Cryptographic device for calculating a block cipher

Publications (2)

Publication Number Publication Date
CN107534550A true CN107534550A (zh) 2018-01-02
CN107534550B CN107534550B (zh) 2020-09-11

Family

ID=53015721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680025038.1A Active CN107534550B (zh) 2015-04-30 2016-04-19 密码设备、密码方法、计算设备和计算机可读存储介质

Country Status (5)

Country Link
US (1) US10685587B2 (zh)
EP (1) EP3289579B1 (zh)
JP (1) JP6788610B2 (zh)
CN (1) CN107534550B (zh)
WO (1) WO2016173882A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220029781A1 (en) * 2018-12-19 2022-01-27 Koninklijke Philips N.V. A circuit compiling device and circuit evaluation device

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3376705A1 (en) 2017-03-17 2018-09-19 Koninklijke Philips N.V. Elliptic curve point multiplication device and method in a white-box context
CN109714154B (zh) * 2019-03-05 2021-10-29 同济大学 一种代码体积困难白盒安全模型下的白盒密码算法的实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102204158A (zh) * 2008-10-30 2011-09-28 高通股份有限公司 低等待时间的分块密码术
US8175265B2 (en) * 2008-09-02 2012-05-08 Apple Inc. Systems and methods for implementing block cipher algorithms on attacker-controlled systems
WO2014096117A1 (en) * 2012-12-21 2014-06-26 Koninklijke Philips N.V. Computing device configured with a table network
CN104380245A (zh) * 2013-02-28 2015-02-25 皇家飞利浦有限公司 随机数生成器和流密码

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008058830A (ja) * 2006-09-01 2008-03-13 Sony Corp データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
US20080215925A1 (en) 2007-03-02 2008-09-04 International Business Machines Corporation Distributed fault injection mechanism
WO2009115864A1 (en) 2008-03-19 2009-09-24 Freescale Semiconductor, Inc. A method for protecting a cryptographic module and a device having cryptographic module protection capabilities
EP2293487A1 (en) * 2009-09-08 2011-03-09 Thomson Licensing A method of diversification of a round function of an encryption algorithm
EP2523385B1 (en) 2011-05-05 2017-07-12 Proton World International N.V. Method and circuit for cryptographic operation
CN105359450B (zh) * 2013-03-27 2020-08-07 爱迪德技术有限公司 防篡改密码算法实现
KR20150090438A (ko) * 2014-01-29 2015-08-06 한국전자통신연구원 화이트박스 암호 장치 및 그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8175265B2 (en) * 2008-09-02 2012-05-08 Apple Inc. Systems and methods for implementing block cipher algorithms on attacker-controlled systems
CN102204158A (zh) * 2008-10-30 2011-09-28 高通股份有限公司 低等待时间的分块密码术
WO2014096117A1 (en) * 2012-12-21 2014-06-26 Koninklijke Philips N.V. Computing device configured with a table network
CN104380245A (zh) * 2013-02-28 2015-02-25 皇家飞利浦有限公司 随机数生成器和流密码

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHOW S ET AL: "A white-box DES implementation for DRM applications", 《SPRINGER》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220029781A1 (en) * 2018-12-19 2022-01-27 Koninklijke Philips N.V. A circuit compiling device and circuit evaluation device
US11968290B2 (en) * 2018-12-19 2024-04-23 Koninklijke Philips N.V. Circuit compiling device and circuit evaluation device

Also Published As

Publication number Publication date
WO2016173882A1 (en) 2016-11-03
EP3289579B1 (en) 2021-03-10
JP2018515805A (ja) 2018-06-14
EP3289579A1 (en) 2018-03-07
US10685587B2 (en) 2020-06-16
CN107534550B (zh) 2020-09-11
JP6788610B2 (ja) 2020-11-25
US20180315350A1 (en) 2018-11-01

Similar Documents

Publication Publication Date Title
CN108352981B (zh) 被布置用于计算目标块加密的密码设备
Shen et al. SAT-based bit-flipping attack on logic encryptions
CN107690681B (zh) 用于集成电路数据路径保密性及其扩展的技术
CN107547189A (zh) 免受侧信道分析的保护方法和设备
RU2696334C1 (ru) Устройство и способ вычисления блочного шифра
JP7065888B6 (ja) 暗号装置及び方法
CN105406957B (zh) 保护密码设备对抗实现攻击
Merli et al. Protecting PUF error correction by codeword masking
CN105991292A (zh) 用于操作安全椭圆曲线密码系统的系统和方法
CN108141352A (zh) 密码设备和编码设备
CN105007256B (zh) 用于在非信任平台上执行安全功能的安全模块
CN107534550A (zh) 用于计算块密码的密码设备
CN105022937A (zh) 用于将白箱实现紧附到周围程序的接口兼容方式
CN105765896B (zh) 用于表格网络的迭代应用的计算设备
US20200097256A1 (en) A calculation device for encoded addition
CN113273131A (zh) 使用共享的份额的计算设备
CN108370311A (zh) 计算设备和方法
WO2021201780A1 (en) Method and system for white-box implementation of a stream cipher

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