CN107003903B - 使用多个不同且独立的分支来执行敏感计算的方法 - Google Patents

使用多个不同且独立的分支来执行敏感计算的方法 Download PDF

Info

Publication number
CN107003903B
CN107003903B CN201580067109.XA CN201580067109A CN107003903B CN 107003903 B CN107003903 B CN 107003903B CN 201580067109 A CN201580067109 A CN 201580067109A CN 107003903 B CN107003903 B CN 107003903B
Authority
CN
China
Prior art keywords
processing unit
branch
branches
unit time
random number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580067109.XA
Other languages
English (en)
Other versions
CN107003903A (zh
Inventor
K.维尔加斯
F.佩里翁
S.莱韦克
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.)
Thales Digital Security France Easy Stock Co
Thales DIS Design Services SAS
Original Assignee
Gemalto SA
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 Gemalto SA filed Critical Gemalto SA
Publication of CN107003903A publication Critical patent/CN107003903A/zh
Application granted granted Critical
Publication of CN107003903B publication Critical patent/CN107003903B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及一种由处理单元使用多个不同且独立的分支(SB1、SB2)来执行敏感计算的方法,每个分支迫使需要执行给定数目的处理单元时间单元,其特征在于其包括每次执行敏感计算时的以下步骤:—生成至少与分支的数目一样多的标识符,—将每个标识符关联到唯一分支,—生成(S1、S2)标识符的随机排列,该排列中的每个标识符的出现次数至少等于各分支的最短分支中的中央处理单元时间单元的数目,—通过处理(S3)随机排列中的每个标识符,根据标识符值而连续地确定将由每个连续中央处理单元时间单元执行的分支,—针对随机排列的每个标识符,针对根据标识符值确定的分支执行(S11、S21)中央处理单元时间单元。

Description

