CN107547190A - 用于保护使用替换表的替换运算免受侧信道分析的方法 - Google Patents

用于保护使用替换表的替换运算免受侧信道分析的方法 Download PDF

Info

Publication number
CN107547190A
CN107547190A CN201710499603.4A CN201710499603A CN107547190A CN 107547190 A CN107547190 A CN 107547190A CN 201710499603 A CN201710499603 A CN 201710499603A CN 107547190 A CN107547190 A CN 107547190A
Authority
CN
China
Prior art keywords
mask
parameter
masked
input
value
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
CN201710499603.4A
Other languages
English (en)
Inventor
A·武尔科尔
C·克拉维耶
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 EP16176717.3A external-priority patent/EP3264667B1/en
Priority claimed from EP16176721.5A external-priority patent/EP3264668B1/en
Priority claimed from EP16176718.1A external-priority patent/EP3264396B1/en
Priority claimed from EP16176719.9A external-priority patent/EP3264397B1/en
Priority claimed from EP16176716.5A external-priority patent/EP3264666B1/en
Application filed by Echal Co filed Critical Echal Co
Publication of CN107547190A publication Critical patent/CN107547190A/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

Abstract

本发明涉及一种用于保护使用替换表的替换运算免受侧信道分析的方法。一种由电路执行用以使用输入数据作为索引在原始替换表中选择输出数据的替换运算的方法,替换运算被使用新的经掩蔽替换表来执行,输入数据通过异或XOR运算被与第一掩码参数的新值相组合,并且输出数据通过XOR运算被与第二掩码参数的新值相组合,新的经掩蔽替换表通过以下方式被生成:通过将XOR运算应用于所述第一掩码参数的前一个值和第一输入掩码来计算所述第一掩码参数的新值;通过将XOR运算应用于所述第二掩码参数的前一个值和第二输入掩码来计算所述第二掩码参数的所述新值;以及使用前一个经掩蔽替换表以及所述第一和第二输入掩码来生成所述新的经掩蔽替换表。

Description

