CN109428707A - 测试电路对侧信道分析的抵抗的方法 - Google Patents

测试电路对侧信道分析的抵抗的方法 Download PDF

Info

Publication number
CN109428707A
CN109428707A CN201810938060.6A CN201810938060A CN109428707A CN 109428707 A CN109428707 A CN 109428707A CN 201810938060 A CN201810938060 A CN 201810938060A CN 109428707 A CN109428707 A CN 109428707A
Authority
CN
China
Prior art keywords
value
data
found
circuit
cumulative
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
CN201810938060.6A
Other languages
English (en)
Inventor
B·菲克斯
H·西博尔德德拉克鲁伊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Echal Co
EshardSAS
Original Assignee
Echal Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Echal Co filed Critical Echal Co
Publication of CN109428707A publication Critical patent/CN109428707A/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]
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31719Security aspects, e.g. preventing unauthorised access during test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及一种测试方法,包括:获取多个值集合(Ci),每个值集合包括物理量或逻辑信号的值,当执行应用于相同的秘密数据的不同加密运算时,该值集合与要测试的电路的活动相关联,对于每个值集合,对集合的值的发生次数进行计数,对于每个运算和秘密数据的部分的可能值中的每一个可能值,计算运算的部分结果,计算发生次数的总和,每个总和通过将与运算对应的发生次数相加而得到,该运算当应用于秘密数据的部分的相同可能值时,提供具有相同值的部分运算结果,并分析发生次数的总和以确定秘密数据的部分。

Description