使用多个不同且独立的分支来执行敏感计算的方法
技术领域
本发明涉及一种用于使用多个不同且独立的分支来执行敏感计算的方法,每个分支迫使需要执行给定数目的处理单元时间单元。
在敏感计算中使用多个不同且独立的分支是实现针对侧信道分析和错误攻击的对策的嵌入式设备中的常见做法。其可以存在于必须征服任何物理泄露或弱点的软件或硬件设计中。本发明使得能够通过确保对策本身将不会泄露来加强对策。
本发明在使用两个分支时特别适用,使用两个分支在当前实施方式中是常见情况。
本发明还涉及一种用于实现所述方法的设备。
背景技术
众所周知的是敏感计算(例如密码计算)期间的侧信道分析和错误攻击导致从设备提取秘密。此类攻击可以使用定时测量、功率消耗测量、电磁发射测量、错误注入等。
始终期望找到具有最小影响(特别是就存储器占用(footprint)和执行时间而言)的针对物理攻击的高效方式。
为了对抗这些攻击,在安全设备中实现嵌入式软件对策。这些软件对策主要是基于以下各项中的一个或多个:
—用随机数来掩蔽敏感数据以使信号与敏感值不相关,
—掩蔽敏感处理以便消除知道已经采取软件代码的哪个分支的可能性,
—添加某些额外代码,其保证执行的正确性,通常是再运行敏感操作或具有一致性控制的额外一致性代码等,
—添加额外代码在执行环路的情况下使执行不同步,其对应于攻击的情况,
—将计算加倍,
—完成逆向操作,
—添加某些虚假操作。
一般而言,此类对策的实现就RAM/ROM占用和执行时间而言是代价高昂的。
在本发明所考虑的敏感计算的情况下,计算由两个不同且独立的分支组成。一般而言,首先执行敏感分支中的一个且然后执行第二个。
的确存在一种需要以掩蔽此类敏感计算的处理以避免侧信道攻击并能够取决于已执行计算(例如在等于DES的补码(补M、补K)的DES(M,K)计算的情况下)的布尔或算术性质而对中间结果的相干性进行交叉检查。
因此其它替换且有利的解决方案在本领域中将是期望的。
发明内容
本发明旨在避免上述恶意攻击或者至少使其更加困难。
本发明在其最宽泛意义上被定义为一种由处理单元使用多个不同且独立的分支来执行敏感计算的方法,每个分支迫使需要执行给定数目的处理单元时间单元,其特征在于其包括在每次执行敏感计算时的以下步骤:
—生成至少与分支的数目一样多的标识符,
—将每个标识符关联到唯一分支,
—生成标识符的随机排列(permutation),该排列中的每个标识符的发生次数至少等于各分支中的最短分支中的中央处理单元时间单元的数目,
—通过处理随机排列中的每个标识符,根据标识符值而连续地确定将由每个连续中央处理单元时间单元执行的分支,
—针对随机排列的每个标识符,针对根据标识符值确定的分支执行中央处理单元时间单元。
因此,根据本发明的方法允许降低恶意攻击的风险。至少,攻击对于恶意攻击者而言执行起来更加复杂。在每次执行敏感计算时生成用于标识符的随机顺序使得能够具有始终专用于分支的不同序列的处理时间单元序列,通常是中央处理单元的处理循环。在每个时间单元结束时且针对每个分支使用存储器来存储环路的中间结果。使得每个分支的逆向工程更加困难,因为其实现被与其它分支单元混合。
就RAM占用而言,本发明的实现将比每个分支的简单执行略微更加昂贵,但是完全等价于安全实现。就ROM占用而言,本发明的实现是简单且有利的,因为某些变量可以被分支共享,例如临时寄存器、环路索引。
此外,必须注意的是本发明容易用最佳代码占用来构造;事实上就全局而言,本发明未改变分支单元的代码,改变的是其被调用和划分的方式。在用少数的指令保证正确性的同时利用其是容易的,所述少数指令从包含限定每个分支及其单元的索引的缓冲器组织连续的分支单元。本发明使得能够获得分支的随机顺序执行,在每次执行时不同且不可预测。本发明通过从随机种子构造均衡主随机数、按构造而保证每个分支的标识符的存在、通过取决于标识符的值来选择分支并有利地通过控制每个分支已完全运行而用少数额外代码来达到此目标。
本发明打开了将独立且不同的分支的执行以高效率完全混合的可能性。对策的质量此外就占用和性能而言是高的。
根据有利实施例,生成标识符的步骤使得标识符包括值及其补码值,并且生成随机排列的步骤使得首先生成作为标识符的值序列,然后用序列的补码值来完成此序列。
随机排列的此特定构造使得能够减少要生成的随机序列的尺寸。其还使得能够按构造而保证相同的循环数专用于每个分支。
在本实施例的第一实施方式中,通过对先前生成序列中的补码值进行交织来完成序列。
通常,在这里以两个值之中一个的方式插入补码值。其使得能够以适合于达到本发明的目标的简单方式来构造最终排列。
在本实施例的第二实施方式中,通过在值序列的结尾处添加补码值序列来完成序列。
本实施方式引起首先对应于值的分支的第一集合和其次对应于补码值的分支的第二集合的执行。
在有利应用中,敏感计算包括密码算法的不同且独立的分支。
本发明特别地适合于保护操纵敏感数据且需要在性能方面优化的这样算法。
在特别感兴趣的应用中,敏感计算是再运行或实现额外代码以保证多个分支中的至少一个的执行的正确性的对策。
在密码算法中常常使用此类对策。然而,用当前实施方式,其在攻击的情况下通常泄露。将使用多个独立且不同的分支的本发明应用于此类对策使得能够避免此类泄露。
根据有利特征,即分支中的一个具有不同的长度,本方法包括用附加处理单元循环来完成最短分支以平衡的预备步骤。
此类预备步骤使得就CPU循环而言能够针对每个分支具有相同的长度,这允许在所有分支中的环路的整个集合上应用本发明。
根据特定特征,本发明的方法还包括对已执行处理单元时间单元的数目计数的步骤。
此类特征使得能够在敏感计算结束时检查已达到与每个分支中的时间单元的数目的和相对应的一定数目的时间单元。
根据本发明的另一特定特征,本方法还包括针对每个分支独立地对已执行处理单元时间单元的数目计数的步骤。
此特征使得能够独立地跟踪每个分支。检测到使得能够跳过代码的一部分的错误攻击可以是有用的。其可以例如通过每次运行分支时将某些不同的追踪器(tracers)递增来完成。要在执行结束时检测到所有分支已被采取正确的次数因此是容易的。成功地跳过代码的一部分的任何错误攻击将被检测到。
根据优选实施例,所述敏感计算使用两个不同且独立的分支,每个迫使需要执行给定数目的处理单元循环,本方法的特征在于其包括在每次执行敏感计算时的以下步骤:
—生成随机数作为连续位,随机数中的位数至少等于各分支中的最短分支中的处理单元循环的数目,
—使用生成的随机数的补码位将随机数的长度加倍以构造主随机数,
—通过逐个位地处理主随机数,取决于主随机数的每个位的0或1值而连续地确定将由每个连续处理单元循环执行分支中的哪一个,每个值被关联到两个分支中的一个,
—针对主随机数的每个位,针对根据位值确定的分支执行处理单元循环。
本实施例对应于其中在敏感计算中仅使用两个分支的常见情况。被用作排列的主随机数的构造是原始的且是非常有利的,因为其在保证针对两个分支处理必需时间单元的整个集合的同时迫使需要生成最短分支中的时间单元数目的尺寸的仅一半的随机数。
在有利实施例中,两个分支迫使需要相同数目的处理单元循环,生成的随机数的位数等于一个分支中的处理单元循环的数目。
本实施例对应于其中分支具有相同尺寸的情况。
根据有利特征,本方法还包括对主随机数中的被扫描位的数目计数的步骤。
此特征是用以跟踪整个敏感计算的执行的非常简单的方式。
本发明还涉及一种包括用以使用多个不同且独立的分支来执行敏感计算的处理单元的设备,每个分支迫使需要执行给定数目的处理单元时间单元,所述设备还包括用以生成至少如分支的数目一样多的标识符的标识符发生器,每个标识符被关联到唯一分支,所述处理单元能够计算标识符的随机排列,排列中的每个标识符的发生次数至少等于各分支中的最短分支中的中央处理单元时间单元的数目,
所述处理单元处理随机排列中的每个标识符,以根据标识符值来连续地确定将由每个连续中央处理单元时间单元执行的分支,并且针对随机排列的每个标识符,针对根据标识符值确定的分支执行中央处理单元时间单元。
能够实现本发明的此类设备提出了针对攻击的强大保护,因为攻击者不能在同一敏感计算的多次执行之间完成相关。还使得所执行的代码的逆向工程比在典型方法中更难。此外,即使代码可被访问以用于读取,其也并未显示什么将是最后的执行。
在优选实施例中,本设备包括用以使用两个不同分支来执行敏感计算的处理单元,每个分支迫使需要执行给定数目的处理单元时间单元,所述设备还包括或者被连接到用以生成随机数作为连续位的随机数发生器,随机数中的位数至少等于各分支中的最短分支中的处理单元时间单元的数目,
所述处理单元能够计算给定随机数的补码,
所述处理单元逐个位地处理随机数的连续位和生成的随机数的连续补码位,此连续位和补码位形成所述主随机数,以取决于每个被扫描位的0或1值而连续地确定将由每个连续处理单元时间单元执行分支中的哪一个,并且针对主随机数的每个位,针对根据位值确定的分支执行处理单元时间单元。
本实施例对应于其中在算法中使用两个独立且不同的分支的常见情况。
为了实现前述和相关目的,一个或多个实施例包括在下文中全面描述并特别地在权利要求中指出的特征。
附图说明
以下描述和附图详细地阐述了某些说明性方面,并且指示其中可以采用实施例的原理的仅几个不同方式。在所述附图中:
—图1是表示本发明的方法的流程图;
—图2示意性地表示本发明的设备。
具体实施方式
为了更完整地理解本发明,现在将参考附图来详细地描述本发明。本详细描述将举例说明并描述被认为是其中可以实施本发明的本发明的优选实施例的内容,即其中敏感计算包括两个独立且不同的分支的情况。足够详细地描述了本实施例以使得本领域的技术人员能够实施本发明。当然应理解的是在不脱离本发明的范围的情况下可以容易地进行形式或细节方面的各种修改和变更。特别地,不应将权利要求中的任何参考符号理解为限制在所附权利要求中定义的本发明的范围。措辞“包括”不排除其它元件或步骤。措辞“一”或“一个”不排除多个。为了明了起见,在附图中仅示出并将描述对理解本发明有用的那些元件和步骤。
图1示意性地示出了用以使用两个不同且独立的分支SB1和SB2来执行敏感计算的本发明的方法。在图1上所示的示例中,分支迫使需要相同给定数目L的处理单元循环。如果两个分支并未迫使需要相同数目的循环,则用非特定的操作有利地完成最短的一个以便达到相同数目的循环。否则在图1中,L将是最短分支迫使需要的循环的数目。最长分支的其余部分然后将在本发明的执行方法之后完成。
此类敏感计算可以是例如密码算法,其结构由两个不同且独立的分支组成,通常是RIPEMD160散列算法等。其还可以是再运行或实现等价的额外代码以保证执行的正确性的对策,通常是DES/~DES算法、混合AES加密/解密、掩蔽数据的KeySheduling、然后是掩码等。分支将是不同的,因为其将不会对相同数据进行操作。其是独立的,因为一个分支的计算不会被用于另一分支。
在这里应注意的是分支的独立性是必需的,因为如果情况不是这样,则在两个分支之间将存在相关性,并且本发明所要求的执行的全排列将是不可能的。事实上,用本发明,在第二个分支被执行之前完全执行分支中的一个的可能性将是可能的。因此排除了分支的任何相关性。
在第一步骤S1中,生成长度L的随机数R。在第二步骤S2中,此随机数R(L)是用其补码位(在图中表示为COMPL(R(L)))完成的。因此获得具有2L的长度的主随机数M_R。
然后如图1上示意性地所示的那样连续地处理主随机数M_R的每个连续位i。从位1开始至位2L,在步骤S3中,检查当前位M_R(2L)i是否等于0。
如果是这样(情况Y),则在步骤S11中使用处理单元循环环路来执行第一分支SB1的操作。然后在步骤S12中将用于主随机数的位的索引递增。
如果不是(情况N),则在步骤S21中使用处理单元循环环路来执行第二分支SB2的操作。然后在步骤S22中将用于主随机数的位的索引递增。
主随机数M_R的结构使得能够保证相同数目的环路专用于两个分支,因为按构造其包含与1一样多的0。
在步骤S4中,测试i的值是否已达到2L值。如果是这样(情况Y),则结束敏感计算的执行。如果为否(情况N),方法在其中检查第i位的值的步骤S3处循环。
图2示意性地示出了本发明的设备D。其包括处理单元PU。此处理单元PU可以是中央处理单元CPU或硬件协处理器,通常是密码处理器类型的一个。
为了使本发明适用,处理单元1意图使用两个不同分支来执行敏感计算,每个分支迫使需要执行给定数目的处理单元循环。
设备D还包括随机数发生器RNG。在本发明的另一变体中,设备D不包括发生器RNG本身,而是被连接到此类发生器RNG以在需要时检索随机数。这就是为什么用短划线来表示此实体的原因。
当触发了敏感计算的执行时,处理单元PU向随机数发生器RNG发送请求REG。该随机数发生器RNG被用来生成随机数R(L)作为连续位,随机数R(L)中的位数至少等于各分支中的最短分支中的处理单元循环的数目(L)。然后将随机数R(L)传递至处理单元PU。
处理单元PU能够通过用连续的L位(表示为COMP(R(L)))来补充其随机数R(L)的其位而计算给定随机数的2的补码。此连续位及其补码位形成所述主随机数M_R(2L)。
然后处理单元PU逐个位地处理主随机数M_R(2L)的连续位以根据如先前公开的方法的原理来取决于每个被扫描位的0或1值而连续地确定将由每个连续处理单元循环执行分支SP1或SP2中的哪一个。针对主随机数M_R(2L)的每个位,针对根据位值确定的分支执行处理单元循环。
在具有每个由16个环路构成的两个分支的敏感计算的情况下,在此下文给出了对策的伪代码的示例。
// 16位的随机值
Val_16Bits <= 16位的随机值
// 由Val_16bits和补码位的级联构成的32位值
// Val_16Bits的位值。此构造保证所有
// 迭代将被执行。
MasterRNG_32Bits <= Val_16Bits | ~(Val_16Bits) (在此步骤中,‘~’运算符计算变量的2-补码,并且‘|’表示两个变量的级联)
bLoopTreatment_1 = bLoopTreatment_2 = 0
针对Loop = 0至(16+16)
- 如果Bit (MasterRNG_32Bits) == 1
- 执行敏感分支1(按照随机顺序)
- 增加 (bLoopTreatment_1, 1)
- 如果Bit (MasterRNG_32Bits) == 0
-执行敏感分支2(按照随机顺序)
- 增加 (bLoopTreatment_2, 1)
- 转到MasterRNG_32Bits的下一位
// 控制一致性
- 应处理MasterRNG的所有位;
如果不是ErrorDetected()
- Loop == 32
Figure DEST_PATH_IMAGE001
如果不是 ErrorDetected()
- bLoopTreatment_1 == 16
Figure 653286DEST_PATH_IMAGE001
如果不是ErrorDetected()
- bLoopTreatment_2 == 16
Figure 811866DEST_PATH_IMAGE001
如果不是ErrorDetected()。
通过在每次执行敏感计算时拣选用于MasterRNG的随机值,敏感第一分支和敏感第二分支的执行顺序不能被猜到。按主随机数的构造,将执行整体的敏感计算。如果可以使分支平衡以便迫使需要相同数目的CPU循环,有效地采取的分支不能被侦查到。通过将每个敏感分支中的执行的不同计数器递增,可以容易地实现将保证正确性的多次测试。那些测试包括主随机数的所有位已被处理的检查、全局环路索引应是用于每个分支的必需CPU循环的和的检查、每个分支计数器应是必需CPU循环的数目的检查等。
然后,下面给出到多个分支的广义化的示例。根据本发明的方法,生成至少如分支的数目一样多的标识符。其每个被关联到分支中的一个。
优选地,尽可能将标识符构造为值和补码值。在奇数个分支的情况下,创建未完成标识符或者用虚假计算添加分支。
例如针对四个分支,标识符是00、01、10和11。如下地关联分支:A => 00、B => 01、C => 10、D => 11。
然后,本发明的方法包括步骤:随机地确定前两个标识符00和01的序列,其具有与在最短分支中的中央处理单元时间单元一样多的每个标识符的出现。然后计算补充序列。将此补充序列添加在第一序列的结尾处或者与第一序列交织。等价的完成方式包括将所有标识符打包在一起,其中具有如最短分支中的时间单元一样多的出现。有利地,各分支先前已完成以便全部具有相同的长度。例如,在所有分支中具有三个CPU时间单元:00 00 00 0101 01 10 10 10 11 11 11。然后,生成随机排列,例如4、 0、10、 6、 5、 8、11、 2、 3、 7、1、 9,并且应用于标识符的包。应用于(00 00 00 01 01 01 10 10 10 11 11 11),其给出(01 00 11 10 01 10 11 00 01 10 00 11),这是根据本发明的主随机数。
然后从主随机数读取标识符。处理单元针对相应分支执行CPU时间单元。主随机数(01 00 11 10 01 10 11 00 01 10 00 11)因此给出以下分支序列:B A D C B C D A B CA D。
在这里应注意的是在其中使用两个分支的本优选实施例中,生成的标识符是最简单的标识符,即0和1。
作为结论,本发明在于以不可预测的方式保证敏感处理的至少两个分支的正确和完整执行的软件对策。
事实上,按对策的构造,不存在先验地猜测将采取哪个分支的可能性,不存在通过例如通过侧信道利用来侦查设备而知道哪个分支已被有效地采取的可能性,本对策保证整体的敏感处理(即所有分支)已被有效地执行,本对策打开了将多个敏感分支的执行完全混合的可能性。
应理解的是在不脱离本发明的范围的情况下可以修改公开实施例内的单独元素的位置或布置。因此不应在限制性意义上理解以上详细描述,并且本发明的范围仅仅由所附权利要求在适当解释情况下连同权利要求被赋予的等价物全部范围一起来限定。

