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

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

Info

Publication number
CN107547194A
CN107547194A CN201710499789.3A CN201710499789A CN107547194A CN 107547194 A CN107547194 A CN 107547194A CN 201710499789 A CN201710499789 A CN 201710499789A CN 107547194 A CN107547194 A CN 107547194A
Authority
CN
China
Prior art keywords
word
mask
data
output
circuit
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
CN201710499789.3A
Other languages
English (en)
Inventor
A·武尔科尔
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 EP16176719.9A external-priority patent/EP3264397B1/en
Priority claimed from EP16176718.1A external-priority patent/EP3264396B1/en
Priority claimed from EP16176721.5A external-priority patent/EP3264668B1/en
Priority claimed from EP16176717.3A external-priority patent/EP3264667B1/en
Priority claimed from EP16176716.5A external-priority patent/EP3264666B1/en
Application filed by Echal Co filed Critical Echal Co
Publication of CN107547194A publication Critical patent/CN107547194A/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

本发明涉及一种防止侧信道分析的保护方法和设备。本发明涉及一种用于由电路执行用以将第一输入数据与第二输入数据相组合的运算的方法,所述方法包括:定义数据对,由此将第一输入集的每个数据与第二输入集的相应数据进行关联,所述第一和第二输入集中的数据通过对所述第一和第二输入数据以及对第一和第二掩码集中的所有第一和第二掩码参数应用异或(XOR)运算而获得;以及通过对所述数据对中的每一者应用所述运算来计算输出数据以获得输出集,所述第一和第二掩码集是这样的掩码集:使得相应第一和第二掩码参数构成的每个对通过XOR运算的组合产生第三掩码集,每个掩码集包括字列,所述字列包括的字的所有可能值的出现次数相同。

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公开了一种用于在电路连续地对不同的输入数据执行运算时分析代表电路活动的踪迹的方法。此方法包括提取每个踪迹的一部分,并且通过对出现在这些踪迹的每个提取部分中的每个可能值的出现次数进行计数,根据每个提取的踪迹部分生成直方图。然后通过对每个输入数据和运算中涉及的密钥的一部分的每个可能值应用运算来计算运算的部分结果。然后,此方法针对密钥的每个可能的部分值,识别提供相同部分结果的所有输入数据。对于密钥的每个可能的部分值,然后将直方图中与识别的输入数据和密钥的部分值对应的出现次数进行相加。密钥的一部分可以通过对相加的出现次数进行统计分析来确定。统计分析假设如果与密钥相关的值已经在所提取的踪迹部分中泄露,则可以通过相加的出现次数突显它。
可能期望提出一种使集成电路或软件程序免受这些侧信道分析中的一种或多种的保护。
发明内容
描述了一种用于由电路执行用以将第一输入数据与第二输入数据相组合的运算的方法。所述方法可以包括:定义数据对,由此将第一输入集的每个数据与第二输入集的相应数据进行关联,所述第一输入集包括第一输入数据,所述第一输入集中的数据通过对所述第一输入数据和对第一掩码集中的所有第一掩码参数应用异或XOR运算而获得,所述第一掩码集中的每个第一掩码参数包括至少一个第一字,所述第一掩码集中的所述第一字具有相同大小并且形成第一字子集,所述第一字子集包括来自所述第一掩码集的每个第一掩码参数的单个字并且包括的所述第一字的所有可能值的出现次数相同,所述第二输入集包括所述第二输入数据,所述第二输入集中的数据通过对所述第二输入数据和对第二掩码集中的所有第二掩码参数应用XOR运算而获得,所述第二掩码集中的每个第二掩码参数包括至少一个第二字,所述第二掩码集中的所述第二字具有相同大小并且形成第二字子集,所述第二字子集包括来自所述第二掩码集的每个第二掩码参数的单个字并且包括的所述第二字的所有可能值的出现次数相同;以及通过对所述数据对中的每一者应用所述运算来计算输出数据,所述运算的输出集包括对所述数据对中的一者应用所述运算而产生的所有输出数据,其中生成所述第二掩码集,以使得所述第一掩码集中的所述第一掩码参数中的每一者与所述第二掩码集中的对应第二掩码参数的借助XOR运算的组合产生包括第三掩码参数的第三掩码集,所述第三掩码集中的每个第三掩码参数包括至少一个第三字,所述第三掩码集中的所述第三字具有相同大小并且形成第三字子集,所述第三字子集包括来自所述第三掩码集的每个第三掩码参数的单个字并且包括的所述第三字的所有可能值的出现次数相同。
根据一个实施例,所述运算是异或。
根据一个实施例,所述第二输入集等于所述第一掩码集。
根据一个实施例,所述第一和第二掩码集从第一对的第一和第二字置换来生成,每个字置换包括的字的所有可能值的出现次数相同,以使得所述第一置换中的每个字与所述第二置换的相应字的借助XOR运算的组合提供合成置换(resultant permutation),所述合成置换包括字并且所述字的所有可能值的出现次数相同,所述第一和第二掩码集使用以下等式来生成:
U1[l]=PM(u1[l]⊕UR),和
V1[l]=PM(v1[l]⊕VR),或
U1[l]=PM(u1[l])⊕UR,和
V1[l]=PM(v1[l])⊕VR
对于每个索引I,其中UR和VR是具有掩码参数U1[I]或V1[I]中的任一者的大小的随机字,u1和v1分别是通过所述等式获得的预先计算的集或等于所述第一对的掩码集,并且PM是被应用于集u1和v1的随机选择的置换。
根据一个实施例,通过替换运算在相应经掩蔽替换表中选择所述第二输入集中的每个第二输入数据,所述经掩蔽替换表从输入替换表来生成,并且针对所述第一掩码集中的所述第一掩码参数中的每一者和所述第二掩码集中的所述对应第二掩码参数包括一个经掩蔽替换表。
根据一个实施例,生成所述经掩蔽替换表,方式为:生成所述第一掩码集;生成所述第二掩码集,所述第二掩码集包括数量等于所述输入替换表中的值的数量的第二掩码参数;在所述第一和第二掩码集中选择一次每个掩码参数以形成掩码对,每个掩码对包括所述第一掩码参数中的一者和所述第二掩码参数中的一者;针对所述第一掩码集中的每个掩码参数生成所述经掩蔽替换表中的一者,所述经掩蔽替换表中的每一者的生成包括:选择所述输入替换表中的每个数据,并且针对每个选定数据:通过对所述选定数据和对与所述第一掩码参数对应的所述第二掩码参数或对所述第一掩码参数的变换后的值应用XOR运算来计算经掩蔽数据;通过对原始索引和对所述第一掩码参数或所述第一掩码参数的变换后的值应用XOR运算来计算经掩蔽索引;以及将所述经掩蔽数据存储在所述经掩蔽替换表中,所述选定数据在所述原始索引处被选择并且所述经掩蔽数据被存储在所述经掩蔽索引处,或者所述选定数据在所述经掩蔽索引处被选择并且所述经掩蔽数据被存储在所述原始索引处。
根据一个实施例,以随机顺序执行所述输出集中的所述数据的计算。
根据一个实施例,所述输出集中的每个输出数据包括至少一个字,所述输出集中的所述字具有相同大小并且形成输出字子集,所述输出字子集包括来自所述输出集中的每个输出数据的单个字并且包括的所述字的所有可能值的出现次数相同,所述方法包括:在所述输出字子集中检测出现次数不同于所述输出字子集中的其它字的出现次数的字,当在所述字输出子集中发现具有不同出现次数的两个字时,检测到错误,或者通过XOR运算将所述输出集中的每个数据与合成掩码集的相应掩码参数相组合,以使得所述输出集包括从对被应用于所述第一和第二输入数据的所述运算的输出数据和对所述合成掩码集的每个掩码参数应用XOR运算而产生的数据,当被应用于所述输出集中的两个数据的XOR运算提供不同数据时,检测到错误。
根据一个实施例,通过运算生成所述第一输入数据,所述运算包括用以混合输入数据的位的位置换运算,所述方法包括:对第三输入集中的所有数据应用所述位置换运算,在所述第三输入集中,每个数据通过XOR运算被与所述第一掩码集中的所述第一掩码参数中的一者相组合,所述位置换运算的输出包括输出集,所述输出集包括从对所述第三输入集中的所述数据中的一者应用所述位置换运算而产生的所有数据,所述第一掩码集被生成为使得所述位置换运算的所述输出集中的每个数据包括至少两个字,所述输出集中的所述字具有相同大小并形成输出字子集,所述输出字子集包括来自所述输出集中的每个数据的单个字并且所述输出字子集中的所述字的所有可能值的出现次数相同。
各实施例还涉及一种用于根据包括将第一和第二输入数据相组合的运算的密码算法对输入数据进行加密或解密的方法,其中所述运算根据上面定义的方法被执行。
根据一个实施例,所述密码算法符合高级加密标准(AES)算法,所述方法包括:通过对所述输入数据的每个字、对所述第一掩码集中的每个掩码参数以及对与所述输入数据的字相对应的私钥的字应用XOR运算而生成输入集;执行若干中间轮,每轮包括:使用提供替换输出集的经掩蔽替换表执行替换运算,所述替换输出集中的每个字被所述第二掩码集的相应掩码参数所掩蔽,通过对被所述第二掩码集的相应掩码参数所掩蔽的轮集的每个字、对所述第一掩码集的相应掩码参数以及对所述第二掩码集的相应掩码参数应用XOR运算而计算经掩蔽轮输出集,以及使用所述经掩蔽轮输出集作为下一轮的输入集;提供输出集,所述输出集中的每个字被所述第一掩码集的相应掩码参数所掩蔽。
根据一个实施例,所述密码算法符合高级加密标准(DES)算法,所述方法包括:通过对由初始位置换运算提供的结果数据的每个字和对所述第一掩码集的每个掩码参数应用XOR运算来生成输入集;执行若干中间轮,每轮包括:执行在第一轮被应用于所述输入集并且在后续轮中被应用于轮输出集的展开式位置换,所述第一掩码集被生成为使得所述位置换运算的位置换输出集中的每个数据包括至少两个字,所述输出集中的所述字具有相同大小并形成输出字子集,所述输出字子集包括来自所述输出集中的每个数据的单个字并且所述输出字子集中的所述字的所有可能值的出现次数相同;使用提供替换输出集的经掩蔽替换表执行替换运算,所述替换输出集中的每个字被所述第二掩码集的相应掩码参数所掩蔽,通过对被所述第一和第二掩码集的相应掩码参数所掩蔽的轮集的每个字以及对所述第二掩码集的相应掩码参数应用XOR运算而计算经掩蔽轮输出集,以及提供输出集,所述输出集中的每个字被所述第一掩码集的相应掩码参数所掩蔽。
各实施例还可以涉及一种电路,其包括处理器并被配置为实现如以上定义的方法。
根据一个实施例,所述电路包括协处理器。
各实施例还可以涉及一种设备,其包括布置在介质上的如以上定义的电路。
各实施例还可以涉及一种计算机程序产品,其可加载到计算机存储器中并包括代码部分,当由计算机执行时,所述代码部分配置所述计算机以执行如以上定义的方法的步骤。
附图说明
通过参考下面的附图和说明书,可以更好地理解上述方法和/或设备。非限制且非穷举的说明书借助以下附图进行描述。在附图中,相同的参考标号可以指不同附图当中的相同部分,除非另有所指,这些附图是:
图1表示安全电路的常规架构;
图2是根据一个实施例保护的电路的框图;
图3是根据一个实施例的变换输入数据的保护步骤的流程图;
图4是示出根据一个实施例的保护步骤的框图;
图5到图7是示出由图2的电路执行的运算的框图;
图8是根据一个实施例的包括保护步骤的AES加密算法的框图;
图9是根据一个实施例保护的运算的流程图;
图10A、10B、10C是根据各种实施例的示出用于保护替换表的方法的替换表的框图;
图11是AES加密算法中常规混合列运算的框图;
图12是根据一个实施例的受保护AES加密电路的AES混合列电路的框图;
图13是根据不同实施例的用于生成受保护的替换表的方法的流程图;
图14是根据一个实施例保护的替换运算的流程图;
图15是根据一个实施例保护的XOR运算的流程图;
图16是根据一个实施例的包括保护步骤的DES加密算法的框图;
图17是根据一个实施例的用于生成受保护的替换表的方法的流程图;
图18是根据另一实施例的变换输入数据的保护步骤的流程图;
图19是根据一个实施例的在执行DES算法时获得的中间数据集的框图;
图20是示出根据一个实施例的DES算法的运算的框图;
图21是根据一个实施例保护的XOR运算的流程图;
图22和23是根据不同实施例的表示实现DES加密算法的电路的框图;
图24是根据另一实施例的表示安全电路的框图。
具体实施方式
作为一个实例,图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执行。
本文提出使运算(例如,密码算法中的运算)免受侧信道分析。在此上下文中,运算接收输入数据,并且根据输入数据的值提供输出数据。根据一个实施例的保护涉及执行要针对输入数据集的所有数据被保护的运算,所述输入集包括需要通过运算处理的数据,所述输入集中的每个数据包括至少一个字,所述输入集中的字具有相同大小并且形成字子集或列,所述字子集或列包括来自输入集中的每个数据的单个字并且包括的所有可能的字的出现次数相同,所述出现次数与字的大小相关。另一保护涉及作为运算的结果,提供包括预期输出数据的输出集,每个数据包括至少一个字,所述输出集中的字具有相同大小并且形成字子集或列,所述字子集或列包括来自输出集中的每个数据的单个字并且包括的所有可能的字的出现次数相同,所述出现次数与字的大小相关。
在下文中,“字”表示数据中的一组位,“字列”指定数据集的子集,该子集包括来自数据集中的所有数据的单个字,字列中的所有字具有相同大小。这些字形成不一定对齐的字列,即,不一定在数据集的数据中包括相同的位位置。
图2表示接收要处理的输入数据X并顺序地执行被应用于输入数据X的多个运算OP1、OP2、...OPn的电路CT1。根据一个实施例,电路CT1包括多个电路OC1,每个电路OC1顺序地执行运算OP1、OP2、...OPn。每个电路OC1接收输入数据X和输入掩码参数集的相应输入掩码参数u。因此,电路CT1包括W+1个电路OC1,其分别接收等于0、1...W的掩码,当考虑掩码参数的位的大小时,W表示掩码参数u的最大可能值。每个电路OC1包括对输入数据X和掩码参数u(=0或1,...或W)应用异或运算(XOR)的电路XG。在每个电路OC1中,由电路XG提供的数据X⊕u(u=0,...W)被应用于运算OP1的输入端。运算OP1-OPn如下所示:
OPn(...OP2(OP1(X⊕u))...)=CX⊕v(u) (1)
其中“⊕”表示XOR运算符,v(u)表示取决于输入掩码参数u的输出掩码参数,CX是被应用于输入数据X的运算OP1-OPn的结果:
CX=OPn(...OP2(OP1(X))...) (2)
这样,每个电路OC1提供等于CX⊕v(u)(u=0,1,...或W)的输出数据。因此,电路CT1提供包括输出数据CX⊕v(0),CX⊕v(1),...CX⊕v(u),...CX⊕v(W)的输出集PCX。可以调整运算OP1-OPn,以使得对应于由运算OP1-OPn提供的输入数据X⊕u的输出数据对于掩码参数u(0-W)和输出掩码参数v(u)的每个值等于CX⊕v(u),并且在u=0到W的情况下,输出掩码参数v(u)的集在考虑输出掩码参数v(u)的大小时包括的所有可能值的出现次数相同。每个输出掩码参数v(u)可以等于对应的输入掩码参数u。根据一个实施例,输出集PCX中的输出数据的计算可以以随机顺序执行和/或以随机顺序存储。以这种方式,掩码参数u的不同值分别以随机顺序应用于电路OC1。因此,电路CT1中的秩k的电路OC1接收输入掩码参数u=U[k],U是由0和W之间的所有可能的数字的随机置换生成的掩码集。以同样的方式,电路CT1中的秩0的电路OC1接收掩码参数U[0],电路CT1中的秩W的电路OC1接收输入掩码参数U[W]。
此外,电路OC1彼此独立,并且输出集PCX的每个数据CX⊕v(u)的计算独立于该输出集的其它数据的计算。因此,只要遵循每个电路OC1内的运算顺序,所有电路OC1中的运算OP1-OPn可以以任何顺序执行。
与现有技术的保护不同(现有技术涉及在应用于随机数据的大量相同运算中隐藏要保护的运算,因此与要保护的运算的所需输入数据不相关),本文的理念是针对不是随机选择的其它数据执行运算。实际上,这种其它数据在这样的程度上与所需输入数据相关:即,由此类其它数据和要处理的所需数据形成的输入集包括具有要通过所述运算处理的数据的大小的所有可能数据,并且这些可能数据的出现次数相同。当然,要通过所述运算处理的输入数据应该在输入集中具有不可预测的位置,但是执行所述运算的电路知晓该位置。
输入集可以通过使用逻辑XOR运算将所需输入数据X与掩码集U的掩码参数U[1]进行组合而获得,该掩码集U包括例如一个字节的所有可能值(在0和255之间)。因此,如果输入数据X具有一个字节的大小,则输入集包括等于X⊕U[l]的256个数据,其中U[1]=0到255,并且所需输入数据X=PX[n]=X⊕U[n],且U[n]=0(“⊕”表示被应用于字节的XOR运算符)。当输入数据在一个字节上编码时,根据一个实施例,可以通过对包括数据PX[l]=X⊕U[l]的输入集中的所有数据应用运算来保护该运算,其中l=0到255,即所有可能的数据具有一个字节的大小。输出集中的输出数据的计算可以以随机顺序执行。为此,可以按照随机顺序排列输入集中的数据。
图3表示根据一个实施例的用于生成包括输入数据X的输入集PX的程序的步骤S11到S17。相继执行步骤S11到S16。在步骤S11,变量RN接收根据被用于以二进制码对输入数据X进行编码的位数所定义的大小来确定的0和最大值W之间的随机值。因此,对于在b个位上编码的变量RN,最大值W等于2b-1。如果变量RN在8位上编码,则值W等于255。如果变量RN在16位上编码,则值W等于216-1(=65535)。在步骤S12,将索引l设定为0。在步骤S13,通过对索引l和变量RN应用XOR运算来计算掩码参数MSK(=l⊕RN)。在步骤S14,通过对输入数据X和对掩码参数MSK应用XOR运算来计算由形成输入集PX的表的索引l指定的输入数据PX[l]。图4表示输入数据X、掩码参数MSK的不同值U[0](=0⊕RN),U[1](=1⊕RN),…U[W](=W⊕RN)和输入集PX的不同数据PX[0],PX[1]),…PX[W]。
在步骤S15,索引l递增一(1)。在步骤S16,将索引l与最大值W进行比较,如果索引l大于值W,则执行步骤S17,否则在步骤S13到S16中执行计算的新迭代。在步骤S17,提供表PX作为程序S11-S17的输出,预期输入数据位于表PX中的索引n(X=PX[n]))处,该索引n具有的值使得掩码参数U[n]=0。实际上,被应用于数据D和0的XOR运算的结果不会变换数据D。
应当注意,掩码参数MSK的值可以以随机顺序处理,而不一定按照从0⊕RN到W⊕RN的顺序进行处理。可以将多个运算应用于输入集PX以计算输出集。预期输出数据可以在处理的后续步骤中从输出集的已知索引n处提取,例如被视为对侧信道分析不那么敏感。
此外,输入数据X可以在具有相同位数的几个二进制字上编码。掩码参数MSK还具有与数据X相同的位数。如果输入数据在一个字节(8位字)上编码,则掩码参数MSK也可以在8位上编码。在步骤S13到S16之间必须执行的迭代次数W+1等于2b,b是数据X的位数大小。如果数据X在具有16、32或64位的一个字上编码,则可能需要限制该迭代次数。如果被应用于输入数据的运算被逐字节执行,则掩码参数MSK可以在8位上编码,并且掩码参数MSK可以通过将掩码参数MSK自身串接多次以形成具有输入数据X的大小的字,在步骤S14被与输入数据X组合。因此,在数据X在16位上编码的情况下,在8位上编码的掩码参数MSK可以自身进行串接以获得16位上的字。然后,在步骤S14执行的运算变为:
PX[l]=X⊕MSK//MSK (3)
“//”表示二进制字的串接运算符。在数据X在32位上编码的情况下,在8位上编码的掩码参数MSK的每个值本身串接三次以获得32位上的字。然后,在步骤S14执行的运算变为:
PX[l]=X⊕MSK//MSK//MSK//MSK (4)
事实上,用作掩码的掩码参数MSK可以具有在算法中被所考虑的运算处理的字的大小。
此外,掩码参数MSK的串接值可以彼此不同:
PR[i]=OPR(X,KY⊕MSK1//MSK2//MSK3//MSK4) (5)
前提是存储索引,其中MSKj=0(j=1,2,3,4)。
图5示出对受保护数据X1和不受保护数据X2应用诸如XOR之类的运算,数据X1、X2具有一个或多个字的大小。因此,数据X1由包括数据PX[0],PX[1],...PX[W]的输入集PX1表示,这些数据中的每一者具有与输入数据X1相同的大小,且W=2b-1,其中b是输入数据中的字的大小。所需数据X1位于输入集PX1中的索引n处:X1=PX[n],n是0和W之间的整数。运算结果是包括W+1个输出数据PR[0],PR[1],...PR[W]的输出集PR,其中每个数据PR[j](j=0,...W)等于PX[j]⊕X2。运算PR[n](=PR[n]⊕X2=X1⊕X2)的预期结果位于表PR中的索引n处,与表PX1中的所需输入数据X1的位置相同。由于包括0和W之间的W+1数据(作为输入集PX1),所得到的输出集PR提供与输入集PX1相同的预期结果PR[n]的保护级别。
当在密码算法中使用的两个受保护数据X1、X2通过诸如XOR之类的运算进行组合时,可能会出现问题,数据X1、X2通过被数据PX1、PX2的输入集替换而受到保护。输入集PX1、PX2中的每一者还可以包括所有可能的数据,具体取决于输入数据X1、X2或其字的大小(该大小通过应用采取U[l]//…//U[l]形式的掩码参数集定义)其中l=0,...W,U[l]具有一个字的大小,输入数据被逐字进行处理。图6表示输入数据集PX1、PX2。输入集PX1包括数据PX1[0],...PX1[W],所需输入数据X1(=PX1[n])位于索引n处。以相同的方式,输入集PX2包括数据PX2[0],...PX2[W],所需输入数据X2(=PX2[n])位于相同的索引n处。
通过将不同的掩码值应用于所需输入数据X1和X2,生成输入集PX1和PX2:
PX1[j]=X1⊕Uj,对于{0,...,W}中的索引j的所有值,并且
PX2[j]=X2⊕Vj,对于{0,...,W}中的索引j的所有值。
因此,保护运算(X1⊕X2)的第一种方法可以是针对0和W之间的索引j的所有值计算(PX1[j]⊕PX2[j]):
(X1⊕Uj)⊕(X2⊕Vj)=(X1⊕X2)⊕(Uj⊕Vj) (6)
实际上,不能确保数据Uj⊕Vj对于索引j的每个值彼此不同。对于索引j和k的特定值,可能发生Uj=Vk和Uk=Vj,从而导致一个掩蔽值集Uj⊕Vj包括两个相同的值Uj⊕Vk=Uk⊕Vj。
因此,输出集PR不满足包含所有可能的数据值(当X1和X2在一个字节上编码时,这些值位于0和W之间)的条件。在极端情况下,Uj和Vj对于每个索引值j具有相同的值。因此:
(X1⊕Uj)⊕(X2⊕Vj)=(X1⊕X2)⊕0=X1⊕X2 (7)
结果,W+1个计算中的每一者返回是期望输出结果的相同结果X1⊕X2。不仅预期结果不受保护,而且该解决方案会在预期结果上产生严重泄露,因为要保护的运算被执行W+1次。
生成受保护的输出数据的另一种方法可以是在输入集PX1、PX2中的一者中选择一个数据,并将运算应用于该选定的数据和应用于另一输入数据集的所有数据。因此,例如,数据PX2[k]在集PX2中被选定,并被与输入集PX1中的所有数据相组合。因此,输出集PR2中的每个结果数据PR2[j]按照以下方式计算:
PR2[j]=PX1[j]⊕PR2[k] (8)
其中j=0,2,...W并且k具有固定值。通过这样做,确保输出集PR2不包括两个相同的数据PR2[j]:
PX1[j]⊕PX2[k]=(X1⊕Uj)⊕(X2⊕Vk)=(X1⊕X2)⊕Uj⊕Vk (9)
其中如果Uj不同于Uj',则Uj⊕Vk不同于Uj’⊕Vk。然而,输出数据PR2中的结果数据PR2[j]的计算需要读取数据集PX2中的单个数据PX2[k],另外读取输入集PX1中的所有数据。在某些情况下,这种不均衡处理可能会产生泄露,从而公开数据PX2[k]。如果选定的数据PX2[k]等于所需输入数据X2(=PX2[n]),则泄漏可能使能公开数据X2的值。如果集PX2中的另一数据PX2[k](k≠n)被选择为与集PX1的所有数据PX1[j]相组合,则需要存储掩码Mk的值,以使得所选择的数据PX2[k]=X2⊕Uk。
根据一个实施例,生成受保护的输出数据的另一种方式如图7所示。在图7中,运算X1⊕X2的输出集PR2包括(W+1)(W+1)个输出数据PR2[ij],以使得:
PR2[i.j]=PX1[i]⊕PX2[j] (10)
其中索引i和j均具有在0和W之间的所有可能的整数值。然而,该解决方案需要执行(W+1)(W+1)次计算。
根据图6所示的一个实施例,输入PX1中的每个数据PX1[1]和输入PX2中的每个数据PX2[1]按照以下方式计算:
PX1[l]=X1⊕U[l]并且PX2[l]=X2⊕V[l] (1)
U和V是包括掩码参数U[1]和V[1](l=0,...W)的掩码表,以使得每个表U和V中的每个字列包括的字的所有可能值的出现次数相同。此外,表U和V使得对于从0到W的索引l的所有值,组合U[l]⊕V[l]提供包括至少一个字列的掩码集Z,掩码集Z的每个字列包括的字的所有可能值的出现次数相同。
根据一个实施例,掩码表U0和V0的一个或多个对(U0,V0)被存储在电路CT1中,每个对(U0,V0)被测试为提供诸如每个值Z[l]=U0[l]⊕V0[l]的表Z,掩码集Z的每个字列包括的字的所有可能值的出现次数相同(所述出现次数具有所考虑的字的大小)。电路CT1被配置为按照以下方式导出成对的掩码表(u2,v2):
u2[l]=PM(u1[l]⊕UR),和
v2[l]=PM(v1[l]⊕VR), (12)
或者
u2[l]=PM(u1[l])⊕UR,和
v2[l]=PM(v1[l])⊕VR (2)
对于每个索引l,其中UR和VR是具有掩码参数U[1]或V[1]中任一者的大小的随机字,u1和v1是通过等式(12)或(13)获得的先前计算的表,或分别等于U0和V0,PM是被应用于表U1和V1的元素的随机选择的置换。可以证明,使用等式(12)或(13)计算的每个对(u2,v2)具有提供表Z的性质,以使得掩码表Z的每个字列包括的字的所有可能值的出现次数相同(所述出现次数具有所考虑的字的大小)。因此,通过适当选择分别用于从输入数据X1、X2生成输入集PX1、PX2的掩码集U和V,图6所示的计算方法能够提供保护输出数据X1⊕X2的结果输出集PR1,且保护级别与用于输入数据X1、X2的输入集PX1、PX2的保护级别相同。
通过软件或硬件实现的在AES(高级加密标准)算法中执行的所有运算可以使用先前公开的方法进行保护。图8表示实现用于加密数据的AES算法的加密计算电路CT2的一个实例。有关AES的更多详细信息,可以参考2001年11月26日公布的文件“AdvancedEncryption Standard FIPS PUB 197(高级加密标准FIPS PUB 197)”。在图8中,加密计算电路CT1接收要加密的数据X1和包含从私钥导出的所有必要轮次密钥的轮次密钥表KT。电路CT1提供加密后的数据CX1。电路CT1包括执行XOR运算的电路XG1、XG2、XG3、替换计算电路SBB、基于行的循环置换计算电路SHR、基于列的置换计算电路MXC和多路复用器MUX。电路SBB、SHR和MXC遵循AES。电路XG1接收要加密的数据X1和第一轮密钥KT[0]。电路XG1的输出被提供给电路SBB。电路SBB的一个输出被提供给电路SHR。电路SHR的一个输出通过多路复用器MUX提供给电路MXC或提供给电路XG3的输入端(该输入端在密钥输入端接收最后一轮密钥KT[R])。电路MXC的一个输出端连接到电路XG2的输入端,该电路XG2在密钥输入端接收用于第r轮的轮密钥KT[r]。电路XG2的一个输出端连接到电路SBB的输入端。在最后一轮R,当已经通过包括电路SBB、SHR、MXC和XG2的链执行特定数量的轮次(10、12或14,与AES一致)时,多路复用器MUX被启动以将电路SHR的输出提供给供应输出数据CX1的电路XG3的输入端。
在第一计算轮中,数据X1由电路XG1进行处理,电路XG1将数据X1与第一轮密钥KT[0]相加。电路XG1提供由电路SBB、SHR、MXC和XG2相继处理的结果数据X1⊕K[0]。然后,电路XG2将由电路MXC提供的数据与下一轮密钥KT[r]进行组合。电路SBB、SHR、MXC和XG1在AES算法的多个轮次R中相继被激活。替换计算电路SBB一般使用替换表实现。
根据一个实施例,电路CT2具有电路CT1的架构(图2)。因此,电路CT2包括W+1个电路OC2,即,针对被电路CT2处理的输入数据集中的每个数据具有一个电路OC2。每个电路OC2包括电路XG1、XG2、XG3、SBB、SHR、MXC和MUX。每个电路OC2进一步包括电路XG4和XG5。电路XG4接收输入数据X1并被连接到电路XG1的输入端。电路XG5连接到电路XG2的输出端和连接到电路SBB的输入端。每个电路OC2从掩码表U和V接收相应的掩码参数U[1]、V[1]以及相应的经掩蔽替换表SBM[1]。
根据一个实施例,使用以下等式,针对每个电路OC2计算经掩蔽替换表SBM[1]:
SBM[l,i⊕U[l]]=SBX[i]⊕V[l], (3)
其中SBX是替换或查找表,i是用于选择表SBX中的值SBX[i]的索引,U[1]和V[1]分别是输入和输出掩码。图10A表示替换表SBX和通过对表SBX中的每个值SBX[i]应用等式(14)从表SBX导出的经掩蔽表SBM[1]。因此,被应用于经掩蔽输入数据D⊕U[l]的替换运算的结果是被已知输出掩码V[1]所掩蔽的输出数据。如图10B所示,经掩蔽替换表SBM[1]也可以通过将以下等式应用到替换表SB的每个值SB[i]而获得:
SBM[l,i]=SBX[i⊕U[l]]⊕V[l] (15)
图9表示根据一个实施例的用于从AES替换表SBX计算经掩蔽替换表SBM的程序的步骤S21到S28。首先相继执行步骤S21到S27。在步骤S21,输入替换表SBX。在步骤S22,生成掩码表U和V。根据一个实施例,使用等式(12)或(13)生成掩码表U和V。置换U和V中的每一者包括0和W之间的W+1值,其中W+1是表SBX中的值的数量。使用随机置换生成函数RNP随机生成表格形式的一个置换PM。置换PM包括0和等于(W+1)(W+1)-1的最大值KX之间的(W+1)(W+1)个值。在步骤S23,将索引k初始化为零(0)。在步骤S24,通过考虑置换PM是包括由W+1个元素构成的行和由W+1个元素构成的列的双项表,从索引k计算索引i和j。因此,索引i可以被计算为值PM[k]除以(W+1)的整数部,并且索引j可以被计算为值PM[k]与索引i和(W+1)的乘积之间的差。步骤S25使用随机置换PM计算在表SMB中随机选择的表值SBM[i,j]。表SBM中的索引i和j处的每个值SBM[i,j]被设定为被应用于数据SB[j⊕U[i]]和V[i]的XOR运算的结果SBX[[j⊕U[i]]⊕V[i],掩码参数U[i]和V[i]也在表U和V中被随机地选择,因为索引i和j使用置换PM来定义。在步骤S26,索引k递增一(1)。在步骤S27,将索引k与最大值KX进行比较。如果索引k大于值KX,则执行步骤S28,否则再次执行步骤S25到S27以进行新的迭代。在步骤S28,经掩蔽表SBM被完全定义并被提供为步骤S21到S27的输出。替换表SBX和经掩蔽替换表SBM在图10C中表示。可以注意到,置换PM的使用不是强制性的,并且可以以确定性顺序来计算表SBM的值。
电路OC2中的每一者的电路XG4借助XOR运算将输入数据X1与掩码参数U[1]进行组合。电路XG4一起执行图3的步骤S11到S17,对于掩码集U(l=0,…W)的每个掩码参数,输入数据X1的(W4+1)(=16)个字节中的每一者被与具有一个字节大小的相应掩码参数U[1]相组合。电路XG4中的每一者提供输入数据PX10[l]=X1⊕U[l]。
每个电路OC2的电路XG1通过XOR运算将数据PX10[1]与轮密钥KT[0]进行组合。电路XG1一起执行图11的步骤S31到S37,输入数据X1的16个字节中的每一者被与第一轮密钥KT[0]的相应字节相组合。图11表示根据一个实施例的用于生成将运算应用于输入集PX10和轮密钥KT[0]而产生的输出集PX2<0>的程序的步骤S31到S38。首先相继执行步骤S31到S37。在步骤S31,输入输出集PX2<0>和包括W4+1(24=16)个字的轮密钥KT[0]。在步骤S32,使用函数RNP随机生成表格形式的置换PM,置换PM包括0和最大值KX=(W+1)(W4+1)-1之间的(W+1)(W4+1)个值,其中W+1=2P,P(=8)是形成轮密钥KT[0]的每个字KT[0,b]的位数。在步骤S33,将索引k初始化为零(0)。在步骤S34,通过考虑置换PM是包括由W4+1个元素构成的行和W+1个元素构成的列的双项表,从索引k计算索引l和b。因此,索引I可以被计算为值PM[k]除以(4W+1)的整数部,并且索引b可以被计算为值PM[k]与索引I和(4W+1)的乘积之间的差。步骤S35计算采取双项表形式的输出集PX2<0>的输出数据PX2<0>[l,b]。索引l和b处的每个输出数据PX2<0>[l,b]被设定为被应用于字PX2<0>[l,b]和KT[0,b]的XOR运算的结果PX10[l,b]⊕KT[0,b])。由于使用置换PM,输出集PX2<0>中的输出数据PX2<0>[l,b]以随机顺序计算,并且也以随机顺序排列在输出集PX2<0>中。在步骤S36,索引k递增一(1)。在步骤S37,将索引k与最大值KX进行比较。如果索引k大于值KX,则执行步骤S38,否则再次执行步骤S35到S37以进行新的迭代。在步骤S38,输出集PX<2>0被完全定义并被提供为步骤S31到S37的输出。可以观察到,输出集PX2<0>中的每个数据PX2<0>[l](大小为W4+1字节)是运算PX10[l]⊕KT[0]的结果,其中PX10[l]=X1⊕U[l]。然后,PX2<0>[l]=(X1⊕KT[0])⊕U[l]。因此,被应用于输入值X1的掩码U[1]保留在由电路OC2中的运算XG1执行的计算中。
在此,再次地,不需要以随机顺序计算输出集PX2<0>中的数据或以随机顺序存储它们。在这种情况下,置换PM的使用不是强制性的。
电路OC2中的每一者的电路SBB从输出集PX2<0>接收数据PX2<r>[l]或从通过上一计算轮r和经掩蔽替换表SBM[l]获得的输出集PX2<r>接收数据PX2<r>[l]。电路SBB一起执行图12的步骤S41到S47,集PX2(r=0,1,...)的每个数据PX2<r>[l]的W4+1个字节中的每一者被用作在替换表SBM之一中选择输入数据的索引。图12示出了根据一个实施例的使用经掩蔽替换表SBM执行受保护的替换运算的程序的步骤S41到S48。首先相继执行步骤S41到S47。在步骤S41,输入经掩蔽替换表SBM和集PX2<r>。集PX2<r>包括字PX2<r>[0,0],…PX2<r>[W,W4]。在步骤S42,使用函数RNP随机生成表格形式的置换PM。置换PM包括在0和等于(W+1)(W4+1)-1的最大值KX之间的(W+1)(W4+1)个值。在步骤S43,将索引k初始化为零(0)。在步骤S44中,如步骤S4那样计算索引l和b。在步骤S34,通过考虑置换PM是包括由W4+1个元素构成的行和和W+1个元素构成的列的双项表,从索引k计算索引l和b。因此,索引l可以被计算为值PM[k]除以(4W+1)的整数部,并且索引b可以被计算为值PM[k]与索引I和(4W+1)的乘积之间的差。步骤S45使用随机置换PM计算在输出集PX3<r>中随机选择的输出数据PX3<r>[l,b]。位于索引l和b处的每个输出字节PX3<r>[l,b]被设定为在表SBM[1]的以下索引处选择的数据SBM[l,PX2<r>[l,b]]的值:该索引由在集PX2<r>中的索引I和b处选择的数据PX2<r>[l,b]定义。在步骤S46,索引k递增一(1)。在步骤S47,将索引k与最大值KX进行比较。如果索引k大于值KX,则执行步骤S48,否则再次执行步骤S44到S47以进行新的迭代。在步骤S48,输出集PX3<r>被完全定义并被提供为步骤S41到S47的输出。
由电路OC2中的电路SBB提供的集PX3<r>包括在第一轮(r=0)等于SBX[X1⊕KT[0]]⊕V[l](l=0,…W)的数据PX3<r>[l]。电路OC2的电路SHR处理集PX3<r>并提供输出集PX4<r>。电路SBB和SHR的位置可以颠倒,在执行由电路SBB执行的替换计算之前,由电路SHR执行的基于行的循环置换计算被应用于表PX2<r>中的数据。在r=0到R-1轮中,将集PX4<r>提供给电路OC2的电路MXC。
图13表示电路MXC。电路MXC将从电路SHR接收的数据X3与4×4个元素构成的系数矩阵MC进行组合。为此,将输出数据X6组织为采取4×4个元素x0至x15格式的矩阵,这些元素中的每一者对应于以128位编码的数据X6的字节。矩阵X6的元素通过XOR运算将电路XG6与矩阵MC的元素组合在一起,以产生4×4元素的合成矩阵TR,其中每个元素具有以下形式:
a·x<i>⊕b·x<i+1>⊕c·x<i+2>⊕d·x<i+3> (16)
其中a、b、c、d(=1、2或3)是矩阵MC的一行的元素,i等于0、4、8和12。根据AES,如果x低于128(当x的最高有效位(MSB)等于0时),则通过使用运算LS1(x)来执行运算2·x,如果x大于或等于128(当x的MSB等于1时),通过使用运算LS1(x)⊕0x1B来执行运算2·x,LS1(x)表示在字节x中向左移1位。运算3·x通过使用运算2·x⊕x来执行。
由于输入数据X3的每个字节b由一个表PX4<r>[0..W,b]表示,因此电路MXC针对集PX4<r>[I,0..W4]中的每个字节执行3×16次XOR运算。完成运算3·x可能需要再执行一次XOR运算。然而,在AES算法的一些实现中,运算2·x和3·x通过查找表实现。
如图14所示,在每个表PX4<r>[l,0..W4]中执行用于计算图13所示的矩阵TR的元素的XOR运算,并且这些运算针对每个表PX4<r>[l,0..W4]提供表PX5<r>[l,0..W4]。
当执行电路MXC的运算以将掩码保留在数据上时,由于每个字节x’<j>被相同掩码v(=V[l],x’<j>=x<j>⊕v)掩蔽,因此需要关注运算的顺序。等式(16)的运算通过应用以下性质来执行:
a(x⊕v)=ax⊕av,其中a=2或3 (17)
因此:
A=2x<0>⊕3x<1>⊕2v⊕3v⊕x’<2>⊕x’<3>
=2x<0>⊕3x<1>⊕2v⊕2v⊕v⊕x’<2>⊕x’<3>
=2x<0>⊕3x<1>⊕v⊕x<2>⊕v⊕x’<3>
=2x<0>⊕3x<1>⊕x<2>⊕x’<3> (18)
因此,在计算的该步骤,去除掩码v,这可以形成可由侧信道分析利用以确定数据x的泄漏,即使当执行最后一个XOR运算时掩码v再次出现也是如此:
A=(2x<0>⊕3x<1>⊕x<2>⊕x<3>)⊕v (19)
相比之下,如果以以下顺序执行元素A的计算:
A=2x’<0>⊕x’<2>⊕x’<3>⊕3x’<1> (20)
则可以获得:
A=2x<0>⊕x<2>⊕x’<3>⊕3x’<1>⊕2v⊕v
=2x<0>⊕x<2>⊕x<3>⊕3x’<1>⊕3v⊕v
=2x<0>⊕x<2>⊕x<3>⊕3x’<1>⊕2v⊕v⊕v
=2x<0>⊕x<2>⊕x<3>⊕3x<1>⊕2v⊕3v
=2x<0>⊕x<2>⊕x<3>⊕3x<1>⊕v (21)
因此,当以系数a、b、c、d等于(2 1 1 3)的顺序执行XOR运算时,每个XOR运算的结果总是被掩蔽。顺序(1 2 1 3)、(3 1 1 2)和(1 3 1 2)也在每个XOR运算之后保持掩蔽。还可以观察到,被应用于输入数据的掩码v保持在由电路MXC执行的运算的输出数据中。
电路OC2的电路XG2将集PX5<r>与轮密钥KT[r]进行组合。为此,电路XG2一起执行图11的步骤S31到S37,使用输入集PX5<r>和轮密钥KT[r]来提供输出集PX6<r>。电路OC2中的每一者的电路XG5通过XOR运算将数据PX6[1]与掩码参数Z[l]=U[l]⊕V[l]进行组合。根据一个实施例,电路XG5一起执行图15的步骤S51到S57,以针对掩码集Z(l=0,…W)的每个掩码参数,将每个数据PX6<r>[l]的(W4+1)(=16)个字节中的每一者与具有一个字节大小的相应掩码参数Z[l]进行组合。首先相继执行步骤S51到S57。在步骤S51,输入掩码表Z和集PX6<r>。在步骤S52,使用函数RNP随机生成表格形式的置换PM,置换PM包括0和最大值KX=(W+1)(W4+1)-1之间的(W+1)(W4+1)个值。在步骤S53,将索引k初始化为零(0)。在步骤S54,像步骤S4那样计算索引l和b。步骤S55通过使用XOR运算将使用随机置换PM(PX2<r+1>[l,b]=PX6<r>[l,b]⊕Z[l])在输入集PX6<r>中随机选择的索引I和b处的输入字PX6<r>[l,b]与在掩码表Z中随机选择的索引I处的掩码参数Z[l]进行组合来计算输出集PX2<r+1>中索引I和b处的输出字PX2<r+1>[l,b]。在步骤S56,索引k递增一(1)。在步骤S57,将索引k与最大值KX进行比较。如果索引k大于值KX,则执行步骤S58,否则再次执行步骤S54到S57以进行新的迭代。在步骤S58,输出集PX2<r+1>被完全定义并被提供为步骤S51到S57的输出。
由电路OC2的电路XG5提供的输出集PX2<r+1>包括被掩码参数Z[l]=U[l]⊕V[l](l=0,..W)掩蔽的字PX2<r+1>[1,b]。由于输出集PX6<r>中的字PX6<r>[l,b]已被电路SBB应用的掩码参数V[1]掩蔽,因此掩码参数V[1]被电路XG5去除。因此,数据集PX2<r+1>中的所有字PX2<r+1>[l,b]仅被掩码参数U[1]掩蔽,这样,数据集PX2<r+1>已经做好在下一轮r+1被电路SBB进一步处理的准备。
在最后一轮R,数据集PX4<R>被由电路SHR提供给电路OC2的电路XG3。电路XG3将每个数据PX4<R>[l]与最后一个轮密钥KT[R]进行组合。电路XG3一起可以使用输入集PX4<R>和最后一个轮密钥KT[R]执行图11的步骤S31到S37。最后,电路XG3提供包括字PX7<R>[l,b]=CX1[b]⊕V[l]的输出集PX7<R>,其中CX1是对应于由AES算法提供的输入数据X1的预期输出数据(加密后的数据)。更具体地说,输出集PX7<R>包括在等于预期输出数据CX1的索引n处的数据PX7<R>[n],n是输入集PX10中的输入数据X1的索引。根据一个实施例,电路XG3被配置为仅提取数据CX1。
根据AES的解密算法包括与加密算法基本相同的运算。因此,可以应用使用掩码集对(U,V)对的前述方法来保护实现AES解密算法的程序和电路。更具体地说,AES解密电路包括使用轮密钥执行XOR运算的电路、逆替换计算电路、逆基于行的循环置换计算电路、以及逆基于列的置换计算电路。图11所示的方法可以被应用于XOR运算借助导出密钥执行的每个运算。图12所示的方法可以被应用于由逆替换计算电路执行的每个运算。图14所示的方法可以被应用于逆基于列的置换计算电路。
可以注意到,先前公开的保护方法可以仅被应用于在易受侧信道分析影响的AES算法中执行的一些运算。例如,所述保护方法可以仅被应用于AES算法的从中泄露敏感数据的第一轮和最后一轮。
更一般地说,先前公开的保护方法可以应用于通过软件和/或硬件实现的并且包括组合敏感数据的XOR运算的其它加密算法,诸如ARIA(参考文献[7])。ARIA算法逐字节处理128位数据,并且按轮执行,每轮包括通过XOR运算实现的轮密钥加法、使用两个预计算的替换表的替换步骤及其逆步骤和扩散步骤。替换步骤逐字节处理与轮密钥组合的输入数据,扩散步骤将16个不同的XOR组合应用于由替换步骤提供的数据的16个字节。在这些组合的每一者中,通过XOR运算来添加七个字节的数据。
图16表示实现用于加密数据的DES算法的密码计算电路CT3的一个实例。有关DES的更多详细信息,可以参考1999年10月25日公布的文献“Data Encryption Standard(DES)FIPS PUB 46-3(数据加密标准(DES)FIPS PUB 46-3)”。在图16中,密码计算电路CT3接收要处理的数据Y1,并提供结果数据CY1。电路CT3还接收包含根据DES算法从私钥导出的全部轮密钥的轮密钥表KT1和DES替换表。电路CT3具有电路CT1的架构,因此包括W+1个相同的电路OC3,每个电路接收输入数据Y1和来自掩码集U的相应掩码参数U[1]。每个电路OC3包括初始置换电路IPM、最终置换电路FPM,以及主加密电路REC2,主加密电路REC2包括执行XOR运算的电路XG11、XG12、扩展电路EXP、替换计算电路SDS、位置换电路RPM、一个寄存器RG1和多路复用器MX1、MX2。在64位字上编码的输入数据Y1被应用于初始置换电路IPM。电路IPM执行DES初始置换运算。由电路IPM执行的运算的结果被分成左和右32位字Y2L、Y2R。
左字Y2L被发送到电路XG2。右字Y2R被发送到电路EXP和多路复用器MX1,多路复用器MX1的一个输出端连接到寄存器RG1,一个输出端连接到电路FPM的右输入端。寄存器RG1连接到电路XG2的一个输入端。电路EXP执行DES扩展操作。电路EXP接收32位数据,并将由8个6位字形成的48位数据提供给电路XG11。
电路XG11通过XOR运算将电路EXP的输出中的48位字与也在48位上编码的第一轮密钥KT[0]进行组合。由电路XG11执行的运算的结果由使用八个DES替换表提供32位字的替换计算电路SDS进行处理。电路SDS的输入中的每个6位字用作在八个DES替换表中的相应一个中选择4位字的索引。因此,电路SDS提供八个4位字,从而形成由执行DES轮位置换运算的电路RPM处理的32位数据。通过应用XOR运算的电路XG12,由电路RPM提供的32位数据被与寄存器RG1中的32位数据相组合。由电路XG12提供的结果被发送到多路复用器MX2,多路复用器MX2的一个输出端连接到电路EXP和多路复用器MX1,一个输出端连接到电路FPM的左输入端。电路FPM执行DES最终置换运算,并提供64位字CX1。
在根据DES算法的第一计算轮中,电路IPM的输出中的右32位字Y2R(R0)被存储在寄存器RG1中并由电路EXP处理,然后由电路XG11、SDS和RPM相继处理,并被提供给电路XG12。电路IPM的输出中的左32位字Y2L(L0)被发送到电路XG12。右字Y2R(R0)由多路复用器MX1发送到寄存器RG1。电路XG12的输出中的字(R1)由多路复用器MX2发送到电路EXP进行新的计算轮,并且被发送到多路复用器MX1以执行下一轮。在第二轮和所有下一计算轮中,由电路XG12计算的32位字被电路EXP、XG1、SDS、RPM和XG12处理,电路XG12接收被存储在寄存器RG1中的字。
在第16和最后一轮中,寄存器RG1中的字(R14)通过电路XG12被与电路RPM的输出相组合,电路XG12将字(R16)提供给多路复用器MX2,多路复用器MX2将该字作为最高有效字发送到最终置换电路FPM的左输入端。同时,由电路XG12计算的字(R15=L16)被多路复用器MX1作为最低有效字提供给输出所述输出数据CY1的电路FPM的右输入端。
根据一个实施例,电路OC3中的每一者从掩码集U接收相应的掩码参数U[1],从掩码集V接收掩码参数V[1]以及接收经掩蔽替换表SB1[1]。电路OC3中的每一者包括利用掩码参数U[1]执行XOR运算的电路XG13、XG14、XG15、XG16以及利用掩码参数V[1]执行XOR运算的电路XG17。电路XG13、XG14分别介于电路IPM以及电路EXP和XG12之间。电路XG15、XG16分别介于复用器MX1、MX2和电路FPM之间。电路XG17介于电路XG12和复用器MX2之间。电路XG13和XG14从由电路IPM提供的数据Y2L、Y2R,提供32位字输入集PY2<0>(=PY2R)和PY2L。电路EXP从输出集PY2<r>提供48位字输出集PY3<r>,r是从0到R的DES轮数。电路XG1从输出集PY3<r>提供48位字输出集PY4<r>。电路SDS从输出集PY4<r>提供32位字输出集PY5<r>。电路RPM从输出集PY5<r>提供32位字输出集PY6<r>。电路XG12从输出集PY6<r>提供32位字输出集PY7<r>。最后,电路XG17从输出集PY7<r>提供32位字输出集PY2<r+1>。电路XG15从数据PY2[1]<R-1>中去除掩码参数U[1],电路XG16从数据PY2[1]<R>中去除掩码参数U[1]。
根据一个实施例,电路CT3的输入中的掩码集U包括W+1个32位字,每个字是通过针对0和W=255之间的每个整数l串接四个字节U1[1]、U2[1]、U3[1]、U4[1]而获得的(U[l]=U1[l]//U2[l]//U3[l]//U4[l]),U1、U2、U3、U4为W+1个字节的四个置换,以使得:
U2=F1(U1),
U3=F2(U1),以及
U4=F3(U1), (22)
F1、F2、F3是函数,以使得由电路EXP提供的被应用于32位字U[1](l=0到W)中的每一者的48位字EXP(U[l])中的每一者包括八个六位字,每个六位字仅包含一次8位字U1[1]的位。换言之,通过对掩码集U应用扩展函数EXP而获得的经变换集EXP(U)具有(W+1)(W3+1)个6位字形成的表格的形式,(W+1)个6位字构成的每个列包括四(4)次出现的该6位字的每个可能值(0到63)。
例如,通过执行图18的程序来生成经掩蔽替换表SB1。图17的程序包括步骤S71到S73。首先相继执行步骤S71到S78。在步骤S71,该程序接收DES替换表SBD和掩码集U。替换表SBD包括W3+1(=8)个替换表SBD[0..W3,0.W6],每个替换表SBD[0..W3,0.W6]包括W6+1(=64)个4位字。在步骤S72,计算掩码集V。在步骤S73,将索引l初始化为零(0)。在步骤S74,将索引k初始化为零(0)。在步骤S75,将索引j初始化为零(0)。在步骤S76,使用以下等式计算经掩蔽替换表SB1的一个元素:
SB1[l,k,j]=SBD[k,j⊕E(U[l][k]]⊕P-1(V[l])[k] (23)
其中SBD[k]表示秩k(其中k=0到W3=7)的DES替换表,每个表SBD[k]包括可以使用6位索引选择的64个4位字,E(U[l])表示由电路EXP执行的DES扩展运算产生的被应用于掩码参数U[l]的48位字,E(U[l])[k]表示48位字E(U[l])中的索引k的6位字,P-1(V[l])表示由电路RNP执行的被应用于掩码参数V[l]的DES轮置换运算的逆运算P-1产生的32位字,P-1(V[l])[k]表示32位字P-1(V[l])中的索引k的字节。在步骤S77,索引j递增一(1)。在步骤S78,将索引j与等于26-1(=63)的最大值W6进行比较。如果索引j大于值W6,则执行步骤S79和S80,否则再次执行步骤S75到S78以进行新的迭代。在步骤S79,索引k递增一(1)。在步骤S80,将索引k与最大值W3(=23-1=7)进行比较。如果索引k大于值W3,则执行步骤S81和S82,否则再次执行步骤S75到S80以进行新的迭代。在步骤S81,将索引l与等于28-1(=255)的最大值W进行比较。如果索引l大于值W,则执行步骤S83,否则再次执行步骤S74到S82以进行新的迭代。在步骤S83,提供经掩蔽替换表SB1[0..W,0..W3,0..W6]作为步骤S71到S82的结果。
掩码集V包括W+1个32位掩码参数,每个掩码参数由四个字节V1[1]、V2[1]、V3[1]、V4[1](1=0到W)形成,V1、V2、V3、V4是W+1个字节的置换(包括单次出现的一个字节的每个可能值)。
根据一个实施例,通过将函数F4应用于置换U1来生成置换V1。选择函数F4,以使得由字节U1[l]⊕F4(U1[l])(其中l=0到W)形成的置换Z1也包括W+1个字节,以及单次出现的一个字节的每个可能值。进一步选择函数F4,以使得电路RNP所执行的被应用于集V的掩码参数V[1]的DES轮置换运算的逆运算P-1的应用所导致的集P-1(V[l])包括单次出现的一个字节的每个可能值。考虑到V0=F4(U0),可以使用等式(12)或(13),从置换U1来定义置换V1。然后使用用于计算置换U2、U3、U4的函数F1、F2、F3来计算置换V2、V3和V4。因此:
V2=F1(V1),
V3=F2(V1),和
V4=F3(V1)。 (24)
进一步选择置换U1和函数F1、F2、F3,以使得被应用于32位字V[l](l=0到W)的每一者的32位字P-1(V[l])中的每一者包括八个4位字,每个四位字仅包含一次8位字V1[1]的位。换言之,经变换集P-1(V)具有(W+1)(W3+1)个4位字构成的表的形式,(W+1)个4位字构成的每列包括十六(16)次出现的4位字的每个可能值(0到15)。
根据一个实施例,通过执行图17的步骤S61到S67,所有电路OC3的电路XG13、XG14处理从电路IPM接收的数据Y2L、Y2R以提供两个数据集PY2L、PY2R(=PY2<0>)。首先相继执行步骤S61到S66。在步骤S61,生成随机置换U1,置换U1以随机顺序包括所有W+1(=256)个字节值(在0和255之间)。通过将函数F1、F2、F3分别应用于置换U1来进一步生成置换U2、U3和U4。在步骤S63,通过串接由掩码参数U1[1]、U2[1]、U3[1]和U4[1]形成的位串来生成掩码值MSK,其中Ui[l]是置换Ui中的索引I的一个字节,并且i=1、2、3和4。因此,在步骤S64,32位右字和左字Y2R、Y2L中的每一者与按照以下方式形成的32位字组合:
PY2[l]=Y2⊕U1[l]//U2[l]//U3[l]//U4[l] (25)
其中Y2=Y2R(或Y2L),并且PY2=PY2R(分别为PY2L)。
如图19所示,每个输出集PY2R、PY2L包括W+1个32位字PY2[1]或W+1个字节构成的四列P21、P22、P23、P24,每列包括一个字节的每个可能值的单次出现,具体是指输出数据Y2R、Y2L在第n行上的一次出现,n使得U1[n]=0。由于掩码字集U2、U3和U4通过应用函数(F1、F2、F3)而从掩码字集UI导出,因此U2[n]=U3[n]=U4[n]=0。
如图20所示,由所有电路OC3的电路EXP提供的输出集PY3<r>(r=0到R)包括W+1个6位字P3[l.k](l=0到W)构成的八(8)列P3k(k=0到7)。由于掩码表U的上述定义,输出集PY3<r>的每列P3k包括在六位(4×64=256)上编码的每个可能值的四(4)次出现。因此,使用如上定义的掩码表U使得能够保护诸如由电路EXP执行的扩展位置换运算之类的扩展位置换运算。
根据一个实施例,如图20所示,包括所有电路OC3中的电路XG11、SDS、RPM、XG12和XG17的电路FC相继处理每个列P3k。所有电路OC3的电路XG11将列P3k的每个6位字P3[l.k](l=0到W=255)与48位轮密钥KT[r]的6位的相应部分KT[r,k]相组合,并且提供W+1个6位字P4[l.k]的输出集PY4<0>的列P4k,其中包括在六(6)位(4×26=256)上编码的每个可能值的四(4)次出现。
因此,对于每个字P4[l,k],对于0和W之间的I的所有值,以及对于0和W3之间的k的所有值,由所有电路OC3的电路SDS执行的替换运算使用不同的掩蔽替换表SB1[l,k]。输出列P4k中的每个6位字P4[l.k]被用作在DES替换表SB1[l.k]中选择4位字P5[l.k]的索引。所有电路OC3的电路SDS提供输出集PY5<0>的列P5k,该列包括W+1个4位字P5[k.l](l=0到W),以及在四位(16×24=256)上编码每个可能值的十六(16)次出现。
由于使用上面定义的掩码表U和V,电路SDS的输出中的输出集PY5<r>包括W3+1(=8)个列P5k,所述列包括16个可能4位值中每一者的16次出现。由电路RPM执行的置换运算提供包括4(W+1)个字节的输出集PY6。由于使用上面定义的掩码表V,输出集PY6中的每列字节也包括256个可能字节值中每一者的一次出现。可以观察到,掩码表U和V的上述定义使得能够保护可扩展的位置换运算(诸如由电路EXP执行的运算)的或不可扩展的位置换运算(诸如由电路RPM执行的运算)。
然后,根据图6所示的方法,电路XG12将输出集PY6<r>与输出集PY2<r-1>进行组合。电路OC3的电路XG12针对输出集PY6<r>和PY2<r-1>的每列k,对寄存器RG1中的集PY6<r>的每个字节PY6<r>[l,k],以及对集PY2<r-1>的字节PY2<r-1>[l,k]应用XOR运算。XOR运算的结果针对每列k形成按照以下方式计算的包括(W+1)个字节的数据集PY7:
PY7<r>[l,k]=PY6<r>[l,k]⊕PY2<r-1>[l,k] (4)
其中PX2<r-1>[l,k]表示第r=0轮的集PY2L的第I行和第P2k列的字节,以及在其它轮次r=1到R的集PY2<r-1>的第I行和第P2k列的字节。
由于函数F4的定义以根据掩码参数字节U1[l]定义了掩码参数字节V1[l],并且使用函数F1、F2、F3定义了其它字节U2[l]、U3[1]、U4[1]、V2[1]、V3[1]、V4[1],因此输出表PY2<r+1>的每个字节列PY7[0..W,k]包括W+1个字节,以及一个字节的所有可能值的一次出现。此外,期望输出字节保持在输入集PX1中的输入数据X1的同一行n处,n使得Ui[n]=0,其中i=1、2、3、4。结果,由电路XG12提供的输出集PY7<x>的每个32位数据被掩码组合U[l]⊕V[l]所掩蔽,掩码参数U[l]来自输出集PY2<r-1>的字,掩码参数V[l]来自输出集PY6<r>的字。
所有电路OC3的电路XG17通过执行被应用于字节的XOR运算,从输出集PY7<r>中去除掩码V[1]以提供输出集PY2<r+1>。由所有电路OC3的电路XG17执行的程序的一个实例在图21中示出。在该实例中,所有XOR运算以随机顺序被执行。图21的程序包括步骤S101到S108。首先相继执行步骤S101到S107。在步骤S101,输入掩码表V和输出集PY7。输出集PY7包括字节P7[0,0],...P7[W,W2](W2=22-1=3)和包含W个32位掩码参数V[0],...V[W]的掩码表V,该掩码表被视为(W+1)(W2+1)个字节的表。在步骤S102,使用函数RNP随机地生成表形式的置换PM,置换PM包括0和最大值KX=(W+1)(W2+1)-1之间的(W+1)(W2+1)个值,其中W+1是表PY7和V中的32位字的数量(=256)(W也是这些表中的最大值)。在步骤S103,将索引k初始化为零(0)。在步骤S104,通过考虑置换PM是包括W2+1字节构成的行和W+1个字节构成的列的双项表,从索引k计算索引l和m。因此,索引l可以被计算为值PM[k]除以(W2+1)的整数部INT(),并且索引m可以被计算为值PM[k]与索引I和(W2+1)的乘积之间的差。步骤S105通过使用XOR运算将在输入集PY7中随机选择的索引I和m处的输入字P7[l.m]与在掩码表V中随机选择的索引I处的掩码参数V[l]相组合,使用随机置换PM计算输出集PY2中的索引I和m处的输出字P2[l.m]:
(P2[l.m]=P7[l.m]⊕Vm[l]) (27)
其中Vm[l]表示掩码参数V[1]中的字节m。在步骤S106,索引k递增一(1)。在步骤S107,将索引k与最大值KX进行比较。如果索引k大于值KX,则执行步骤S108,否则再次执行步骤S104到S107以进行新的迭代。在步骤S108,输出集PY2被完全定义并被提供为步骤S101到S107的输出。
可以观察到,此类置换PM也可以由电路OC3的其它电路(诸如XG1、XG2、RPM)使用,以便以随机顺序处理和/或存储处理后的数据集中的不同字。如果表PY2中的数据可以以确定的顺序被计算和/或存储,则可以省略置换PM的生成和使用。另外,大型且成本较高的置换PM可以分别由W+1个元素和W3+1个元素构成的两个置换所替代,它们的元素在两个嵌套循环中被读取,一个循环用于选择两个置换中的第一置换的元素,另一个循环用于选择两个置换中的另一置换的元素。
在最后一轮R结束时,掩码参数U[1]分别被每个电路OC3的电路XG15、XG16从输出集PY2<R-1>和PY2<R>中去除。因此,每个电路OC3的电路XG15、XG16分别提供相同的数据Y2<R-1>和Y2<R>。电路FPM接收两个数据Y2<R>和Y2<R-1>,并提供64位输出数据CY1。可以观察到,由于选择输出集PR2中提取的列,因此掩码参数U[i]被保留在由电路EXP和FC执行的运算中。此外,当电路XG15、XG16中的一者提供不同于其它输出数据Y2<R>和Y2<R-1>的输出数据时能够检测到故障注入。
可以生成置换U1、U2、U3、U4,以使得由被应用于字U1[l]//U2[l]//U3[l]//U4[l](l=0到W)中的每一者的电路EXP所提供的48位字包括八个六位字,每个六位字只包含一次字U1[l]、U2[l]、U3[l]、U4[l]的位。当满足该条件时,由被应用于字U1[l]//U2[l]//U3[l]//U4[l]中的每一者的电路EXP提供的集的每个6位字列包括在6位上编码的每个可能值的四(4)次出现。例如,选择U1[l]=U2[l]=U3[l]=U4[l]=b0//b1//b2//b3//b4//b5//b6//b7。接收32位字U1[l]//U2[l]//U3[l]//U4[l]的电路EXP提供以下6位字:
b0//b7//b6//b3//b4//b4,其包含位b4两次,
b4//b4//b3//b3//b0//b0,其包含位b0、b3和b4两次,
b0//b0//b6//b6//b1//b4,其包含位b0和b6两次,
b1//b4//b1//b6//b1//b1,其包含位b1四次,
b1//b1//b7//b7//b5//b7,其包含位b1两次和位b7三次,
b5//b7//b2//b2//b0//b2,其包含位b2三次,
b0//b2//b4//b5//b5//b5,其包含位b5三次,
b5//b5//b2//b3//b0//b7,其包含位b5两次。
因此,不能满足每个输出掩码字OMi'仅包括不同数量的位的条件。
针对由电路EXP提供的结果的上述条件可以由方程组表示,其解决方案提供大量解(约222个解)。这些解可以根据最后一个置换U1以三个第一置换(例如U2、U3、U4)的值的形式表示。其中一些解如下所示:
U2=b0//b2//b1//b3//b4//b5//b6//b7
U3=b1//b0//b3//b2//b5//b6//b7//b4
U4=b0//b3//b1//b2//b4//b7//b5//b6
U2=b1//b3//b0//b6//b4//b5//b2//b7
U3=b5//b7//b3//b0//b4//b6//b1//b2
U4=b2//b6//b0//b3//b1//b7//b5//b4
U2=b0//b2//b1//b4//b3//b6//b5//b7
U3=b3//b0//b7//b1//b2//b4//b6//b5
U4=b0//b7//b4//b1//b5//b2//b6//b3
其中U1=b0//b1//b2//b3//b4//b5//b6//b7。这些解中的每一者定义在步骤S61中使用的函数F1、F2、F3。如果电路EXP接收在第一解中定义的32位字U1[i]//U2[i]//U3[i]//U4[i],则提供以下6位字:
b0//b7//b6//b2//b5//b4,
b5//b4//b3//b2//b1//b0,
b1//b0//b6//b7//b3//b4,
b3//b4//b0//b5//b2//b1,
b2//b1//b7//b4//b5//b6,
b5//b6//b1//b2//b0//b3,
b0//b3//b4//b7//b5//b6,
b5//b6//b1//b3//b0//b7。
可以观察到,上述6位字中没有一者包含置换U1的同一位两次(或更多次)。
可以生成掩码集V,以使得由被应用于字V1[l]//V2[l]//V3[l]//V4[l](l=0到W)中每一者的电路RNP执行的运算的逆运算P-1提供的32位字包括四个字节,每个字节只包含一次字V1[l]、V2[l]、V3[l]、V4[l]的位。当满足该条件时,由被应用于字V1[l]//V2[l]//V3[l]//V4[l]中的每一者的电路RNP提供的集的每个字节列包括每个可能字节值的一次出现。当使用函数F4从掩码参数U1-U4确定掩码参数字节V1-V4时,应用于逆位置换运算P-1导致的掩码参数V1-V4的条件可以被与运算EXP导致的条件进行组合以确定函数F1、F2和F3,从而使得掩码集U和V都满足由置换EXP和P-1导致的条件。
可以观察到,可以定义掩码集U以保持以下性质:即,每个字列Ui包括被电路FPM处理之后的字的所有可能值的相同数量的出现。另外,当需要再次执行DES加密算法以执行三重DES算法或链式加密或解密时,电路XG15和XG16输出数据PY2<R>[n]和PY2<R-1>[n]仅在加密数据由FPM电路提供时(即,在第三次执行DES算法结束时)才被电路FPM提取和处理。
更一般地,当考虑将运算OPR应用于可以使用图3的程序获得的采取输入集PX形式的受保护数据X时,如图4所示,数据X具有一个或几个字的大小。因此,数据X由包括数据PX[0],PX[2],...PX[W]的输入集PX表示,这些数据中的每一者具有与输入数据X相同的大小。所需输入数据X位于输入集PX中的索引n处:X=PX[n],n是0和W之间的整数。运算结果是包括W+1个输出数据PR[0],PR[1],…PR[W]的输出集PR,其中每个数据PR[1]等于OPR(PX[l])。期望输出数据OPR(X)等于在输出集PR中位于相同索引n处的输出数据PR[n]。输出集PR中的每个数据可以表示如下:
PR[l]=OPR(PX[l])=OPR(X⊕IM[l])=OPR(X)⊕OM[l] (28)
对于0与W之间的每个索引I,其中IM是输入掩码集,OM是多个字的输出掩码集以使得对于0与W之间的每个索引I,OM[l]=OPR(IM[l]),每个掩码集IM、OM包括W+1个掩码参数IM[l]、OM[l]。
事实证明,当输出集PR的每个字列包括的一个字的所有可能值的出现次数相同(所述出现次数与字列的一个字的大小相关)时,这种保护有效。为此,每个掩码集IM和OM应该包括掩码参数,每个掩码参数包括掩码集中以字列布置的至少一个字并包括来自掩码集的每个掩码参数的一个字,掩码集IM和OM的一个字列中的字具有相同大小并且包括的字的所有可能值的出现次数相同,所述出现次数与字大小相关。进一步证明,如果输入掩码集具有该性质,则位置换运算(无论是否可扩展)一般不将该性质传输到输出掩码集。
根据一个实施例,通过选择特定输入掩码参数IM[1],可以将该性质传输到输出掩码集。此类输入掩码参数可以通过以下方法来确定。
输出掩码集OM被定义为使得对于0和W之间的每个索引l:
OM[l]=OPR(IM[l]) (29)
每个掩码参数IM[I]由k位的m个字IMi[I](i=1到m)形成:
IM[l]=IM1[l]//IM2[l]//…//IMm[l]
其中IMi=ib[i,x1]//ib[i,x2]//…//ib[i,xk],ib[i,xj]表示字IMi的位数xj,对于j和j'的每个可能的不同值,xj≠xj’,并且每个索引值i在1和m之间,IMi一般表示任何值IMi[I]。每个掩码参数OM[I]由k'位的m'个字OMj形成(i=1到m'):
OM[l]=OM1[l]//OM2[l]//…//OMm’[l]
其中OMi=ob[i,x1]//ob[i,x2]//…//ob[i,xk’],ob[i,xj]表示字OMi的位数xj,对于j和j'的每个可能的不同值,xj≠xj’,并且每个索引值i在1和m'之间,OMi通常表示任何值OMi[I]。
使用位置换运算的定义,等式(29)可以转换为掩码参数字IMi和OMi'的位之间的一组等式。可以通过检验假设来确定采取字OMi'的每个位与字IMi的一个位之间的等同形式的解,从而检验字IMi、OMi'的位之间的上述规则。该方法可用于定义上述掩码集U和V或这些掩码集的部分U1和V1。
图22表示根据一个实施例保护的实现三重DES算法的电路CT5。电路CT5串联地包括执行DES初始置换的电路IPM、若干主加密电路REC2、执行DES最终置换的电路FPM,以及插在电路IPM和电路REC2的第一个之间的电路XG3和XG4。电路IPM接收输入数据X1。电路XG3、XG4通过生成输入数据集X2L、X2R在处理时引入掩码集U。最后一个电路REC2向提供输出加密数据CX1的电路FP提供最终输出数据PX2[l]<R>//PX2[l]<R-1>。在两个电路REC2之间,两个电路REC2中的一者提供64位数据PX2[l]<R>//PX2[l]<R-1>的中间输出集PX2<R>//PX2<R-1>,该输出集首先由下一电路REC2的扩展电路EXP进行处理,而不必去除中间输出集的掩码或提取输出数据。因此,保护从电路XG3、XG4到电路FPM的整个流程。
图23表示根据DES算法实现基于块密码的消息认证码算法(例如CMAC(基于密码的消息认证码))的电路CT4。电路CT4包括多个级,每个级包括实现DES初始置换的电路IPM、电路XG4、XG5和图17所示的主加密电路REC2。
第一级包括执行将64位初始值IV与64位的第一输入数据块DB1进行组合的XOR运算的电路XG10。最后一级包括接收由最后一级的电路REC提供的数据,并提供输出数据MC的电路FPM。第一级的电路XG3、XG4都接收掩码集U。由第一级的电路REC提供的输出数据被提供给下一级的电路XG3、XG4的输入端,电路XG3接收输出数据的右侧部分,电路XG4接收输出数据的左侧部分。下一级的电路IPM接收另一个数据块DB2,...DBn。最后一级包括从最后一级的电路REC2接收64位输出数据,并提供输出数据MC的电路FPM。
图24表示根据一个实施例的布置在诸如塑料卡的便携式介质HD上,并且实现先前描述的保护方法之一的集成电路CT6。集成电路包括与上面结合图1描述的集成电路CT相同的单元,并且与后者不同之处在于,协处理器CP1被替换为实现上述的一个和/或其它保护方法的协处理器CP2,协处理器CP2例如采取电路CT1、CT2、CT3、CT4或CT5的形式。因此,根据一个实施例,协处理器CP2被配置为提供结果数据的输出表而非密码运算的单个数据,每个输出表包括密码运算的预期结果,输出表使得输出表中的所有数据具有相同的出现次数。处理器PRC可以被配置为具有掩码表V的访问权限。因此,处理器PRC可以通过将输出集中的任一数据与掩码表V或U中的一个掩码参数进行组合来从输出集导出输出数据,所选择的数据在输出集中具有与在掩码表V或U中选择的掩码参数相同的秩。
协处理器CP2还可以被配置为执行加密运算的一部分。在这种情况下,处理器PRC被配置为产生包括密码运算的结果的结果数据的输出表,每个输出表使得其中的所有数据具有相同的出现次数。
本文公开的方法还可以通过可由计算机系统执行的软件程序来实现。此外,实施方式可以包括分布式处理和并行处理,特别是用于并行处理输入数据集中的多个或所有数据和/或并行提供输出数据集中的多个或所有数据。
本文描述的例示旨在提供各种实施例的结构的一般理解。这些例示并非旨在用作利用其中描述的结构或方法的装置、处理器和系统的所有元件和特征的完整描述。通过组合所公开的实施例,在仔细研究本公开时,许多其它实施例或其组合对于所属技术领域的普通技术人员来说可以显而易见。可以从本公开中利用和导出其它实施例,以使得可以在不偏离本公开的范围的情况下进行结构和逻辑上的替换和改变。
此外,本公开和例示被视为示例性的而不是限制性的,并且所附权利要求书旨在覆盖落入说明书的真实精神和范围内的所有此类修改、增强和其它实施例。因此,以下权利要求的范围由权利要求及其等效物的最广泛的允许解释来确定,并且不受以上描述的限定或限制。
图4到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.一种用于由电路执行用以将第一输入数据与第二输入数据相组合的运算的方法,所述方法包括:
定义数据对,由此将第一输入集的每个数据与第二输入集的相应数据进行关联,所述第一输入集包括第一输入数据,所述第一输入集中的数据通过对所述第一输入数据和对第一掩码集中的所有第一掩码参数应用异或XOR运算而获得,所述第一掩码集中的每个第一掩码参数包括至少一个第一字,所述第一掩码集中的所述第一字具有相同大小并且形成第一字子集,所述第一字子集包括来自所述第一掩码集的每个第一掩码参数的单个字并且包括的所述第一字的所有可能值的出现次数相同,所述第二输入集包括所述第二输入数据,所述第二输入集中的数据通过对所述第二输入数据和对第二掩码集中的所有第二掩码参数应用XOR运算而获得,所述第二掩码集中的每个第二掩码参数包括至少一个第二字,所述第二掩码集中的所述第二字具有相同大小并且形成第二字子集,所述第二字子集包括来自所述第二掩码集的每个第二掩码参数的单个字并且包括的所述第二字的所有可能值的出现次数相同;以及
通过对所述数据对中的每一者应用所述运算来计算输出数据,所述运算的输出集包括对所述数据对中的一者应用所述运算而产生的所有输出数据,
其中生成所述第二掩码集,以使得所述第一掩码集中的所述第一掩码参数中的每一者与所述第二掩码集中的对应第二掩码参数的借助XOR运算的组合产生包括第三掩码参数的第三掩码集,所述第三掩码集中的每个第三掩码参数包括至少一个第三字,所述第三掩码集中的所述第三字具有相同大小并且形成第三字子集,所述第三字子集包括来自所述第三掩码集的每个第三掩码参数的单个字并且包括的所述第三字的所有可能值的出现次数相同。
2.根据权利要求1所述的方法,其中所述运算是异或。
3.根据权利要求1或2所述的方法,其中所述第二输入集等于所述第一掩码集。
4.根据权利要求1至3中的一项所述的方法,其中所述第一和第二掩码集从第一对的第一和第二字置换来生成,每个字置换包括的字的所有可能值的出现次数相同,以使得所述第一置换中的每个字与所述第二置换的相应字的借助XOR运算的组合提供合成置换,所述合成置换包括字并且所述字的所有可能值的出现次数相同,所述第一和第二掩码集使用以下等式来生成:
U1[l]=PM(u1[l]⊕UR),和
V1[l]=PM(v1[l]⊕VR),或
U1[l]=PM(u1[l])⊕UR,和
V1[l]=PM(v1[l])⊕VR
对于每个索引I,其中UR和VR是具有掩码参数U1[I]或V1[I]中的任一者的大小的随机字,u1和v1分别是通过所述等式获得的预先计算的集或等于所述第一对的掩码集,并且PM是被应用于集u1和v1的随机选择的置换。
5.根据权利要求1至4中的一项所述的方法,其中通过替换运算在相应经掩蔽替换表中选择所述第二输入集中的每个第二输入数据,所述经掩蔽替换表从输入替换表来生成,并且针对所述第一掩码集中的所述第一掩码参数中的每一者和所述第二掩码集中的所述对应第二掩码参数包括一个经掩蔽替换表。
6.根据权利要求5所述的方法,其中生成所述经掩蔽替换表,方式为:
生成所述第一掩码集;
生成所述第二掩码集,所述第二掩码集包括数量等于所述输入替换表中的值的数量的第二掩码参数;
在所述第一和第二掩码集中选择一次每个掩码参数以形成掩码对,每个掩码对包括所述第一掩码参数中的一者和所述第二掩码参数中的一者;
针对所述第一掩码集中的每个掩码参数生成所述经掩蔽替换表中的一者,所述经掩蔽替换表中的每一者的生成包括:
选择所述输入替换表中的每个数据,并且针对每个选定数据:
通过对所述选定数据和对与所述第一掩码参数对应的所述第二掩码参数或对所述第一掩码参数的变换后的值应用XOR运算来计算经掩蔽数据;
通过对原始索引和对所述第一掩码参数或所述第一掩码参数的变换后的值应用XOR运算来计算经掩蔽索引;以及
将所述经掩蔽数据存储在所述经掩蔽替换表中,所述选定数据在所述原始索引处被选择并且所述经掩蔽数据被存储在所述经掩蔽索引处,或者所述选定数据在所述经掩蔽索引处被选择并且所述经掩蔽数据被存储在所述原始索引处。
7.根据权利要求1至6中的一项所述的方法,其中以随机顺序执行所述输出集中的所述数据的计算。
8.根据权利要求1至7中的一项所述的方法,其中所述输出集中的每个输出数据包括至少一个字,所述输出集中的所述字具有相同大小并且形成输出字子集,所述输出字子集包括来自所述输出集中的每个输出数据的单个字并且包括的所述字的所有可能值的出现次数相同,所述方法包括:
在所述输出字子集中检测出现次数不同于所述输出字子集中的其它字的出现次数的字,当在所述字输出子集中发现具有不同出现次数的两个字时,检测到错误,或者
通过XOR运算将所述输出集中的每个数据与合成掩码集的相应掩码参数相组合,以使得所述输出集包括从对被应用于所述第一和第二输入数据的所述运算的输出数据和对所述合成掩码集的每个掩码参数应用XOR运算而产生的数据,当被应用于所述输出集中的两个数据的XOR运算提供不同数据时,检测到错误。
9.根据权利要求1至8中的一项所述的方法,其中通过运算生成所述第一输入数据,所述运算包括用以混合输入数据的位的位置换运算,所述方法包括:对第三输入集中的所有数据应用所述位置换运算,在所述第三输入集中,每个数据通过XOR运算被与所述第一掩码集中的所述第一掩码参数中的一者相组合,所述位置换运算的输出包括输出集,所述输出集包括从对所述第三输入集中的所述数据中的一者应用所述位置换运算而产生的所有数据,所述第一掩码集被生成为使得所述位置换运算的所述输出集中的每个数据包括至少两个字,所述输出集中的所述字具有相同大小并形成输出字子集,所述输出字子集包括来自所述输出集中的每个数据的单个字并且所述输出字子集中的所述字的所有可能值的出现次数相同。
10.一种用于根据包括将第一和第二输入数据相组合的运算的密码算法对输入数据进行加密或解密的方法,其中所述运算根据权利要求1至9中的一项所述的方法被执行。
11.根据权利要求10所述的方法,其中所述密码算法符合高级加密标准AES算法,所述方法包括:
通过对所述输入数据的每个字、对所述第一掩码集中的每个掩码参数以及对与所述输入数据的字相对应的私钥的字应用XOR运算而生成输入集;
执行若干中间轮,每轮包括:
使用提供替换输出集的经掩蔽替换表执行替换运算,所述替换输出集中的每个字被所述第二掩码集的相应掩码参数所掩蔽,
通过对被所述第二掩码集的相应掩码参数所掩蔽的轮集的每个字、对所述第一掩码集的相应掩码参数以及对所述第二掩码集的相应掩码参数应用XOR运算而计算经掩蔽轮输出集,以及
使用所述经掩蔽轮输出集作为下一轮的输入集;
提供输出集,所述输出集中的每个字被所述第一掩码集的相应掩码参数所掩蔽。
12.根据权利要求10所述的方法,其中所述密码算法符合高级加密标准DES算法,所述方法包括:
通过对由初始位置换运算提供的结果数据的每个字和对所述第一掩码集的每个掩码参数应用XOR运算来生成输入集;
执行若干中间轮,每轮包括:
执行在第一轮被应用于所述输入集并且在后续轮中被应用于轮输出集的展开式位置换,所述第一掩码集被生成为使得所述位置换运算的位置换输出集中的每个数据包括至少两个字,所述输出集中的所述字具有相同大小并形成输出字子集,所述输出字子集包括来自所述输出集中的每个数据的单个字并且所述输出字子集中的所述字的所有可能值的出现次数相同;
使用提供替换输出集的经掩蔽替换表执行替换运算,所述替换输出集中的每个字被所述第二掩码集的相应掩码参数所掩蔽,
通过对被所述第一和第二掩码集的相应掩码参数所掩蔽的轮集的每个字以及对所述第二掩码集的相应掩码参数应用XOR运算而计算经掩蔽轮输出集,以及
提供输出集,所述输出集中的每个字被所述第一掩码集的相应掩码参数所掩蔽。
13.一种电路,其包括处理器并被配置为实现根据权利要求1至12中的一项所述的方法。
14.根据权利要求13所述的电路,包括协处理器。
15.一种设备,其包括设置在介质上的根据权利要求13或14所述的电路。
16.一种计算机程序产品,其可直接加载到计算机的内部存储器中并包括代码部分,当由计算机执行时,所述代码部分配置所述计算机以执行根据权利要求1至12中的一项所述的方法的步骤。
CN201710499789.3A 2016-06-28 2017-06-27 免受侧信道分析的保护方法和设备 Pending CN107547194A (zh)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
EP16176718.1 2016-06-28
EP16176719.9A EP3264397B1 (en) 2016-06-28 2016-06-28 A protection method and device against a side-channel analysis
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
EP16176717.3 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
EP16176717.3A EP3264667B1 (en) 2016-06-28 2016-06-28 A method for protecting a substitution operation 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
EP16176719.9 2016-06-28

Publications (1)

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

Family

ID=60675622

Family Applications (5)

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

Family Applications Before (1)

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

Family Applications After (3)

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

Country Status (3)

Country Link
US (5) US10581588B2 (zh)
KR (5) KR20180002065A (zh)
CN (5) CN107547189A (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3220304B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis
EP3264311B1 (en) 2016-06-28 2021-01-13 Eshard A protection method and device against a side-channel analysis
CN107547189A (zh) 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备
US10771235B2 (en) * 2016-09-01 2020-09-08 Cryptography Research Inc. Protecting block cipher computation operations from external monitoring attacks
US11689352B2 (en) * 2016-12-12 2023-06-27 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 北京理工大学 一种基于能量分析的密码算法簇逆向工程分析方法
FR3078463A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et dispositif de realisation d'operations en table de substitution
US11218291B2 (en) * 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
FR3078464A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et circuit de mise en oeuvre d'une 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 (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010053220A1 (en) * 1998-06-03 2001-12-20 Cryptography Research, Inc. Cryptographic computation using masking to prevent differential power analysis and other attacks
US20050259814A1 (en) * 2004-05-24 2005-11-24 Gebotys Catherine H Table masking for resistance to power analysis attacks
US20060056622A1 (en) * 2004-09-15 2006-03-16 Stmicroelectronics S.A. Protection of a DES algorithm
US20080019503A1 (en) * 2005-11-21 2008-01-24 Vincent Dupaquis Encryption protection method
US20090074181A1 (en) * 2004-07-22 2009-03-19 Herve Pelletier Method and device for executing crytographic calculation
CN103647638A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种抵抗侧信道攻击的des掩码方法
CN103647639A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种对称密码算法抵抗侧信道分析的方法
EP2884387A1 (en) * 2013-12-13 2015-06-17 Thomson Licensing Efficient modular addition resistant to side-channel attacks

Family Cites Families (55)

* 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
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
WO2005073825A2 (en) 2004-01-27 2005-08-11 Koninklijke Philips Electronics N.V. Protection against power analysis attacks
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
DE602004023436D1 (de) * 2004-03-29 2009-11-12 St Microelectronics Sa Prozessor zum ausführen eines aes algorithmus
ATE345620T1 (de) 2004-05-24 2006-12-15 Research In Motion Ltd Tabellenmaskierung zur beständigkeit gegen angriffe durch analyse der leistungsaufnahme.
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
CN101147182B (zh) * 2005-03-31 2010-09-01 松下电器产业株式会社 数据加密装置及数据加密方法
ATE372619T1 (de) * 2005-05-10 2007-09-15 Research In Motion Ltd Schlüsselmaskierung für kryptographische prozesse
US7716502B2 (en) 2005-08-24 2010-05-11 Radu Muresan Current flattening and current sensing methods and devices
DE602006015902D1 (de) * 2006-03-07 2010-09-16 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
CA2688592C (en) * 2007-10-01 2014-04-15 Research In Motion Limited Substitution table masking for cryptographic processes
US8473751B2 (en) * 2007-12-13 2013-06-25 Oberthur Technologies Method for cryptographic data processing, particularly using an S box, and related device and software
EP2273472B1 (en) * 2008-03-31 2016-02-17 Fujitsu Limited Coder equipped with common key code function and built-in equipment
JP5300428B2 (ja) * 2008-11-13 2013-09-25 ルネサスエレクトロニクス株式会社 演算装置及び演算処理方法
JP5268609B2 (ja) * 2008-12-09 2013-08-21 株式会社東芝 暗号処理装置及び演算方法
FR2941342B1 (fr) * 2009-01-20 2011-05-20 Groupe Des Ecoles De Telecommunications Get Ecole Nat Superieure Des Telecommunications Enst Circuit de cryptographie protege contre les attaques en observation, notamment d'ordre eleve.
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
FR2985624B1 (fr) * 2012-01-11 2014-11-21 Inside Secure Procede de chiffrement protege contre des attaques par canaux auxiliaires
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
US9569616B2 (en) 2013-12-12 2017-02-14 Cryptography Research, Inc. Gate-level masking
CN103795527A (zh) * 2014-03-03 2014-05-14 重庆大学 防止基于功耗分析攻击aes算法的软件掩码防护方案
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
US10699030B2 (en) * 2014-12-30 2020-06-30 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
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
FR3040513B1 (fr) * 2015-09-02 2018-11-16 Stmicroelectronics (Rousset) Sas Protection d'un algorithme de rijndael
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
EP3220304B1 (en) 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis
CN107547189A (zh) 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010053220A1 (en) * 1998-06-03 2001-12-20 Cryptography Research, Inc. Cryptographic computation using masking to prevent differential power analysis and other attacks
US20050259814A1 (en) * 2004-05-24 2005-11-24 Gebotys Catherine H Table masking for resistance to power analysis attacks
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
US20080019503A1 (en) * 2005-11-21 2008-01-24 Vincent Dupaquis Encryption protection method
CN103647638A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种抵抗侧信道攻击的des掩码方法
CN103647639A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种对称密码算法抵抗侧信道分析的方法
EP2884387A1 (en) * 2013-12-13 2015-06-17 Thomson Licensing Efficient modular addition resistant to side-channel attacks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张翌维等: "抵御侧信道分析的AES双路径掩码方法", 《计算机工程》 *

Also Published As

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

Similar Documents

Publication Publication Date Title
CN107547194A (zh) 免受侧信道分析的保护方法和设备
Groß et al. Domain-oriented masking: Compact masked hardware implementations with arbitrary protection order
Biham et al. Differential cryptanalysis of the data encryption standard
CN105051677B (zh) 用共享随机比特进行掩码
CN101206816B (zh) 运算处理装置和运算处理控制方法
CN102648600B (zh) 由定制的掩蔽保护的低复杂度电子电路
CN107104783A (zh) 使电路免受侧信道分析的方法
CN105406957B (zh) 保护密码设备对抗实现攻击
CN106357380B (zh) Sm4算法的掩码方法及装置
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
CN102970132A (zh) 一种防止对分组算法进行功耗分析和电磁辐射分析的防护方法
CN104301095A (zh) Des轮运算方法和电路
CN108650072A (zh) 一种支持多种对称密码算法芯片及其抗攻击电路实现方法
Ghellar et al. A novel AES cryptographic core highly resistant to differential power analysis attacks
EP3264397B1 (en) A protection method and device against a side-channel analysis
杨亚涛 et al. WBZUC: novel white-box ZUC-128 stream cipher
EP3264396B1 (en) A method for protecting a substitution operation using a substitution table against a side-channel analysis
EP3264668B1 (en) A protection method and device against a side-channel analysis
CN114254372B (zh) 数据加密处理方法、系统及电子设备
EP3264667B1 (en) A method for protecting a substitution operation against a side-channel analysis
EP3264666B1 (en) A protection method and device against a side-channel analysis
Yang et al. LWARX: Lightweight ARX white-box cipher for satellite communications
Devendiran et al. 31.14 mW–1.1 V, 3.18 Gbps/W, 90 Logic Elements Advanced Encryption Standard Substitution Box Hardware Accelerator with Area Optimized Encrypt/Decrypt GF (((22) 2) 2) Polynomials
CN117081718A (zh) 用于全同态加密的密钥的安全提供
CN116614217A (zh) 数据处理方法、密钥扩展方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180105