CN107534550B - 密码设备、密码方法、计算设备和计算机可读存储介质 - Google Patents

密码设备、密码方法、计算设备和计算机可读存储介质 Download PDF

Info

Publication number
CN107534550B
CN107534550B CN201680025038.1A CN201680025038A CN107534550B CN 107534550 B CN107534550 B CN 107534550B CN 201680025038 A CN201680025038 A CN 201680025038A CN 107534550 B CN107534550 B CN 107534550B
Authority
CN
China
Prior art keywords
value
input
encoded
data
state
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
Application number
CN201680025038.1A
Other languages
English (en)
Other versions
CN107534550A (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 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 NV filed Critical Koninklijke Philips 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

Images

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
Figure 574642DEST_PATH_IMAGE001
第一编码输入
122 DTIP1
Figure 85258DEST_PATH_IMAGE002
第一数据输入
124 STIP1
Figure 409536DEST_PATH_IMAGE003
第一状态输入
130 ENC IP2
Figure 70324DEST_PATH_IMAGE004
第二编码输入
132 DTIP2
Figure 87959DEST_PATH_IMAGE005
编码第二数据输入
134 STIP2
Figure 176000DEST_PATH_IMAGE006
第二状态输入
140 RFU 轮函数单元
150 ENC OP
Figure 770930DEST_PATH_IMAGE007
编码输出
152 DTOP 编码输出150的数据值
154 STOP 编码输出150的状态值
160 OU1
Figure 235409DEST_PATH_IMAGE008
第一输出单元
162 BCO1 块密码输出106的第一部分
180 OU2
Figure 107550DEST_PATH_IMAGE009
第二输出单元
182 BCO2 块密码输出106的第二部分
190 ENU 编码器单元
210 ENC V 编码值
210.1, ..., 210.8 ENC.1 V, ..., ENC.8 V 编码子值
211 编码值
212 DT
Figure 366493DEST_PATH_IMAGE010
数据值
212.1, ..., 212.8 DT.1, ..., DT.8
Figure 199451DEST_PATH_IMAGE011
数据子值
214.1, ..., 214.8 ST.1, ..., ST.8
Figure 202042DEST_PATH_IMAGE012
状态子值
213 数据值
214 ST
Figure 928690DEST_PATH_IMAGE013
状态值
215 状态值
220 TRSF
Figure 952010DEST_PATH_IMAGE014
抗篡改移位函数
220.1 TRSF.1
Figure 459214DEST_PATH_IMAGE015
, 抗篡改移位子函数
222
Figure 937600DEST_PATH_IMAGE016
预期状态值
222.1
Figure 846650DEST_PATH_IMAGE016
预期状态子值
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
Figure 526024DEST_PATH_IMAGE017
内部抗篡改移位函数
322 预期状态值
324 SFTV 移位值
330 ADD 加法器
342 DTFUN
Figure 458208DEST_PATH_IMAGE018
数据轮函数单元
344 STFUN
Figure 802602DEST_PATH_IMAGE019
状态轮函数单元
420 TRSF1
Figure 628476DEST_PATH_IMAGE020
第一输出抗篡改移位函数
422 预期状态值
424 SFTV 移位值
430 ADD 加法器
440 输出解码
500 块密码
520 TRSF2
Figure 665702DEST_PATH_IMAGE021
第二输出抗篡改移位函数
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中,
Figure 819603DEST_PATH_IMAGE022
,使用48位轮密钥
Figure 967687DEST_PATH_IMAGE023
,其位是56个密钥位的(轮相关)子集。
DES轮函数f
Figure 398800DEST_PATH_IMAGE024
给出。在这里,P是32位的置换,以及E是扩展映射,其通过复制一半位来将长度32的位串映射到长度48的位串内。S盒S将长度48的位串映射到按组作用于6位子串上的长度32的位串内:
Figure 606927DEST_PATH_IMAGE025
其中每个S盒
Figure 248124DEST_PATH_IMAGE026
将长度6的位串映射到长度4的位串上,以及||表示级联。通过倒退(即从底部到顶部)来执行解密。逆轮函数由下式给出:
Figure 934320DEST_PATH_IMAGE027
因为DES使用只有56位的密钥,所以使得完全密钥空间搜索是可行的;然而,使用特别是在软件实现上的微分故障攻击的密钥恢复将更快几个数量级。三重-DES(Triple-DES)使用三个56位密钥
Figure 734786DEST_PATH_IMAGE028
,并通过首先用密钥
Figure 113815DEST_PATH_IMAGE029
执行DES加密,之后使用密钥
Figure 507887DEST_PATH_IMAGE030
的DES解密,之后使用密钥
Figure 732195DEST_PATH_IMAGE031
的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)是数据值
Figure 152548DEST_PATH_IMAGE032
, 212连同状态值
Figure 436899DEST_PATH_IMAGE033
, 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。编码子值是数据子值
Figure 318267DEST_PATH_IMAGE034
、212.1、...、212.7和212.8连同相应的状态子值
Figure 674162DEST_PATH_IMAGE035
、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接收第一编码输入
Figure 121324DEST_PATH_IMAGE036
120和第二编码输入130作为输入。
第一编码输入120对第一数据输入
Figure 514259DEST_PATH_IMAGE037
122和第一状态输入
Figure 679661DEST_PATH_IMAGE038
124编码。在图2.3中图示出第一编码输入120。例如,
Figure 324400DEST_PATH_IMAGE039
),其中
Figure 891648DEST_PATH_IMAGE040
表示编码。第二编码输入
Figure 455485DEST_PATH_IMAGE041
130对第二数据输入
Figure 108183DEST_PATH_IMAGE042
132和第二状态输入
Figure 805880DEST_PATH_IMAGE043
134编码。在图2.4中图示出第二编码输入130。例如,
Figure 962055DEST_PATH_IMAGE044
),其中
Figure 962372DEST_PATH_IMAGE045
表示编码。在实施例中,第一数据输入122表示值
Figure 836787DEST_PATH_IMAGE046
,以及第二数据输入132表示值
Figure 354487DEST_PATH_IMAGE047
。通常,实现DES的密码设备100的实施例可遵循图6.1的架构(在图6.1的数据值被表示为在密码设备的编码值中的数据值的意义上)。虽然这样的对应性是可能的并提供更容易的调试,但是这不是必须的。例如,在图6.1中的连续操作可例如使用部分评估来完全或部分地合并在密码设备100中。可得到第一和第二编码输入120、130作为第二到最后一个块密码轮116的输出。
轮函数单元140布置成接收对数据值132
Figure 568431DEST_PATH_IMAGE042
和数据值编码134
Figure 801966DEST_PATH_IMAGE043
编码的第二编码输入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设置为在编码值中的状态值(
Figure 225994DEST_PATH_IMAGE048
)和预期状态值(
Figure 203178DEST_PATH_IMAGE049
)之间的预期差来实现,例如
Figure 537207DEST_PATH_IMAGE050
;在状态值的范围内计算该差,例如对2的幂取模。可通过将随机双射h应用于该差来产生移位函数的其它示例,例如
Figure 676064DEST_PATH_IMAGE051
如果预期状态值独立于块密码的输入数据值,则预期状态值可合并在函数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所图示的。此外,防篡改移位函数可包括用于修改在编码值中的相应数据子值(
Figure 338121DEST_PATH_IMAGE052
)的防篡改移位子函数序列
Figure 853416DEST_PATH_IMAGE053
。在图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
Figure 41952DEST_PATH_IMAGE054
布置成接收第二编码输入130并将第一输出防篡改移位函数应用于第二编码输入,之后对数据值132解码以得到块密码输出106的第一部分162。
第二输出单元180
Figure 945186DEST_PATH_IMAGE055
布置成接收编码输出150并将第二输出防篡改移位函数应用于编码输出,之后对数据值152解码以得到块密码输出106的第二部分182。
在实施例中,第二输出防篡改移位函数包括用于修改编码值150中的相应数据子值的防篡改移位子函数的序列。当第二编码输入130的状态子值超过所有状态值时,第二输出防篡改移位函数的每个防篡改移位子函数采用所有数据值。发现这个特征提供对保护不受故障攻击的大贡献。
修改在编码输入值130中的编码子值的攻击者将发现在块密码输出的第二部分182中的不同输出。如果攻击者偶然地碰巧修改在编码输入值130中的编码子值,使得只有数据值而不是状态值被改变,则防篡改移位函数将不检测到这样的变化。注意,攻击者不能直接实施它,因为数据值和状态值一起被编码,然而攻击者可偶然实现它。例如在图2.2中,如果攻击者将11010110改变为01001111,则(在这个特定的情况中)只有数据值而不是状态值被改变。这样的偶然变化可沿着传统故障攻击的线路泄漏关于密钥的信息。然而,如果当第二编码输入130的状态子值超过所有状态值时,第二输出防篡改移位函数的防篡改移位子函数采用所有数据值,则对于攻击者而言变得难得多的是,认识到他偶然发现了只触及数据值而非状态值的修改。
例如,数据子值可以是
Figure 281489DEST_PATH_IMAGE056
位宽,状态子值是
Figure 334896DEST_PATH_IMAGE057
位宽,以及编码子值是
Figure 643517DEST_PATH_IMAGE058
位宽。当在编码输入130中的编码子值贯穿所有
Figure 199876DEST_PATH_IMAGE059
个编码值时,对于特定的数据子值和所有可能的状态子值,第二输出防篡改移位函数的数据值(例如加法器230.1的输出)贯穿所有
Figure 757896DEST_PATH_IMAGE060
个可能的数据值。在实施例中,
Figure 818256DEST_PATH_IMAGE061
。如果
Figure 106018DEST_PATH_IMAGE062
,则每个数据值对每个状态值出现一次。如果
Figure 23159DEST_PATH_IMAGE063
,则一些数据子值将更经常地出现,因为状态值贯穿它的范围;在实施例中,每个数据子值当第二编码输入的状态子值时在第二输出防篡改移位函数的每个防篡改移位子函数中出现确切地
Figure 271737DEST_PATH_IMAGE064
次。
在第一和第二输出单元中移除在块密码中使用来保护编码值的内容免受分析的编码。
在微分故障攻击中,攻击者对同一输入数据执行块密码两次,但在一次运行中修改第二编码输入值130。比较两次执行的输出提供关于在轮函数单元140中完成的处理的信息。在轮函数单元140中完成的处理是秘密的,因为它定义块密码的加密或解密(的部分),并因而提供关于轮密钥的信息。三个防篡改函数的战略性放置减小攻击者操作编码输入值130的可能性。
在实施例中,密码设备包括耦合到电子处理器的存储装置,存储装置存储实现至少轮函数单元以及第一和第二输出单元的数字表网络(
Figure 932526DEST_PATH_IMAGE065
)。处理器布置成在所述存储的表中执行表查找实现。
图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盒(
Figure 559947DEST_PATH_IMAGE066
, ...,
Figure 913568DEST_PATH_IMAGE067
)和如图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盒、置换和扩展矩阵。
实现相同扩散的可替换方案是将状态轮函数(
Figure 383864DEST_PATH_IMAGE068
)选择为
Figure 848343DEST_PATH_IMAGE069
其中
Figure 579539DEST_PATH_IMAGE070
是在状态值上的双射,以及
Figure 104061DEST_PATH_IMAGE071
其中如果在
Figure 327232DEST_PATH_IMAGE042
中的第j个数据值影响第i个S盒的输入,则
Figure 142873DEST_PATH_IMAGE072
=1,否则为0。这个结构迫使相等的扩散而不复制数据轮函数。秘密值
Figure 931837DEST_PATH_IMAGE073
——状态密钥——可如下合并在结构中:
Figure 564944DEST_PATH_IMAGE074
状态值
Figure 806569DEST_PATH_IMAGE075
可在状态轮函数344中作为编码密钥被接收。这允许为不同的应用定制白盒实现。
在实施例中,密码设备配置成接收连同数据密钥一起被编码的状态密钥。数据密钥可以是DES轮密钥,特别是最后一轮的轮密钥。例如,轮函数单元可配置成接收与块密码(例如DES等)的最后一轮密钥一起被编码的状态密钥
Figure 675168DEST_PATH_IMAGE076
注意,只要状态值不是非法地被修改,状态值就不影响数据值的计算。然而,如果状态值改变,则这将通过防篡改移位函数影响数据值。
图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)是数据值(
Figure 584218DEST_PATH_IMAGE077
, 212)连同状态值(
Figure 122647DEST_PATH_IMAGE048
, 214)一起的密码的和可逆的编码,密码设备包括配置成对块密码输入(108)的编码应用实现块密码的多轮(112, 114, 116, 118)密码处理的处理器(1120),其中编码值(210)包括编码子值(210.1, 210.2, ..., 210.8)序列,编码子值是数据子值(
Figure 195776DEST_PATH_IMAGE052
,212.1, 212.2, ..., 212.8)连同相应的状态子值(
Figure 540170DEST_PATH_IMAGE078
, 214.1, 214.2, ..., 214.8)一起密码地和可逆地编码成单个编码子值,
- 多轮的最后一轮(118)的输入包括对第一数据值(
Figure 241410DEST_PATH_IMAGE037
, 122)和第一状态值(
Figure 13057DEST_PATH_IMAGE038
, 124)编码的第一编码输入(
Figure 557170DEST_PATH_IMAGE039
), 120)以及对第二数据值(
Figure 705255DEST_PATH_IMAGE042
,132)和第二状态值(
Figure 261001DEST_PATH_IMAGE043
, 134)编码的第二编码输入(
Figure 469129DEST_PATH_IMAGE044
), 130),
- 处理器实现用于应用实现块密码的多轮密码处理的最后一轮(118)的轮函数单元(140; 300)和用于对编码输出数据(152)解码的第二输出单元(180),其中
- 轮函数单元(140)布置成接收第二编码输入(
Figure 254201DEST_PATH_IMAGE042
,
Figure 878080DEST_PATH_IMAGE043
, 130)并将(
Figure 350650DEST_PATH_IMAGE079
)应用内部防篡改移位函数(
Figure 791995DEST_PATH_IMAGE080
, 320)到第二编码输入(130)的数据值(132),之后密码轮函数(
Figure 982805DEST_PATH_IMAGE081
, 342, 344)作用于所述移位的第二编码值(130)的数据输入(132)和状态值(134)上以产生编码输出(
Figure 207113DEST_PATH_IMAGE082
,
Figure DEST_PATH_IMAGE083
, 150),防篡改移位函数(
Figure 81659DEST_PATH_IMAGE084
, 220)在编码值(210)中的状态值(
Figure 631590DEST_PATH_IMAGE048
, 214)不等于预期状态值(
Figure 247379DEST_PATH_IMAGE049
, 222)的情况下修改在编码值(210)中的数据值(
Figure DEST_PATH_IMAGE085
, 212)且否则不修改数据值(
Figure 603274DEST_PATH_IMAGE077
, 212),防篡改移位函数(
Figure 50435DEST_PATH_IMAGE084
, 220)包括用于修改在编码值中的相应数据子值(
Figure 708950DEST_PATH_IMAGE052
)的防篡改移位子函数(
Figure 874352DEST_PATH_IMAGE053
, 220.1)序列。
- 第二输出单元(
Figure 519091DEST_PATH_IMAGE055
, 180)布置成接收编码输出(
Figure 820759DEST_PATH_IMAGE086
, 150),并将第二输出防篡改移位函数(
Figure DEST_PATH_IMAGE087
, 520)应用于编码输出(
Figure 915754DEST_PATH_IMAGE086
, 150),之后对数据值(152)解码以得到块密码输出(106)的至少第二部分(182),当第二编码输入(
Figure 630770DEST_PATH_IMAGE041
, 130)的状态子值超过所有状态值时,第二输出防篡改移位函数(
Figure 571DEST_PATH_IMAGE088
)的每个防篡改移位子函数采用所有数据子值。
下面描述根据本发明的另外的示例实施例。
在“灰盒”情形中最容易描述微分故障攻击(DFA)。我们假设攻击者能够以某种方式(例如通过在正确的时刻在芯片上的正确位置处发射激光脉冲)来修改
Figure DEST_PATH_IMAGE089
,且他能够看到未知变化对输出
Figure 625587DEST_PATH_IMAGE090
的影响。通过波浪号表示改变的值,我们有:
Figure DEST_PATH_IMAGE091
Figure 766850DEST_PATH_IMAGE092
取最右边等式的按位异或,未知的
Figure DEST_PATH_IMAGE093
失去,以及使用最左边等式按照可观察的输出
Figure 844527DEST_PATH_IMAGE094
来表示不是直接可观察的
Figure DEST_PATH_IMAGE095
,我们发现:
Figure 814757DEST_PATH_IMAGE096
现在容易发现满足下式的所有48位密钥
Figure DEST_PATH_IMAGE097
Figure 166717DEST_PATH_IMAGE098
(1)
事实上,对于每个S盒
Figure 400252DEST_PATH_IMAGE099
,这个检查可以按每6位子密钥完成。一般,显著少于64个子密钥满足这个等式,且这组解取决于
Figure 699646DEST_PATH_IMAGE100
。一般,真实轮16密钥
Figure 411250DEST_PATH_IMAGE101
是对于所有可能的输入和变化满足等式(1)的唯一密钥,且其可以一般只使用少量输入和故障注入来找到它。
当取回
Figure 869914DEST_PATH_IMAGE102
时,56个相关密钥位中的48个是已知的,且可通过尝试所有256个可能的密钥来找到剩余位。如果攻击者可修改三重DES的加密和解密的最后一轮中的每个的输入,则他可能以类似的方式找到完整的密钥。
在白盒情形中,攻击者可检查并修改所有变量。特别是,他可修改
Figure 274350DEST_PATH_IMAGE103
并试验其所有值,并观察对结果的影响。因此他能够甚至比在灰盒情形中更快地恢复密钥。
实施例防范尝试
Figure 61040DEST_PATH_IMAGE104
的所有值的攻击者。这也将在灰盒情形中防范DFA攻击。实施例可使用下列项中的一个或多个:
1. 对于被称为值的一些或所有内部变量,被称为状态的辅助变量。在存储器中的数字是值和状态两者的编码。
2. 状态消除:(三重-)DES算法的输出应是加密密码文本的值而没有状态。这意味着实现应相应提供从
Figure 576335DEST_PATH_IMAGE105
Figure 640238DEST_PATH_IMAGE106
的编码(值,状态)对到它们的值的映射。有利地,这个映射并不简单地是编码函数的逆,因为这将允许攻击者完全除掉在完整的程序中的使用相同编码的所有状态变量。替代地,被表示为M的这个映射完成下式:
Figure 215575DEST_PATH_IMAGE107
在这里,E表示编码函数,而
Figure 755141DEST_PATH_IMAGE108
是从两个状态到值空间的映射,其将两个相等的输入映射到值空间中的零位串。也就是说,M返回当状态等于正确的状态时的值,并否则给它偏移。
3. 状态演进:函数M必须“知道”正确的状态。这暗示状态变量不能是随机的,但它们必须根据可由实施者选择且是攻击者未知的某个规则来演进。
4. 状态相关值演进:如果状态是正确的,值正常演进,但如果它是不正确的,则值得到偏移。在一些实施例中,这只在第16轮中被使用,但也可在多个或所有轮中被应用。
这些要素可以以使得基于等式(1)的故障注入攻击不起作用的方式组合。这提高目前技术水平:如果不使用第四要素,则可快速找到单独子密钥。
注释:值由
Figure 136444DEST_PATH_IMAGE109
表示,即
Figure 241803DEST_PATH_IMAGE110
以及
Figure DEST_PATH_IMAGE111
,以及状态由
Figure 191305DEST_PATH_IMAGE112
表示,且在程序中的每个变量可以用不同的方式被编码。已编码的LR变量,即在存储器中的数字由
Figure DEST_PATH_IMAGE113
Figure 827953DEST_PATH_IMAGE114
表示,所以我们有:
Figure DEST_PATH_IMAGE115
等。对于前15轮,我们让值根据DES规范来演进,即,
对于
Figure 153893DEST_PATH_IMAGE116
Figure DEST_PATH_IMAGE117
然而,对于最后一轮,Feistel的输入不是
Figure 441654DEST_PATH_IMAGE118
,但
Figure DEST_PATH_IMAGE119
,其中
Figure 640686DEST_PATH_IMAGE120
在此时是“正确的状态”。那意味着在最后一轮中我们有:
Figure DEST_PATH_IMAGE121
(2)。
因为
Figure 154844DEST_PATH_IMAGE122
根据Feistel来演进,让
Figure 815632DEST_PATH_IMAGE112
也根据Feistel来演进变得有意义。特别是,在最后一轮中,我们让它如下演进:
Figure DEST_PATH_IMAGE123
特别是,对某个函数g,正确的状态
Figure 957900DEST_PATH_IMAGE124
也必须以这种方式演进:
Figure DEST_PATH_IMAGE125
。下面导出g的有利特性。
使用Feistel演进,在最后8轮中的状态演进可被选择为在前8轮中的状态演进的逆,使得最终状态等于初始状态,这进而又是DES输入的简单函数。
现在我们转到用于消除状态的映射
Figure 514784DEST_PATH_IMAGE126
Figure DEST_PATH_IMAGE127
。我们使左和右输入由下式给出:
Figure 117236DEST_PATH_IMAGE128
Figure DEST_PATH_IMAGE129
通过将函数
Figure 519398DEST_PATH_IMAGE130
Figure DEST_PATH_IMAGE131
选择为相同的来简化计算。然后我们有:
Figure 781752DEST_PATH_IMAGE132
以及从等式(2)以及
Figure DEST_PATH_IMAGE133
Figure 509537DEST_PATH_IMAGE134
演进中,其遵循:
Figure DEST_PATH_IMAGE135
现在我们考虑修改
Figure 342495DEST_PATH_IMAGE136
的攻击者。在未修改的系统中,到处都存在
Figure 548348DEST_PATH_IMAGE137
,所以
Figure 337313DEST_PATH_IMAGE138
,以及
Figure 95053DEST_PATH_IMAGE139
在已修改的系统中,它可以是
Figure 539941DEST_PATH_IMAGE140
,所以他将发现:
Figure DEST_PATH_IMAGE141
将这两个等式进行异或,我们得到:
Figure 424851DEST_PATH_IMAGE142
现在比较此与实际攻击:攻击者试图找到对方程(1)的解,方程(1)按照输出变量写作:
Figure DEST_PATH_IMAGE143
如果变化是使得偏移
Figure 271585DEST_PATH_IMAGE144
,则
Figure DEST_PATH_IMAGE145
解出了这个等式,但如果偏移是非零的,则
Figure 465806DEST_PATH_IMAGE146
不是解。事实上,对于任何K,我们可找到偏移,使得K是解,即
Offset(偏移)
Figure DEST_PATH_IMAGE147
当每个S盒输出四位(又称为半字节(nibble))时,对编码的最自然的选择是让每个
Figure 397990DEST_PATH_IMAGE148
Figure DEST_PATH_IMAGE149
每半字节被编码,即
Figure 86591DEST_PATH_IMAGE150
Figure DEST_PATH_IMAGE151
是8个编码半字节的序列,且每个编码半字节是半字节值和半字节状态的独立编码。半字节值是四位,我们将半字节状态选择为k倍大,即4k位。因此编码半字节是(
Figure 53410DEST_PATH_IMAGE152
)位串。
在实施例中,我们选择
Figure DEST_PATH_IMAGE153
。我们应在下面评论这个选择的限制和对DFA攻击的含意。
我们现在描述攻击,其中攻击者试图确定单个S盒的6位子密钥,即对第i个S盒
Figure 152953DEST_PATH_IMAGE154
的子密钥
Figure DEST_PATH_IMAGE155
(白盒)攻击者可改变
Figure 838012DEST_PATH_IMAGE156
中的编码半字节,但他不知道哪个编码被使用。因此我们假设对于8个编码半字节中的每个,攻击者执行
Figure DEST_PATH_IMAGE157
个不同的扰动,且对于每个扰动找到哪些6位子密钥
Figure 61796DEST_PATH_IMAGE158
(从现在起,
Figure DEST_PATH_IMAGE159
代表在最后一轮中的第i个6位子密钥,而不是代表第i个56位轮密钥)解出
Figure 883121DEST_PATH_IMAGE160
(3)
其中下标i指示采用第i个半字节、S盒或位六位字节。等式3等效于:
Figure DEST_PATH_IMAGE161
Figure 153566DEST_PATH_IMAGE162
(4)
我们想要确保攻击者没有从此学到任何东西。
如果攻击者应从未在他没有预期变化的位置处看到变化,则将是有利的:因为如果他看到这样的变化,他将断定它不与DES兼容,且他可在分析中简单地忽略它。
所有变化与某些密钥一致也将是有利的,但没有密钥应是优选的。我们通过确保下面的情况来完成此:对于它保持的每个j,如果攻击者执行
Figure DEST_PATH_IMAGE163
的第j个编码半字节的
Figure 60342DEST_PATH_IMAGE164
个扰动,并从等式3中发现不与这些变化中的每个变化一致的密钥,则他有效地对
Figure DEST_PATH_IMAGE165
的所有16个值解出等式4,并因此找到所有64个可能的子密钥。特别是,对于
Figure 90746DEST_PATH_IMAGE166
的第j个半字节的15个变化,其中
Figure DEST_PATH_IMAGE167
改变,即
Figure 766578DEST_PATH_IMAGE168
,以及
Figure DEST_PATH_IMAGE169
保持不变,即
Figure 348869DEST_PATH_IMAGE170
,它将保持
Figure DEST_PATH_IMAGE171
且因此
Figure 742941DEST_PATH_IMAGE172
。对于这些扰动,真实密钥
Figure 232828DEST_PATH_IMAGE173
是解。对于其它扰动,其它密钥(且不是真实密钥)应表现为解。
在实施例中,
Figure 638533DEST_PATH_IMAGE174
和函数
Figure 391725DEST_PATH_IMAGE175
的演进设计成使得下面的条件成立:
1. 在最后一轮的
Figure 804252DEST_PATH_IMAGE174
演进中,只有右半字节(如下来自E的结构)被影响。
2.必须选择
Figure 160147DEST_PATH_IMAGE176
,使得当
Figure 607309DEST_PATH_IMAGE177
超过所有
Figure DEST_PATH_IMAGE178
个可能的值时,
Figure 531402DEST_PATH_IMAGE179
采用所有
Figure 512784DEST_PATH_IMAGE178
个可能的4位值。
Figure DEST_PATH_IMAGE180
时,对于任何32位“
Figure 813315DEST_PATH_IMAGE174
”密钥
Figure 177300DEST_PATH_IMAGE181
,这些要求被满足,其中
Figure DEST_PATH_IMAGE182
是在长度4的位串上的任意双射,以及
Figure 272295DEST_PATH_IMAGE183
其中,如果
Figure DEST_PATH_IMAGE184
的第j个半字节影响第i个S盒的输入,则
Figure 659414DEST_PATH_IMAGE185
,否则以及当
Figure DEST_PATH_IMAGE186
时为0。
可省略密钥
Figure 373423DEST_PATH_IMAGE187
。对防篡改移位函数
Figure DEST_PATH_IMAGE188
的其它选择是可能的。
使用这些示例选择,DFA未能给出关于单个子密钥的信息。如果选择半字节j和S盒i,使得在DES中在半字节j中的变化不影响
Figure 404964DEST_PATH_IMAGE189
的输入,则在输出半字节中没有变化,且任何密钥解出(3)。如果它确实影响,每个
Figure DEST_PATH_IMAGE190
对15个扰动解出(3).
注意,在DES的可替换实现中,置换P从S盒后面移动到扩展E之前。这个防御也在这个实现中工作而有较小的修改。
可通过选择
Figure 670861DEST_PATH_IMAGE191
来抵御更有能力的攻击者。在上面,攻击者被假设一次以一个子密钥为目标。可通过确保
Figure DEST_PATH_IMAGE192
的单个半字节的
Figure 748538DEST_PATH_IMAGE174
中的变化将导致修改的S盒输出来抵抗这个攻击,使得所有可能的输出对所有被影响的S盒出现。
然而通过这么做,在不同的被影响的S盒的输出中的变化是相关的,因为它们取决于相同的
Figure 859714DEST_PATH_IMAGE174
位,且这可在攻击中被利用,其中同时搜索多个子密钥,比如m个子密钥。这样的攻击需要保持
Figure 211673DEST_PATH_IMAGE193
子密钥组合的分数。为了有足够的空间来允许在m个不同的S盒输出中的不相关的变化,可选择
Figure DEST_PATH_IMAGE194
,使得足够的
Figure 648471DEST_PATH_IMAGE174
位是可用的。
图7示意性示出用于计算块密码700的方法的实施例的示例。
密码方法对块密码输入(105)计算块密码(500)并产生块密码输出(106),所述块密码计算对编码值(210)操作,编码值(210)是数据值(
Figure 10182DEST_PATH_IMAGE195
, 212)连同状态值(
Figure 49682DEST_PATH_IMAGE174
, 214)一起的密码的和可逆的编码。
方法700包括:
- 对块密码输入(108)的编码应用710(AMR)实现块密码的多轮(112, 114, 116,118)密码处理,例如,这可由处理器或因此布置的其它硬件完成,
- 应用720(AFR)实现块密码的多轮密码处理的最后一轮(118),多轮的最后一轮(118)的输入包括对第一数据输入(
Figure 446028DEST_PATH_IMAGE037
, 122)和第一状态输入(
Figure 788148DEST_PATH_IMAGE038
, 124)编码的第一编码输入(
Figure 371576DEST_PATH_IMAGE039
), 120)以及对第二数据输入(
Figure 965499DEST_PATH_IMAGE042
, 132)和第二状态输入(
Figure 216352DEST_PATH_IMAGE043
,134)编码的第二编码输入(
Figure 729373DEST_PATH_IMAGE044
), 130),
例如,最后一轮可包括:
- 将(
Figure 127993DEST_PATH_IMAGE079
)应用722(AITRSF)内部防篡改移位函数(
Figure 446979DEST_PATH_IMAGE080
,320)到第二编码输入(130)的数据值(132),防篡改移位函数(
Figure 490022DEST_PATH_IMAGE084
, 220)在编码值(210)中的状态值(
Figure 236261DEST_PATH_IMAGE048
, 214)不等于预期状态值(
Figure 872910DEST_PATH_IMAGE049
, 222)的情况下修改在编码值(210)中的数据值(
Figure 198849DEST_PATH_IMAGE085
, 212)且否则不修改数据值(
Figure 486611DEST_PATH_IMAGE077
, 212),以及
- 应用724(ACRF)作用于所述移位的第二编码输入(130)的数据输入(132)和状态输入(134)上的密码轮函数(
Figure 403751DEST_PATH_IMAGE081
, 342, 344)以产生编码输出(
Figure 386751DEST_PATH_IMAGE082
,
Figure 47539DEST_PATH_IMAGE083
, 150),该方法的输出可由两个输出生成应用生成。这些可以按任一顺序执行。
- 将第一输出防篡改移位函数(
Figure DEST_PATH_IMAGE196
, 420)应用732(ATRSF1)于第二编码输入(
Figure 206119DEST_PATH_IMAGE042
,
Figure 231844DEST_PATH_IMAGE043
, 130),之后对数据值(132)解码734(DEC1)以得到块密码输出(106)的第一部分(162),
- 将第二输出防篡改移位函数(
Figure 92352DEST_PATH_IMAGE087
, 520)应用742(ATRSF2)于编码输出(
Figure 556832DEST_PATH_IMAGE086
, 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 (17)

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.如前述权利要求1-3中的任一项所述的密码设备,其中所述轮函数单元(140)布置成将数据轮函数应用于所述移位数据值并将状态轮函数应用于所述第二编码输入(130)的所述第二状态输入(134)。
6.如前述权利要求1-3中的任一项所述的密码设备,其中所述轮函数单元的编码输入(130)和输出(150)的数据值(132,152)的轮函数单元(140)的扩散与所述轮函数单元的编码输入(130)和输出(150)的状态值(134,154)上的所述轮函数单元的扩散相同。
7.如在前述权利要求1-3中的任一项中所述的密码设备,其中所述块密码具有Feistel结构。
8.如在前述权利要求1-3中的任一项中所述的密码设备,其中对所述编码块密码输入中的所述状态值的计算是Feistel结构。
9.如在权利要求7所述的密码设备,其中所述块密码是DES或三重Des。
10.如在权利要求8所述的密码设备,其中所述块密码是DES或三重Des。
11.如在权利要求9所述的密码设备,其中所述轮函数单元(140)布置成将数据轮函数应用于所述移位数据值并将状态轮函数应用于所述第二编码输入(130)的所述第二状态输入(134),其中所述状态轮函数是:
Figure DEST_PATH_IMAGE001
其中
Figure DEST_PATH_IMAGE002
是在状态值上的双射,以及
Figure DEST_PATH_IMAGE003
其中如果在
Figure DEST_PATH_IMAGE004
中的第j个数据值影响第i个S盒的输入,则
Figure DEST_PATH_IMAGE005
,否则为0,或
Figure DEST_PATH_IMAGE006
其中是
Figure DEST_PATH_IMAGE007
状态密钥,
Figure DEST_PATH_IMAGE008
是状态值。
12.如在前述权利要求1-3中的任一项中所述的密码设备,其中防篡改移位函数通过将在所述编码值中的所述状态值和预期状态值之间的差加到所述数据值来修改在所述编码值中的所述数据值。
13.如在前述权利要求1-3中的任一项中所述的密码设备,其中所述内部防篡改移位函数和所述第一输出防篡改移位函数和所述第二输出防篡改移位函数是相同的函数。
14.如在前述权利要求1-3中的任一项中所述的密码设备,其中状态值和数据值具有位大小,状态值的位大小是数据值的位大小的倍数。
15.一种用于对块密码输入(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)。
16.一种计算设备,包括:
计算机可读存储介质,其被配置为在其上存储计算机可执行指令,
处理器,其被配置为执行所述计算机可执行指令,以实现如权利要求15所述的方法。
17.一种其上存储计算机可执行指令的计算机可读存储介质,所述指令当由计算设备执行时,使得所述计算设备实现如权利要求15所述的方法。
CN201680025038.1A 2015-04-30 2016-04-19 密码设备、密码方法、计算设备和计算机可读存储介质 Active CN107534550B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15166051 2015-04-30
EP15166051.1 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 CN107534550A (zh) 2018-01-02
CN107534550B true 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)