Claims (12)

1.一种由处理单元使用多个不同且独立的分支来执行敏感计算的方法,每个分支迫使需要执行给定数目的处理单元时间单元,
其特征在于所述方法包括每次执行敏感计算时的以下步骤:
-生成至少如所述多个不同且独立的分支一样多的标识符,生成标识符的步骤使得标识符至少包括值及其补码值,
-将每个标识符关联至唯一分支,
-生成标识符的随机排列,所述排列中的每个标识符的出现次数至少等于所述多个不同且独立的分支中的最短分支中的处理单元时间单元的数目,生成标识符的随机排列的步骤使得首先生成作为标识符的值序列,此序列然后由所述序列的补码值完成,
-通过处理所述随机排列中的每个标识符,根据所述随机排列中的标识符而连续地确定将由每个连续处理单元时间单元执行的分支,
-针对所述随机排列的每个标识符,针对根据所述随机排列中的标识符确定的分支执行处理单元时间单元,
其中,所述多个不同且独立的分支中的一个具有不同的长度,所述方法包括用附加处理单元时间单元来完成最短分支以平衡所述多个不同且独立的分支的长度的预备步骤。
2.根据权利要求1所述的执行敏感计算的方法,其中,通过在先前生成的序列中每两个值中插入一个补码值来完成所述序列。
3.根据权利要求1所述的执行敏感计算的方法,其中,通过在值的序列的结尾处添加补码值的序列来完成所述值的序列。
4.根据权利要求1所述的方法,其中,敏感计算包括密码算法的不同且独立的分支。
5.根据权利要求1所述的方法,其中,敏感计算是再运行或实现额外代码以保证多个分支中的至少一个的执行的正确性的对策。
6.根据权利要求1所述的方法,还包括对已执行的处理单元时间单元的数目计数的步骤。
7.根据权利要求1所述的方法,还包括针对每个分支独立地对已执行的处理单元时间单元的数目计数的步骤。
8.根据权利要求1所述的执行敏感计算的方法,所述敏感计算使用两个不同且独立的分支,每个分支迫使需要执行给定数目的处理单元时间单元,其特征在于所述方法包括以下步骤:
-生成随机数作为连续位,所述随机数中的位数至少等于各分支中的最短分支中的处理单元时间单元的数目,
-使用已生成的随机数的补码位使所述随机数的长度加倍以构造主随机数,
-通过逐个位地处理所述主随机数,取决于所述主随机数的每个位的0或1值来连续地确定将由每个连续处理单元时间单元执行分支中的哪一个,每个值被关联至两个分支中的一个,
-针对所述主随机数的每个位,针对根据位值确定的分支执行处理单元时间单元。
9.根据权利要求8所述的方法,其中,两个分支迫使需要相同数目的处理单元时间单元,已生成的随机数的位数等于一个分支中的处理单元时间单元的数目。
10.根据权利要求8所述的方法,还包括对所述主随机数中的被扫描的位的数目计数的步骤。
11.一种包括用以使用多个不同且独立的分支来执行敏感计算的处理单元的设备,每个分支迫使需要执行给定数目的处理单元时间单元,所述设备还包括用以生成至少如所述多个不同且独立的分支一样多的标识符的标识符发生器,每个标识符被关联至所述多个不同且独立的分支中的唯一分支,标识符的生成使得标识符包括值及其补码值,所述处理单元能够计算标识符的随机排列,每个标识符在所述排列中的出现次数至少等于所述多个不同且独立的分支中的最短分支中的处理单元时间单元的数目,标识符的随机排列的生成使得首先生成作为标识符的值序列,此序列然后由所述序列的补码值完成,
所述处理单元处理所述随机排列中的每个标识符,以根据所述随机排列中的标识符值来连续地确定将由每个连续处理单元时间单元执行的分支,并且针对所述随机排列的每个标识符,针对根据所述随机排列中的标识符确定的分支执行处理单元时间单元。
12.根据权利要求11所述的设备,所述设备包括用以使用两个不同分支来执行敏感计算的处理单元,每个分支迫使需要执行给定数目的处理单元时间单元,所述设备还包括或者被连接到用以生成随机数作为连续位的随机数发生器,随机数中的位数至少等于各分支中的最短分支中的处理单元时间单元的数目,
所述处理单元能够计算给定随机数的补码,
所述处理单元逐个位地处理随机数的连续位和已生成的随机数的连续补码位的连续位,此连续位和补码位形成主随机数,以取决于每个被扫描的位的0或1值来连续地确定将由每个连续处理单元时间单元执行分支中的哪一个,并且针对主随机数的每个位,针对根据位值确定的分支来执行处理单元时间单元。
CN201580067109.XA 2014-12-10 2015-11-24 使用多个不同且独立的分支来执行敏感计算的方法 Active CN107003903B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14306987.0 2014-12-10
EP14306987.0A EP3032416A1 (en) 2014-12-10 2014-12-10 Method to execute a sensitive computation using multiple different and independent branches
PCT/EP2015/077552 WO2016091581A1 (en) 2014-12-10 2015-11-24 Method to execute a sensitive computation using multiple different and independent branches