测试电路对侧信道分析的抵抗的方法
技术领域
本发明涉及一种用于测试电路的方法,特别是设计用于处理秘密数据 的电路,并且特别涉及一种用于通过使用秘密密钥的加密算法来变换消息 的电路。
本发明特别涉及实现加密算法的设备,诸如安全设备(智能卡集成电 路、安全元件、安全存储卡)、移动设备(移动电话、智能电话、用于物 联网的设备-IoT)、家庭自动化和汽车设备,以及集成到计算机主板和其 它电子和IT设备(USB驱动器、电视解码器、游戏控制台等)等上的硬 件加密组件。本发明还涉及包括加密运算的软件,其被提供用于在安全或 非安全环境中执行。
本发明特别涉及实现诸如加密算法,如DES(数据加密标准)或三重 DES、AES(高级加密标准)、RSA(Rivest、Shamir和Adleman)、DSA (数字签名算法),或ECDSA(椭圆曲线数字签名算法)的密码算法的 电路。本发明还涉及实现诸如HMAC(密钥哈希消息认证码)的哈希函数 的电路。
背景技术
实现加密算法的微电路配备有中央处理单元(CPU)。一些配备有专 用于加密计算的电路,例如加密协处理器。这些微电路包括数千个逻辑门, 该逻辑门根据执行的运算而不同地切换。这些开关产生电流消耗的短暂变 化,例如可以测量的几纳秒。特别地,CMOS型集成电路包括仅在它们切 换时(即当逻辑节点变为1或0时)消耗电流的逻辑门。因此,电流消耗 取决于中央单元处理的数据及其各种外围设备:存储器、数据或地址总线 上流动的数据、加密协处理器等。
此外,特别是使用加密或混淆技术(例如“白盒密码术(Whitebos Cryptography)”技术)产生的某些软件程序可以以这种方式集成秘密数 据,使得通过逆向工程很难确定它。某些软件程序还可以通过安全通信信 道从外部接收秘密数据。微电路可能基于观察它们的侧信道(诸如它们的 电流消耗,或它们的磁或电磁辐射)或在执行加密算法时可以观察到的任 何其它信息而遭受所谓的侧信道分析攻击。这种攻击旨在发现它们使用的 秘密数据,特别是它们的加密密钥。
可以对软件程序执行类似的攻击以恢复秘密数据。不是从物理测量中 观察侧信道,基于模拟或仿真的软件工具允许在执行期间测量或收集程序 寄存器的所有内部状态、变量和内容。
频繁的侧信道攻击实施统计分析方法,诸如SPA(“单功率分析”)、 DPA(“差分功率分析”)、CPA(“相关功率分析”)或EMA(“电 磁分析”)。SPA分析(参考文献[1])通常只需要获取单个电流消耗曲线。 其目的是通过观察与加密计算对应的消耗轨迹的一部分来获得关于集成电 路的活动的信息,因为当前轨迹根据所执行的运算和所处理的数据而变化。
软件在它们由电路执行期间也可能经历这种侧信道攻击。
DPA(参考文献[2])和CPA分析使得能够通过获取大量数据或测量 轨迹并通过统计分析这些轨迹来找到所搜索的信息而找到加密算法的密钥。 它们基于以下前提:当寄存器中或总线上的位从0变为1时,CMOS型集 成电路的消耗会发生变化,而当位保持等于0,保持等于1或从1变为0 (MOS晶体管的杂散电容的放电)时,CMOS型集成电路的消耗不会变化。可替代地,可以认为CMOS型集成电路的消耗在位从0变为1或从1 变为0时变化,并且当位保持等于0或保持等于1时不变化。该第二假设 使得传统的“汉明(Hamming)距离”或“汉明权重”函数能够用于开发 消耗模型,该消耗模型不需要知道以便适用的集成电路的结构。DPA分析 涉及使用对许多消耗轨迹的统计处理来放大该消耗差异,旨在突出根据所 制定的假设区分的两个消耗轨迹族之间的测量差异。
CPA分析(参考文献[3])基于线性电流消耗模型,并且涉及计算首先 测量形成捕获的消耗轨迹的消耗点与其次从线性消耗模型和假设所计算的 估计消耗值之间的相关系数,该假设关于由微电路处理的要发现的变量并 关于加密密钥的值。
电磁分析(EMA)基于微电路可能以近场或远场电磁辐射的形式泄漏 信息的原理。假设晶体管在其状态改变时发射电磁信号,则可以通过诸如 SPA、DPA和CPA分析中的一个或另一个的分析将这些信号视为电流消 耗变化信号。Jean-Jacques Quisquater(参考文献[4])进行了该分析的应 用示例。
诸如“互信息分析”(MIA)(参考文献[6])的统计工具可用于在轨 迹和数据泄漏模型之间执行统计依赖性测试(也称为“区分器”)。
存在其它侧信道攻击,诸如参考文献[5]中所示的“模板攻击”。
参考文献[7]公开了一种结合侧信道技术和合理的强力努力的攻击。所 有上述攻击都基于所有分析的轨迹的时间对准。换句话说,在给定时间(例 如从由电路激活的命令的执行时起)执行的所有测量必须对应于由算法处 理的相同值。
为了保护它们针对这种侧信道攻击而执行的这种电路和/或密码算法, 通常提供对策。一种对策旨在避免这种时间对准。为此目的,该类型的对 策引入了提供给计算电路的时钟频率的变化,或者引入了虚设时钟周期或 虚设运算。
另一种类型的对策涉及调整要保护的算法以使电路处理的数据与其实 际值无关。某些该类型的对策-可以称为“掩蔽型对策”-使用随机掩码(二 进制数),该随机掩码与要保护的诸如在加密方法的执行期间的密钥和/ 或消息的另一种数据组合。该类型的对策是有效的,但需要修改算法,并 且因此需要在专用协处理器执行的情况下专门提供用于其实现的协处理器, 或者在微电路的中央处理单元或编程的协处理器执行的情况下需要更复杂 的程序。此外,该类型的对策容易受到所谓的“二阶攻击”的影响,该“二 阶攻击”基于对一组信号轨迹的分析,每个信号轨迹通过组合相应轨迹的 两个部分而获得。作为示例,这些信号迹线中的每一个组合了被认为保持 与由发现的数据值和随机掩码值的组合产生的数据相关的泄漏的信号部分, 以及被认为保持随机掩码值的泄漏的信号部分。参考文献[7]公开了组合时 间信号部分以获得与要发现的数据值相关的信号轨迹的不同方式。但是, 这种二阶攻击由于要求组合信号部分在组合之前需要在时间上严格对准而 面临困难。如果不满足该要求,则组合信号轨迹可能包含有用信息,但传 统统计分析无法提取该信息。因此,二阶攻击对于基于各种时间未对准的 对策非常敏感,诸如导致将电路调步的时钟周期的持续时间随机变化的那 些时间未对准,或者在随机选择的时间引入虚设处理周期或运算的那些时 间未对准。在优化的处理器中,诸如嵌入在移动电话、数字平板计算机、 IoT设备或膝上型计算机和SOC(片上系统)中的处理器,物理测量非常 嘈杂,并且可以同时进行多个CPU运算。
有时可以借助于特定的专业知识和许多尝试来恢复该时间对准,特别 是使用大量的轨迹来重新对准或应用一些信号处理。尽管如上所述,仍然 存在无法恢复该时间对准的情况,使得即使在轨迹中存在秘密数据泄漏, 侧信道测试也会失败。
通过多次执行的对策可以用不包括任何对策部件的传统协处理器来实 现。它仅涉及借助于假密钥或假消息多次执行加密方法。为此目的,可以 提供例如控制加密程序或协处理器的对策程序,并使其以随机顺序用假密 钥或假消息多次执行加密方法,使得用正确的密钥(即真实密钥)的加密 方法的执行在一组虚设执行中被“隐藏”。通过多次执行的该对策提供的 优点是,它可以用不包括任何特定对策部件的传统协处理器来实现。
为了检查要销售的安全集成电路提供的安全级别,在电路上市之前计 划鉴定和/或认证测试,其中这些测试特别可以包括集成电路对侧信道分析 的稳健性的测试,旨在发现集成电路处理的秘密数据。还有一些测试使得 可以评估软件程序对侧信道攻击的抵抗力。存在类似的方法来评估和认证 受白盒密码技术保护的安全软件程序。
鉴于上述当前方法的缺点,可能希望具有用于测试电路或软件程序对 侧信道分析的抵抗的方法,该方法特别可以检测秘密数据泄漏而不需要电 流消耗轨迹或代表电路活动的任何其它物理或逻辑量的任何先前的时间对 准处理。还希望该方法能够独立于执行电路来测试软件程序或应用程序的 稳健性。
还可能希望将这种测试方法集成到工业鉴定和/或认证过程中,旨在检 查由给定电路执行的电路或软件对侧信道分析的稳健性,及其在信息泄漏 方面的紧密性。
发明内容
一些实施例涉及一种测试方法,包括:获取多个值集合,每个值集合 包括物理量或逻辑信号的值,当电路执行应用于要发现的相同数据的不同 加密运算的运算集合的运算时,该值集合与要测试的电路的活动相联系; 对于每个值集合,由处理单元对由应用于值集合的值的第一满射函数变换 的值的发生次数进行计数,以形成对于值集合的发生次数集合;对于运算 集合的每个运算,以及要发现的数据的部分的可能值中的每一个可能值, 由处理单元计算至少两个不同的部分运算的结果;由处理单元对于每个部 分运算的结果的累积发生次数集合进行计算,该每个累积发生次数集合是 通过将与运算集合的运算对应的发生次数集合加在一起获得的,当应用于 要发现的数据的部分的可能值的相同值或等效值时,该运算集合提供具有 由应用第二满射函数产生的相同变换值的部分运算结果;将与每个部分运 算结果对应的累积发生次数集合组合在一起以获得组合累积发生次数集合, 该累积发生次数集合的组合作为与部分运算结果对应的部分运算的函数执行;以及由处理单元分析组合的累积发生次数集合以确定要发现的数据的 部分,知道如果要发现的数据已泄漏到值集合中,则在与要发现的数据的 部分的值对应的累积发生次数集合中找到要发现的数据的部分。
根据一个实施例,该方法包括选择每个值集合中的值,对所选择的值 执行发生次数的计数。
根据一个实施例,该方法包括:向电路发送多个不同的命令,每个命 令触发由电路执行应用于要发现的数据的运算集合的运算中的一个运算, 以及在由电路执行运算集合的一个运算期间,通过测量设备收集值集合中 的一个值集合的值。
根据实施例,值集合包括:电路的电流消耗的测量值,和/或由电路发 射的电磁辐射的测量值,和/或电路周围存在的磁场吸收的测量值,和/或 电路中收集的逻辑信号或数字值。
根据实施例,第一和第二满射函数中的每一个是以下函数之一:恒等 函数(identity function);提供结果值的函数,该结果值然后减小到与汉 明权重对应的值;提供应用到函数的值的汉明权重的函数;或提供应用到 函数的值和先前值之间的汉明距离的函数。
根据实施例,该方法包括如果分析步骤确定要发现的数据的一部分, 则拒绝电路或由电路执行的程序。
根据实施例,对于要发现的数据的先前确定部分和要发现的数据的另 一部分执行如下步骤:计算要发现的数据的一部分的可能值中的每一个可 能值的运算结果,计算累积发生次数集合,组合累积发生次数集合,以及 分析组合累积发生次数集合。
根据实施例,每个值集合中的所选择的值包括:值集合的连续值,和/ 或值集合的非连续值,和/或值集合的局部极值,和/或值集合的所有值。
根据实施例,运算集合的运算包括将单个运算应用于要发现的数据和 应用于一组输入数据的输入数据。
根据实施例,部分运算包括以下运算之一的至少一部分:对称或非对 称加密或解密运算;签名运算;认证运算;与要发现的数据的模块化或非 模块化乘法;与要发现的数据的逻辑异或(OR)运算;模幂运算,要发现 的数据用作指数;通过椭圆曲线上的点对秘密数据的标量乘法运算;模简 化(modular reduction)运算,要发现的数据用作模数;在使用输入值的 替换表中选择的值的替换运算;应用于要发现的数据的算术运算,在AES 或DES轮内执行的部分运算;以及将逻辑异或(OR)运算与要发现的数 据组合的运算,和在使用逻辑运算的结果的替换表中选择的值替换逻辑运 算的结果的替换运算。
根据实施例,组合累积发生次数集合(CH)的分析包括:对于每个组 合累积发生次数集合,通过将组合累积发生次数除以在组合累积发生次数 集合中累积的发生次数的相应总次数来计算归一化累积发生次数,对于要 发现的数据的部分的每个可能值和所变换的部分结果的每个值,计算与要 发现的数据的部分的可能值对应的每个归一化累积发生次数与所变换的部 分结果的值之间的平方差的总和,以及累积发生次数的平均值,对于要发 现的数据的部分的每个可能值,计算与所变换的部分结果的值对应的差值 总和的累积总数,以及将差值总和的累积总数相互比较,并检测要发现的 数据的部分的可能值的差值总和的累积总数之一是否大于差值总和的其它 累积总数。
根据实施例,组合累积发生次数集合的分析包括:对于要发现的数据 的部分的每个可能值和所变换的部分结果的每个值,计算累积发生次数的 累积总数,对于组合累积发生次数集合中的每个发生次数,通过将组合累 积发生次数除以相应的累积总数来计算归一化累积总数,并计算归一化累 积总数乘以归一化累积总数的对数的乘积,对于要发现的数据的部分的每 个可能值和所变换的部分结果的每个值,计算与要发现的数据的部分的可 能值和所变换的部分结果的值对应的乘积的总和,对于要发现的数据的部 分的每个可能值,计算与所变换的部分结果的值对应的乘积总和的累积总 数,每个乘积总和乘以与要发现的数据的部分的可能值和所变换的部分结 果的值对应的累积总数的平均值,以及将乘积总和的累积总数相互比较, 并检测要发现的数据的部分的可能值的乘积总和的累积总数之一是否大于 乘积总和的其它累积总数。
实施例还可以涉及一种用于测试电路的系统,该系统包括:测量设备, 其被配置为获取多个值集合,每个值集合包括物理量或逻辑信号的值,在 电路执行应用于要发现的相同数据的不同加密运算的运算集合的运算期间, 值集合与要测试的电路的活动相联系;以及处理单元,其被配置为实现先 前定义的方法。
根据实施例,该系统包括耦合到测量设备的测量探针,用于获取与电 路的活动相关联的轨迹。
实施例还可以涉及可加载到计算机的内部存储器中并且包括代码部分 的计算机程序产品,当由计算机执行时,该代码部分配置计算机以执行如 先前定义的方法的步骤。
附图说明
在此提供的实施例的示例仅用于说明目的,并且在下面结合但不限于 附图进行描述,在附图中:
图1示意性地示出安全电路的传统架构,
图2示意性地示出集成电路测试系统的示例,
图3示出在由安全电路执行加密运算期间获取的信号的轨迹的示例,
图4A、4B、4C示出根据一个实施例的用于测试安全电路的方法,
图5以曲线图形式说明了满射函数的示例,
图6示意性地示出根据一个实施例构建的表,以执行统计处理,
图7和图8示出根据各种实施例的用于统计分析通过测试方法获得的 值集合的方法,
图9和图10以曲线的形式示出由图7和图8的分析方法提供的结果表。
具体实施方式
图1示出安全集成电路CT的示例,例如布置在诸如塑料卡或任何其 它介质的便携式介质HD上,或者在诸如移动终端、智能电话、膝上型计 算机、IoT设备等的终端中。该示例的集成电路包括微处理器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可以被配置为借助于加密函数执行加 密、解密、认证(HMAC)或发送给它的消息的签名的运算。该加密函数 可以由电路CT的处理器PRC执行,或者由处理器PRC到协处理器CP1 部分地或全部执行。
图2示出根据一个实施例的用于实现测试方法的集成电路测试系统的 示例。作为示例,将假设测试系统被配置为测试图1中的集成电路CT。
图2的测试系统包括:耦合到诸如数字示波器的测量设备MD的测量 探针PB,以获取与电路的活动有关的轨迹,诸如电流消耗或电磁信号变 化的轨迹;以及计算设备,诸如个人计算机PC。计算机PC耦合到测量设 备并实现测试程序。该测试程序特别包括通信接口和用于与集成电路通信 并用于向其发送消息的程序、信号处理程序以及用于实现计算方法(诸如 下面描述的方法之一)的程序。如在此使用的步骤可以指运算、功能、过 程等。在集成电路是非接触电路的情况下,通信接口可以包括非接触读卡 器。
探针PB可以是电流探针(例如放置在集成电路的供电端子Vcc上的 电阻器),或者是通过信号放大器AMP耦合到测量设备的电磁探针。可 替代地,电流探针可以与电磁探针组合。对电磁辐射的研究确实表明,由 运算中的电路发射的电磁场给出了关于集成电路中的位开关的信息,就像 消耗电流的测量一样。电磁探针的优点在于它可以放置在需要分析其运算 的电路部分(例如靠近微处理器PRC或加密计算协处理器CP1的核心) 附近。
此外,在非接触集成电路的情况下,探针可以用电感探针替换,该电 感探针测量集成电路对读取器发射的磁场的吸收。例如天线线圈的这种电 感探头本身可以与放置在要研究的电路区域附近的电磁场探针组合。
因此,在本申请中,用于简化语言的短语“电流消耗”可以指任何可 测量的物理量,其随时间的变化代表集成电路内部或集成电路的研究部分 内部的二进制数据的开关,物理量能够在集成电路的端子处或在集成电路 的研究部分附近被测量。此外,以足够高的采样频率对物理量进行采样, 以对每个关注的数据周期收集若干点,实际上,这可能导致每条轨迹包含 10到几十万个点的轨迹,但可以考虑收集高达每条轨迹数百万的值或甚至更多。
本申请还涉及用于测试由白盒密码术保护的软件程序或应用程序的方 法。在该情况下,要测试的软件程序可以由测试系统直接执行,或者由测 试系统执行的仿真程序执行。因此,所分析的轨迹可以例如是在访问存储 器时传输到存储器的一系列值或者在电路的寄存器中处理的数据,或者甚 至可以是传输到电路的通信接口的数据,其中这些传输可以由测试的软件 程序控制。
测试方法的一些实施例可以基于对信号或数字值随时间的变化轨迹的 详细回顾,该信号或数字值代表要测试的电路在执行应用于要发现的数据 (下面称为“秘密数据”)的运算时的运算。
图3示出可以由测试系统获取的轨迹C0,C1,......Cix随时间的值的 示例。可以通过使要测试的电路或软件程序执行运算来获得这些轨迹中的 每一个。与轨迹C0,C1,...Cix对应的运算通常都是不同的。这些运算是 不同的,例如因为它们接收不同的已知输入数据,例如要加密、解密或签 名的消息或要检查的签名,或者要计算的HMAC(密钥哈希消息认证码)。 可替代地,已知数据可以是运算的输出数据,或该运算的输入或输出数据 的一部分,而不是其输入数据。
该运算可以是应用于相同秘密数据SD和输入数据M的任何运算,诸 如对称或非对称加密或解密运算,或签名运算,或仅仅是与秘密数据的模 块化或非模块化相乘(M×SD),与秘密数据的逻辑XOR运算(异或)(M XOR SD),模幂运算,秘密数据用作指数(MSD mod n,n已知),或模 简化运算,秘密数据被用作模数(M mod SD),诸如在非对称加密或解 密运算中。运算的另一个示例涉及用替换表(SBOX[M XOR SD],SBOX 是替换表)处理XOR运算的结果,如在DES和AES加密算法的情况下 那样。该运算也可以是秘密整数SD与椭圆曲线上的点P的标量乘法运算 [SD].P。更一般地,该运算必须使得能够基于秘密数据的一部分和输入数 据来计算由运算产生的值的一部分。
在图3的示例中,轨迹C0,C1,Ci,Cix分别对应于输入(或输出) 数据M[0],M[1],...M[i],...M[ix]。轨迹Ci中的每一个轨迹可以由从在 测试下的相同电路上测量的相同信号获取的样本形成,或者可以包括当测 试下的电路操纵数据M[i]时捕获的来自不同信号的样本。
图4A示出在执行一组加密运算期间处理由测试系统收集的值的步骤 S1至S14,该一组加密运算例如是假定为已知、应用于要发现的秘密数据 以及可能应用于同样已知的一组输入数据M[0]......M[ix]的加密或解密 (或签名或HMAC认证)运算OPR。根据一个实施例,该测试的目的例 如是确定秘密数据的一部分的值是否泄漏到(例如,可以从中确定)形成 图3的轨迹的收集值中。
处理单元PC首先执行步骤S1至S9。在步骤S1中,测试系统的处理 单元PC将输入数据M[0]...M[ix]上的循环的索引i设置为0。在步骤S1 中,还初始化表HT。在步骤S2中,处理单元PC通过要测试的电路MCT 或软件程序激活运算OPRK的执行,该运算接收例如数据M[i],秘密数 据被提供给电路MCT或软件程序的运算。在步骤S3中,处理单元PC收 集构成轨迹Ci的值。在步骤S4中,将索引k设置为0。索引k指定运算 OPR的一组所选的部分或中间结果或部分运算中的部分结果或部分运算, 可从其中确定秘密数据的一部分。在步骤S5处,为运算OPR的部分结果 k选择轨迹Ci的值的部分ECki,仅在以下处理步骤中处理该部分(图3)。 在图4A的示例中,为了简单起见,部分ECki由与索引jk和jkx对应的 轨迹Ci的值界定。实际上,索引jk和jkx可以从一个轨迹Ci变化到下一 个轨迹。另外,在每个轨迹中因此选择的值不一定是连续的,并且与先前 的侧信道分析相比,每个部分ECki中的值的数量可以从一个轨迹Ci到下 一个轨迹不同。因此,例如,可以决定从每个轨迹中仅提取最大或最小局部值。还应注意,提取的部分ECki可以是整个轨迹Ci。在下面的处理中, 假设因此提取的数据包含关于运算OPR的部分结果的一条信息,该信息 是使用正在搜索的秘密数据的一部分计算的。
部分结果可以是AES或DES轮的结果的处理器字,AES或DES的一 个或一部分运算的结果的处理器字,诸如AddRoundKey、SubBytes、 MixColumns。例如,MixColumns运算计算并操纵可视为部分结果的处理 器字X、2·X和3·X。在非对称密码术中,当执行长整数乘法(在几个处理 器字上)或长整数模运算(加法、减法、乘法或取幂)时计算的处理器字 可被视为部分结果。
在步骤S6中,处理单元PC将循环索引j设置为0。在步骤S7中, 处理单元PC将满射函数F1k应用于所选轨迹部分ECki的索引j的值 ECki[j]并将由索引k和i以及等于由函数F1k提供的结果的索引指定的三 维表HT中的值递增一(1)。在步骤S8中,索引j递增一(1)。在步骤 S9中,将索引j与其最大值进行比较,以确定是否已经处理了集合ECki 的所有值。一旦已经处理了集合ECki的所有值,处理单元PC就执行步 骤S10和S11,否则它再次执行步骤S7至S9。以该方式,在表HT[k,i] 中加载的集合ECki的值具有直方图的形式,该直方图指定由函数F1k返 回的每个可能值的发生次数,使得与集合ECki的值相关的时间特征不包括在表HT[k,i]中:表HT[k,i]的内容不允许确定已收集的集合的值的顺 序。图5示出使用函数F1k计算的值(在x轴中)的曲线图发生次数(在 y轴中)的形式的表HT[k,i]的示例。在图5的示例中,函数F1k返回从 8位编码值计算的汉明权重。
在步骤S10中,处理单元PC将索引k递增一(1)。在步骤S11中, 将索引k与其最大值kx进行比较,以确定是否已对于一个轨迹Ci处理了 所有集合ECki。一旦处理了所有集合ECki,处理单元PC就执行步骤S12 和S13,否则它再次执行步骤S5至S11。在步骤S10中,处理单元PC将 索引k递增一(1)。在步骤S12中,将索引i与其最大值ix进行比较, 以确定是否已经处理了所有轨迹Ci。一旦处理了所有轨迹Ci,处理单元 PC就执行步骤S14,否则它再次执行步骤S2至S13。在步骤S14中,将 表HT提供给图4B中所示的以下步骤。
图4B示出处理表HT的步骤S20至S35。处理单元PC首先执行步骤 S20至S28。在步骤S20中,处理单元PC将索引k设置为0。在步骤S20 中,还初始化表CHK和MHT。在步骤S21中,处理单元PC将索引i设 置为0。在步骤S22中,处理单元PC将索引g设置为0。在步骤S23中, 处理单元PC计算与对于轨迹Ci以及确定为在此假设等于索引g的秘密数 据SD的一部分所执行的运算对应的部分结果。在步骤S23的示例中,通 过将运算OPk应用于数据M[i]以及应用于设置为等于索引g的秘密数据 SD的一部分来计算运算OPR的部分结果。运算OPk(M[i],g)可以提供在 步骤S2中执行的运算OPR(M[i])(=OPR(M[i],SD))的结果的一部分。由运 算OPk提供的结果由提供值VL的满射函数F2k处理。在步骤S24中, 处理单元PC将索引l设置为0。在步骤S25中,处理单元PC将在由索引 k、TGk(g)、TVk(VL)和l指定的位置处在4维表CHK中存储的值递增了 与数据M[i]对应的表HT中的索引k、i和l处的值HT[k,i,l]。TGk(g)和TVk(VL)是取决于部分运算k的变换,使得索引g和VL在所选的部分运 算的所有部分运算之间是可比较的。
图6示出了表CHK的示例,在该表中由索引g和VL指定的每个位 置CHK[g,VL]包含通过组合根据值TGk(g)和TVk(VL)的若干表HT而获 得的表,VL在步骤S23中获得。在步骤S26中,由索引k、TGk(g)和TVk(VL) 指定的表MHT中的元素MHT[k,TGk(g),TVk(VL)]递增了表HT中的索引 k、i和l处的值HT[k,i,l]。在步骤S27中,索引l递增一(1)。
在步骤S28中,考虑由步骤S7中使用的函数F1k提供的可能的不同 值的数量,将索引l与其最大值lkx进行比较。如果索引l小于或等于其最 大值lkx,则再次执行步骤S25至S28,否则(当索引l大于其最大值lkx 时),执行步骤S29和S30。
在步骤S29中,处理单元PC将索引g递增一(1)。在步骤S30中, 考虑到秘密数据的所考虑部分的可能的不同值的数量,处理单元PC取决 于部分运算k将索引g与其最大值gkx进行比较。如果索引g小于或等于 最大值gkx,则执行从步骤S23至步骤S30的新迭代,否则(当索引g大 于其最大值gkx时),执行步骤S31和S32。在步骤S31中,处理单元PC 将索引i递增一(1)以处理另一个表HT[k,i]。在步骤S32中,处理单元 PC将索引i和与所生成的轨迹Ci的数量对应的索引i的最大值ix进行比 较。如果索引i小于或等于最大值ix,则再次执行步骤S22至S32,否则 (当索引i大于其最大值ix时),执行步骤S33和S34。在步骤S33中, 处理单元PC将索引k递增一(1)以处理另一部分运算k。在步骤S34中, 处理单元PC将索引k和与运算OPR的所选部分运算的数量对应的索引k 的最大值kx进行比较。如果索引k小于或等于最大值kx,则再次执行步 骤S21至S34,否则(当索引k大于其最大值kx时),执行步骤S35。在步骤S35中,将表CHK提供给图4C中所示的以下步骤。在步骤S35中, 在位置[k,TGk(g),TVk(VL)]处的表CHK中包含的每个累积总数表包含以 下值:
在上述总和中要考虑的数据M[i]使得F2k(OPk(M[i],g))=VL。
图4C示出处理表CHK的步骤S40至S50。处理单元PC首先执行步 骤S40至S46。在步骤S40中,处理单元PC将索引g设置为0并初始化 表CH。在步骤S41中,处理单元PC将索引VL设置为0。在步骤S42中, 处理单元PC将索引l设置为0。在步骤S43中,对于索引k的每个值(在 0和kx之间),处理单元PC计算表CHK中的索引k、g、VL和l处的 值CHK[k,g,VL,l]除以表MHT中的索引k、g和VL处的表MHT中的值 MHT[k,g,VL]的比率CHK[k,g,VL,l]/MHT[k,g,VL]。表示与相应部分结果 或运算k对应的概率密度的计算比率CHK[k,g,VL,l]/MHT[k,g,VL]由函数 GF组合在一起并在3维表CH中存储在由索引g、VL和l指定的位置。 函数GF可以取决于部分运算k使计算出的比率中的每一个进行变换,使 得函数GF可以组合可比较数据。在最简单的情况下,变换GF是计算出 的比率的简单相加。
在步骤S44中,索引l递增一(1)。在步骤S45中,考虑到由函数 F1k取决于所有部分运算k提供的可能的不同值的数量,将索引l与其最 大值lx进行比较。如果索引l小于或等于其最大值lx,则再次执行步骤S43 至S45,否则(当索引l大于其最大值lx时),执行步骤S46和S47。在 步骤S46中,索引VL递增一(1)。在步骤S47中,考虑由函数F2k和 TVk取决于部分运算k提供的可能的不同值的数量,将索引VL与其最大 值VLx进行比较。如果索引VL小于或等于其最大值VLx,则再次执行步 骤S42至S47,否则(当索引VL大于其最大值VLx时),执行步骤S48 和S49。在步骤S48中,索引g递增一(1)。在步骤S49中,考虑由变换 TGk取决于部分运算k提供的可能的不同值的数量,将索引g与其最大值 gx进行比较。如果索引g小于或等于其最大值gx,则再次执行步骤S41 至S49,否则(当索引g大于其最大值gx时),执行步骤S50。
在步骤S50中,处理单元PC对表CH执行统计分析,以确定索引g 的值是否对应于所搜索的秘密数据的部分。为此目的,认为由秘密数据泄 漏产生的信息已经累积在表CH的行g的位置中,而独立于秘密数据的信 息在表CH中随机或均匀地分布。结果,如果表CH的索引g的行包含比 该表的其余部分更高的值,则表CH的该行处的索引g的值对应于所搜索 的秘密数据SD的部分的值。在该情况下,可以认为秘密数据SD已泄漏 到形成轨迹Ci的收集数据中。
函数F1k和F2k可以针对每个部分运算或运算结果k而变化,并且可 以被选择以便对应于当执行部分运算时要测试的电路或软件程序的泄漏模 式。因此,函数F1k和F2k可以彼此相同或不同,并且可以被选择以最大 化(增加等)发现由电路操纵的秘密数据的概率。例如,函数F1k和F2k 中的每一个可以是以下函数之一:
-恒等函数,
-函数(例如,以形式F(x)=a·x+b),其结果值可以减少到与汉明 权重对应的值,例如当x在8位上编码时在值0和8之间,
-计算在函数输入处提供的值(例如二进制编码值为1的位数)的汉 明权重的函数,或者
-用另一个值计算汉明距离的函数,例如这两个值中为1的位数之间 的差。
注意,函数F1k和F2k的选择可能影响要被执行以确定所考虑的秘密 数据的部分的表CH的统计处理的复杂性,以及确定搜索到的秘密数据部 分的值的统计处理的成功性二者。
通过执行图4A、4B、4C的步骤搜索的秘密数据的部分可以例如在8 位或16位上定义。在8位的情况下,索引g被连续地分配给0至255之间 的所有值(或1和256=28)。应注意,测试g值的顺序对于测试结果并不 重要。所搜索的秘密数据的部分也可以在较宽的字上(诸如在16位、32 位或64位上)或在较小的字上(诸如4位或6位上)定义。
秘密数据SD的另一部分可以通过使用秘密数据的先前确定部分的值 执行图4A、4B、4C的步骤,以及通过强制秘密数据的另一部分到索引g 的不同可能值来确定。为此目的,可以在步骤S5中提取轨迹Ci的相同部 分ECki或这些轨迹的其它部分。
注意,在执行图4A中的其它步骤之前,可能已经收集了形成轨迹Ci 的值集合(步骤S2和S3)。
应用于秘密数据SD和输入数据M[i]的运算OPR可以是以下运算中 的一个或组合:
-对称或非对称加密或解密运算,秘密数据SD是加密或解密密钥,
-涉及椭圆曲线的加密运算,
-诸如消息认证码计算(即HMAC)的认证运算,以及
-使用秘密数据SD的签名运算或签名验证。
部分运算k可以是以下运算中的一个或组合:
-与秘密数据的模块化或非模块化相乘(M[i]x SD),
-与秘密数据的一部分和输入数据的一部分的XOR逻辑运算(异或 OR)(M[i]XORSD),
-模幂运算的部分运算,秘密数据SD用作指数(M[i]SD mod n,n是 已知的),
-模简化运算的部分运算,
-使用输入数据的一部分在替换表中选择的值的替换运算(SBOX [M[i]],SBOX是替换表),以及
-将应用于秘密数据的一部分的XOR逻辑运算与替换运算相组合的 运算,该替换运算使用在使用XOR运算(SBOX[M[i]XOR SD])的结果 的替换表中选择的值替换逻辑运算结果,
-处理AES或DES轮中处理器字的运算,诸如AddRoundKey、 SubBytes、MixColumns,
-组合应用于秘密数据的一部分的算术运算(加法、减法运算)的运 算。
更一般地,该运算必须使得能够仅基于秘密数据的一部分和输入数据 来计算运算的最终值的一部分。
例如,AES算法的MixColumns运算操纵处理器字X、2·X和3·X, 其中X=SBOX(M[i]XOR g),并且g是秘密数据SD的一个字节。在步骤 S43处组合的部分结果可以在步骤S23处通过执行运算VL=SBOX(M[i] XOR g(k=0),2·VL(k=1)和3·VL=2·VL XOR VL(k=2)来计算。
根据另一示例,通常在执行算法期间值X泄漏,并且相同的值以另一 种方式泄漏,例如像X XOR 0xFF。可以通过组合表CHK的值来聚合概 率密度函数,如下:
对于每个VL=0..8和g=0..256,
CH(VL,g)=CHK(k=0,VL,g)+CHK(k=1,8-VL,g)。
根据针对DES算法的另一示例,沿着一轮执行来操纵不同的中间值。 通过执行运算X=SBOX(g XOR EP(R0[i])),可以在步骤S23处针对索引 k计算在步骤S43组合的部分结果,其中EP是DES扩展排列,并且R0[i] 是输入字M[i]的64位的左边32位部分。当索引k=0时,VL=SBOX(g XOR EP(R0)[i])是与第一轮密钥的6位g相关的4位字。当k=1时,VL= EP(R1[i])是第二轮开始时的XOR运算的输入,该第二轮估计与第一轮密 钥的相同的6位g相关的6位字。在该示例中,函数F1k、F2k和TVk可 以是给出二进制值的汉明权重的函数。函数TGk和GF可以定义为将6位 字的汉明权重变换为4位字的汉明权重,使得(对于索引g和l的每个值):
CH(VL=0)=CHK(k=0,VL=0)+CHK(k=1,VL=0), (3)
CH(VL=1)=CHK(k=0,VL=1)+CHK(k=1,VL=1), (4)
CH(VL=2)=CHK(k=0,VL=2)+CHK(k=1,VL=2)
+CHK(k=1,VL=3)+CHK(k=1,VL=4), (5)
CH(VL=3)=CHK(k=0,VL=3)+CHK(k=1,VL=5), (6)
CH(VL=4)=CHK(k=0,VL=4)+CHK(k=1,VL=6)。 (7)
根据等式(2),上面的表CHK的每个值可以除以表MHT的对应值。
另一个示例涉及使用长整数乘法的非对称加密算法,即在多于一个的 处理器字上编码的长二进制字的乘法。通常,长整数乘法算法将要相乘的 长二进制字除以在一起相乘的处理器字。将b+1个二进制字的长整数字X [0..b]乘以b+1个二进制字的另一个长整数字Y[0..b]的算法示例如下所示:
算法1
对于bx=0至2b+1,W[bx]=0
对于bx=0至b,循环执行:
C=0
对于by=0至b,循环执行:
UV=W[bx+by]+X[bx]·Y[by]+C
W[bx+by]=V
C=U
结束循环
W[bx+b]=C
结束循环
返回W
其中W[bx]、X[bx]、Y[by]、U和V表示处理器二进制字或相同大 小的较小二进制字。
在步骤S43处组合的部分结果可以在步骤S23处通过计算字X[bx]、 Y[bx]、W[bx]、UV和/或C以及对于以下bx的值中的一个或多个,来计 算索引k的值,该bx的值对于X和Y从0到b,并且对于W,从0到2b+1。 在该示例中,函数F1k、F2k、TVk和TGk可以是恒等函数,并且在步骤 S43处使用的函数GF可以根据等式(2)对于索引k的每个值,执行每个 值CHK[k,g,VL,l]的总和或每个值CHK[k,g,VL,l]除以MHT[k,g,VL]的总 和。
非对称加密算法可以使用应用于在多于一个的处理器字上编码的长二 进制字的模幂运算。b+1个二进制字的长整数字X[0..b]与另一个长整数 (d+1)位字D[0..d]与对n+1个二进制字的模数N[0..n]取模的模幂运算 算法的示例如下所示:
算法2
A=1
对于dx=d至0,循环执行
A=(A·A)mod N
如果D[dx]=1则A=(A·X)mod N
结束循环
返回A
其中X[bx]和N[bn]表示处理器二进制字或相同大小的较小二进制字 (bx=0,...b和bn=0,...n),A·A和A·X是例如根据算法1执行的长模 数整数乘法,并且D[dx]表示指数D的一个位。
在步骤S43处组合的部分结果可以在步骤S23处通过对于从0至b的 bx的一个或多个值以及对于指数位D[dx]的一部分的若干假设值或所有可 能值计算字X[bx]和A[bx]来计算索引k的值,其中X[bx]、A[bx]是处理 器字或相同大小的较小的字。在该示例中,函数F1k、F2k、TVk和TGk 可以是恒等函数,并且在步骤S43处使用的函数GF可以根据等式(2)对于索引k的每个值,执行每个值CHK[k,g,VL,l]的总和或每个值 CHK[k,g,VL,l]除以MHT[k,g,VL]的总和。
对于基于椭圆曲线的加密算法,模幂运算由模数算术运算执行的椭圆 曲线上的点的标量乘法代替。由这些模数算法运算提供的所有部分结果可 用于在步骤S23处计算部分结果。
应用于表CH的统计分析可以认为该表包含概率密度的分布,并且测 量该分布与从所搜索的秘密数据部分的值的假设计算的参考分布之间的依 赖性。为了测量两个分布之间的依赖性,统计分析可以实现统计测试,诸 如CHI平方测试和互信息测试。
图7示出表CH的统计处理的示例的步骤S60至S85,以尝试确定所 搜索的秘密数据SD的部分的值。连续执行步骤S60至S66。在步骤S60 中,将索引g设置为0并且将表TT的所有位置设置为1。在步骤S61中, 将索引VL、变量MXY和表SHT的所有位置设置为0。在步骤S62中, 将索引1设置为0。在步骤S63和S64中,表SHT中的索引l处的值和变 量MXY在索引g、VL和l处的表CH中递增了值CH[g,VL,l]。在步骤S65 中,索引l递增一(1)。在步骤S66中,将索引l与其最大值lx进行比较。 如果索引l已达到其最大值lx,则执行步骤S67和S68,否则执行从步骤 S63起的新迭代。在步骤S67中,索引VL递增一(1)。在步骤S68中, 将索引VL与其最大值VLx进行比较。如果索引VL已达到其最大值VLx, 则执行步骤S69至S74,否则执行从步骤S62起的新迭代。
在步骤S69中,将索引VL设置为0。在步骤S70中,将索引g和表 IT的所有位置设置为0。在步骤S71中,将索引l和变量SXY设置为0。 在步骤S72中,变量SXY递增了表CH中由索引g、VL和l选择的值 CH[g,VL,l]。在步骤S73中,索引l递增一(1)。在步骤S74中,将索引 l与其最大值lx进行比较。如果索引l已达到其最大值lx,则执行步骤S75 和S79,否则执行从步骤S72起的新迭代。
在步骤S75中,将索引l设置为0。在步骤S76中,变量T接收表CH 中包含的由索引g、VL和l选择的值CH[g,VL,l],该值除以变量SXY。在 步骤S77中,表IT中位置g处的值IT[g]递增了变量T的值与存储在表 SHT中的由索引l指定的值SHT[l]之间的差的平方结果,该值SHT[l]除以 变量MXY。在步骤S78中,索引l递增一(1)。在步骤S79中,将索引 l与其最大值lx进行比较。如果索引l已达到其最大值lx,则执行步骤S80 至S82,否则执行从步骤S76起的新迭代。
在步骤S80中,通过将表TT中的索引g指定的值TT[g]与在步骤S76 和S77中执行lx次的所计算的值IT[g]相乘来更新表TT中的索引g指定 的值TT[g]。在步骤S81中,索引g递增一(1)。在步骤S82中,将索引 g与其最大值gx进行比较。如果索引g大于其最大值gx,则执行步骤S83 和S84,否则执行从步骤S71起的新迭代。在步骤S83中,索引VL递增 一(1)。在步骤S84中,将索引VL与其最大值VLx进行比较。如果索 引VL大于其最大值VLx,则执行步骤S85,否则执行从步骤S70起的新 迭代。在步骤S75中,作为统计分析的结果返回表TT。
因此,在包括步骤S62至S72的处理循环的最后一次迭代时,表IT 和TT包含以下值:
其中 并且g1是0和gx之间的索引g的任何值(在图7 的示例中g1=0)。
如果秘密数据SD在执行运算OPR时泄漏,则表TT的位置包含比存 储在该表中的其它值高得多的值。结果是所搜索的秘密数据SD的部分等 于表TT中的最高值的索引g。
注意,可以在与等式(8)对应的步骤S80中将表IT的值相加而不是 相乘。乘法运算的实现仅使得表TT的值之间的差能够增加,以及因此与 所搜索的秘密数据的部分对应的最高值被更好地突出显示。还可以考虑将 对数函数应用于表IT的值,并且在表TT中执行所获得的对数值的加法累 积。当添加表IT的值时,可以如下对它们进行加权:
CHI平方测试可以通过将表IT中的值除以值SHT[g1,l]/MXY[g1]来实 现:
图8示出表CH的统计处理的另一个示例的步骤S90至S113,以尝试 确定所搜索的秘密数据SD的一部分的值。该处理基于香农熵函数。连续 执行步骤S90至S95。在步骤S90中,将索引g和表TT的所有位置设置 为0。在步骤S91中,将索引VL和变量MXY设置为0。在步骤S92中, 将索引l设置为0。在步骤S93中,将变量递增由索引g、VL和l在表CH 中选择的值CH[g,VL,l]。在步骤S94中,索引l递增一(1)。在步骤S95 中,将索引l与其最大值lx进行比较。如果索引l已达到其最大值lx,则 执行步骤S96和S97,否则执行从步骤S93至步骤S95的新迭代。
在步骤S96中,索引VL递增一(1)。在步骤S97中,将索引VL与 其最大值VLx进行比较。如果索引VL已达到其最大值VLx,则执行步骤 S98至S102,否则执行从步骤S92至步骤S97的新迭代。
在步骤S98中,将索引VL设置为0。在步骤S99中,将索引l和变 量SXY设置为0。在步骤S100中,变量SXY递增由索引g、VL和l在表 CH中选择的值CH[g,VL,l]。在步骤S101中,索引l递增一(1)。在步 骤S102中,将索引l与其最大值lx进行比较。如果索引l已达到其最大值 lx,则执行步骤S103至S107,否则执行从步骤S100至步骤S102的新迭 代。在步骤S103中,将索引l和变量PXY设置为0。在步骤S104中,变 量VXY接收由索引g、VL和l在表CH中选择的值CH[g,VL,l],该值除 以通过步骤S100至S102的迭代计算的变量SYX。在步骤S105中,变量 PXY递增变量VXY与变量VXY的对数(例如,以基数2)的乘积。在步 骤S106中,索引l递增一(1)。在步骤S107中,将索引l与其最大值lx 进行比较。如果索引l已经达到其最大值lx,则执行步骤S108到S110, 否则执行从步骤S104至步骤S107的新迭代。
在步骤S108中,通过从中减去除以变量MXY的值SXY与变量PXY 相乘的乘积,更新表TT中由索引g指定的值TT[g]。在步骤S109中,索 引VL递增一(1)。在步骤S110中,将索引VL与其最大值VLx进行比 较。如果索引VL大于其最大值VLx,则执行步骤S111和S112,否则执 行从步骤S99起的新迭代。在步骤S111中,索引g递增一(1)。在步骤 S112中,将索引g与其最大值gx进行比较。如果索引g大于其最大值gx, 则执行步骤S113,否则执行从步骤S98起的新迭代。在步骤S113中,作 为统计分析的结果返回表TT。
因此,在最后一次迭代时,在步骤S112之后,表TT包含以下值:
其中g1是0 和gx之间的索引g的任何值(图8的示例中的g1=0),并且对于索引g 和VL的值中的每一个值计算并且索引g的每个 值表示所搜索的密钥部分的可能值。如果秘密数据SD在处理运算OPR时 泄漏,则表TT的位置包含比存储在该表中的其它值高得多的值。结果是 所搜索的秘密数据SD的部分等于表TT中的最高值的索引g。
图9和图10示出曲线CC1、CC2,该曲线CC1、CC2示出作为索引 g的函数的表TT的内容的示例。通过执行图7中的步骤获得曲线CC1, 并且通过执行图8中的步骤获得曲线CC2。在图9和图10的示例中,索 引g具有一个字节的长度(因此从0至255变化),并且曲线CC1和CC2 已经从500,000量级的若干轨迹Ci获得。与表TT中包含的其它值相比, 曲线CC1和CC2在值g=168处具有清晰的峰值。曲线CC1中的峰值大 于表TT的其它值约30倍。在曲线CC2中,峰值大于表TT的其它值三 倍。取决于表CH的统计处理,可以认为通过增加分析的轨迹Ci的数量, 当获得保持在大于最接近值的0.9倍的值的峰值时,所搜索的秘密数据的 一部分泄漏。
如在此所述的诸如集成电路的电路可以成功地通过已知的鉴定或认证 程序,这些电路的设计者提供最传统的涉及引入时间变量的对策。该安排 可以通过使提供给电路的时钟周期的持续时间随机变化,或者通过在随机 选择的时间引入虚拟处理周期或运算来实现。表HT中的值的计算使得时 间方面能够从分析的值中移除,并且避免必须同步分析值的不同轨迹。假 设关于所搜索的秘密数据的信息在分析数据中,则先前描述的测试方法可 以使得能够确定秘密数据的全部或部分。用于在步骤S43处执行的若干部 分结果或运算的信号组合可以利用可以在计算的不同步骤处观察到的数据 泄漏。观察到的部分运算不需要表现相同或具有相同的泄漏模型或在所有 轨迹中同步。
其中公开的方法与所谓的“n阶测试”兼容,该“n阶测试”基于对 一组信号轨迹的分析,每组信号轨迹通过组合从相同的相应轨迹或者从测 试的设备或软件同步获取的信号轨迹提取的n个部分来获得。
引用的参考文献
[1]P.C.Kocher,"Timing attacks on implementations of Diffie-Hellman,RSA,DSS,and other systems"In Neal Koblitz,editor,Advances in Cryptology-CRYPTO'96,volume 1109 of Lecture Notes in Computer Science,pages 104-113.Springer,1996.
[2]P.C.Kocher,J.Jaffe,and B.Jun,"Differential Power Analysis”In M.J.Wiener,editor,Advances in Cryptology-CRYPTO'99,volume 1666 of Lecture Notesin Computer Science,pages 388-397.Springer,1999.
[3]E.Brier,C.Clavier,and F.Olivier,"Correlation Power Analysis with aLeakage Model"In M.Joye and J-J.Quisquater,editors,Cryptographic Hardware andEmbedded Systems-CHES 2004,volume 3156 of Lecture Notes in Computer Science,pages 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,vol.2140,2001,p.200-210
[5]S.Chari,J.R.Rao,and P.Rohatgi,"Template Attacks",Kaliski Jr.,B.S.,Paar,C.(eds.)CHES 2002.LNCS,vol.2523,pp.172–186. Springer,Heidelberg(2003)
[6]B.Gierlichs,L.Batina,P.Tuyls,and B.Preneel,"Mutual InformationAnalysis”,CHES 2008,volume 5154 of LNCS,pages 426-442,Springer, 2008
[7]B.Feix,H.Thiebeauld,“Defeating ISO9797-1 MAC Algo 3 by CombiningSide-Channel and Brute Force Techniques”,Cryptology ePrint Archive:Report2014/702

Claims (15)

1.一种测试方法,包括:
获取多个值集合,每个值集合包括物理量或逻辑信号的值,当所述电路执行应用于要发现的相同数据的不同加密运算的运算集合的运算时,所述值集合与要测试的电路的活动相联系;
对于每个值集合,由处理单元对由应用于所述值集合的值的第一满射函数变换的值的发生次数进行计数,以形成对于所述值集合的发生次数集合;
对于所述运算集合的每个运算,以及要发现的数据的部分的可能值中的每一个可能值,由所述处理单元计算至少两个不同的部分运算的结果;
由所述处理单元对于每个部分运算的结果的累积发生次数集合进行计算,每个累积发生次数集合是通过将与所述运算集合的运算对应的所述发生次数集合加在一起获得的,当应用于要发现的数据的所述部分的所述可能值的相同值或等效值时,所述运算集合提供具有由应用第二满射函数产生的相同变换值的部分运算结果;
将与每个部分运算的结果对应的所述累积发生次数集合组合在一起以获得组合累积发生次数集合,所述累积发生次数集合的组合作为与所述部分运算的结果对应的部分运算的函数执行;以及
由所述处理单元分析所述组合累积发生次数集合以确定要发现的数据的所述部分,知道如果要发现的数据已泄漏到所述值集合中,则在与要发现的数据的所述部分的值对应的所述累积发生次数集合中找到要发现的所述数据的部分。
2.根据权利要求1所述的方法,包括选择每个值集合中的值,对所选择的值执行发生次数的所述计数。
3.根据权利要求1或2所述的方法,包括:
向所述电路发送多个不同的命令,每个命令触发由所述电路执行应用于要发现的数据的所述运算集合的所述运算中的一个运算,以及
在由所述电路执行所述运算集合的一个运算期间,通过测量设备收集所述值集合中的一个值集合的值。
4.根据权利要求1至3中的一项所述的方法,其中,所述值集合包括:
所述电路的电流消耗的测量值,和/或
由所述电路发射的电磁辐射的测量值,和/或
所述电路周围存在的磁场吸收的测量值,和/或
所述电路中收集的逻辑信号或数字值。
5.根据权利要求1至4中的一项所述的方法,其中,所述第一和第二满射函数中的每一个是以下函数之一:
恒等函数,
提供结果值的函数,所述结果值然后减小到与汉明权重对应的值,
提供应用到函数的值的汉明权重的函数,或
提供应用到函数的值和先前值之间的汉明距离的函数。
6.根据权利要求1至5中的一项所述的方法,包括:如果分析步骤确定要发现的数据的所述部分,则拒绝所述电路或由所述电路执行的程序。
7.根据权利要求1至6中的一项所述的方法,其中,对于要发现的数据的先前确定部分和要发现的数据的另一部分执行如下步骤:计算要发现的数据的部分的所述可能值中的每一个可能值的运算结果,计算所述累积发生次数集合,组合所述累积发生次数集合,以及分析所述组合累积发生次数集合。
8.根据权利要求1至7中的一项所述的方法,其中,每个值集合中的所选择的值包括:
所述值集合的连续值,和/或
所述值集合的非连续值,和/或
所述值集合的局部极值,和/或
所述值集合的所有值。
9.根据权利要求1至8中的一项所述的方法,其中,所述运算集合的运算包括将单个运算应用于要发现的数据和应用于一组输入数据的输入数据。
10.根据权利要求1至9中的一项所述的方法,其中,所述部分运算包括以下运算之一的至少一部分:
对称或非对称加密或解密运算,
签名运算,
认证运算,
与要发现的数据的模块化或非模块化乘法,
与要发现的数据的逻辑异或OR运算,
模幂运算,要发现的数据用作指数,
通过椭圆曲线上的点对秘密数据的标量乘法运算,
模简化运算,要发现的数据用作模数,
在使用输入值的替换表中选择的值的替换运算,
应用于要发现的数据的算术运算,
在AES或DES轮内执行的部分运算,以及
将逻辑异或OR运算与要发现的数据组合的运算,以及在使用所述逻辑运算的结果的替换表中选择的值替换所述逻辑运算的所述结果的替换运算。
11.根据权利要求1至10中的一项所述的方法,其中,所述组合累积发生次数集合的所述分析包括:
对于每个组合累积发生次数集合,通过将所述组合累积发生次数除以在所述组合累积发生次数集合中累积的发生次数的相应总次数来计算归一化累积发生次数,
对于要发现的数据的所述部分的每个可能值和所变换的部分结果的每个值,计算与要发现的数据的所述部分的所述可能值对应的每个归一化累积发生次数与所变换的部分结果的所述值之间的平方差的总和,以及所述累积发生次数的平均值,
对于要发现的数据的所述部分的每个可能值,计算与所变换的部分结果的所述值对应的差值总和的累积总数,以及
将差值总和的所述累积总数相互比较,并检测要发现的数据的所述部分的可能值的差值总和的所述累积总数之一是否大于差值总和的其它累积总数。
12.根据权利要求1至10中的一项所述的方法,其中,所述组合累积发生次数集合的所述分析包括:
对于要发现的数据的所述部分的每个可能值和所变换的部分结果的每个值,计算所述累积发生次数的累积总数,
对于所述组合累积发生次数集合中的每个发生次数,通过将所述组合累积发生次数除以相应的累积总数来计算归一化累积总数,并计算所述归一化累积总数乘以所述归一化累积总数的对数的乘积,
对于要发现的数据的所述部分的每个可能值和所变换的部分结果的每个值,计算与要发现的数据的所述部分的所述可能值和所变换的部分结果的值对应的乘积的总和,
对于要发现的数据的所述部分的每个可能值,计算与所变换的部分结果的所述值对应的乘积总和的累积总数,每个乘积总和乘以与要发现的数据的所述部分的所述可能值和所变换的部分结果的值对应的累积总数的平均值,以及
将乘积总和的累积总数相互比较,并检测要发现的数据的所述部分的可能值的乘积总和的累积总数之一是否大于乘积总和的其它累积总数。
13.一种用于测试电路的系统,所述系统包括:
测量设备,其被配置为获取多个值集合,每个值集合包括物理量或逻辑信号的值,在所述电路执行应用于要发现的相同数据的不同加密运算的运算集合的运算期间,所述值集合与要测试的电路的活动相联系;以及
处理单元,其被配置为实现根据权利要求1至12中的一项所述的方法。
14.根据权利要求13所述的系统,包括耦合到所述测量设备的测量探针,用于获取与所述电路的所述活动相关联的轨迹。
15.一种计算机程序产品,包括代码部分,当由计算机执行时,所述代码部分配置所述计算机以执行根据权利要求1至12中的一项所述的方法的步骤。
CN201810938060.6A 2017-08-21 2018-08-17 测试电路对侧信道分析的抵抗的方法 Pending CN109428707A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP17187086.8 2017-08-21
EP17187086.8A EP3447509B1 (en) 2017-08-21 2017-08-21 Method of testing the resistance of a circuit to a side channel analysis

Publications (1)

Publication Number Publication Date
CN109428707A true CN109428707A (zh) 2019-03-05

Family

ID=59686784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810938060.6A Pending CN109428707A (zh) 2017-08-21 2018-08-17 测试电路对侧信道分析的抵抗的方法

Country Status (4)

Country Link
US (1) US11036891B2 (zh)
EP (1) EP3447509B1 (zh)
KR (1) KR20190020632A (zh)
CN (1) CN109428707A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3078464A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et circuit de mise en oeuvre d'une table de substitution
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
CN111614459B (zh) * 2020-05-29 2021-08-06 上海交通大学 针对ble密钥协商协议的侧信道分析方法
WO2023113832A1 (en) * 2021-12-17 2023-06-22 Pqsecure Technologies, Llc A low overhead method and architecture for side-channel attack resistance in elliptic curve arithmetic

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1245311A (zh) * 1998-07-17 2000-02-23 国际商业机器公司 用于保护秘密信息免遭分析破解的系统和程序
EP1084548A2 (en) * 1998-06-03 2001-03-21 Cryptography Research Inc. Secure modular exponentiation with leak minimization for smartcards and other cryptosystems
CN102193060A (zh) * 2010-03-01 2011-09-21 英赛瑟库尔公司 用于测试集成电路对旁路分析的抵抗力的过程
US20110246119A1 (en) * 2010-03-31 2011-10-06 Inside Contactless Process for testing the resistance of an integrated circuit to a side channel analysis
CN102779022A (zh) * 2011-05-11 2012-11-14 汤姆森特许公司 抗边信道攻击的模幂方法和设备
CN104052590A (zh) * 2014-05-05 2014-09-17 清华大学 基于侧信道相关能量分析的频域分析方法
CN104753668A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码线性变换输出的侧信道能量攻击方法
CN104796250A (zh) * 2015-04-11 2015-07-22 成都信息工程学院 针对RSA密码算法M-ary实现的侧信道攻击方法
CN105553638A (zh) * 2015-12-07 2016-05-04 成都芯安尤里卡信息科技有限公司 针对sm4一阶掩码算法的二阶频域能量分析攻击
CN106464483A (zh) * 2014-02-12 2017-02-22 智能Ic卡公司 用于电子部件实现椭圆曲线密码算法的应对方法
CN106656459A (zh) * 2016-11-17 2017-05-10 大唐微电子技术有限公司 一种针对sm3‑hmac的侧信道能量分析方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628592B2 (en) * 2014-11-25 2020-04-21 Institut Mines-Telecom Methods for recovering secret data of a cryptographic device and for evaluating the security of such a device

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1084548A2 (en) * 1998-06-03 2001-03-21 Cryptography Research Inc. Secure modular exponentiation with leak minimization for smartcards and other cryptosystems
CN1245311A (zh) * 1998-07-17 2000-02-23 国际商业机器公司 用于保护秘密信息免遭分析破解的系统和程序
CN102193060A (zh) * 2010-03-01 2011-09-21 英赛瑟库尔公司 用于测试集成电路对旁路分析的抵抗力的过程
US20110246119A1 (en) * 2010-03-31 2011-10-06 Inside Contactless Process for testing the resistance of an integrated circuit to a side channel analysis
CN102779022A (zh) * 2011-05-11 2012-11-14 汤姆森特许公司 抗边信道攻击的模幂方法和设备
CN106464483A (zh) * 2014-02-12 2017-02-22 智能Ic卡公司 用于电子部件实现椭圆曲线密码算法的应对方法
CN104052590A (zh) * 2014-05-05 2014-09-17 清华大学 基于侧信道相关能量分析的频域分析方法
CN104753668A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码线性变换输出的侧信道能量攻击方法
CN104796250A (zh) * 2015-04-11 2015-07-22 成都信息工程学院 针对RSA密码算法M-ary实现的侧信道攻击方法
CN105553638A (zh) * 2015-12-07 2016-05-04 成都芯安尤里卡信息科技有限公司 针对sm4一阶掩码算法的二阶频域能量分析攻击
CN106656459A (zh) * 2016-11-17 2017-05-10 大唐微电子技术有限公司 一种针对sm3‑hmac的侧信道能量分析方法和装置

Also Published As

Publication number Publication date
US11036891B2 (en) 2021-06-15
US20190057228A1 (en) 2019-02-21
EP3447509A1 (en) 2019-02-27
KR20190020632A (ko) 2019-03-04
EP3447509B1 (en) 2021-05-26

Similar Documents

Publication Publication Date Title
EP3217307B1 (en) Method of testing the resistance of a circuit to a side channel analysis of second order or more
CN109428707A (zh) 测试电路对侧信道分析的抵抗的方法
CN107547193A (zh) 使替换运算免受侧信道分析的方法
Masoumi et al. Novel approach to protect advanced encryption standard algorithm implementation against differential electromagnetic and power analysis
Tunstall Smart card security
CN107547191A (zh) 免受侧信道分析的保护方法和设备
Zadeh et al. Application of simple power analysis to stream ciphers constructed using feedback shift registers
Silva et al. Correlation power analysis attack on software implementation of TRIVIUM stream cipher
Fan et al. How to Choose Interesting Points for Template Attacks?
Li New Fault-Based Physical Attacks and Their Countermeasures
李陽 New fault-based physical attacks and their countermeasures

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

WD01 Invention patent application deemed withdrawn after publication