用于保护使用替换表的替换运算免受侧信道分析的方法
技术领域
本发明涉及一种用于使电路或程序免受旨在发现由所述电路或程序处理的机密数据的值(特别是由加密或解密算法用于变换消息的私钥)的侧信道分析的方法和设备。
本发明特别涉及实现诸如AES(高级加密标准)之类的密码算法的智能卡集成电路或集成到计算机和其它电子和IT设备(USB驱动器、电视解码器、游戏控制台等)的母板上的硬件加密组件。本发明还涉及实现这种算法的程序,该程序用于在安全或不安全的环境中执行。
更一般地说,本发明涉及实现使用输入数据作为索引以在替换表中选择输出数据的替换运算的电路和软件,所述输入和输出数据以及替换表需要保持隐藏。此类替换运算在诸如AES(高级加密标准)、DES(数据加密标准)、三重DES、TwoFish、PRIDE、ARIA和SEED之类的多种密码算法中实现。
背景技术
实现密码算法的电路可以包括中央处理单元(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公开了一种用于在电路连续地对不同的输入数据执行运算时分析代表电路活动的踪迹的方法。此方法包括提取每个踪迹的一部分,并且通过对出现在这些踪迹的每个提取部分中的每个可能值的出现次数进行计数,根据每个提取的踪迹部分生成直方图。然后通过对每个输入数据和运算中涉及的密钥的一部分的每个可能值应用运算来计算运算的部分结果。然后,此方法针对密钥的每个可能的部分值,识别提供相同部分结果的所有输入数据。对于密钥的每个可能的部分值,然后将直方图中与识别的输入数据和密钥的部分值对应的出现次数进行相加。密钥的一部分可以通过对相加的出现次数进行统计分析来确定。统计分析假设如果与密钥相关的值已经在所提取的踪迹部分中泄露,则可以通过相加的出现次数突显它。
可能需要保护集成电路或软件程序免受这些侧信道分析中的一种或多种。具体地说,可能需要保护在诸如AES之类的密码算法中执行的使用替换表的替换运算。
发明内容
描述一种由电路执行用以使用输入数据作为索引在原始替换表中选择输出数据的替换运算的方法。根据一个实施例,所述替换运算被使用从所述原始替换表获得的新的经掩蔽替换表来执行,所述输入数据通过异或(XOR)运算被与第一掩码参数的新值相组合,并且所述输出数据通过XOR运算被与第二掩码参数的新值相组合,所述新的经掩蔽替换表从前一个经掩蔽替换表而获得,方式为:选择第一和第二输入掩码;通过将XOR运算应用于所述第一掩码参数的前一个值和应用于所述第一输入掩码来计算所述第一掩码参数的所述新值;通过将XOR运算应用于所述第二掩码参数的前一个值和应用于所述第二输入掩码来计算所述第二掩码参数的所述新值;选择从所述原始替换表获得的所述前一个经掩蔽替换表中的每个值;以及针对每个选定值:通过将XOR运算应用于所述选定值和应用于所述第二输入掩码来计算经掩蔽值,通过将XOR运算应用于所述第一掩码和应用于原始索引来计算经掩蔽索引,以及将所述经掩蔽值存储在所述新的经掩蔽替换表中,所述选定值在所述原始索引处被选择并且所述经掩蔽值被存储在所述经掩蔽索引处,或者所述选定值在所述经掩蔽索引处被选择并且所述经掩蔽值被存储在所述原始索引处。
根据一个实施例,生成所述新的经掩蔽替换表,方式为:针对从1到n的每个秩选择输入掩码,n是大于0的整数,针对从1到n-1的每个秩j,通过将XOR运算应用于秩j的掩码参数的前一个值以及应用于秩j和j+1的所述输入掩码来计算秩j的所述掩码参数的新值,以及通过将XOR运算应用于秩n的掩码参数的前一个值和应用于秩n的所述输入掩码来计算秩n的所述掩码参数的新值,所述第一掩码参数的所述新值通过将XOR运算应用于所述第一掩码参数的所述前一个值、应用于秩1的所述输入掩码以及应用于第一输入掩码来计算,所述第二掩码参数的所述新值通过将XOR运算应用于所述第二掩码参数的所述前一个值、应用于秩1的所述输入掩码以及应用于所述第二输入掩码来计算,所述替换运算包括将XOR运算应用于经掩蔽输入数据和应用于秩1到n的每个所述掩码参数,与所述替换运算的所述输出数据相对应的经掩蔽输出数据通过XOR运算被与所述第二掩码参数相组合并且被与秩1到n的每个所述掩码参数相组合。
根据一个实施例,生成所述新的经掩蔽替换表,方式为:选择秩1到n的第一和第二输入掩码,n是大于0的整数;针对从1到n-1的每个秩j,通过将XOR运算应用于秩j的第一掩码参数的前一个值以及应用于秩j和j+1的所述第一输入掩码来计算秩j的所述第一掩码参数的新值,以及通过将XOR运算应用于秩j的第二掩码参数的前一个值以及应用于秩j和j+1的所述第二输入掩码来计算秩j的所述第二掩码参数的新值;通过将XOR运算应用于秩n的第一掩码参数的前一个值和应用于秩n的所述第一输入掩码来计算秩n的所述第一掩码参数的新值;通过将XOR运算应用于秩n的第二掩码参数的前一个值和应用于秩n的所述第二输入掩码来计算秩n的所述第二掩码参数的新值;以及所述第一掩码参数的所述新值通过将XOR运算应用于所述第一掩码参数的所述前一个值、应用于秩1的所述第一输入掩码以及应用于第一输入掩码来获得,所述第二掩码参数的所述新值通过将XOR运算应用于所述第二掩码参数的所述前一个值、应用于秩1的所述第二输入掩码以及应用于所述第二输入掩码来获得,所述替换运算包括将XOR运算应用于所述经掩蔽输入数据和应用于秩1到n的每个所述第一掩码参数,与所述替换运算的所述输出数据相对应的所述经掩蔽输出数据通过XOR运算被与所述第二掩码参数相组合并且被与秩1到n的每个所述第二掩码参数相组合。
根据一个实施例,随机地选择所述输入掩码。
根据一个实施例,以随机顺序计算所述经掩蔽替换表中的数据。
各实施例还涉及一种用于根据包括替换运算的密码算法对输入数据进行加密或解密的方法,其中所述替换运算根据上面定义的方法被执行。
根据一个实施例,所述密码算法符合高级加密标准(AES),所述方法包括:通过将XOR运算应用于所述输入数据和应用于所述第一掩码参数的所述新值来计算经掩蔽输入数据;通过将XOR运算应用于所述经掩蔽输入数据和应用于第一轮密钥来计算第一经掩蔽轮输入数据;执行多轮,每轮包括:执行应用于先前计算的经掩蔽轮输入数据并使用所述新的经掩蔽替换表的替换运算,通过将XOR运算应用于基于列的AES置换运算的输出数据、应用于对应轮密钥、以及应用于所述第一掩码参数和所述第二掩码参数的所述新值来计算经掩蔽轮输入数据;以及执行最后一轮,包括:通过使用所述新的经掩蔽替换表执行替换运算来计算替换输出数据,接收先前计算的经掩蔽轮输入数据作为输入,以及通过将XOR运算应用于经掩蔽替换输出数据和应用于对应轮密钥来计算经掩蔽输出数据,由所述密码算法处理所述输入数据而产生的输出数据是通过将XOR运算应用于所述经掩蔽输出数据和应用于所述第二掩码参数的所述新值而获得的。
根据一个实施例,所述轮密钥是掩蔽轮密钥,所述方法包括:选择第三输入掩码,以及通过将XOR运算应用于第三掩码参数的前一个值和应用于所述第三输入掩码来计算所述第三掩码参数的新值,所述第一掩码参数的所述新值通过将XOR运算应用于所述第一掩码参数的前一个值以及应用于所述第三和第一输入掩码来计算,所述第二掩码参数的所述新值通过将XOR运算应用于所述第二掩码参数的前一个值以及应用于所述第三和第二输入掩码来计算,新的经掩蔽轮密钥均通过将XOR运算应用于所述第三掩码参数的所述新值和应用于前一个轮密钥来获得,所述新的经掩蔽替换表通过使用所述第一和第二掩码参数的所述新值来生成,所述替换运算包括将XOR运算应用于所述经掩蔽输入数据和应用于所述第三掩码参数的所述新值,与所述替换运算的所述输出数据相对应的所述经掩蔽输出数据通过XOR运算被与所述第二掩码参数相组合并且被与所述第三掩码参数的所述新值相组合。
根据一个实施例,所述密码算法符合数据加密标准(DES),所述方法包括:执行多轮,每轮包括:通过将XOR运算应用于DES扩展运算的输出数据和应用于所述第一掩码参数的所述新值来计算经掩蔽轮数据;使用新的经掩蔽替换表从所述经掩蔽轮数据执行替换运算,所述替换运算提供由所述第二掩码参数的所述新值所掩蔽的经掩蔽替换输出数据,以及通过将XOR运算应用于所述经掩蔽替换输出数据和应用于所述第二参数的所述新值来计算未掩蔽替换输出数据。
根据一个实施例,所述新的经掩蔽替换表的生成包括:选择第三和第四输入掩码,以及通过将XOR运算应用于第三掩码参数的前一个值和应用于所述第三输入掩码来计算所述第三掩码参数的新值,所述第一掩码参数的所述新值通过将XOR运算应用于所述第一掩码参数的前一个值以及应用于所述第三和第一输入掩码来计算,通过将XOR运算应用于第四掩码参数的前一个值和应用于所述第四输入掩码来计算所述第四掩码参数的新值,所述第二掩码参数的所述新值通过将XOR运算应用于所述第二掩码参数的前一个值以及应用于所述第四和第二输入掩码来计算,通过向所述第一输入掩码应用所述DES扩展运算来计算变换后的第一输入掩码;以及通过将逆DES置换运算应用于所述第二输入掩码来计算变换后的第二输入掩码,所述新的经掩蔽替换表使用所述变换后的第一和第二输入掩码作为所述第一和第二输入掩码来生成,所述方法包括:使用通过将XOR运算应用于DES轮密钥以及应用于变换后的第三和第四输入掩码而获得的经掩蔽轮密钥,所述变换后的第三和第四输入掩码通过将所述DES扩展运算应用于第三和第四输入掩码而获得;以及使用第三和第四掩码参数的所述新值。
各实施例还涉及一种电路,其包括处理器并被配置为实现上面定义的方法。
根据一个实施例,所述电路包括协处理器。
各实施例还涉及一种设备,其包括布置在介质上的上面定义的电路。
各实施例还涉及一种计算机程序产品,其可直接加载到计算机的内部存储器中并包括代码部分,当由计算机执行时,所述代码部分配置所述计算机以执行上面定义的方法的步骤。
附图说明
通过参考下面的附图和说明书,可以更好地理解上述方法和/或设备。非限制且非穷举的说明书借助以下附图进行描述。在附图中,相同的参考标号可以指不同附图当中的相同部分,除非另有所指,这些附图是:
图1示意性地表示安全电路的常规架构;
图2表示根据现有技术的运算的步骤,包括保护步骤;
图2A示意性地表示通过图2的步骤变换的表;
图3和4表示根据一个实施例的保护步骤;
图5是根据一个实施例的包括保护步骤的AES加密算法的框图;
图6是根据一个实施例的包括保护步骤的DES加密算法的框图;
图7和8表示根据另一个实施例的保护步骤;
图9和10表示根据另一个实施例的保护步骤;
图11和12表示根据另一个实施例的适合于AES算法的保护步骤;
图13和14是根据不同实施例的包括保护步骤的AES加密算法的框图;
图15和16表示根据一个实施例的适合于DES算法的保护步骤;
图17是根据另一个实施例的包括保护步骤的DES加密算法的框图;
图18示意性地表示根据一个实施例的安全电路。
具体实施方式
作为一个实例,图1表示安全集成电路CT,该集成电路例如布置在诸如塑料卡或任何其它介质的便携式介质HD上,或者布置在诸如移动终端的终端中。所述集成电路包括微处理器PRC、输入/输出电路IOC,通过数据和地址总线耦合到微处理器的存储器M1、M2、M3以及可选地包括加密计算协处理器CP1或算术加速器,以及随机数发生器RGN。存储器可以包括易失性存储器M1,例如包含易失性应用数据的RAM型(“随机存取存储器”)存储器;非易失性存储器M2,例如包含非易失性数据和应用程序的EEPROM或闪存;以及可能只读存储器(或ROM存储器),其包含微处理器的操作系统。操作系统还可以存储在非易失性存储器中。
通信接口电路IOC可以是例如根据ISO/IEC 7816标准的接触型电路,例如根据ISO/IEC 14443A/B或ISO/IEC 13693标准的具有感应耦合的非接触型电路,借助电耦合的非接触型电路(UHF接口电路),或同时为接触型和非接触型电路。接口电路IOC还可以通过特定接口耦合到诸如NFC控制器的另一电路,或者诸如移动终端或连接对象的终端的主电路。
在某些实施例中,集成电路CT可以被配置为借助加密功能执行对发送给它的消息进行加密、解密或签名的操作。该加密功能可以由电路CT的处理器PRC执行,或者部分地或完全地由处理器PRC的协处理器CP1执行。
本文提出保护例如在密码算法(在诸如电路CT的电路中实现)中使用替换表或查找表的运算免受侧信道分析。在此上下文中,运算接收输入数据,并且提供使用输入数据作为索引在表中读取的输出数据。根据现有技术对该运算的保护在于使用以下性质掩蔽替换表:
SBM[D⊕U]=SB[D]⊕V (1)
其中SB是替换表,SBM是经掩蔽替换表,并且U和V是输入掩码。
图2表示生成经掩蔽替换表SBM的步骤S1到S7、以及在替换运算中使用经掩蔽表的步骤S11到S13。图2A表示替换表SB和通过执行步骤S1到S7从表SB获得的经掩蔽表SBM。在步骤S1,输入替换表SB。在步骤S2,在0与最大值M和N之间随机确定掩码U、V。值M对应于替换表SB中的数据量减去1,并且值N对应于表SB中的数据的最大值。应该注意,值M和N不必相同。
在步骤S3,将索引i初始化为零(0)。在步骤S4,使用索引i在替换表SB中选择输出数据SB[i],并且通过以XOR运算将选定输出数据SB[i]与掩码V组合来掩蔽所述输出数据SB[i]。将XOR运算的结果SB[i]⊕V存储在掩蔽表SBM中的由通过XOR运算将索引i与掩码U组合而产生的索引i⊕U处。在步骤S5,使索引i递增一(1)。在步骤S6,将索引i与值M进行比较。如果索引i大于值M,则执行步骤S7,否则再次执行步骤S4到S6以进行新迭代。在步骤S7,完全定义经掩蔽表SBM并将其提供为步骤S1到S7的输出。
在步骤S11,使用经掩蔽数据MD在替换表SB中选择输出数据SR。为此,由通过向数据D应用与输入掩码U的XOR运算来掩蔽数据D而产生经掩蔽数据MD。在步骤S12,使用经掩蔽数据MD作为索引以在经掩蔽表SBM中选择经掩蔽输出数据MSR。在当需要时执行的步骤S13,通过XOR运算将经掩蔽输出数据MSR与掩码V组合,从而提供未掩蔽输出数据SR。
事实证明,替换表的这种掩蔽保护不能抵抗先前提及的组合了经掩蔽数据MD的泄漏和输入掩码U的泄漏的分析。经掩蔽表计算对此类分析尤其更敏感,因为要多次(M次)使用掩码U和V。
图3表示根据一个实施例的从另一个替换表SB0生成经掩蔽替换表SB1的程序CPSB的步骤S21到S27。程序CPSB接收要掩蔽的替换表SB0和掩码参数u0、v0,并且提供经掩蔽表SB1和更新后的掩码参数u1、v1。在步骤S21,在0与最大值M、N之间确定输入掩码U、V。输入掩码U的最大值M对应于替换表SB0中的数据量减去1,并且输入掩码V的最大值N对应于表SB0中的数据的最大值。可以随机选择掩码U、V。在步骤S22,使用输入掩码U、V和掩码参数u0、v0的前一个值来计算掩码参数u1、v1,如下所示:
u1=u0⊕U
v1=v0⊕V (2)
从等式(2)得出,通过以掩码U进行掩蔽来更新参数u,并且通过以掩码V进行掩蔽来更新参数v。
在步骤S23,将索引i初始化为零(0)。在步骤S24,使用索引i在替换表SB0中选择输出数据SB0[i],并且通过以XOR运算将选定输出数据SB0[i]与掩码V组合来掩蔽所述选定输出数据SB0[i]。将XOR运算的结果SB0[i]⊕V存储在经掩蔽表SB1中由通过XOR运算将索引i与输入掩码U组合而产生的索引i⊕U处:
SB1[i⊕U]=SB0[i]⊕V (3)
在步骤S25,使索引i递增一(1)。在步骤S26,将索引i与值M进行比较。如果索引i大于值M,则执行步骤S27,否则再次执行步骤S24到S26以进行新迭代。在步骤S27,完全定义了经掩蔽表SB1并将其提供为具有更新后的参数u和v的程序CPSB的输出。
应该观察到,可以通过多种其它方式获得在步骤S24计算的经掩蔽表,这些方式的实例在以下等式实例中定义:
SB1[i]=SB0[i⊕U]⊕V (4)
SB1[pr[i]⊕U]=SB0[pr[i]]⊕V (5)
SB1[pr[i]]=SB0[pr[i]⊕U]⊕V (6)
其中pr[i]表示整数集{0,…,M}上的置换。此外,可以例如每次从前一个表SB0计算经掩蔽表SB1时随机生成置换pr。因此,置换pr使得能够以随机顺序计算经掩蔽表SB1的元素。
图4表示根据一个实施例的使用替换表SBX的程序的步骤S30到S38。该程序包括初始化步骤S30到S32。在步骤S30,将掩码参数u0和v0初始化为零(0)。在步骤S31,使用替换表SBX、掩码参数u0、v0、u1、v1以及由掩蔽表SBX而产生的表SB1作为参数,调用程序CPSB。因此,在步骤S31之后,
u<1>=U<1>,
v<1>=V<1>,以及 (7)
SB1<1>[i⊕U<1>]=SBX[i]⊕V<1>
其中“X<t>”指迭代t处的参数X的值。
在步骤S32,使用以下各项作为参数,再次调用一次或多次程序CPSB:
由对程序CPSB的前一次调用提供的经掩蔽表SB1,以及
由对程序CPSB的前一次调用计算的掩蔽参数u1、v1。
表SB1旨在接收表SB1的经掩蔽结果。前一个步骤S32a可以将参数u0和v0分别设定为u1和v1,并且将经掩蔽表SB0设定为由对程序CPSB的前一次调用在步骤S31或S32提供的经掩蔽表SB1。可以将单个活动经掩蔽表SB1和对应掩码参数u1、v1存储在电路CT的非易失性存储器中。
在步骤S32第二次调用程序CPSB之后,按如下方式计算参数u1和v1以及经掩蔽表SB1:
u<2>=u<1>⊕U<2>,
v<2>=v<1>⊕V<2>,以及 (8)
SB1<2>[i⊕U<2>]=SB1<1>[i]⊕V<2>
在步骤S32之后,当调用t-1次程序CPSB时,参数u和v具有以下值:
u<t>=u<t-1>⊕U<t>,以及
v<t>=v<t-1>⊕V<t> (9)
此外,按如下方式从前一个经掩蔽替换表SB1<t-1>计算当前经掩蔽替换表SB1<t>:
SB1<t>[i⊕U<t>]=SB1<t-1>[i]⊕V<t> (10)
在步骤S33,由算法使用替换表SBX处理一个经掩蔽输入数据MD1。通过以XOR运算将输入数据MD1与参数u的最后更新值u<t>(=u1)组合来掩蔽输入数据MD1。在步骤S34,使用数据MD1作为索引在经掩蔽表SB1中选择输出经掩蔽数据MSR1。
在步骤S35,再次调用程序CPSB以更新经掩蔽表SB1以及参数u1和v1。这种更新例如在两次连续读取替换表SB1之间或者在两次连续加密或解密消息之间执行。前一个步骤S35a可以将参数u0和v0分别设定为u1和v1,并且将经掩蔽表SB0设定为由对程序CPSB的前一次调用在步骤S32提供的经掩蔽表SB1。在步骤S36,输入新的经掩蔽数据MD2(等于通过XOR运算将非掩蔽数据D2与最后更新参数u1组合),以便使用替换表SBX执行数据D2的替换运算。还可以通过将该数据的前一个值与最后输入掩码U组合来计算经掩蔽数据MD2:
MD2<t>=MD2<t-1>⊕U (11)
为了执行替换运算,使用经掩蔽数据MD2作为索引以在经掩蔽表SB1中选择经掩蔽替换数据(步骤S37)。替换运算提供经掩蔽数据MSR2。在步骤S38,可以通过以XOR运算将经掩蔽数据MSR2与参数v1组合,去除经掩蔽数据MSR2的掩码以获得未掩蔽数据SR2(=MSR2⊕v1)。
因此,一旦将掩码参数u与要处理的数据组合,包括替换运算的计算便被保护,直到将掩码参数v与结果数据组合。
上述方法可以应用于使用替换盒(substitution box)的任何加密或解密算法,例如AES、DES、三重DES、TwoFish、PRIDE、ARIA和SEED。
图5表示实现用于对数据进行加密的AES算法的密码计算电路CC1的一个实例。有关AES的进一步详细信息,可以参考2001年11月26日公布的文件“Advanced EncryptionStandard FIPS PUB 197(高级加密标准FIPS PUB 197)”。在图5中,密码计算电路CC1接收要处理的数据X1并提供结果数据CX1。电路CC1还接收轮密钥表KT,其包含根据AES算法从私钥导出的所有轮密钥。表KT中的轮密钥具有与要通过AES算法的一次执行加密或解密的数据相同的大小,例如对于AES为128位(=16字节)。电路CC1包括与轮密钥执行XOR运算的电路XG1、XG2、XG3,替换计算电路SBB,基于行的循环置换计算电路SHR,多路复用器MX和基于列的置换计算电路MXC。电路SBB、SHR和MXC符合AES。电路XG1接收要加密的数据X1以及在提供给电路CC1的轮密钥表KT中的索引0处的导出密钥KT[0]。通过电路SBB和SHR处理电路XG1的输出数据X2<0>。在AES算法的0到R-1轮,多路复用器MX将电路SHR的输出传输到电路MXC。在最后一轮R,将电路SHR的输出传输到电路XG3,电路XG3在另一个输入端处接收轮密钥表KT中的索引R处的最后导出密钥KT[R]。在0到R-1轮,电路XG2处理电路MXC的输出,电路XG2接收在表KT中读取的导出密钥KT[j](j=1、…、R-1)。电路SBB和SHR处理电路XG2的输出。当由包括电路SBB、SHR、MXC、XG2的链执行某一数量(r-1)的计算轮(10、12或14,与AES一致)时,多路复用器MX被启动以将电路SHR的输出提供给电路XG3的输入端,电路XG3提供输出数据CX1。
在第一计算轮期间,数据X1由电路XG1处理,电路XG1通过XOR运算将数据X1与第一导出密钥KT[0]进行相加。电路XG1提供结果数据X1⊕K[0],其由电路SBB、SHR、MXC和XG2相继地处理。然后,电路XG2将由电路MXC提供的数据与导出密钥KT[j](j=1、...、R-1)组合。电路SBB、SHR、MXC和XG2被相继激活以用于多轮AES算法。电路SBB、SHR和XG3在AES算法的最后一轮R被激活。在每轮j,在表KT中读取轮密钥KT[j](j=1、...、R-1)。
通常使用替换表SBX实现替换计算电路SBB,替换表SBX接收用作索引的输入数据以在替换表中选择输出数据。替换表SBX包括256个字节,并且要由电路SBB处理的数据的每个字节被用作索引以在表SBX中选择字节。可以通过特定电路实现置换计算电路SHR。
根据一个实施例,电路CC1包括分别执行与掩码参数u、u、v和v的XOR运算的电路XG4、XG5、XG6和XG7。电路XG4到XG7的每一个接收大小为一个字(例如一个字节)的掩码参数u、v的一个、以及掩码参数大小(16个字节)的多个字的输入数据,并且针对包括在输入数据中的掩码参数大小的每个字,执行与掩码参数u的XOR运算。电路XG4接收输入数据X1和掩码参数u,并且向电路XG2提供经掩蔽输入数据X2<0>(=X1⊕u),X1⊕u表示经掩蔽数据X1⊕u//u//…//u,其中“//”表示位串的串接运算,u//u//…//u具有数据X1的大小。电路XG5介于电路XG2与XG6之间。电路XG5在另一个输入端处接收掩码参数u。电路XG6连接到电路XG5的输出端并在另一个输入端处接收参数v。电路XG7连接在电路XG3的输出端处并在另一个输入端处接收参数v。
在电路CC1处理输入数据X1之前,执行图4的步骤S30到S32以生成替换表SB1并获得对应掩码参数u和v,将参数u和v以及输入数据X1和轮密钥表KT提供给电路CC1。电路XG2将数据X2<0>与在表KT中读取的第一轮密钥KT[0]进行相加。电路XG2将数据X3<0>=X2<0>⊕KT[0](=X2<0>⊕u=X1⊕KT[0]⊕u)提供给电路SBB的输入端。因此,通过经掩蔽参数u掩蔽通常要提供给电路SBB的预期数据X1⊕KT[0]。使用经掩蔽替换表SB1实现的电路SBB提供数据:
X4<0>=SB1[X1⊕KT[0]⊕u]=SBX[X1⊕KT[0]]⊕v (12)
因此,通过经掩蔽参数v掩蔽通常在第一轮由电路SBB提供的预期数据SBX[X1⊕K<0>]。电路SHR和MXC分别提供仍然由经掩蔽参数v掩蔽的预期结果数据X5<0>和X6<0>。电路XG2将经掩蔽值X6<0>与第二轮密钥KT[1]进行相加。因此,电路XG2将数据X7<1>提供给电路XG5。电路XG5将数据X7<1>与掩码参数u组合并将数据X8<1>(=X7<1>⊕v⊕u)提供给电路XG6。电路XG6使用掩码参数v去除数据X8<1>的掩码。因此,在电路XG6的输出端处,数据X2<1>仅由掩码参数u掩蔽,并且因此准备好由电路SBB进一步处理。
在倒数第二轮R-1,电路XG2提供数据X7<R>=X6<R-1>⊕K[R-1]⊕v。电路XG5提供数据X8<R>=X6<R-1>⊕K[R-1]⊕v⊕u,并且电路XG6提供数据X2<R>=X6<R-1>⊕K[R-1]⊕u。
电路SBB提供数据:
X4<R>=SB1[X2<R>⊕K[R-1]⊕u]=SBX[X3<R>⊕K[R-1]]⊕v (13)电路XG3将由电路SHR提供并仍然通过掩码参数v掩蔽的数据X5<R>与最后一轮密钥KT[R]进行相加。因此,电路XG3提供数据:
X9<R>=X5<R>⊕K[R]⊕v (14)
可以通过电路XG7去除数据X9<R>的掩码,电路XG7提供数据:
CX1=X9<R>⊕v=X5<R>⊕K[R] (15)
应该注意,由包括电路XG1、SBB、SHR、MXC、XG2、XG5和XG6的处理链PA处理的所有数据始终被参数u或参数v或这两者掩蔽。因此,处理链PA形成电路CC1的受保护区域。电路CC1可以由具有相同保护级别的软件实现,因为这种保护取决于可以由硬件或软件实现的掩蔽运算,而不会降低保护级别。
当执行电路MXC的运算以将掩码保留在数据上时,需注意运算的顺序。根据AES算法,提供给电路MXC的数据X以包括4x 4个元素x’<j>(j=0、1、…15)的矩阵形式呈现,该矩阵在电路MXC中被乘以系数矩阵。因此,由电路MXC提供的数据具有包括4x 4个元素的矩阵形式,其中每个元素具有以下形式:
ax’<i>⊕bx’<i+1>⊕cx’<i+2>⊕dx’<i+3>
其中a、b、c、d(=1、2或3)是系数矩阵的元素,并且i等于0、4、8和12。例如,结果矩阵的第一个元素等于:
A=2x’<0>⊕3x’<1>⊕x’<2>⊕x’<3>
其中每个字节x’<j>被相同掩码M掩蔽(x’<j>=x<j>⊕v),3x=2x⊕x,并且a(x⊕v)=ax⊕av。因此:
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>
因此,在计算的该步骤,去除掩码v,这可以形成可由侧信道分析利用以确定数据X的泄漏,即使当执行最后一个XOR运算时掩码v再次出现也是如此:
A=(2x<0>⊕3x<1>⊕x<2>⊕x<3>)⊕v
相比之下,如果以下面的顺序执行元素A的计算:
A=2x’<0>⊕x’<2>⊕x’<3>⊕3x’<1>
得到:
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
因此,当以系数a、b、c、d等于(2 1 1 3)的顺序执行XOR运算时,每个XOR运算的结果始终被掩蔽。在每个XOR运算之后,顺序(1 2 1 3)、(3 1 1 2)和(1 3 1 2)也保持掩蔽。还应该观察到,应用于输入数据的掩码v被保持在MXC运算的输出数据中。
当需要更高的保护时,可以在计算轮内的加密或解密数据计算期间的任何时候调用程序CPSB,以便进一步掩蔽该替换表SBX。因此,可以在每轮调用程序CPSB,前提是当前处理的数据通过新的掩码参数u和v被掩蔽并通过旧的掩码参数u和v被去除掩码。
根据AES算法的解密包括与加密算法基本相同的运算。因此,可以应用先前描述的保护方法以保护实现AES解密算法的程序和电路。更具体地说,AES解密电路包括执行与从私钥SK导出的轮密钥的XOR运算的电路、逆替换计算电路、基于行的逆循环置换计算电路、以及基于列的逆置换计算电路。可以仅通过以实现逆运算的电路替代电路SBB、SHR和MXC,将图3到5中所示的方法应用于AES解密算法。基于列的逆置换计算电路还计算具有以下形式的数据:
ax<i>⊕bx<i+1>⊕cx<i+2>⊕dx<i+3>
其中系数(a,b,c,d)等于(9,11,13,14)并具有不同顺序。这些系数允许以任何顺序计算XOR运算而不去除掩码,并且结果数据保持与输入数据相同的掩码。
图6表示实现用于对数据进行加密的DES算法的密码计算电路CC2的实例。有关DES的进一步详细信息,可以参考1999年10月25日公布的文件“Data Encryption Standard(DES)FIPS PUB 46-3(数据加密标准(DES)FIPS PUB 46-3)”。在图6中,密码计算电路CC2接收要处理的数据X1并提供结果数据CX1。电路CC2还接收轮密钥表KT,其包含根据DES算法从私钥导出的所有轮密钥。电路CC2包括执行XOR运算的电路XG11、XG12,初始置换电路、扩展电路EXP、替换计算电路SDS,旋转电路RPM,一个寄存器RG1和多路复用器MX1、MX2以及最终置换电路FPM。将在64位字上编码的输入数据X1应用于初始置换电路IPM。将由电路IPM执行的置换的结果分为左侧和右侧32位字。将左侧字传输到电路XG12。将右侧字传输到多路复用器MX1和提供48位字的扩展电路EXP,并且传输到寄存器RG1。多路复用器MX2的一个输出端连接到电路FPM的左输入端,并且一个输出端连接到寄存器RG1。电路XG11将电路EXP的输出字与也在48位上编码的第一轮密钥KT1[0]组合。替换计算电路SDS处理由电路XG11执行的运算的结果,替换计算电路SDS提供32位字,该32位字由旋转电路RPM进一步处理。电路XG12将RPM电路的结果与由电路IPM或寄存器RG1提供的32位字组合。将由电路XG12提供的结果传输到具有两个输出端的多路复用器MX2。多路复用器MX2的第一输出端连接到电路FPM的右输入端,并且多路复用器MX2的第二输出端连接到多路复用器MX1和电路EXP的输入端。
在根据DES算法的第一计算轮,将电路IPM的输出中的右侧32位字存储在寄存器RG1中并由电路EXP、XG11、SDS、RPM处理,并且将其提供给电路XG12。将电路IPM的输出中的左侧32位字传输到电路XG12的输入端。多路复用器MX2将电路XG12的输出传输到多路复用器MX1和电路EXP以用于新的计算轮。在第二计算轮,将由多路复用器MX1接收的字存储在寄存器RG1中并由电路EXP、XG11、SDS、RPM和XG12处理,电路XG12接收寄存器RG2中的字。
在第14轮,多路复用器MX2将电路XG12的输出中的字传输到多路复用器MX1和电路EXP,以便在第15轮和最后一轮进一步处理。在第15轮,多路复用器MX2将电路XG12的输出端处的字作为最高有效字提供给最终置换电路FPM的左输入端。同时,多路复用器MX1将先前由电路XG12提供的字作为最低有效字提供给电路FPM的右输入端,电路FPM输出该输出数据CX1。
根据一个实施例,执行图4的步骤S30到S32以生成八个DES替换表SB1并获得对应掩码参数u和v,将参数u和v以及输入数据X1和轮密钥表KT1输入到电路CC2。执行XOR运算的电路XG13将在6位上编码的掩码参数u与由电路EXP提供的字进行相加。使用替换表SB1之一的电路SDS提供与在4位上编码的掩码参数v进行相加的结果。执行XOR运算的电路XG14将掩码参数v与电路SDS的输出进行相加。以这种方式,从由电路SDS提供的字中去除掩码v。因此,从电路XG13的输出到电路XG14的输入保护由电路CC2处理的字。由包括电路XG11和SDS的处理链PA1处理的所有数据始终通过参数u或参数v被掩蔽。因此,处理链PA1形成电路CC2的受保护区域。电路CC2可以由具有相同保护级别的软件实现,因为这种保护取决于可以由硬件或软件实现的掩蔽运算,而不会降低保护级别。
当需要更高的保护时,可以在计算轮内的加密或解密数据计算期间的任何时候调用程序CPSB,以便进一步掩蔽所述替换表SB1。因此,可以在每轮调用程序CPSB,前提是当前处理的数据通过新的掩码参数u和v掩蔽并通过旧掩码参数u和v去除掩码。还可以从先前处理的数据和最后输入掩码U或V获得当前处理的数据。
根据DES算法的解密包括与加密算法基本相同的运算。因此,可以应用先前描述的保护方法以保护实现DES解密算法的程序和电路。
图7表示根据一个实施例的从另一个替换表SB0生成经掩蔽替换表SB1的程序CPS1的步骤S41到S47。程序CPS1接收要掩蔽的替换表SB0和掩码参数u0、v0、w0,并且提供经掩蔽表SB1和更新后的掩码参数u1、v1、w1。在步骤S41,在0与最大值之间确定输入掩码U、V和W。对于输入掩码U,最大值是值M,对于输入掩码V,最大值是值N,并且对于输入掩码W,最大值是值M与N之间的最大值。可以随机选择输入掩码U、V、W。值M对应于替换表SB0中的数据量减去1,并且值N对应于表SB0中的数据的最大值。在步骤S42,使用掩码输入U、V、W和掩码参数u0、v0、w0的前一个值来计算掩码参数u1、v1、w1,如下所示:
u1=u0⊕W⊕U
v1=v0⊕W⊕V (16)
w1=w0⊕W (17)
以在每个等式(16)中呈现的顺序执行XOR运算。当与较小大小的数据(U或V)组合时,参数W被截断。从等式(16)得出,参数u0通过输入掩码W和U被掩蔽,参数v0通过输入掩码W和V被掩蔽,并且参数w0通过输入掩码W被掩蔽。
在步骤S43,将索引i初始化为零(0)。在步骤S44,使用索引i在替换表SB0中选择输出数据SB0[i],并且通过以XOR运算将选定输出数据SB0[i]与输入掩码V组合来掩蔽该输出数据。将XOR运算的结果SB0[i]⊕V存储在经掩蔽表SB1中由通过XOR运算将索引i与输入掩码U组合而产生的索引i⊕U处:
SB1[i⊕U]=SB0[i]⊕V (18)
在步骤S45,使索引i递增一(1)。在步骤S46,将索引i与值M进行比较。如果索引i大于值M,则执行步骤S47,否则再次执行步骤S44到S46以进行新迭代。在步骤S47,完全定义经掩蔽表SB1并提供经掩蔽表SB1作为具有更新后的参数u1、v1和w1的程序CPS1的输出。
应观察到,可以通过多种其它方式获得在步骤S44计算的经掩蔽表,这些方式在以下等式实例中定义:
SB1[i]=SB0[i⊕U]⊕V (19)
SB1[pr[i]⊕U]=SB0[pr[i]]⊕V (20)
SB1[pr[i]]=SB0[pr[i]⊕U]⊕V (21)
其中pr[i]是整数集{0,…,M}上的置换。此外,可以例如每次从前一个表SB0计算经掩蔽表SB1时随机生成置换pr。因此,置换pr使得能够以随机顺序计算经掩蔽表SB1的元素。
图8表示根据一个实施例的使用替换表SBX的程序的步骤S50到S58。该程序包括初始化步骤S50到S52。在步骤S50,将掩码参数u、v和w初始化为零(0)。在步骤S51,使用替换表SBX、掩码参数u、v、w以及由掩蔽表SBX而产生的表SB1作为参数,调用程序CPS1。因此,在步骤S51之后,
u<1>=W<1>⊕U<1>,
v<1>=W<1>⊕V<1>,
w<1>=W<1>,以及 (22)
SB1<1>[i⊕U<1>]=SBX[i]⊕V<1>
其中“X<t>”指迭代t处的参数X的值。
在步骤S52,使用由对程序CPS1的前一次调用提供的经掩蔽表SB1、由对程序CPS1的前一次调用更新的掩蔽参数u、v、w作为参数,再次调用一次或多次程序CPS1,表SB1旨在接收表SB1的经掩蔽结果。因此,在步骤S52第二次调用程序CPS1之后,按如下方式计算参数u、v和w以及经掩蔽表SB1:
u<2>=u<1>⊕W<2>⊕U<2>,
v<2>=v<1>⊕W<2>⊕V<2>,
w<2>=w<1>⊕W<2>,以及 (23)
SB1<2>[i⊕U<2>]=SB1<1>[i]⊕V<2>
在步骤S52之后,当调用t-1次程序CPS1时,参数u、v和w具有以下值:
u<t>=u<t-1>⊕W<t>⊕U<t>,
v<t>=v<t-1>⊕W<t>⊕V<t>,以及 (24)
w<t>=w<t-1>⊕W<t>
此外,按如下方式从前一个经掩蔽替换表SB1<t-1>计算当前经掩蔽替换表SB1<t>:
SB1<t>[i⊕U<t>]=SB1<t-1>[i]⊕V<t> (25)
在步骤S53,由算法使用替换表SB1处理一个经掩蔽输入数据MD1。通过以XOR运算组合参数u1的最后更新值u<t>来掩蔽输入数据MD1。在步骤S54,使用通过以XOR运算将输入数据MD1与参数w的最后值w<t>进行相加而获得的数据MD1⊕w作为索引,在经掩蔽表SB1中选择输出经掩蔽数据MSR1。
在步骤S55,再次调用程序CPS1以更新经掩蔽表SB1以及参数u、v和w。这种更新例如在两次相继读取替换表SB1之间或者在两次相继加密或解密消息之间执行。在步骤S56,输入新的经掩蔽数据MD2(等于通过XOR运算将非掩蔽数据D2与最后更新参数u1组合),以便使用替换表SBX执行数据D2的替换运算。为此,通过XOR运算将经掩蔽数据MD2与更新后的参数w组合,并且将经掩蔽数据MD2用作索引以在经掩蔽表SB1中选择经掩蔽替换数据(步骤S57)。替换运算提供经掩蔽数据MSR2。在步骤S58,可以通过以XOR运算将经掩蔽数据MSR2首先与参数v组合并且然后与掩码参数w组合,去除经掩蔽数据MSR2的掩码以获得未掩蔽数据SR2(=(MSR2⊕v1)⊕w1)。
当考虑以下参数时:
u’<t>=u’<t-1>⊕U<t>,以及
v’<t>=v’<t-1>⊕V<t> (26)
它遵循:
u’<t>⊕w<t>=u’<t-1>⊕w<t-1>⊕W<t>⊕U<t>
v’<t>⊕w<t>=v’<t-1>⊕w<t-1>⊕W<t>⊕V<t> (27)
并且遵循:
u<t>=u’<t>⊕w<t>,以及
v<t>=v’<t>⊕w<t> (28)
因此,可以认为u'和v'<t>是针对从t=2的每次迭代t,由使用参数w<t>作为掩码来掩蔽参数u<t>和v<t>而产生的隐藏参数。从上面的SB1、u’和v’定义和性质,并且通过将等式(25)应用于多次迭代t,可以按如下方式表达经掩蔽替换表SB1<t>的内容:
SB1<t>[i⊕U<t>]=SBX[i⊕u’<t-1>]⊕v’<t-1>⊕V<t> (29)
当在等式(29)中以i⊕u’<t-1>替代索引i时,它变成:
SB1<t>[i⊕U<t>⊕u’<t-1>]=SBX[i]⊕v’<t-1>⊕V<t> (30)
因此,通过考虑等式(26),可以推导出以下等式:
SB1<t>[i⊕u’<t>]=SBX[i]⊕v’<t> (31)
这导致在执行步骤S51之后,从不在程序CPS1中的经掩蔽表SB1<t>的计算中使用替换SBX以及掩码参数u’<t>和v’<t>。因此,如果从受保护区域中的替换表SBX计算第一经掩蔽表SB1<1>,则二阶侧信道分析不能利用有关经掩蔽数据D⊕U<t>和掩码U<t>的泄露来发现数据SBX[D]。
当表SBX中的数据量不同于表中的数据的最大值时,可以使用另一个掩码参数y,掩码参数w具有与掩码参数u和U相同的大小,并且掩码参数y具有与掩模参数v和V相同的大小。因此,在步骤S22,可以按如下方式计算掩码参数:
u1=u0⊕W⊕U
v1=v0⊕Y⊕V (32)
w1=w0⊕W
y1=y0⊕Y
仍然按等式(18)定义的那样计算经掩蔽替换表SB1。等式(31)保持不变,但按如下方式定义掩码参数u’和v’:
u<t>=u’<t>⊕w<t>,以及
v<t>=v’<t>⊕y<t> (33)
在步骤S54和S57,要用于在替换表SB1中选择数据的索引是D⊕u1⊕w1,D是未掩蔽数据,并且在替换表中选择的经掩蔽数据MSR可以通过将其与参数v1和y1的XOR运算进行相加来去除掩码。
可以观察到,即使当表SBX中的数据量与表中的数据的最大值相同时,也可应用等式(32)和(33)。因此,可以使用不同的输入掩码W、Y以及掩码参数w和y计算掩码参数u和v。
上面公开的使用掩码参数w的方法不能防止三阶或更高阶侧信道分析,这些侧信道分析检测和组合来自D⊕u’<t>、u’<t>⊕w<t>和w<t>的三个数据泄漏,以便发现数据D的值。但是,该方法可被改变以防止此类分析。图9表示根据另一个实施例的从用于防止三阶侧信道分析的程序CPS1导出的程序CPS2的步骤S61到S67。如同程序CPS1,程序CPS2从另一个替换表SB0生成经掩蔽替换表SB1。步骤61与步骤S41的不同之处在于,在0与值M和N之间的最大值之间选择另一个掩码输入Z。作为一个实例,随机选择掩码输入Z。步骤62与步骤S42的不同之处在于,现在另外使用掩码Z更新参数w,通过XOR运算将掩码Z与掩码W组合:
w1=w0⊕W⊕Z (34)
步骤62还包括通过以XOR运算将参数x与掩码X组合来更新参数x:
z1=z0⊕Z (35)
步骤63到S66与步骤S43到S46相同。步骤S67与步骤S47的不同之处在于,参数x0是输入,并且参数z1是程序CPS1的输出。
图10表示与图4的实施例相关的使用替换表SBX的另一个程序的步骤S70到S78。该程序包括可选初始化步骤S70到S72。步骤S70与步骤S50的不同之处在于,还将参数z0初始化为零(0)。步骤S71、S72和S75与步骤S51、S52和S55的不同之处在于,调用程序CPS2而不是程序CPS1。因此,参数z0和z1出现在步骤S71、S72和S75对程序CPS2的调用中。在步骤S72a和S75a,将掩码参数z0进一步设定为由对程序CPS2的前一次调用提供的掩码参数z1的值。步骤S73和S76与步骤S53和S56相同,以便处理通过参数u1掩蔽的数据D1和D2。在步骤S74和S77执行的使用替换表SBX的替换运算与在步骤S54和S57执行的替换运算的不同之处在于,通过XOR运算使用参数w1和z1对经掩蔽数据MD1、MD2进一步掩蔽。可以通过以XOR运算将在步骤S74和S77获得的每个经掩蔽数据MSR1、MSR2与参数v1、w1和z1组合,去除经掩蔽数据MSR1、MSR2的掩码(步骤S78)。
图9中所示的掩蔽程序CPS2可能易受四阶或更高阶侧信道分析的攻击,这些侧信道分析将来自D⊕u’<t>、u’<t>⊕w’<t>、w’<t>⊕z<t>和z<t>的四个泄漏与w’<t>=w<t>⊕z<t>组合。但是,先前公开的方法简单地通过添加另一个级别的掩蔽、使用另一个掩码参数zz以隐藏掩码z等,可以很容易地适合于防止更高阶的侧信道分析。因此,可以通过选择秩1到n的输入掩码来生成新的经掩蔽替换表,n是大于1的整数,针对从1到n-1的每个秩j,通过以XOR运算将秩j的掩码参数的前一个值与秩j和j+1的输入掩码组合来计算秩j的掩码参数的新值,并且通过将XOR运算应用于秩n的掩码参数的前一个值和秩n的输入掩码来计算秩n的掩码参数的新值。当使用直到秩n的掩码参数时,替换运算包括将XOR运算应用于经掩蔽输入数据和秩1到n的每个掩码参数,通过XOR运算将与替换运算的输出数据对应的替换运算的经掩蔽输出数据与第二掩码参数组合并与秩1到n的每个掩码参数组合。
当表SBX中的数据量不同于表中的数据的最大值时,可以针对1到n的每个秩使用两个掩码参数,秩1到n的第一掩码参数具有与输入掩码U相同的大小,并且秩1到n的第二掩码参数具有与输入掩码V相同的大小。
图11表示从适合于AES算法的程序CPS1导出的程序CPS3的步骤S81到S91。步骤S81到S86与步骤S41到S46相同。参数U、V、W、u0、v0、w0、u1、v1、w1的大小为一个字节(值M和N相同)。程序CPS3还接收替换表SB0和轮密钥表KT0,替换表SB0可以是由AES算法使用的替换表SBX或者是先前掩蔽的替换表,轮密钥表KT0可以是包含根据AES算法从私钥导出的所有轮密钥的轮密钥表KT或者是先前掩蔽的轮密钥表KT0。在步骤S84到S86,通过可以在步骤S81随机选择的参数U和V来掩蔽替换表SB0。在步骤S87,将索引j初始化为零(0)。在步骤S88,使用索引j在轮密钥表KT0中选择轮密钥KT0[j]。通过XOR运算将选定轮密钥KT0[j]的每个字节与参数W进行相加,并且将得到的经掩蔽轮密钥KT1[j]存储在轮密钥表KT1中的相同索引j处。在步骤S89,使索引j递增一(1)。在步骤S90,将索引j与对应于由所考虑的AES算法执行的轮数的最大值R进行比较。如果索引j大于值R,则执行步骤S91,否则再次执行步骤S88到S90以进行新迭代。在步骤S91,提供经掩蔽表KT1并将其与在步骤S84到S86计算的经掩蔽表SB1以及在步骤S82计算的更新后的参数u1、v1和w1一起作为程序CPS3的输出。
图12表示为了多次调用程序CPS3以计算参数u1、v1、w1并生成经掩蔽替换表SB2和掩蔽轮密钥表KT2而执行的步骤S93到S97。该程序包括可选初始化步骤S93到S94。在步骤S93,将掩码参数u0、v0和w0初始化为零(0)。在步骤S94,使用在AES算法中使用的替换表SBX、掩码参数u、v、w、轮密钥表KT2以及从表SBX计算的掩蔽表SB2作为参数,调用程序CPS3。在步骤S95,使用由对程序CPS3的前一次调用提供的掩蔽表SB2、由对程序CPS3的前一次调用更新的掩码参数u1、v1、w1、以及由对程序CPS3的前一次调用提供的掩蔽轮密钥表KT2作为参数,调用一次或多次程序CPS3,表SB2旨在接收前一个表SB2的经掩蔽结果。在前一个步骤S95a,可以将掩码参数u0、v0、w0设定为更新后的掩码参数u1、v1、w1。可以将表SB0和KT1设定为更新后的表SB2和KT2。在步骤S96,引入要处理的数据X1。在步骤S97,激活实现AES算法的电路CC3,电路CC3接收数据X1,参数u、v、w以及经掩蔽表SB2和KT2。电路CC3返回由通过AES算法对数据X1进行加密或解密而产生的输出数据CX1。
图13表示实现用于对数据进行加密的AES算法的密码计算电路CC3的另一个实例。根据一个实施例,电路CC3与电路CC1的不同之处在于,它不包括电路XG5,但包括分别执行与掩码参数u和w的XOR运算的附加电路XG8和XG9。电路XG4和XG6到XG9的每一个接收大小为一个字(例如一个字节)的掩码参数u、v、w中的一个、以及具有掩码参数大小(在所示实例中为16个字节)的多个字的输入数据,并且针对包括在输入数据中的掩码参数大小的每个字,执行与掩码参数u、v、w的XOR运算。
电路XG8介于电路MXC与XG2之间。电路XG9介于电路XG2与XG6之间。
电路XG4提供数据X2<0>,其由通过掩码参数u(即,通过参数u’⊕w)掩蔽数据X1而产生。这意味着数据X1内具有参数u的大小的每个字由参数u所掩蔽。作为多次执行步骤S88(图11)的结果,先前由参数w掩蔽轮密钥KT[0](KT2[0]=KT[0]⊕w)。因此,电路XG1在电路SBB的输入端处提供数据:
X3<0>=X2<0>⊕KT2[0]
=X1⊕u’⊕w⊕KT[0]⊕w=X1⊕KT[0]⊕u’ (36)
KT[0]是没有掩码的第一轮密钥。因此,通过未被计算的经掩蔽参数u’(=u⊕w)掩蔽通常要提供给电路SBB的预期数据X1⊕KT[0]。使用经掩蔽替换表SB2实现的电路SBB提供数据:
X4<0>=SB1[X1⊕K<0>⊕u’]=SB2[X1⊕K<0>]⊕v’ (37)
(参见等式(31))。因此,通过未被计算的经掩蔽参数v’(=v⊕w)掩蔽通常由电路SBB提供的预期数据SB2[X1⊕KT[0]]。电路SHR和MXC分别提供仍然通过经掩蔽参数v’掩蔽的预期结果数据X5<0>和X6<0>。在电路XG8的输出端处,通过参数u(=u’⊕w)进一步掩蔽数据X7<0>。电路XG2将经掩蔽值X7<0>与经掩蔽轮密钥KT2[1]=KT[1]⊕w进行相加,KT[1]是没有掩码的第二轮密钥。然后,电路XG2提供数据:
X8<0>=X7<0>⊕KT2[1]=X6<0>⊕u’⊕w⊕KT[1]⊕w (38)
在电路XG9的输出端处,通过参数w进一步掩蔽数据X9<0>。因此,在电路XG9的输出端处,通过参数u’⊕v’掩蔽数据X9<0>。
因为v=v’⊕w,所以电路XG6提供数据:
X3<1>=X9<0>⊕v=KT[1]⊕X6<0>⊕u’ (39)
通过参数u’掩蔽该数据作为由电路XG1提供的数据。因此,数据X3<1>准备好由电路SBB进一步处理。
在倒数第二轮R-1,电路XG6提供数据:
X3<R>=X8<R-1>⊕KT[R-1]⊕u’ (40)
电路SBB提供数据:
X4<R>=SB2[X3<R>]=SBX[X3<R>⊕u’]⊕v’ (41)
电路XG3将由电路SHR提供并仍然通过参数v’掩蔽的数据X5<R>与最后一轮密钥KT2[R](=KT[R]⊕w)进行相加。因此,电路XG3提供数据:
X10<R>=X5<R>⊕KT[R]⊕v’⊕w=X5<R>⊕KT[R]⊕v (42)
然后,通过从数据X10<R>中去除掩码v,电路XG7提供数据:
CX1=X10<R>⊕v=X5<R>⊕KT[R] (43)
应该注意,由包括电路SBB、SHR、MXC、XG8、XG9、XG2、XG6和XG3的处理链PA2处理的所有数据始终通过参数u’或参数v’或这两者掩蔽,这两个参数从未被计算也未被直接使用,因为它们始终通过参数w被掩蔽。因此,处理链PA2形成电路CC3的受保护区域。电路CC3可以由具有相同保护级别的软件实现,因为这种保护取决于可以由硬件或软件实现的掩蔽运算,而不会降低保护级别。
当需要更高的保护时,可以在计算轮内的加密或解密数据计算期间的任何时候调用程序CPS3。每次调用该程序时,仅需要通过XOR运算将被处理数据的当前值与在程序CPS3的步骤S81确定的随机参数U或V相组合。
图11到13中所示的保护方法可以应用于算法AES-128、AES-192和AES-256,因为这些算法仅因为轮数而彼此不同。
应该以不从被处理数据X5<j>或其一部分中去除掩码v’的顺序来执行电路MXC中的XOR运算。
可以仅通过以实现逆运算的电路替代电路SBB、SHR和MXC,应用图11到13中所示的保护方法以保护实现AES解密算法的程序和电路。
还可以简单地通过在电路XG6之后添加XOR电路以执行与参数x的XOR运算,将图9和10中所示的实施例应用于AES算法以防止更高阶侧信道分析。
图14表示实现用于对数据进行加密的AES算法的密码计算电路CC4的另一个实例,通过使用分别应用于掩码参数u和v的两个不同掩码参数w和y而应用上述方法来保护电路CC4。电路CC4与电路CC3的不同之处在于,电路XG9接收掩码参数w1而不是掩码参数w,并且在于它包括布置在多路复用器MX与电路XG3之间的执行XOR运算的两个附加电路XG10和XG1a。电路XG10经由多路复用器接收电路SHR的输出数据和参数w。电路XG1a接收电路XG10的输出数据和参数w1,电路XG1a的输出被提供给电路XG3。电路XG10和XG1a从由电路SHR在最后一轮提供的数据中去除掩码参数w和w1。
上述保护还可以应用于组合XOR运算和使用替换表的替换运算的其它密码算法。图15到17示出将该方法应用于DES算法。
图15表示从适合于DES算法的程序CPSB导出的程序CPS4的步骤S101到S115。程序CPS4接收要处理的一组八个替换表SB0[k],这些替换表可以是针对DES算法定义的替换表或者是先前掩蔽的替换表。程序CPS4还接收在32位上编码的掩码参数u0、v0、w0、y0和轮密钥表KT0,轮密钥表KT0包含根据DES算法从私钥导出的轮密钥或经掩蔽轮密钥。程序CPS4提供经掩蔽表SB1、经掩蔽轮密钥表KT1和更新后的参数u1、v1、w1、y1。在步骤S101,在0与等于232-1的最大值M之间确定输入掩码U、V、W和Y。可以随机选择输入掩码U、V、W和Y。在步骤S102,根据等式(32),使用输入掩码U、V、W、Y和掩码参数u0、v0、w0、y0计算掩码参数u1、v1、w1、y1。
在步骤S103,将索引k初始化为零(0)。在步骤S104,将索引i初始化为零(0)。在步骤S105,使用以下等式更新表SB1:
SB1[i⊕E(U)[k],k]=SB0[i,k]⊕P-1(V)[k] (44)
其中SB0[…,k]表示秩k的DES替换表(其中k=0到7),每个表SB0[…,k]包括16x4个4位字(可以使用6位索引选择这些字),E(U)表示由应用于掩码U的DES扩展运算而产生的48位字,E(U)[k]表示字E(U)中的秩k的6位字,P-1(V)表示由应用于掩码V的逆轮置换运算P-1而产生的32位字,并且P-1(V)[k]表示字P-1(V)中的秩k的4位字。在步骤S106,使索引i递增一(1)。在步骤S107,将索引i与等于26-1(=63)的最大值ix进行比较。如果索引i大于值ix,则执行步骤S108和S109,否则再次执行步骤S105到S107以进行新迭代。在步骤S108,使索引k递增一(1)。在步骤S109,将索引k与等于7的最大值kx进行比较。如果索引k大于值kx,则执行步骤S110到S115,否则再次执行步骤S104到S109以进行新迭代。
步骤S110从轮密钥表KT0(其包含根据DES算法从私钥导出的所有轮密钥)或经掩蔽轮密钥表计算经掩蔽的第一个和最后一个DES轮密钥KT1[0]和KT1[R]。表KT0中的每个轮密钥KT0[j]是48位字。通过应用于结果(该结果由应用于参数W的DES扩展运算E提供)的XOR运算计算经掩蔽轮密钥KT1[0]和KT1[kx]。在步骤S111,将索引j初始化为一(1)。在步骤S112,使用索引j在轮密钥表KT1中选择轮密钥KT1[j]。通过以XOR运算借助应用于输入参数T的DES扩展运算E的结果掩蔽轮密钥KT0[j],计算选定轮密钥KT1[j]。在步骤S113,使索引j递增一(1)。在步骤S114,将索引j与对应于由DES算法执行的轮数(16,R=15)的最大值R减去一(1)进行比较。如果索引j大于值R-1,则执行步骤S115,否则再次执行步骤S112到S114以进行新迭代。在步骤S115,提供经掩蔽表KT1并将其与在步骤S104到S109计算的经掩蔽表SB1以及在步骤S102计算的更新后的参数u1、v1、w1和y1一起提供为程序CPS4的输出。在此,再次地,可以以随机顺序计算经掩蔽表SB1和KT1的元素。
图16表示为了多次调用程序CPS4以计算参数u1、v1、w1、y1、经掩蔽替换表SB3和经掩蔽轮密钥表KT3而执行的步骤S120到S124。该程序包括可选初始化步骤S120和S121。在步骤S120,将掩码参数u0、v0、w0和t0初始化为零(0)。在步骤S121,使用针对DES算法定义的替换表SBD和轮密钥表KTD、掩码参数u0、v0、w0、y0、轮密钥表KT3、从表KTD和SBD计算的经掩蔽表SB3、以及更新后的参数u1、v1、w1、y1作为参数,调用程序CPS4。在步骤S122,使用由对程序CPS4的前一次调用提供的经掩蔽表SB3、KT3、由对程序CPS4的前一次调用更新的掩码参数u1、v1、w1、y1作为参数,调用一次或多次程序CPS4,表KT3和SB3旨在接收前一个表KT3和SB3的经掩蔽结果。在步骤S122之前,步骤S122a可以将参数u0、v0、w0、y0设定为先前计算的掩码参数u1、v1、w1、y1的值。可以将表SBD和KTD设定为更新后的表SB3和KT3。在步骤S123,引入要处理的数据X1。在步骤S124,激活实现DES算法的电路CC5,电路CC5接收数据X1、更新后的掩码参数u1、v1、w1、y1以及经掩蔽表SB3和KT3。电路CC5返回由通过DES算法对数据X1进行加密或解密而产生的输出数据CX1。
图17表示实现用于对数据进行加密的DES算法的密码计算电路CC5的另一个实例。电路CC5与电路CC2的不同之处在于,它不包括电路XG13、XG14和MX2,但包括附加电路XG15、XG16、XG17、XG18、XG19、XG20、XG21和XG22以及多路复用器MX3、MX4和MX5。电路XG15到XG22分别执行与掩码参数u、u、E(v)、w、v、y、u和u的XOR运算。电路XG15和XG16通过XOR运算分别将32位掩码参数u与电路IPM的输出中的右侧字和左侧字进行相加。多路复用器MX5在0和15轮将电路XG11的输出中的字提供给电路SDS,或者在其它1到14轮提供给电路XG17。电路XG17将由电路EXP提供的48位字与也具有48位的参数E(v)组合,参数E(v)由将通过电路EXP实现的扩展函数应用于32位掩码参数v而产生。多路复用器MX6在2到13轮将由电路RPM提供的字供应给电路XG12,或者在其它0、1、14和15轮供应给电路XG18。电路XG18将由电路RPM提供的32位字与32位参数w组合。多路复用器MX3在0、1和14轮将电路XG12的输出中的字提供给多路复用器MX1和电路EXP,或者在2到13轮提供给电路XG19,或者在最后一轮(15)提供给电路XG22。电路XG19将XOR运算应用于32位掩码参数v和由电路XG12计算并由多路复用器MX1传输的相同大小的字。电路XG20将XOR运算应用于32位掩码参数y和由电路XG19计算的相同大小的字。电路XG20的输出端连接到多路复用器MX1和电路EXP的输入端。在最后一轮,电路XG21将XOR运算应用于32位掩码参数u和由多路复用器MX1提供的相同大小的字。电路XG21的输出端连接到最终置换电路FPM的右输入端。电路XG22将XOR运算应用于32位掩码参数u和由多路复用器MX3提供的相同大小的字。电路XG22的输出端连接到最终置换电路FPM的左输入端。
以这种方式,在第一轮(0),电路XG15和XG16通过掩码参数u掩蔽电路IPM的输出中最高有效字和最低有效字。因此,通过由将扩展函数E应用于掩码参数u而产生的参数E(u),掩蔽电路EXP的输出中的字。由于轮密钥KT3[0]的掩蔽,通过参数E(u⊕w)掩蔽由电路XG11提供的字。因此,从电路XG11保护由电路CC5处理的字。由于由程序CPS4执行的替换表SB3的掩蔽,通过参数P-1(v⊕y)掩蔽由电路SDS提供的字。因此,通过参数v⊕t掩蔽电路RPM的输出中的字。通过参数u⊕v⊕w⊕y掩蔽由电路XG12提供的字。
在第二轮(1),通过参数E(u⊕w)⊕E(v⊕y)掩蔽电路EXP的输出中的字。通过参数E(u⊕w)⊕E(v)掩蔽电路XG11的输出端处的字,参数E(u⊕w)⊕E(v)通过参数E(v)被进一步掩蔽。因此,电路SDS接收通过参数E(u⊕w)掩蔽的字。通过参数P-1(v⊕y)掩蔽由电路SDS提供的字。因此,通过参数v⊕y掩蔽电路RPM的输出中的字。通过掩码参数w进一步掩蔽由电路RPM提供的字。此外,通过参数u掩蔽寄存器RG1中的字。因此,通过参数u⊕w⊕v⊕y掩蔽由电路XG12提供并进一步应用于电路EXP的字。
在2到13轮,除了在电路XG12的输出端处之外,结果字的掩蔽相同,因为也通过参数u⊕w⊕v⊕y掩蔽从寄存器RG1接收的字。因此,电路XG12的输出中的字通过参数u⊕w掩蔽,并且通过参数v⊕y被进一步掩蔽。
在14轮,电路XG18通过掩码参数w掩蔽已经通过参数v⊕y掩蔽的电路RPM的输出中的字,并且该字被提供给电路XG12。此外,通过参数u⊕w⊕v⊕y掩蔽寄存器RG1中的字。因此,仅通过掩码参数u掩蔽由电路XG12提供的字。
在最后一轮(15)的开始,仅通过参数u掩蔽在电路XG12的输出中并由电路EXP处理的字。因此,由电路CC5执行的处理被保护,直到在14轮结束时由电路XG12执行的处理为止。通过参数E(u)掩蔽由电路EXP提供的字。在电路XG11的输出端处,通过参数E(u⊕w)掩蔽字,如同在其它轮那样。因此,由电路CC5执行的处理被再次保护。电路RPM的输出端处的字通过参数v⊕y掩蔽,并且被由电路XG18通过参数w进一步掩蔽。因为通过参数u⊕w⊕v⊕y掩蔽寄存器RG1中的字,所以仅通过参数u掩蔽由电路XG12提供的字。因此,在最后一轮的电路XG12的输出端处,由电路CC5执行的处理不再被保护。仅通过参数u掩蔽提供给电路EXP和多路复用器MX1的字。在由最终置换电路FPM处理之前,通过参数u的掩蔽被由电路XG21从由多路复用器MX1提供的字中去除,并且被由电路XG22从由电路XG12通过多路复用器MX3提供的字中去除。
图18表示根据一个实施例的布置在诸如塑料卡的便携式介质HD上,并且实现先前描述的保护方法之一的集成电路CT1。该集成电路包括与上面结合图1描述的集成电路CT相同的单元,并且与后者的不同之处在于:协处理器CP1被实现上述保护方法中的一个和/或另一个的协处理器CP2所替代。因此,根据一个实施例,协处理器CP2被配置为通过软件或硬件或其组合来实现图5、6、13、14和17的电路之一。
协处理器CP2还可以被配置为执行加密运算的一部分。在这种情况下,处理器PRC被配置为产生结果数据的输出表,其包括加密运算的结果,每个输出表如此以使得其中的所有数据具有相同的出现概率。
本文公开的方法还可以通过可由计算机系统执行的软件程序来实现。此外,实施方式可以包括分布式处理和并行处理,特别是用于并行处理输入数据集中的多个或所有数据和/或并行提供输出数据集中的多个或所有数据。
本文描述的例示旨在提供各种实施例的结构的一般理解。这些例示并非旨在用作利用其中描述的结构或方法的装置、处理器和系统的所有元件和特征的完整描述。通过组合所公开的实施例,在仔细研究本公开时,许多其它实施例对于所属技术领域的普通技术人员来说可以显而易见。可以从本公开中利用和导出其它实施例,以使得可以在不偏离本公开的范围的情况下进行结构和逻辑上的替换和改变。
此外,本公开和例示被视为示例性的而不是限制性的,并且所附权利要求书旨在覆盖落入说明书的真实精神和范围内的所有此类修改、增强和其它实施例。因此,以下权利要求的范围由权利要求及其等效物的最广泛的允许解释来确定,并且不受以上描述的限定或限制。
在此方面,经掩蔽替换表可以可选地由另一个处理单元计算一次,并且存储在电路CT1的只读存储器M3中。因此,用于生成掩码参数u、v、w、y、z、…的运算以及用于生成经掩蔽替换表SB1、SB2、SB3和经掩蔽轮密钥表KT1、KT2、KT2’和KT3的运算不一定在电路CT1中实现。在制造电路CT1时,初始化步骤S30到S32、S50到S52、S70到S72、S93到S95或S120到S122可以由可能另一个处理单元执行一次,并且将结果替换表SB1、SB2、SB3以及结果经掩蔽轮密钥表KT1、KT2、KT2'和KT3存储在非易失性存储器M3中。然后,可以通过电路执行步骤S32或S35、S52或S55、S72或S75、S95和S122,而不执行先前步骤S30和S31、S50和S51、S70和S72、S93和S94、或S120和S121。
引用的参考文献
[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年

Claims (14)

1.一种由电路执行用以使用输入数据作为索引在原始替换表中选择输出数据的替换运算的方法,其中所述替换运算被使用从所述原始替换表获得的新的经掩蔽替换表来执行,所述输入数据通过异或XOR运算被与第一掩码参数的新值相组合,并且所述输出数据通过XOR运算被与第二掩码参数的新值相组合,所述新的经掩蔽替换表从前一个经掩蔽替换表而获得,方式为:
选择第一和第二输入掩码;
通过将XOR运算应用于所述第一掩码参数的前一个值和应用于所述第一输入掩码来计算所述第一掩码参数的所述新值;
通过将XOR运算应用于所述第二掩码参数的前一个值和应用于所述第二输入掩码来计算所述第二掩码参数的所述新值;
选择从所述原始替换表获得的所述前一个经掩蔽替换表中的每个值;以及针对每个选定值:
通过将XOR运算应用于所述选定值和应用于所述第二输入掩码来计算经掩蔽值,
通过将XOR运算应用于所述第一掩码和应用于原始索引来计算经掩蔽索引,以及
将所述经掩蔽值存储在所述新的经掩蔽替换表中,所述选定值在所述原始索引处被选择并且所述经掩蔽值被存储在所述经掩蔽索引处,或者所述选定值在所述经掩蔽索引处被选择并且所述经掩蔽值被存储在所述原始索引处。
2.根据权利要求1所述的方法,其中生成所述新的经掩蔽替换表,方式为:
针对从1到n的每个秩选择输入掩码,n是大于0的整数,
针对从1到n-1的每个秩j,通过将XOR运算应用于秩j的掩码参数的前一个值以及应用于秩j和j+1的所述输入掩码来计算秩j的所述掩码参数的新值,以及
通过将XOR运算应用于秩n的掩码参数的前一个值和应用于秩n的所述输入掩码来计算秩n的所述掩码参数的新值,所述第一掩码参数的所述新值通过将XOR运算应用于所述第一掩码参数的所述前一个值、应用于秩1的所述输入掩码以及应用于第一输入掩码来计算,所述第二掩码参数的所述新值通过将XOR运算应用于所述第二掩码参数的所述前一个值、应用于秩1的所述输入掩码以及应用于所述第二输入掩码来计算,所述替换运算包括将XOR运算应用于经掩蔽输入数据和应用于秩1到n的每个所述掩码参数,与所述替换运算的所述输出数据相对应的经掩蔽输出数据通过XOR运算被与所述第二掩码参数相组合并且被与秩1到n的每个所述掩码参数相组合。
3.根据权利要求1所述的方法,其中生成所述新的经掩蔽替换表,方式为:
选择秩1到n的第一和第二输入掩码,n是大于0的整数;
针对从1到n-1的每个秩j,通过将XOR运算应用于秩j的第一掩码参数的前一个值以及应用于秩j和j+1的所述第一输入掩码来计算秩j的所述第一掩码参数的新值,以及通过将XOR运算应用于秩j的第二掩码参数的前一个值以及应用于秩j和j+1的所述第二输入掩码来计算秩j的所述第二掩码参数的新值;
通过将XOR运算应用于秩n的第一掩码参数的前一个值和应用于秩n的所述第一输入掩码来计算秩n的所述第一掩码参数的新值;
通过将XOR运算应用于秩n的第二掩码参数的前一个值和应用于秩n的所述第二输入掩码来计算秩n的所述第二掩码参数的新值;以及
所述第一掩码参数的所述新值通过将XOR运算应用于所述第一掩码参数的所述前一个值、应用于秩1的所述第一输入掩码以及应用于第一输入掩码来获得,所述第二掩码参数的所述新值通过将XOR运算应用于所述第二掩码参数的所述前一个值、应用于秩1的所述第二输入掩码以及应用于所述第二输入掩码来获得,所述替换运算包括将XOR运算应用于所述经掩蔽输入数据和应用于秩1到n的每个所述第一掩码参数,与所述替换运算的所述输出数据相对应的所述经掩蔽输出数据通过XOR运算被与所述第二掩码参数相组合并且被与秩1到n的每个所述第二掩码参数相组合。
4.根据权利要求1至3中的一项所述的方法,其中随机地选择所述输入掩码。
5.根据权利要求1至4中的一项所述的方法,其中以随机顺序计算所述经掩蔽替换表中的数据。
6.一种用于根据包括替换运算的密码算法对输入数据进行加密或解密的方法,其中所述替换运算根据权利要求1至5中的一项所述的方法被执行。
7.根据权利要求6所述的方法,其中所述密码算法符合高级加密标准AES,所述方法包括:
通过将XOR运算应用于所述输入数据和应用于所述第一掩码参数的所述新值来计算经掩蔽输入数据;
通过将XOR运算应用于所述经掩蔽输入数据和应用于第一轮密钥来计算第一经掩蔽轮输入数据;
执行多轮,每轮包括:
执行应用于先前计算的经掩蔽轮输入数据并使用所述新的经掩蔽替换表的替换运算,
通过将XOR运算应用于基于列的AES置换运算的输出数据、应用于对应轮密钥、以及应用于所述第一掩码参数和所述第二掩码参数的所述新值来计算经掩蔽轮输入数据;以及
执行最后一轮,包括:
通过使用所述新的经掩蔽替换表执行替换运算来计算替换输出数据,接收先前计算的经掩蔽轮输入数据作为输入,以及
通过将XOR运算应用于经掩蔽替换输出数据和应用于对应轮密钥来计算经掩蔽输出数据,由所述密码算法处理所述输入数据而产生的输出数据是通过将XOR运算应用于所述经掩蔽输出数据和应用于所述第二掩码参数的所述新值而获得的。
8.根据权利要求7所述的方法,其中所述轮密钥是经掩蔽轮密钥,所述方法包括:
选择第三输入掩码,以及
通过将XOR运算应用于第三掩码参数的前一个值和应用于所述第三输入掩码来计算所述第三掩码参数的新值,所述第一掩码参数的所述新值通过将XOR运算应用于所述第一掩码参数的前一个值以及应用于所述第三和第一输入掩码来计算,所述第二掩码参数的所述新值通过将XOR运算应用于所述第二掩码参数的前一个值以及应用于所述第三和第二输入掩码来计算,新的经掩蔽轮密钥均通过将XOR运算应用于所述第三掩码参数的所述新值和应用于前一个轮密钥来获得,所述新的经掩蔽替换表通过使用所述第一和第二掩码参数的所述新值来生成,
所述替换运算包括将XOR运算应用于所述经掩蔽输入数据和应用于所述第三掩码参数的所述新值,与所述替换运算的所述输出数据相对应的所述经掩蔽输出数据通过XOR运算被与所述第二掩码参数相组合并且被与所述第三掩码参数的所述新值相组合。
9.根据权利要求6所述的方法,其中所述密码算法符合数据加密标准DES,所述方法包括:
执行多轮,每轮包括:
通过将XOR运算应用于DES扩展运算的输出数据和应用于所述第一掩码参数的所述新值来计算经掩蔽轮数据;
使用新的经掩蔽替换表从所述经掩蔽轮数据执行替换运算,所述替换运算提供由所述第二掩码参数的所述新值所掩蔽的经掩蔽替换输出数据,以及
通过将XOR运算应用于所述经掩蔽替换输出数据和应用于所述第二参数的所述新值来计算未掩蔽替换输出数据。
10.根据权利要求9所述的方法,其中从所述前一个经掩蔽替换表生成所述新的经掩蔽替换表包括:
选择第三和第四输入掩码,以及
通过将XOR运算应用于第三掩码参数的前一个值和应用于所述第三输入掩码来计算所述第三掩码参数的新值,所述第一掩码参数的所述新值通过将XOR运算应用于所述第一掩码参数的前一个值以及应用于所述第三和第一输入掩码来计算,
通过将XOR运算应用于第四掩码参数的前一个值和应用于所述第四输入掩码来计算所述第四掩码参数的新值,所述第二掩码参数的所述新值通过将XOR运算应用于所述第二掩码参数的前一个值以及应用于所述第四和第二输入掩码来计算,
通过向所述第一输入掩码应用所述DES扩展运算来计算变换后的第一输入掩码;以及
通过将逆DES置换运算应用于所述第二输入掩码来计算变换后的第二输入掩码,所述新的经掩蔽替换表使用所述变换后的第一和第二输入掩码作为所述第一和第二输入掩码来生成,所述方法包括:使用通过将XOR运算应用于DES轮密钥以及应用于变换后的第三和第四输入掩码而获得的经掩蔽轮密钥,所述变换后的第三和第四输入掩码通过将所述DES扩展运算应用于第三和第四输入掩码而获得;以及使用第三和第四掩码参数的所述新值。
11.一种电路,其包括处理器并被配置为实现根据权利要求1至10中的一项所述的方法。
12.根据权利要求11所述的电路,包括协处理器。
13.一种设备,其包括布置在介质上的根据权利要求11或12所述的电路。
14.一种计算机程序产品,其可直接加载到计算机的内部存储器中并包括代码部分,当由计算机执行时,所述代码部分配置所述计算机以执行根据权利要求1至10中的一项所述的方法的步骤。
CN201710499603.4A 2016-06-28 2017-06-27 用于保护使用替换表的替换运算免受侧信道分析的方法 Pending CN107547190A (zh)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
EP16176717.3 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
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
EP16176719.9 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
EP16176719.9A EP3264397B1 (en) 2016-06-28 2016-06-28 A protection method and device 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
EP16176721.5 2016-06-28
EP16176716.5 2016-06-28

Publications (1)

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

Family

ID=60675622

Family Applications (5)

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

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201710499028.8A Pending CN107547193A (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 免受侧信道分析的保护方法和设备
CN201710499789.3A Pending CN107547194A (zh) 2016-06-28 2017-06-27 免受侧信道分析的保护方法和设备
CN201710499289.XA Pending CN107547189A (zh) 2016-06-28 2017-06-27 免受侧信道分析的保护方法和设备

Country Status (3)

Country Link
US (5) US10439796B2 (zh)
KR (5) KR20180002065A (zh)
CN (5) CN107547193A (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
CN107547193A (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
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 北京理工大学 一种基于能量分析的密码算法簇逆向工程分析方法
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
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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1267514A2 (en) * 2001-06-13 2002-12-18 Fujitsu Limited Encryption secured against Differential Power Analysis (DPA)
EP1833190A1 (en) * 2006-03-07 2007-09-12 Research In Motion Limited Table splitting for cryptographic processes
US20090074181A1 (en) * 2004-07-22 2009-03-19 Herve Pelletier Method and device for executing crytographic calculation
US20090086976A1 (en) * 2007-10-01 2009-04-02 Research In Motion Limited Substitution table masking for cryptographic processes
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
CN104967509A (zh) * 2015-05-05 2015-10-07 国家密码管理局商用密码检测中心 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法

Family Cites Families (57)

* 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
AU6381699A (en) * 1998-06-03 2000-01-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
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
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
US8102997B2 (en) * 2004-03-29 2012-01-24 Stmicroelectronics S.A. Processor for executing an AES-type algorithm
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
FR2875318A1 (fr) * 2004-09-15 2006-03-17 St Microelectronics Sa Protection d'un algorithme des
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
JP4823904B2 (ja) * 2005-03-31 2011-11-24 パナソニック株式会社 データ暗号化装置及びデータ暗号化方法
EP1724961B1 (en) * 2005-05-10 2007-09-26 Research In Motion Limited Key Masking for Cryptographic Processes using a Combination of Random Mask Values
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
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
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
CN103647638A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种抵抗侧信道攻击的des掩码方法
CN103647639A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种对称密码算法抵抗侧信道分析的方法
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
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
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
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
EP3220304B1 (en) 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis
FR3048086B1 (fr) 2016-02-22 2018-03-02 Eshard Procede de test de la resistance d'un circuit a une analyse par canaux auxiliaires
CN107547193A (zh) 2016-06-28 2018-01-05 埃沙尔公司 使替换运算免受侧信道分析的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1267514A2 (en) * 2001-06-13 2002-12-18 Fujitsu Limited Encryption secured against Differential Power Analysis (DPA)
US20090074181A1 (en) * 2004-07-22 2009-03-19 Herve Pelletier Method and device for executing crytographic calculation
EP1833190A1 (en) * 2006-03-07 2007-09-12 Research In Motion Limited Table splitting for cryptographic processes
US20090086976A1 (en) * 2007-10-01 2009-04-02 Research In Motion Limited Substitution table masking for cryptographic processes
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
CN104967509A (zh) * 2015-05-05 2015-10-07 国家密码管理局商用密码检测中心 一种轮输出为算术掩码的zuc序列密码算法掩码防护方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KAI SCHRAMM ET AL: "《TOPIC IN CRYPTOLOGY-CT-RSA 2006》", 31 December 2006 *

Also Published As

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

Similar Documents

Publication Publication Date Title
CN107547190A (zh) 用于保护使用替换表的替换运算免受侧信道分析的方法
CN104094553B (zh) 防侧信道攻击的加密方法和装置
CN105051677B (zh) 用共享随机比特进行掩码
Masoumi et al. Novel approach to protect advanced encryption standard algorithm implementation against differential electromagnetic and power analysis
KR100737171B1 (ko) 아리아에 대한 전력분석공격에 대응하는 저메모리형 마스킹방법
De Cnudde et al. More efficient private circuits II through threshold implementations
Cayrel et al. Secure implementation of the stern authentication and signature schemes for low-resource devices
Ueno et al. A systematic design of tamper-resistant galois-field arithmetic circuits based on threshold implementation with (d+ 1) input shares
EP3264396B1 (en) A method for protecting a substitution operation using a substitution table against a side-channel analysis
Golić DeKaRT: A new paradigm for key-dependent reversible circuits
CN107547191A (zh) 免受侧信道分析的保护方法和设备
Masoumi et al. Efficient implementation of power analysis attack resistant advanced encryption standard algorithm on side-channel attack standard evaluation board
Masoumi et al. A new and efficient approach to protect AES against differential power analysis
EP3264666B1 (en) A protection method and device against a side-channel analysis
DeTrano et al. Exploiting small leakages in masks to turn a second-order attack into a first-order attack
Zheng et al. Design and implementation of a DPA resistant AES coprocessor
Matsubayashi et al. Security evaluation of cryptographic modules against side-channel attack using a biased data set
Lu et al. SEED masking implementations against power analysis attacks
EP3264667B1 (en) A method for protecting a substitution operation against a side-channel analysis
EP3264397B1 (en) A protection method and device against a side-channel analysis
EP3264668B1 (en) A protection method and device against a side-channel analysis
Masoumi A Novel and Highly Efficient AES Implementation Robust against Differential Power Analysis
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
TONG et al. A Proposition to Enhance a Countermeasure Scheme Against Power Analysis Attack for AES
Piret et al. On the Security of the DeKaRT primitive

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

Application publication date: 20180105

WD01 Invention patent application deemed withdrawn after publication