Publications (2)

Publication Number Publication Date
CN107003903A CN107003903A (zh) 2017-08-01
CN107003903B true CN107003903B (zh) 2021-02-26

Family

ID=52396370

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580067109.XA Active CN107003903B (zh) 2014-12-10 2015-11-24 使用多个不同且独立的分支来执行敏感计算的方法

Country Status (6)

Country Link
US (1) US10545759B2 (zh)
EP (2) EP3032416A1 (zh)
JP (1) JP6339295B2 (zh)
KR (1) KR101889243B1 (zh)
CN (1) CN107003903B (zh)
WO (1) WO2016091581A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113268329B (zh) * 2021-05-31 2023-09-01 北京奇艺世纪科技有限公司 一种请求调度方法、装置及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725374B1 (en) * 1998-08-20 2004-04-20 Orga Kartensysteme Gmbh Method for the execution of an encryption program for the encryption of data in a microprocessor-based portable data carrier

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100265674B1 (ko) * 1995-06-07 2000-09-15 데니스 피셸 인코드된 데이타 스트림에 대한 에러 검출 및 정정시스템
US6327661B1 (en) 1998-06-03 2001-12-04 Cryptography Research, Inc. Using unpredictable information to minimize leakage from smartcards and other cryptosystems
JP4199937B2 (ja) 2001-03-06 2008-12-24 株式会社日立製作所 耐タンパー暗号処理方法
US7248698B2 (en) * 2001-04-06 2007-07-24 Interdigital Technology Corporation System for generating pseudorandom sequences
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US9104477B2 (en) * 2011-05-05 2015-08-11 Alcatel Lucent Scheduling in MapReduce-like systems for fast completion time
US8918768B2 (en) * 2012-12-06 2014-12-23 Apple Inc. Methods and apparatus for correlation protected processing of data operations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725374B1 (en) * 1998-08-20 2004-04-20 Orga Kartensysteme Gmbh Method for the execution of an encryption program for the encryption of data in a microprocessor-based portable data carrier

