CN107547189A - 免受侧信道分析的保护方法和设备 - Google Patents

免受侧信道分析的保护方法和设备 Download PDF

Info

Publication number
CN107547189A
CN107547189A CN201710499289.XA CN201710499289A CN107547189A CN 107547189 A CN107547189 A CN 107547189A CN 201710499289 A CN201710499289 A CN 201710499289A CN 107547189 A CN107547189 A CN 107547189A
Authority
CN
China
Prior art keywords
data
output
input
byte
row
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
Application number
CN201710499289.XA
Other languages
English (en)
Inventor
A·武尔科尔
H·西博尔德德拉克鲁伊
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.)
Echal Co
EshardSAS
Original Assignee
Echal Co
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
Priority claimed from EP16176718.1A external-priority patent/EP3264396B1/en
Priority claimed from EP16176716.5A external-priority patent/EP3264666B1/en
Priority claimed from EP16176717.3A external-priority patent/EP3264667B1/en
Priority claimed from EP16176721.5A external-priority patent/EP3264668B1/en
Priority claimed from EP16176719.9A external-priority patent/EP3264397B1/en
Application filed by Echal Co filed Critical Echal Co
Publication of CN107547189A publication Critical patent/CN107547189A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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
    • 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/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/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/04Masking or blinding
    • 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/08Randomization, e.g. dummy operations or using noise
    • 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/12Details relating to cryptographic hardware or logic circuitry

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)

Abstract

本发明涉及一种免受侧信道分析的保护方法和设备。本发明涉及一种用于由电路执行将第一和第二输入数据相组合并提供相同大小的输出数据的运算的方法,所述方法包括:从所述第一输入数据生成第一输入集,所述第一输入集包括与所述第一数据的大小有关的所有可能数据;从所述第二输入数据生成第二输入集,所述第二输入集包括与所述第二数据的大小有关的所有可能数据;将所述运算应用于每个数据对,所述数据对包括所述第一输入集的数据和所述第二输入集的数据,所述运算的输出集包括由将所述运算应用于每个所述数据对而产生的数据。

Description