Families Citing this family (3)

* 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
EP3672139A1 (en) * 2018-12-19 2020-06-24 Koninklijke Philips N.V. A circuit compiling device and circuit evaluation device
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
US8850232B2 (en) 2008-03-19 2014-09-30 Freescale Semiconductor, Inc. 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
US10127390B2 (en) * 2013-03-27 2018-11-13 Irdeto B.V. Tamper resistant cryptographic algorithm implementation
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
A white-box DES implementation for DRM applications;CHOW S ET AL;《Springer》;20030101;1-15 *

Also Published As

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

Similar Documents

Publication Publication Date Title
US11362802B2 (en) Cryptographic device arranged to compute a target block cipher
US10790962B2 (en) Device and method to compute a block cipher
JP7065888B6 (ja) 暗号装置及び方法
JP5861018B1 (ja) テーブルネットワークによって構成されたコンピューティングデバイス
JP7123959B2 (ja) 楕円曲線点乗算デバイス及び方法
CN106487497B (zh) 对rijndael算法的dpa保护
CN108141352B (zh) 密码设备、方法、装置和计算机可读介质和编码设备、方法、装置和计算机可读介质
WO2006038104A1 (en) Method and apparatus for generating cryptographic sets of instructions automatically and code generation
CN109726565B (zh) 在抗泄漏原语中使用白盒
CN107534550B (zh) 密码设备、密码方法、计算设备和计算机可读存储介质
JP2007174024A (ja) 暗号処理装置
RU2708439C1 (ru) Вычислительное устройство и способ
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