Also Published As

Publication number Publication date
EP3230859B1 (en) 2019-07-17
JP6339295B2 (ja) 2018-06-06
KR20170085066A (ko) 2017-07-21
WO2016091581A1 (en) 2016-06-16
EP3230859A1 (en) 2017-10-18
US10545759B2 (en) 2020-01-28
EP3032416A1 (en) 2016-06-15
JP2017537401A (ja) 2017-12-14
KR101889243B1 (ko) 2018-09-20
US20170344376A1 (en) 2017-11-30
CN107003903A (zh) 2017-08-01

Similar Documents

Publication Publication Date Title
US9400636B2 (en) Apparatus and method for calculating a result in a scalar multiplication
US10491372B2 (en) Protection method and device against a side-channel analysis
Bayat-Sarmadi et al. Efficient and concurrent reliable realization of the secure cryptographic SHA-3 algorithm
Heyse et al. Practical power analysis attacks on software implementations of McEliece
Tunstall Smart card security
JP2011510578A (ja) 非対称暗号のための防護方法およびデバイス
CN107798248B (zh) 防止差分故障分析的软件保护
Mao et al. Quantitative analysis of timing channel security in cryptographic hardware design
Campos et al. Trouble at the CSIDH: protecting CSIDH with dummy-operations against fault injection attacks
AL-khatib et al. Acoustic lightweight pseudo random number generator based on cryptographically secure LFSR
US11476872B2 (en) Protection against side-channel attacks
CN103636159A (zh) 用于产生随机的输出位序列的方法
CN106462701B (zh) 以抵抗外部监视攻击的方式执行密码编译数据处理操作
CN107003903B (zh) 使用多个不同且独立的分支来执行敏感计算的方法
Feix et al. Defeating with fault injection a combined attack resistant exponentiation
Medwed et al. A generic fault countermeasure providing data and program flow integrity
Akdemir et al. Non-linear error detection for elliptic curve cryptosystems
Kahri et al. High Performance and Reliable Fault Detection Scheme for the Secure Hash Algorithm
Böhl et al. A collision resistant deterministic random bit generator with fault attack detection possibilities
US10685096B2 (en) Hiding of a program execution
Ding et al. Further research on N-1 attack against exponentiation algorithms
Luo Novel Side-Channel Attacks on Emerging Cryptographic Algorithms and Computing Systems
EP3264666B1 (en) A protection method and device against a side-channel analysis
Patrick Software Protection Against Fault and Side Channel Attacks
van Dijk et al. A high-performance threshold implementation of a baseking variant on an arm architecture

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: French Meudon

Patentee after: Thales Digital Security France

Address before: French Meudon

Patentee before: GEMALTO S.A.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230412

Address after: French Meudon

Patentee after: Thales Digital Security France Easy Stock Co.

Address before: French Meudon

Patentee before: Thales Digital Security France