免受侧信道分析的保护方法和设备
技术领域
本发明涉及一种用于使电路或程序免受旨在发现由所述电路或程序处理的机密数据的值(特别是由加密或解密算法用于变换消息的私钥)的侧信道分析的方法和设备。
本发明特别涉及实现诸如AES(高级加密标准)之类的密码算法的智能卡集成电路或集成到计算机和其它电子和IT设备(USB驱动器、电视解码器、游戏控制台等)的母板上的硬件加密组件。本发明还涉及实现这种算法的程序,该程序用于在安全或不安全的环境中执行。
更一般地说,本发明涉及实现组合了需要隐藏的两个数据的运算的电路和软件。
背景技术
实现密码算法的电路可以包括中央处理单元(CPU),并且可能包括专用于密码计算的电路,例如密码协处理器。这些电路可以包括根据所执行的运算以不同的方式切换的数千个逻辑门。这些切换操作在电流消耗上产生短暂变化(例如几纳秒),并且这些变化可以被测量。具体而言,CMOS型集成电路包括在切换时(即,当逻辑节点将其状态变为1或0时)才消耗电流的逻辑门。因此,电流消耗取决于中央处理单元所处理的数据及其各种外围设备(存储器、在数据或地址总线上流动的数据、密码协处理器等)。
此外,使用加密或模糊技术(例如白盒密码技术)的某些软件程序可以以非常难以通过逆向工程确定的方式来集成机密数据。某些软件程序还可以通过安全通信通道从外部接收机密数据。
基于观察这些电路的电流消耗、或它们的磁或电磁辐射时,这些电路可能会受到所谓的侧信道分析攻击。此类攻击旨在发现机密数据,特别是加密密钥。当前侧信道攻击实施诸如SPA(“单功耗分析”)、DPA(“差分功耗分析”)、CPA(“相关功耗分析”)或EMA(“电磁分析”)之类的统计分析方法。SPA分析(参考文献[1])通常只需要获取单个电流消耗踪迹。其目的是通过观察对应于密码计算的消耗踪迹的一部分来获得关于集成电路的活动的信息,因为当前踪迹根据所执行的运算和所处理的数据而变化。
软件在被电路执行期间也可能经历这种侧信道攻击。
DPA(参考文献[2])和CPA分析使得能够通过获取大量电路消耗踪迹并通过对这些踪迹进行统计分析以查找目标信息来找到加密算法的密钥。它们基于这样的前提:即,当寄存器中或总线上的位从0变为1时,CMOS型集成电路的消耗发生变化,以及当位保持等于0、保持等于1或从1变为0(MOS晶体管的寄生电容的放电)时,消耗不发生变化。或者,可以认为当位从0变为1或从1变为0,CMOS型集成电路的消耗变化,并且当位保持等于0或保持等于1时,CMOS型集成电路的消耗不变。该第二假设使得能够使用常规的“汉明距离”或“汉明权重”函数来开发不需要知道集成电路的结构即可应用的消耗模型。DPA分析涉及通过对大量消耗踪迹的统计处理来放大该消耗差异,目的在于突出根据公式假设区分的两个消耗踪迹族之间的测量差异。
CPA分析(参考文献[3])基于线性电流消耗模型,并且涉及计算首先所测量的形成所捕获的消耗踪迹的消耗点与其次根据线性消耗模型和有关由微电路处理的待发现的数据以及有关加密密钥的值的假设而计算出的推定消耗值之间的相关系数。
电磁分析(EMA)基于如下原理:即,集成电路可以以近场或远场电磁辐射的形式发送信息。假设晶体管和连接它们的电线在其状态改变时发射电磁信号,则可以通过诸如SPA、DPA和CPA分析中的一种或其它分析,像电流消耗变化信号那样处理这些信号。此分析的一个应用实例由Jean-Jacques Quisquater(参考文献[4])在2001年做出。
存在其它侧信道分析,例如“模板分析”(参考文献[5])和“交互信息分析”(MIA)(参考文献[6])。所有上述分析都基于所有被分析的踪迹的时间对准。换言之,在给定时间(例如从命令的执行被电路激活的时间)执行的所有测量都必须对应于由算法处理的相同数据。
由申请人于2016年2月22日提交的专利申请N°FR16 51443公开了一种用于在电路连续地对不同的输入数据执行运算时分析代表电路活动的踪迹的方法。此方法包括提取每个踪迹的一部分,并且通过对出现在这些踪迹的每个提取部分中的每个可能值的出现次数进行计数,根据每个提取的踪迹部分生成直方图。然后通过对每个输入数据和运算中涉及的密钥的一部分的每个可能值应用运算来计算运算的部分结果。然后,此方法针对密钥的每个可能的部分值,识别提供相同部分结果的所有输入数据。对于密钥的每个可能的部分值,然后将直方图中与识别的输入数据和密钥的部分值对应的出现次数进行相加。密钥的一部分可以通过对相加的出现次数进行统计分析来确定。统计分析假设如果与密钥相关的值已经在所提取的踪迹部分中泄露,则可以通过相加的出现次数突显它。
可能期望提出一种使集成电路或软件程序免受这些侧信道分析中的一种或多种的保护。
发明内容
描述一种用于由电路执行用以将第一输入数据与第二输入数据相组合的运算的方法。所述方法可以包括:定义数据对,由此将第一输入集的每个数据与第二输入集的每个数据相关联,所述第一输入集包括所述第一输入数据,所述第一集中的每个数据包括至少一个字,所述第一输入集中的字具有相同大小并形成第一字子集,所述第一字子集包括来自所述第一输入集的每个数据的单个字并且包括的所述字的所有可能值的出现次数相同,所述第二输入集包括所述第二输入数据,所述第二输入集中的每个数据包括至少一个字,所述第二输入集中的字具有相同大小并形成第二字子集,所述第二字子集包括来自所述第二输入集的每个数据的单个字并且包括的所述字的所有可能值的出现次数相同;以及将所述运算应用于每个所述数据对,所述运算的输出集包括由将所述运算应用于一个所述数据对而产生的所有数据。由将所述运算应用于所述第一和第二输入数据而产生的输出数据可以在所述输出集中具有从所述电路可知的位置。
根据一个实施例,所述输出集中的数据以行和列来布置,一个行或列的数据由将所述运算应用于所述第一和第二输入集中的一者的同一数据以及应用于所述第一和第二输入集中的另一者中的每个数据而产生,所述方法包括选择所述输出集的包含输出数据的行或列。
根据一个实施例,所述输出集被写入包括两个数据行的存储区域中,所述两个数据行中的一者包括由将所述运算应用于所述第一输入数据和应用于所述第二输入集中的每个数据而产生的输出数据,或者由将所述运算应用于所述第二输入数据和应用于所述第一输入集中的每个数据而产生的输出数据。
根据一个实施例,所述输出集的所述行或列被随机地或交替地写入所述存储区域的所述行中,并且当在已知位置处包括所述输出数据的输出数据行或列被写入所述存储区域的一个行中时,所述存储区域的另一个行接收随后计算的所述输出集的所有所述输出数据,所述方法包括选择所述存储区域的包含预期输出数据的行作为所述运算的输出,或者除了被写入所述存储区域的另一个行中的所述输出集的一个行或列以外,所述输出集的所述行或列通过异或运算被与写入所述存储区域的一个行中的先前数据相组合,当所述存储区域的两个行不相同时检测到错误。
根据一个实施例,所述运算是异或。
根据一个实施例,以随机顺序执行所述输出集中的数据的计算。
根据一个实施例,所述方法包括在所述输出集的列或行中检测出现次数不同于所述输出集中的其它数据的出现次数的数据,当在所述输出集的列或行中发现具有不同出现次数的两个数据时,检测到错误。
根据一个实施例,在所述输出集的行或列中检测两个相同数据包括通过异或运算组合所述输出集的所述行或列中的所有数据,以及将异或运算的结果与0进行比较。
根据一个实施例,通过由异或运算将所述第一输入数据与位数和所述第一输入值的位数相同的掩码的每个可能值相组合一次来生成所述第一输入集。
根据一个实施例,所述方法包括:串接所述第一输入集的一定数量的数据以生成第一输入字,串接所述第二输入集的相同数量的数据以生成第二输入字,以及将所述运算应用于所述第一和第二输入字。
各实施例还可以涉及一种用于对输入数据进行加密或解密的方法,所述方法包括:将异或运算应用于所述输入数据的每个字节和应用于从私钥导出的密钥的对应字节,并且针对所述输入数据的每个字节提供输出字节的第一输出集,所述第一输出集包括的字节的所有可能值的出现次数相同,所述字节包括应用于所述输入数据的字节的所述运算的结果;将替换运算应用于每个第一输出集的每个字节,包括根据所述第一输出集中的所述字节来选择替换表中的字节,并且针对每个第一输出集提供第二输出集,所述第二输出集包括根据所述第一输出集中的字节在所述替换表中选择的所有字节;以及向所述第二输出集应用置换运算,包括通过异或运算将所述第二输出集的字节或多重的所述第二输出集的字节相组合在一起,所述异或运算根据以上定义的方法被执行。
根据一个实施例,生成所述第一输出集,方式为:通过由异或运算将所述输入数据的字节与掩码字节的所有可能值组合一次,并且通过由异或运算将所导出的密钥的每个字节与所述输入集中的一个对应输入集的每个字节组合,针对所述输入数据的每个字节生成输入集;或者通过由异或运算将所导出的密钥的字节与所述掩码字节的所有可能值组合一次,并且通过由异或运算将所述输入数据的每个字节与所述密钥集中的一个对应密钥集的每个字节组合,针对所导出的密钥的每个字节生成密钥集;或者由异或运算将所述输入数据的每个字节与所导出的密钥的对应字节组合以生成输出字节,以及通过由异或运算将每个输出字节与所述掩码字节的所有可能值组合一次。
各实施例还可以涉及一种电路,其包括处理器并被配置为实现以上定义的方法。
根据一个实施例,所述电路包括协处理器。
各实施例还可以涉及一种设备,其包括布置在介质上的如以上定义的电路。
各实施例还可以涉及一种计算机程序产品,其可加载到计算机存储器中并包括代码部分,当由计算机执行时,所述代码部分配置所述计算机以执行以上定义的方法的步骤。
附图说明
通过参考下面的附图和说明书,可以更好地理解上述方法和/或设备。非限制且非穷举的说明书借助以下附图进行描述。在附图中,相同的参考标号可以指不同附图当中的相同部分,除非另有所指,这些附图是:
图1表示安全电路的常规架构;
图2表示根据一个实施例的运算的步骤,包括保护步骤;
图3是示出根据一个实施例的保护步骤的框图;
图4到6是示出根据不同实施例的其它保护步骤的框图;
图7是根据一个实施例的包括保护步骤的AES加密算法的框图;
图8是AES加密算法中的混合列运算的框图;
图9是根据一个实施例的包括保护步骤的AES加密算法中的混合列运算的框图;
图10表示根据一个实施例的安全电路。
具体实施方式
作为一个实例,图1表示安全集成电路CT,该集成电路例如布置在诸如塑料卡或任何其它介质的便携式介质HD上,或者布置在诸如移动终端的终端中。所述集成电路包括微处理器PRC、输入/输出电路IOC,通过数据和地址总线耦合到微处理器的存储器M1、M2、M3以及可选地包括加密计算协处理器CP1或算术加速器,以及随机数发生器RGN。存储器可以包括易失性存储器M1,例如包含易失性应用数据的RAM型(“随机存取存储器”)存储器;非易失性存储器M2,例如包含非易失性数据和应用程序的EEPROM或闪存;以及可能只读存储器M3(或ROM存储器),其包含微处理器的操作系统。操作系统还可以存储在非易失性存储器中。
通信接口电路IOC可以是例如根据ISO/IEC 7816标准的接触型电路,例如根据ISO/IEC 14443A/B或ISO/IEC 13693标准的具有感应耦合的非接触型电路,借助电耦合的非接触型电路(UHF接口电路),或同时为接触型和非接触型电路。接口电路IOC还可以通过特定接口耦合到诸如NFC控制器的另一电路,或者诸如移动终端或连接对象的终端的主电路。
在某些实施例中,集成电路CT可以被配置为借助加密功能执行对发送给它的消息进行加密、解密或签名的操作。该加密功能可以由电路CT的处理器PRC执行,或者部分地或完全地由处理器PRC的协处理器CP1执行。
本文提出使运算(例如,可以是密码算法的一部分的运算)免受侧信道分析。在此上下文中,运算接收输入数据,并且根据输入数据的值提供输出数据。根据一个实施例的保护涉及针对数据输入集的所有数据执行要保护的运算,输入集中的每个数据包括至少一个字,输入集中的字具有相同大小并形成字子集,所述字子集包括的一个字的所有可能值的出现次数相同,所述出现次数与字大小有关。因此,输入集包括需要由运算处理的输入数据。另一种保护涉及提供数据输出集作为运算的结果,其中每个数据包括至少一个字,输出集中的字具有相同大小并形成字子集,所述字子集包括的一个字的所有可能值的出现次数相同,所述出现次数与字大小有关。
可以通过由逻辑XOR(异或)运算将所需输入数据X与掩码Mi组合来获得输入数据集,掩码Mi包括例如等于i的值,其表示具有一个字节的所有可能值(在0与255之间)的字节。因此,如果输入数据X的大小为一个字节,则输入数据集包括等于X⊕Mi的256个数据,其中Mi=0到255,并且所需输入数据X=XVn=X⊕Mn,且Mn=0(“⊕”表示应用于字节的XOR运算符)。当在一个字节上对输入数据进行编码时,可以根据一个实施例,通过将运算应用于输入集中的所有数据来保护该运算,该输入集包括数据XVi=X⊕Mi,且i=0到255,即,大小为一个字节的所有可能数据。可以以随机顺序执行输出集中的输出数据的计算。为此,可以以随机顺序布置输入集中的数据。
与现有技术的保护不同(现有技术涉及在应用于随机数据的大量相同运算中隐藏要保护的运算,因此与要保护的运算的所需输入数据不相关),本文的理念是针对不是随机选择的其它数据执行运算。实际上,这种其它数据在这样的程度上与所需输入数据相关:由这种其它数据和要处理的所需数据形成的输入集使得该输入集中的每个数据包括至少一个字,该输入集中的字具有相同大小并形成字子集或列,该字子集或列包括来自输入集中的每个数据的单个字并且包括的一个字的所有可能值的出现次数相同,所述出现次数与字大小有关。在下面,“字”指定数据中的一组位,并且“字列”指定数据集中包括来自该数据集中的所有数据的单个字的子集,字列中的所有字具有相同大小。形成字列的字不必对准,即,不必包括数据集的数据中的相同位位置。要由所述运算处理的输入数据可能在输入集中具有不可预测的位置,但执行所述运算的电路知晓该位置。
图2表示根据一个实施例的用于计算涉及机密数据KY的要保护的运算OPR的方法的步骤S11到S17。首先连续地执行步骤S11到S16。在步骤S11,变量RN接收0与最大值W-1之间的随机值,最大值W-1根据用于以二进制码对该变量进行编码的位数所限定的大小来确定。因此,对于在b位上编码的变量RN,最大值W等于2b。如果变量RN在8位上编码,则值W等于256,并且如果变量RN在16位上编码,则值W等于65536。在步骤S12,将索引i设定为0。在步骤S13,通过由XOR运算将索引i与变量RN组合来计算变量IRN(=i⊕RN)。在步骤S14,通过将上面定义的运算OPR应用于输入数据X和应用于机密数据KY来计算由结果表PR中的索引i指定的一个输出数据PR[i]。根据一个实施例,机密数据KY在此例如通过XOR运算被与变量IRN组合:
PR[i]=OPR(X,KY⊕IRN) (1)
备选地,变量IRN可以与输入数据X组合:
PR[i]=OPR(X⊕IRN,KY) (2)
或者与运算OPR的结果组合:
PR[i]=OPR(X,KY)⊕IRN (3)
在步骤S15,将索引i递增一(1)。在步骤S16,将索引i与最大值W进行比较,如果它小于值W,则在步骤S13到S16执行计算的新迭代。在相反的情况下,执行步骤S17。在步骤S17,提供表PR作为运算OPR的结果,预期输出数据在表PR中索引i=n处,索引n具有值以使得变量IRN=n⊕RN=0,即,n=RN,前提是在步骤S14与值IRN的组合运算是XOR运算。实际上,应用于数据D和0的XOR运算的结果不变换数据D。
应该注意,变量IRN的值可以以随机顺序被处理,不一定以从0⊕RN到(W-1)⊕RN的顺序被处理。此外,在步骤S17,仅在向输出表PR中的数据应用其它运算之后,才可以提取表PR中的预期输出数据OPR(X,KY)。在这种情况下,存储在表PR中的所有数据可以由此类其它运算处理。因此,在AES算法的实例中,运算OPR例如是将要加密的输入数据与在第一轮算法中使用的第一导出密钥相组合的异或运算。可以针对存储在表PR中的所有数据执行AES算法的后续运算,并且将这些运算的连续结果存储在表PR中。因此,移动行的运算可以被应用于表PR的每个元素。可以在处理中的随后步骤从结果表PR中提取预期输出数据。
此外,在具有相同位数的相应二进制字上对输入数据X和机密数据KY进行编码。赋予变量IRN的每个值具有与数据X和KY相同的位数。如果数据X和KY在一个字节(8位字)上编码,则变量IRN也在8位上编码。必须在步骤S13到S16之间执行的迭代次数W等于2b,b是数据M和X的位数的大小。如果数据M和X在16、32或64位的一个字上编码,则可能需要限制该迭代次数。
如果逐字节执行运算,则变量IRN可以在8位上编码,并且可以通过将变量IRN与其自身串接多次以形成机密数据KY和输入数据X的大小的字,来执行将机密数据KY或输入数据X与变量IRN组合的运算。因此,在数据X和KY在16位上编码的情况下,8位上的变量IRN可以与其自身串接以获得16位上的数据。然后,在步骤S14执行的运算变为:
PR[i]=OPR(X,KY⊕IRN//IRN) (4)
“//”表示二进制字的串接运算符。
在数据X和KY在32位上编码的情况下,8位上的变量IRN的每个值与其自身串接3次以获得32位上的值。然后,在步骤S14执行的运算变为:
PR[i]=OPR(X,KY⊕IRN//IRN//IRN//IRN) (5)
实际上,用作掩码的变量IRN可以具有由其中执行运算OPR的算法处理的最小字的大小。
此外,IRN的串接值可以彼此不同:
PR[i]=OPR(X,KY⊕IRN1//IRN2//IRN3//IRN4) (6)
假设存储了索引的话,其中IRNj=0(j=1、2、3、4)。
图3示出将诸如XOR的运算应用于受保护数据X1和不受保护数据X2,数据X1、X2的大小为一个或数个字节。因此,数据X1由包括数据X1V1、X1V2、…X1Vw的输入集PX1表示,这些数据的每一个具有与输入数据X1相同的大小,并且w=2b,其中b是输入数据的大小。所需数据X1在输入集PX1中的索引n处:X1=X1Vn,n是1与w之间的整数。运算的结果是包括w个不同输出数据RV1、RV2、…RVw的输出集PR,其中每个数据RVj等于X1Vj⊕X2。运算的预期结果RVn(=X1Vn⊕X2=X1⊕X2)与表PX1中的所需输入数据X1一样,在表PR中的同一索引n处。因为包括0与w-1之间的w个不同数据(作为输入集PX1),所以结果输出集PR提供的预期结果RVn的保护级别与输入集PX1相同。
当密码算法中使用的两个受保护数据X1、X2通过诸如XOR的运算组合时,可能出现问题,数据X1、X2通过被数据输入集PX1、PX2替换而被保护,每个输入集中的每个字列中的每个字具有相同出现次数。当逐字处理输入数据时,每个输入集PX1、PX2还可以包括所有可能数据,具体取决于通过以Mi//…//Mi形式应用一组掩码而限定的输入数据X1、X2或其一部分的大小,其中Mi=0、…(w-1),Mi具有字的大小。图4表示输入数据集PX1、PX2。输入集PX1包括数据X1V1、…X1Vw,所需输入数据X1(=X1Vn)在索引n处。以相同的方式,输入集PX2包括数据X2V1、…X2Vw,所需输入数据X2(=X2Vn)在同一索引n处。
通过将不同掩码值应用于所需输入数据X1和X2,生成输入集PX1和PX2:
X1Vj=X1⊕M1j,对于{1,…,w}中的索引j的所有值,以及
X2Vj=X2⊕M2j,对于{1,…,w}中的索引j的所有值。
因此,作为一个实例,保护运算(X1⊕X2)的第一种方式是通过针对1与w之间的索引j的所有值计算(X1Vj⊕X2Vj):
(X1⊕M1j)⊕(X2⊕M2j)=(X1⊕X2)⊕(M1j⊕M2j)
实际上,不能确保数据M1j⊕M2j针对索引j的每个值彼此不同。对于索引j和k的特定值,可能发生M1j=M2k和M1k=M2j,从而导致包括两个相同值M1j⊕M2k=M1k⊕M2j的一组掩码值M1j⊕M2j。因此,输出集PR的每个字列不满足包含所有可能字值(当X1和X2表示字节时,在0与(w-1)之间)的条件。在极端情况下,M1j和M2j针对每个索引值j具有相同值。因此:
(X1⊕M1j)⊕(X2⊕M2j)=(X1⊕X2)⊕0=X1⊕X2
因此,w次计算的每一次都返回相同结果X1⊕X2,这是预期输出结果。不仅预期结果不受保护,而且该解决方案还针对预期结果产生严重泄漏,因为要保护的运算被执行w次。
生成受保护输出数据的另一种方式可以是在输入集PX1、PX2的一者中选择一个数据,并且将运算应用于该选定数据和另一个输入数据集的所有数据。如图4中所示,在集PX2中选择数据X2Vk并将该数据与输入集PX1中的所有数据组合。因此,输出集PR1中的每个结果数据RVj按照以下方式被计算:
RVj=X1Vj⊕X2Vk,且j=1、2、…w,并且k具有固定值。通过这样做,确保输出集PR1不包括两个相同数据RVi:
X1Vj⊕X2Vk=(X1⊕M1j)⊕(X2⊕M2k)=(X1⊕X2)⊕M1j⊕M2k
其中如果M1j不同于M1j’,则M1j⊕M2k不同于M1j’⊕M2k。但是,输出数据PR1中的结果数据RVj的计算需要读取数据集PX2中的单个数据X2Vk,然而输入集PX1中的所有数据都被读取。在某些情况下,这种不平衡处理可能产生泄漏,从而使能公开数据X2Vk。如果所选择的数据X2Vk等于所需输入数据X2(=X2Vn),则泄漏可以使数据X2的值公开。如果集PX2中的另一数据X2Vk(k≠n)被选择为与集PX1的所有数据X1Vj组合,则需要存储掩码Mk的值以使得所选择的数据X2Vk=X2⊕M2k。
根据一个实施例,生成受保护输出数据的另一种方式在图5中示出。在图5中,运算X1⊕X2的输出集PR2包括w×w个元素RVi.j,以使得:
RVi.j=X1Vi⊕X2Vj
其中i和j各自具有1与w之间的每个所有可能整数值。
根据一个实施例,以随机顺序执行输出集PR2中的输出数据RVi.j的计算。
根据一个实施例,通过以相同顺序从输出集PR2中提取数据RVJ.i或RVj.I的行J或列I,从输出集PR2形成精简输出集PR3,而不改变预期输出数据X1⊕X2的保护。可以存储输出数据X1⊕X2在精简输出集PR3中的位置或者掩码M1J或M2I的值,以便确定预期输出数据的值。
根据一个实施例,所需输入数据X1、X2可以位于输入集PX1、PX2中的相应索引n1、n2处。因此,在图5的实例中,预期结果位于输出集PR2的行n2和列n1中:
X1⊕X2=X1Vn1⊕X2Vn2=RVn1.n2
可以通过以相同顺序从输出集PR2中提取行n2或列n1的所有数据,形成精简输出集PR3。可以观察到,该提取不改变预期输出数据X1⊕X2的保护,因为提取集包括0与2b–1之间的所有数据,其中b是输入数据X1、X2的大小。索引n1和n2可以被选择为相等。
根据图6中所示的一个实施例,存储器PR4(输出集PR2的数据RVi.j在计算时被写入其中)仅包括具有w个数据的两个行或两个列。所计算的数据RVi.j被写入存储器PR4中以使得在计算结束时,两个行或列的第一个行或列等于集PR2的索引n的行或列,并且另一个行或列等于集PR2的另一个行或列k,例如(索引w的)最后计算的行或列。在逐列计算的情况下,从i=1到n1或n2的所计算的数据列RVi.1…RVi.w被交替地或随机地写入存储器PR4的两个列中或写入同一列中,并且从i=n1+1(相应n2+1)到w,所计算的数据列RVi.1…RVi.w被始终写入存储器PR4的不包括数据RVn.1…RVn.w的列中。在计算结束时,从存储器PR4中提取包括预期输出数据RVn1.n2的列以获得输出集PR3。
还可以观察到,如果执行运算OPR的电路经历诸如由成功的故障注入(faultinjection)导致的错误,则输出集PR、PR1、PR2、PR3、PR4中的至少一个数据的值改变。如果仅一个数据改变,则输出表(或列或行)不再包括输出数据的所有可能值,并且包括两个相同数据,该数据具有必定为输出集中的另一数据的值的改变值。因此,可以通过相同值检测这种故障注入。更一般地,可以检测故障注入,方式为:在输出集中或者在输出集的行或列中,查找具有不同出现次数的两个数据。如果两个数据被改变,则仅当这两个数据的值被交换时才未能检测到故障注入,而这种情况的发生概率非常低。由于XOR运算的性质,可以通过由XOR运算将输出集中(或输出集的行或列中)的所有数据组合在一起来很容易地检测到错误,当输出集的每个字列包括具有相同出现次数(与用于计算输出数据的已处理字的大小有关)的输出数据的所有可能值时,该组合的结果等于0。
根据一个实施例,除了被写入存储器PR4的另一个列中的一个所计算的数据列(或行)以外,将每个所计算的数据列(或行)RVi.1...RVi.w与存储器PR4的一个列中的先前写入的列(相应行)相加(XOR)。因此,由于XOR运算的性质,存储器PR4的两个列必须相同,除非在输出数据的计算期间发生错误。
根据一个实施例,输入数据X1、X2具有不同大小。因此,输入集PX1和PX2包括不同数量的数据,记为w1和w2。因此,所计算的输出集PR2包括w1x w2个输出数据。然后,所提取的输出集PR3可以是输出集PR2的如下行或列:所述行或列包括最大数量的包含输出数据X1⊕X2的数据。
在另一个实施例中,选择输入集PX1、PX2中的数据的出现次数,以使得这些输入集包括相同数量(数量为w)的数据。以这种方式,输出集PR2包括w x w个数据。
此外,上面图3到6的描述中的数据X1、X2可以在单个字节中编码,或者在多个字节中编码。在单个字节的情况下,w等于256。在多个字节的情况下并且当逐字节执行运算时,当数据X1、X2在两个字节上编码时,应用于数据X1、X2以生成输入集PX1、PX2的掩码Mj可以被选择为具有形式IRN//IRN(IRN在一个字节上被编码),或者当数据X1、X2在四个字节上编码时,掩码Mj可以被选择为具有形式IRN//IRN//IRN//IRN,或者更一般地当数据X1、X2在多于四个字节上编码时,掩码Mj可以被选择为具有形式IRN//IRN//…//IRN。
根据一个实施例,可以在包括比要由运算处理的数据的大小更宽的总线的硬件架构(例如32位或64位)中同时计算多个字,因为XOR运算是逐位的。在32位架构中,可以同时计算输出数据RVi.j的四个字节,并且在64位架构中,可以同时计算八个字节RVi.j。在这种情况下,应用于输入数据以生成输入数据集的掩码还可以具有形式IRN//IRN//…//IRN,IRN在一个字节上被编码。
在AES(高级加密标准)算法中执行的所有运算(无论由软件实现还是以硬件实现)都可以使用先前公开的方法进行保护。图7表示实现用于对数据进行加密的AES算法的加密计算电路CC1的一个实例。有关AES的进一步详细信息,可以参考2001年11月26日公布的文件“Advanced Encryption Standard FIPS PUB 197(高级加密标准FIPS PUB 197)”。在图7中,加密计算电路CC1接收要加密的数据X1并提供加密后的数据CX1。电路CC1包括执行XOR运算的电路XG1、XG2、XG3,替换计算电路SBB,基于行的循环置换计算电路SHR,基于列的置换计算电路MXC,多路复用器MX以及密钥发生器KGN。电路SBB、SHR、MXC和KGN符合AES。电路XG1接收要加密的数据X1,并且在密钥输入端处,接收由密钥发生器KGN从私钥SK生成的第一导出密钥RK0。电路XG1的输出被提供给电路SBB。电路SBB的一个输出被提供给电路SHR。电路SHR的一个输出经由多路复用器MX被提供给电路MXC或电路XG3的输入端,该输入端在密钥输入端处接收由密钥发生器KGN提供的最后导出密钥RKn。电路MXC的一个输出端连接到电路XG2的一个输入端,该输入端在密钥输入端处接收由密钥发生器KGN提供的导出密钥RKj(j=1、...、r-1)。电路XG2的一个输出端连接到电路SBB的该输入端。在最后一轮r,当由包括电路SBB、SHR、MXC和XG2的链已经执行某一数量(r-1)的计算轮次(10、12或14,与AES一致)时,多路复用器MX被启动以将电路SHR的输出提供给电路XG3,电路XG3提供输出数据CX1。
在第一计算轮次期间,数据X1由电路XG1处理,电路XG1将由电路KGN从私钥SK生成的第一导出密钥RK0与数据X1相加(XOR)。在每个轮次j,密钥发生器KGN导出新密钥RKj。电路XG1提供结果数据X1⊕RK0,其由电路SBB、SHR、MXC和XG2相继地处理。然后,电路XG2将由电路MXC提供的数据与所导出的密钥RKj(j=0、...、r-1)组合。电路SBB、SHR、MXC和XG1被相继激活以用于多轮AES算法。替换计算电路SBB通常使用替换表来实现。
根据一个实施例,由电路XG1执行的运算通过执行图2的步骤S11到S17来实现,输入数据X1的16个字节的每一个被与由密钥发生器KGN针对第一轮(j=0)AES算法从私钥SK导出的密钥RK0的相应字节相组合。在步骤S14执行W(=256)次的运算OPR是逻辑XOR运算,其涉及输入数据X1的字节和密钥RK0的字节。步骤S14可以实现等式(1)到(3)之一,或者可以根据电路CC1能够处理的数据的大小,通过应用等式(4)或(5)被从这些等式导出。因此,由电路XG1提供的结果包括表IPR1j(其中j=0),每个表包括字R1V1到R1Vw,特别是等于输出数据X1⊕RK0的字的字R1Vn(其中n在1与w之间)。如果单独应用等式(1)到(3)之一,则将运算XG1应用于输入数据X1和RK0的每个字节,并且针对这些字节的每一个提供表IPR10,数据R1V1到R1Vw是字节。如果等式(1)到(3)之一与等式(4)或(5)被结合应用,则将运算XG1应用于输入数据XG1和RK0中的两个或四个字节的每个字,并且提供针对这些字的每一个具有相同大小的字的表IPR10。可以应用等式(5)的扩展以同时处理输入数据的多于四个字节,以便获得包括与输入数据X1的已处理字相同大小的w个字的表。每个输出表IPR10中的预期结果X1⊕RK0的每个输出字的秩n可以针对每个输出表而不同。因此,例如可以针对每个输出表IPR10执行步骤S11。
由电路SBB提供的结果是表IPR2j(其中在第一轮,j=0),其包括数据R2V1到R2Vw和数据R2Vn(其中n在1与w之间),在第一轮等于SBX[X1⊕RK0],SBX是实现AES的替换运算的替换表。通常,电路SBB和SHR逐字节处理输入数据X1⊕RK0。在本实例中,每个字节表IPR10中的每个字节R1V1到R1Vw由提供表IPR20的电路SBB来处理。如果数据R1V1到R1Vw的每一个表示多于一个字节,则表IPR10中的每个字节由电路SBB和SHR单独处理。电路SHR处理表IPR20并提供表IRPR30。
图8表示电路MXC。电路MXC将电路SHR的输出数据X3与4x4个元素的系数矩阵MC组合。为此,输出数据X3被组织成4x4个元素x0到x15的矩阵格式,这些元素的每一个表示在128位上编码的数据X3的一个字节。矩阵X3的元素通过XOR运算符被组合在一起并与矩阵MC的元素组合以产生4x4个元素的结果矩阵TR,其中每个元素具有以下形式:
a·x<i>⊕b·x<i+1>⊕c·x<i+2>⊕d·x<i+3>
其中a、b、c、d(=1、2或3)是矩阵MC的一行的元素,并且i等于0、4、8和12。根据AES,当x的最高有效位(MSB)等于0时,如果x低于128,则通过使用运算LS1(x)执行运算2·x,并且当x的MSB等于1时,通过使用运算LS1(x)⊕0x1B执行运算2·x,LS1表示在字节x中向左移动一位。使用运算2·x⊕x执行运算3·x。
因为数据X3的每个字节由一个表IPR3j表示,所以电路MXC针对每个表IPR3j的每个字节执行3x16个XOR运算,每个XOR运算组合两个输入表,如图4到6的情况。执行运算3·x可能需要再执行一次XOR运算。但是,在AES算法的某些实现中,通过查找表实现运算2·x和3·x。
根据图9中所示的一个实施例,根据由图5或6所示的过程来执行用于计算如图8中所示的矩阵TR的元素的每个XOR运算,以便提供类似于表PR2或PR4以及表PR3的表,并且根据由图3所示的过程执行每个与2相乘。在两个输入表IPR30之间或者XOR结果表IPR40与另一个表IPR30之间的每个XOR运算之后,针对下一个XOR运算在结果表IPR40中选择包括已知秩处的预期输出数据的行或列n,以便计算形式a·x<i>⊕b·x<i+1>⊕c·x<i+2>⊕d·x<i+3>。最后,由电路MXC执行的计算在第一轮(j=0)提供表IPR40,该表IPR40包括输入数据X1的每个字节的w x w个字节(或者根据图6,2w个字节)R3Vi.k。然后,从每个IPR40表中提取w个字节R5Vi(=R4Vi.n或R4Vn.i)的表IPR50。预期输出数据位于已知秩的行或列n可以针对表IPR40的每个列相同或不同。
在第二轮(j=1),电路XG2将每个表IPR50中的每个数据R5Vi(i=1、...w)与由电路KGN提供的导出密钥RK1组合,并且因此向电路SBB提供包括数据R1Vi(i=1、...w)的结果表IPR11。然后,执行多个轮次,直到在最后一轮(j=r)中由电路SHR提供表IPR3r。然后,电路XG3将每个表IPR3r的每个字与最后的导出密钥RKr组合。最后,电路XG3针对输入数据X1中的每个字(8、16或32位)提供结果表IPR6r,每个表IPR6r包括字R6V1、...R6Vw,更具体地说包括预期输出数据CX1的字R6Vn。应该注意,如果数据X1⊕RK0的字位于表IPR10中的秩n处,则预期输出数据CX1的字R6Vn位于表IPR6r中的同一秩n处。根据一个实施例中,电路XG3被配置为单独提供数据CX1。
可以颠倒电路SBB和SHR的位置,在执行由电路SBB执行的替换计算之前,将由电路SHR执行的基于行的循环置换计算应用于表IPR1j中的数据。
根据AES的解密算法包括与加密算法基本相同的运算。因此,可以应用先前描述的用于保护将具有表PX1形式的一个受保护数据与另一个数据(受保护或不受保护)组合的运算的方法,以便保护实现AES解密算法的程序和电路。更具体地说,AES解密电路包括使用从私钥SK导出的密钥执行XOR运算的电路、逆替换计算电路、基于行的逆循环置换计算电路、基于列的逆置换计算电路、以及用于从私钥SK生成导出密钥的密钥发生器KGN。图3中所示的方法可以应用于由XOR运算使用导出密钥执行的每个运算、以及由逆替换计算电路和基于行的逆循环置换计算电路执行的每个运算。图5或6中所示的方法可以应用于由基于列的逆置换计算电路执行的每个XOR运算。
应该注意,先前公开的保护方法可以仅应用于在AES算法中执行的被视为易受侧信道分析攻击的某些运算。例如,所述保护方法可以仅应用于AES算法的敏感数据可能从中泄漏的第一轮和最后一轮。
更一般地,先前公开的保护方法可以应用于通过软件和/或硬件实现的其它加密算法,并且包括组合敏感数据的XOR运算,例如ARIA(参考文献[7])。ARIA算法逐字节处理128位数据并且按轮执行,每轮包括通过XOR运算的轮密钥加法,使用两个预计算替换表及其逆表的替换步骤、以及扩散步骤。替换步骤逐字节处理与轮密钥组合的输入数据,并且扩散步骤将16个不同XOR组合应用于由替换步骤提供的数据的16个字节。在这些组合的每一个中,通过XOR运算加上数据的7个字节。
根据一个实施例,在轮密钥加法中执行的每个字节XOR运算和在替换步骤中执行的每个替换运算由图2和3中所示的过程保护,并且在扩散步骤中执行的每个XOR运算由图5或6中所示的过程保护。
图10表示根据一个实施例的布置在诸如塑料卡的便携式介质HD上,并且实现先前描述的保护方法之一的集成电路CT1。该集成电路包括与上面结合图1描述的集成电路CT相同的单元,并且与后者的不同之处在于:协处理器CP1被实现上述保护方法中的一个和/或另一个的协处理器CP2所替代。因此,根据一个实施例,协处理器CP2被配置为提供结果数据的输出表,而不是加密运算的单个数据,每个输出表包括加密运算的预期结果,输出表如此以使得输出表中的字列中的所有计算字具有相同出现次数。处理器PRC与协处理器CP2匹配,以便获知加密运算的结果在由协处理器CP2提供的结果值的表中的位置。
协处理器CP2还可以被配置为执行加密运算的一部分。在这种情况下,处理器PRC被配置为产生结果数据的输出表,其包括加密运算的结果,每个输出表如此以使得其中的字列中的所有计算字具有相同出现次数。
本文公开的方法还可以通过可由计算机系统执行的软件程序来实现。此外,实施方式可以包括分布式处理和并行处理,特别是用于并行处理输入数据集中的多个或所有数据和/或并行提供输出数据集中的多个或所有数据。
本文描述的例示旨在提供各种实施例的结构的一般理解。这些例示并非旨在用作利用其中描述的结构或方法的装置、处理器和系统的所有元件和特征的完整描述。通过组合所公开的实施例,在仔细研究本公开时,许多其它实施例或其组合对于所属技术领域的普通技术人员来说可以显而易见。可以从本公开中利用和导出其它实施例,以使得可以在不偏离本公开的范围的情况下进行结构和逻辑上的替换和改变。
此外,本公开和例示被视为示例性的而不是限制性的,并且所附权利要求书旨在覆盖落入说明书的真实精神和范围内的所有此类修改、增强和其它实施例。因此,以下权利要求的范围由权利要求及其等效物的最广泛的允许解释来确定,并且不受以上描述的限定或限制。
图3到6中所示的先前实例可以应用于XOR之外的其它运算,前提是这些运算被逐位执行并且是可逆或双射的。
引用的参考文献
[1]作者P.C.Kocher,“Timing attacks on implementations of Diffie-Hellman,RSA,DSS,and other systems”,Neal Koblitz编辑,Advances in Cryptology-CRYPTO'96,计算机科学讲义第1109卷,第104-113页,Springer,1996年。
[2]作者P.C.Kocher、J.Jaffe和B.Jun,“Differential Power Analysis”,M.J.Wiener编辑,Advances in Cryptology-CRYPTO'99,计算机科学讲义第1666卷,第388-397页,Springer,1999年。
[3]作者E.Brier、C.Clavier和F.Olivier,“Correlation Power Analysis witha Leakage Model”,M.Joye和J-J.Quisquater编辑,Cryptographic Hardware andEmbedded Systems-CHES 2004,计算机科学讲义第3156卷,第16-29页,Springer,2004年。
[4]作者J.-J.Quisquater,“ElectroMagnetic Analysis(EMA):Measures andCounter-measures for Smart Cards”,Smart Card Programming and Security,Springer Berlin/Heidelberg,第2140、2001卷,第200-210页
[5]作者S.Chari、J.R.Rao和P.Rohatgi,“Template Attacks”,Kaliski Jr.、B.S.、C.K.、Paar、C(编辑),CHES 2002.LNCS,第2523卷,第172-186页,Springer,Heidelberg(2003年)
[6]作者B.Gierlichs、L.Batina、P.Tuyls和B.Preneel,“Mutual InformationAnalysis”,CHES 2008,LNCS的第5154卷,第426-442页,Springer,2008年
[7]作者Daesung Kwon等人,“New Block Cipher:ARIA”,Information Securityand Cryptology-ICISC 2003,计算机科学系列讲义的第2971卷,第432-445页

Claims (16)

1.一种用于由电路执行用以将第一输入数据与第二输入数据相组合的运算的方法,所述方法包括:
定义数据对,由此将第一输入集的每个数据与第二输入集的每个数据相关联,所述第一输入集包括所述第一输入数据,所述第一集中的每个数据包括至少一个字,所述第一输入集中的字具有相同大小并形成第一字子集,所述第一字子集包括来自所述第一输入集的每个数据的单个字并且包括的所述字的所有可能值的出现次数相同,所述第二输入集包括所述第二输入数据,所述第二输入集中的每个数据包括至少一个字,所述第二输入集中的字具有相同大小并形成第二字子集,所述第二字子集包括来自所述第二输入集的每个数据的单个字并且包括的所述字的所有可能值的出现次数相同,以及
将所述运算应用于每个所述数据对,所述运算的输出集包括由将所述运算应用于一个所述数据对而产生的所有数据。
2.根据权利要求1所述的方法,其中所述输出集中的数据以行和列来布置,一个行或列的数据由将所述运算应用于所述第一和第二输入集中的一者的同一数据以及应用于所述第一和第二输入集中的另一者中的每个数据而产生,所述方法包括选择所述输出集的包含输出数据的行或列。
3.根据权利要求1或2所述的方法,其中所述输出集被写入包括两个数据行的存储区域中,所述两个数据行中的一者包括由将所述运算应用于所述第一输入数据和应用于所述第二输入集中的每个数据而产生的输出数据,或者由将所述运算应用于所述第二输入数据和应用于所述第一输入集中的每个数据而产生的输出数据。
4.根据权利要求3所述的方法,其中:
所述输出集的所述行或列被随机地或交替地写入所述存储区域的所述行中,并且当在已知位置处包括所述输出数据的输出数据行或列被写入所述存储区域的一个行中时,所述存储区域的另一个行接收随后计算的所述输出集的所有所述输出数据,所述方法包括选择所述存储区域的包含预期输出数据的行作为所述运算的输出,或者
除了被写入所述存储区域的另一个行中的所述输出集的一个行或列以外,所述输出集的所述行或列通过异或运算被与写入所述存储区域的一个行中的先前数据相组合,当所述存储区域的两个行不相同时检测到错误。
5.根据权利要求1至4中的一项所述的方法,其中所述运算是异或。
6.根据权利要求1至5中的一项所述的方法,其中以随机顺序执行所述输出集中的数据的计算。
7.根据权利要求1至6中的一项所述的方法,包括在所述输出集的列或行中检测出现次数不同于所述输出集中的其它数据的出现次数的数据,当在所述输出集的列或行中发现具有不同出现次数的两个数据时,检测到错误。
8.根据权利要求7所述的方法,其中在所述输出集的行或列中检测两个相同数据包括通过异或运算组合所述输出集的所述行或列中的所有数据,以及将异或运算的结果与0进行比较。
9.根据权利要求1至8中的一项所述的方法,其中通过由异或运算将所述第一输入数据与位数和所述第一输入值的位数相同的掩码的每个可能值相组合一次来生成所述第一输入集。
10.根据权利要求1至9中的一项所述的方法,包括:
串接所述第一输入集的一定数量的数据以生成第一输入字,
串接所述第二输入集的相同数量的数据以生成第二输入字,以及
将所述运算应用于所述第一和第二输入字。
11.一种用于对输入数据进行加密或解密的方法,所述方法包括:
将异或运算应用于所述输入数据的每个字节和应用于从私钥导出的密钥的对应字节,并且针对所述输入数据的每个字节提供输出字节的第一输出集,所述第一输出集包括的字节的所有可能值的出现次数相同,所述字节包括应用于所述输入数据的字节的所述运算的结果,
将替换运算应用于每个第一输出集的每个字节,包括根据所述第一输出集中的所述字节来选择替换表中的字节,并且针对每个第一输出集提供第二输出集,所述第二输出集包括根据所述第一输出集中的字节在所述替换表中选择的所有字节,以及
向所述第二输出集应用置换运算,包括通过异或运算将所述第二输出集的字节或多重的所述第二输出集的字节相组合在一起,所述异或运算根据权利要求1至10中的一项所述的方法被执行。
12.根据权利要求10所述的方法,其中生成所述第一输出集,方式为:
通过由异或运算将所述输入数据的字节与掩码字节的所有可能值组合一次,并且通过由异或运算将所导出的密钥的每个字节与所述输入集中的一个对应输入集的每个字节组合,针对所述输入数据的每个字节生成输入集,或者
通过由异或运算将所导出的密钥的字节与所述掩码字节的所有可能值组合一次,并且通过由异或运算将所述输入数据的每个字节与所述密钥集中的一个对应密钥集的每个字节组合,针对所导出的密钥的每个字节生成密钥集,或者
由异或运算将所述输入数据的每个字节与所导出的密钥的对应字节组合以生成输出字节,以及通过由异或运算将每个输出字节与所述掩码字节的所有可能值组合一次。
13.一种电路,其包括处理器并被配置为实现根据权利要求1至12中的一项所述的方法。
14.根据权利要求13所述的电路,包括协处理器。
15.一种设备,其包括布置在介质上的根据权利要求13或14所述的电路。
16.一种计算机程序产品,其可加载到计算机存储器中并包括代码部分,当由计算机执行时,所述代码部分配置所述计算机以执行根据权利要求1至12中的一项所述的方法。
CN201710499289.XA 2016-06-28 2017-06-27 免受侧信道分析的保护方法和设备 Pending CN107547189A (zh)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
EP16176716.5 2016-06-28
EP16176718.1A EP3264396B1 (en) 2016-06-28 2016-06-28 A method for protecting a substitution operation using a substitution table against a side-channel analysis
EP16176716.5A EP3264666B1 (en) 2016-06-28 2016-06-28 A protection method and device against a side-channel analysis
EP16176717.3A EP3264667B1 (en) 2016-06-28 2016-06-28 A method for protecting a substitution operation against a side-channel analysis
EP16176717.3 2016-06-28
EP16176719.9 2016-06-28
EP16176718.1 2016-06-28
EP16176721.5A EP3264668B1 (en) 2016-06-28 2016-06-28 A protection method and device against a side-channel analysis
EP16176721.5 2016-06-28
EP16176719.9A EP3264397B1 (en) 2016-06-28 2016-06-28 A protection method and device against a side-channel analysis

Publications (1)

Publication Number Publication Date
CN107547189A true CN107547189A (zh) 2018-01-05

Family

ID=60675622

Family Applications (5)

Application Number Title Priority Date Filing Date
CN201710499789.3A Pending CN107547194A (zh) 2016-06-28 2017-06-27 免受侧信道分析的保护方法和设备
CN201710499289.XA Pending CN107547189A (zh) 2016-06-28 2017-06-27 免受侧信道分析的保护方法和设备
CN201710499945.6A Pending CN107547195A (zh) 2016-06-28 2017-06-27 免受侧信道分析的保护方法和设备
CN201710499028.8A Pending CN107547193A (zh) 2016-06-28 2017-06-27 使替换运算免受侧信道分析的方法
CN201710499603.4A Pending CN107547190A (zh) 2016-06-28 2017-06-27 用于保护使用替换表的替换运算免受侧信道分析的方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201710499789.3A Pending CN107547194A (zh) 2016-06-28 2017-06-27 免受侧信道分析的保护方法和设备

Family Applications After (3)

Application Number Title Priority Date Filing Date
CN201710499945.6A Pending CN107547195A (zh) 2016-06-28 2017-06-27 免受侧信道分析的保护方法和设备
CN201710499028.8A Pending CN107547193A (zh) 2016-06-28 2017-06-27 使替换运算免受侧信道分析的方法
CN201710499603.4A Pending CN107547190A (zh) 2016-06-28 2017-06-27 用于保护使用替换表的替换运算免受侧信道分析的方法

Country Status (3)

Country Link
US (5) US10439797B2 (zh)
KR (5) KR20180002065A (zh)
CN (5) CN107547194A (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3220305B1 (en) * 2016-02-22 2018-10-31 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
CN107547194A (zh) 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备
EP3264311B1 (en) 2016-06-28 2021-01-13 Eshard A protection method and device against a side-channel analysis
US10771235B2 (en) * 2016-09-01 2020-09-08 Cryptography Research Inc. Protecting block cipher computation operations from external monitoring attacks
WO2018169580A2 (en) * 2016-12-12 2018-09-20 Arris Enterprises Llc Strong white-box cryptography
US10680798B2 (en) * 2017-02-15 2020-06-09 Nxp Usa, Inc. Masking storage transfer to protect against attacks
DE102017002153A1 (de) * 2017-03-06 2018-09-06 Giesecke+Devrient Mobile Security Gmbh Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung
US10567159B2 (en) * 2017-06-07 2020-02-18 Nxp B.V. CMAC computation using white-box implementations with external encodings
CN108155984B (zh) * 2017-12-29 2020-10-02 北京理工大学 一种基于能量分析的密码算法簇逆向工程分析方法
FR3078464A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et circuit de mise en oeuvre d'une table de substitution
US11218291B2 (en) * 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
FR3078463A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et dispositif de realisation d'operations en table de substitution
US10778407B2 (en) * 2018-03-25 2020-09-15 Nuvoton Technology Corporation Multiplier protected against power analysis attacks
DE102018107114A1 (de) * 2018-03-26 2019-09-26 Infineon Technologies Ag Seitenkanalgehärtete Operation
US10824718B2 (en) * 2018-07-05 2020-11-03 Nxp B.V. Shuffling mechanism for shuffling an order of data blocks in a data processing system
CN109495242A (zh) * 2018-11-20 2019-03-19 上海安路信息科技有限公司 一种数据加密方法及数据加密设备
CN109951268B (zh) * 2019-02-18 2020-12-22 吉林大学珠海学院 基于位置换和位变换的加密解密方法和装置
US10738446B1 (en) 2019-08-12 2020-08-11 Sterilumen, Inc. Drain disinfecting device and method of installing the same
US11788265B2 (en) 2019-08-12 2023-10-17 Sterilumen, Inc. Interchangeable drain disinfecting device with UV source irradiation optimization
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
KR102157219B1 (ko) * 2019-10-31 2020-09-17 국민대학교산학협력단 경량 블록 암호화에 대한 고차 부채널 공격에 대응하는 방법 및 이를 이용한 장치
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
CN113595717B (zh) * 2020-04-30 2023-10-17 比亚迪股份有限公司 Ecb模式分组加密方法和解密方法及控制装置和车辆
JP7314108B2 (ja) * 2020-08-27 2023-07-25 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム
EP3975470A1 (en) * 2020-09-25 2022-03-30 Thales DIS France SA Method for securing an execution of an algorithm of a cryptographic process

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005081085A2 (en) * 2004-02-13 2005-09-01 The Regents Of The University Of California Logic system for dpa and/or side channel attack resistance
US20060056622A1 (en) * 2004-09-15 2006-03-16 Stmicroelectronics S.A. Protection of a DES algorithm
US20090074181A1 (en) * 2004-07-22 2009-03-19 Herve Pelletier Method and device for executing crytographic calculation
US20110055591A1 (en) * 2007-12-13 2011-03-03 Oberthur Technologies Method for cryptographic data processing, particularly using an s box, and related device and software
US20120250854A1 (en) * 2009-01-20 2012-10-04 Institut Telecom-Telecom Paristech Cryptography circuit protected against observation attacks, in particular of a high order
CN103795527A (zh) * 2014-03-03 2014-05-14 重庆大学 防止基于功耗分析攻击aes算法的软件掩码防护方案
CN104094553A (zh) * 2012-01-11 2014-10-08 英赛瑟库尔公司 防侧信道攻击的加密方法

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182266B1 (en) * 1997-09-12 2001-01-30 Lucent Technologies, Inc. Self-auditing protection method for sorted arrays
CA2333095C (en) * 1998-06-03 2005-05-10 Cryptography Research, Inc. Improved des and other cryptographic processes with leak minimization for smartcards and other cryptosystems
US6295606B1 (en) * 1999-07-26 2001-09-25 Motorola, Inc. Method and apparatus for preventing information leakage attacks on a microelectronic assembly
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
US20040202317A1 (en) * 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension
EP1711887B1 (en) * 2004-01-27 2010-12-29 Nxp B.V. Protection against power analysis attacks
DE602004023436D1 (de) * 2004-03-29 2009-11-12 St Microelectronics Sa Prozessor zum ausführen eines aes algorithmus
EP1601132B1 (en) 2004-05-24 2006-11-15 Research In Motion Limited Table Masking for Resistance to Power Analysis Attacks
US7848514B2 (en) * 2004-05-24 2010-12-07 Research In Motion Limited Table masking for resistance to power analysis attacks
DE102004061312B4 (de) * 2004-12-20 2007-10-25 Infineon Technologies Ag Vorrichtung und Verfahren zum Detektieren eines potentiellen Angriffs auf eine kryptographische Berechnung
KR100725169B1 (ko) * 2005-01-27 2007-06-04 삼성전자주식회사 전력 분석 공격에 안전한 논리 연산 장치 및 방법
GB2443355B (en) 2005-01-27 2008-08-06 Samsung Electronics Co Ltd Cryptographic logic circuits and method of performing logic operations
US8094811B2 (en) * 2005-03-31 2012-01-10 Panasonic Corporation Data encryption device and data encryption method
DE602005002632T2 (de) * 2005-05-10 2008-01-31 Research In Motion Ltd., Waterloo Schlüsselmaskierung für kryptographische Prozesse mittels einer Kombination von Zufallsmaskenwerten
US7716502B2 (en) 2005-08-24 2010-05-11 Radu Muresan Current flattening and current sensing methods and devices
FR2893796B1 (fr) * 2005-11-21 2008-01-04 Atmel Corp Procede de protection par chiffrement
ATE476803T1 (de) * 2006-03-07 2010-08-15 Research In Motion Ltd Tabellenteilung für kryptografische verfahren
KR100837270B1 (ko) * 2006-06-07 2008-06-11 삼성전자주식회사 스마트 카드 및 그것의 데이터 보안 방법
US8422668B1 (en) * 2006-12-15 2013-04-16 Spansion Llc Table lookup operation on masked data
DE102007007699A1 (de) 2007-02-09 2008-08-14 IHP GmbH - Innovations for High Performance Microelectronics/Institut für innovative Mikroelektronik Reduktion von Seiten-Kanal-Informationen durch interagierende Krypto-Blocks
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
JP2008252299A (ja) * 2007-03-29 2008-10-16 Hitachi Ltd 暗号処理システム及び暗号処理方法
US7970129B2 (en) * 2007-04-19 2011-06-28 Spansion Llc Selection of a lookup table with data masked with a combination of an additive and multiplicative mask
WO2009043139A1 (en) * 2007-10-01 2009-04-09 Research In Motion Limited Substitution table masking for cryptographic processes
JP5229315B2 (ja) * 2008-03-31 2013-07-03 富士通株式会社 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JP5300428B2 (ja) * 2008-11-13 2013-09-25 ルネサスエレクトロニクス株式会社 演算装置及び演算処理方法
JP5268609B2 (ja) * 2008-12-09 2013-08-21 株式会社東芝 暗号処理装置及び演算方法
EP2363974A1 (en) * 2010-02-26 2011-09-07 Research In Motion Limited Variable table masking for cryptographic processes
US9274976B2 (en) * 2010-11-05 2016-03-01 Apple Inc. Code tampering protection for insecure environments
US9331848B1 (en) * 2011-04-29 2016-05-03 Altera Corporation Differential power analysis resistant encryption and decryption functions
JP5711681B2 (ja) * 2012-03-06 2015-05-07 株式会社東芝 暗号処理装置
FR2990034B1 (fr) * 2012-04-25 2014-04-25 Inside Secure Procede de controle de redondance cyclique protege contre une attaque par canal auxiliaire
FR2995111B1 (fr) * 2012-09-04 2015-07-24 Morpho Protection contre canaux auxiliaires
DE102012018924A1 (de) * 2012-09-25 2014-03-27 Giesecke & Devrient Gmbh Seitenkanalgeschützte Maskierung
US9959429B2 (en) * 2013-03-15 2018-05-01 Cryptography Research, Inc. Asymmetrically masked multiplication
CN103647639A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种对称密码算法抵抗侧信道分析的方法
CN103647638A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种抵抗侧信道攻击的des掩码方法
US9569616B2 (en) 2013-12-12 2017-02-14 Cryptography Research, Inc. Gate-level masking
EP2884387B1 (en) * 2013-12-13 2016-09-14 Thomson Licensing Efficient modular addition resistant to side-channel attacks
EP2940917B1 (en) * 2014-04-28 2019-02-20 Nxp B.V. Behavioral fingerprint in a white-box implementation
US10313128B2 (en) * 2014-08-29 2019-06-04 The Boeing Company Address-dependent key generator by XOR tree
US9485088B2 (en) * 2014-10-31 2016-11-01 Combined Conditional Access Development And Support, Llc Systems and methods for dynamic data masking
EP3241150B1 (en) * 2014-12-30 2021-08-04 Cryptography Research, Inc. Determining cryptographic operation masks for improving resistance to external monitoring attacks
CN104618094B (zh) * 2015-01-28 2015-12-30 山东华翼微电子技术股份有限公司 一种增强抗攻击能力的密码Mask方法
US20160269175A1 (en) * 2015-03-09 2016-09-15 Qualcomm Incorporated Cryptographic cipher with finite subfield lookup tables for use in masked operations
CN104967509B (zh) * 2015-05-05 2018-05-18 国家密码管理局商用密码检测中心 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法
CN104811295A (zh) * 2015-05-05 2015-07-29 国家密码管理局商用密码检测中心 一种对具备掩码防护的祖冲之密码算法进行侧信道能量分析方法
US20170230171A1 (en) * 2015-08-25 2017-08-10 Massachusetts Institute Of Technology System and method of masking and computing on masked data in a data store
FR3040513B1 (fr) * 2015-09-02 2018-11-16 Stmicroelectronics (Rousset) Sas Protection d'un algorithme de rijndael
FR3040515B1 (fr) * 2015-09-02 2018-07-27 St Microelectronics Rousset Verification de la resistance d'un circuit electronique a des attaques par canaux caches
US10027640B2 (en) * 2015-09-22 2018-07-17 Qualcomm Incorporated Secure data re-encryption
US9794062B2 (en) 2015-10-08 2017-10-17 The Boeing Company Scrambled tweak mode of blockciphers for differential power analysis resistant encryption
FR3048086B1 (fr) 2016-02-22 2018-03-02 Eshard Procede de test de la resistance d'un circuit a une analyse par canaux auxiliaires
EP3220305B1 (en) 2016-02-22 2018-10-31 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
CN107547194A (zh) 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005081085A2 (en) * 2004-02-13 2005-09-01 The Regents Of The University Of California Logic system for dpa and/or side channel attack resistance
US20090074181A1 (en) * 2004-07-22 2009-03-19 Herve Pelletier Method and device for executing crytographic calculation
US20060056622A1 (en) * 2004-09-15 2006-03-16 Stmicroelectronics S.A. Protection of a DES algorithm
US20110055591A1 (en) * 2007-12-13 2011-03-03 Oberthur Technologies Method for cryptographic data processing, particularly using an s box, and related device and software
US20120250854A1 (en) * 2009-01-20 2012-10-04 Institut Telecom-Telecom Paristech Cryptography circuit protected against observation attacks, in particular of a high order
CN104094553A (zh) * 2012-01-11 2014-10-08 英赛瑟库尔公司 防侧信道攻击的加密方法
CN103795527A (zh) * 2014-03-03 2014-05-14 重庆大学 防止基于功耗分析攻击aes算法的软件掩码防护方案

Also Published As

Publication number Publication date
CN107547190A (zh) 2018-01-05
KR20180002065A (ko) 2018-01-05
KR20180002071A (ko) 2018-01-05
US10581588B2 (en) 2020-03-03
CN107547195A (zh) 2018-01-05
US10491372B2 (en) 2019-11-26
US20170373830A1 (en) 2017-12-28
US10439797B2 (en) 2019-10-08
US10644873B2 (en) 2020-05-05
KR20180002067A (ko) 2018-01-05
CN107547193A (zh) 2018-01-05
US20170373829A1 (en) 2017-12-28
US20170373832A1 (en) 2017-12-28
US20170373838A1 (en) 2017-12-28
US10439796B2 (en) 2019-10-08
KR20180002066A (ko) 2018-01-05
CN107547194A (zh) 2018-01-05
KR20180002069A (ko) 2018-01-05
US20170373831A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
CN107547189A (zh) 免受侧信道分析的保护方法和设备
EP3220306B1 (en) Method of testing the resistance of a circuit to a side channel analysis
CN105406957B (zh) 保护密码设备对抗实现攻击
Masoumi et al. Novel approach to protect advanced encryption standard algorithm implementation against differential electromagnetic and power analysis
CN102970132A (zh) 一种防止对分组算法进行功耗分析和电磁辐射分析的防护方法
CN109428707A (zh) 测试电路对侧信道分析的抵抗的方法
Luo et al. Cryptanalysis of a chaotic block cryptographic system against template attacks
Cayrel et al. Secure implementation of the stern authentication and signature schemes for low-resource devices
CN103636159A (zh) 用于产生随机的输出位序列的方法
Brier et al. Fast primitives for internal data scrambling in tamper resistant hardware
You et al. Low trace-count template attacks on 32-bit implementations of ASCON AEAD
Karri et al. Parity-based concurrent error detection in symmetric block ciphers
Jahanbani et al. DPA protected implementation of OCB and COLM authenticated ciphers
EP3264396B1 (en) A method for protecting a substitution operation using a substitution table against a side-channel analysis
EP3264666B1 (en) A protection method and device against a side-channel analysis
EP3264668B1 (en) A protection method and device against a side-channel analysis
EP3264667B1 (en) A method for protecting a substitution operation against a side-channel analysis
Bae et al. A practical analysis of fault attack countermeasure on AES using data masking
EP3264397B1 (en) A protection method and device against a side-channel analysis
Ma Practicality and Application of the Algebraic Side-Channel Attack
Tunstall Secure cryptographic algorithm implementation on embedded platforms

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: 20180105