CN109791517A - 保护并行乘法运算免受外部监测攻击 - Google Patents

保护并行乘法运算免受外部监测攻击 Download PDF

Info

Publication number
CN109791517A
CN109791517A CN201780060141.4A CN201780060141A CN109791517A CN 109791517 A CN109791517 A CN 109791517A CN 201780060141 A CN201780060141 A CN 201780060141A CN 109791517 A CN109791517 A CN 109791517A
Authority
CN
China
Prior art keywords
mask
value
bit
bit position
iteration
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.)
Granted
Application number
CN201780060141.4A
Other languages
English (en)
Other versions
CN109791517B (zh
Inventor
G·O·德亚尔梅达
E·特里奇纳
E·德穆尔德
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.)
Cryptography Research Inc
Original Assignee
Cryptography Research Inc
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 Cryptography Research Inc filed Critical Cryptography Research Inc
Publication of CN109791517A publication Critical patent/CN109791517A/zh
Application granted granted Critical
Publication of CN109791517B publication Critical patent/CN109791517B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/72Protecting 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 in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/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
    • 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/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/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Power Engineering (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Error Detection And Correction (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Abstract

用于保护涉及通用多项式散列函数计算的加密数据处理操作免受外部监测攻击的系统和方法。示例方法可以包括:接收输入数据块和迭代结果值;通过从第一比特位置开始迭代地处理输入数据块和迭代结果值的组合的比特,来执行第一域乘法运算以产生新的迭代结果值,其中第一比特位置由以下中的一个来表示:最低有效比特和最高有效比特;通过从第二比特位置开始迭代地处理操作数比特来执行第二域乘法运算以产生新的掩码校正值,其中第二比特位置由以下中的一个来表示:最低有效比特和最高有效比特,并且其中第二比特位置与第一比特位置不同;将新的掩码校正值施加到新的迭代结果值;以及基于新的迭代结果值来产生将被以下中的至少一个利用的密码散列函数的值:经认证的加密操作或者经认证的解密操作。

Description

保护并行乘法运算免受外部监测攻击
技术领域
本公开总体上涉及计算机系统,并且更具体地涉及密码数据处理系统和方法。
背景技术
自从计算机出现以来,不断演变的不仅是用于保护加密密钥和/或其它敏感数据的各种系统和方法,还有用于获得对受保护的数据的未授权访问的系统和方法,范围从在概念上单纯的强力密码破解到复杂的外部监测攻击。
附图说明
通过示例的方式而非限制的方式来说明本公开,并且在结合附图考虑本公开时参照以下详细描述,可以更全面地理解本公开,其中:
图1示意性地图示了根据本公开的一个或者多个方面的用于计算去掩码的通用多项式散列函数(诸如,GHASH函数)的示例电路;
图2示意性地图示了根据本公开的一个或者多个方面的、用于通过以下操作按照抵抗外部监测攻击的方式来计算通用多项式散列函数(诸如,GHASH函数)的示例电路:从第一输入数据块开始迭代地处理操作数比特,对第一输入数据块进行掩码,并且重新使用对应的掩码校正值作为在随后的迭代中的掩码;
图3示意性地图示了根据本公开的一个或者多个方面的、用于通过以下操作按照抵抗外部监测攻击的方式来计算通用多项式散列函数(诸如,GHASH函数)的另一示例电路:首先对散列密钥进行掩码,并且然后从输入数据的第一块开始迭代地处理操作数比特,对给定输入数据块和加掩码的散列密钥执行域乘法运算,计算用于给定迭代的掩码校正值,并且在处理下一输入数据块之前在运算结束处执行掩码校正;
图4示意性地图示了根据本公开的一个或者多个方面的通过从LSB开始迭代地处理操作数来执行域乘法运算的示例方法;
图5示意性地图示了根据本公开的一个或者多个方面的通过从MSB开始迭代地处理操作数比特来执行域乘法运算的示例方法;
图6描绘了根据本公开的一个或者多个方面的用于通过以下操作按照抵抗外部监测攻击的方式来计算示例多项式散列函数的示例方法的流程图:对第一输入数据块进行掩码,并且重新使用对应的掩码校正值作为在随后的迭代中的掩码;
图7描绘了根据本公开的一个或者多个方面的用于通过以下操作按照抵抗外部监测攻击的方式来计算示例多项式散列函数的示例方法的流程图:对散列密钥进行掩码;以及
图8描绘了根据本公开的一个或者多个方面的用于按照抵抗外部监测攻击的方式来计算示例多项式散列函数的一般示例方法的流程图;
图9图示了可以在其中执行用于引起计算设备执行本文所描述的方法的指令集合的示例计算系统的图形表示。
具体实施方式
本文描述的是用于保护涉及通用多项式散列函数计算的加密数据处理操作免受外部监测攻击的系统和方法。
本文中的“密码数据处理操作”将是指涉及秘密参数的数据处理操作(例如,使用秘密密钥的加密/解密操作)。本文中的“密码数据处理设备”将是指被配置用于或者被采用来执行加密数据处理操作的数据处理设备(例如,通用或者专用处理器、片上系统、加密硬件加速器等)。
本文中的“外部监测攻击”是指一种通过从目标加密数据处理设备的物理实现和/或操作的某些方面导出一个或者多个受保护的信息项来获得对受保护的信息未授权访问的方法。侧信道攻击是基于与目标假面数据处理设备的操作相关联的一个或者多个物理参数的测量值(诸如,某些数据处理操作的经过时间、某些电路的功耗、流过某些电路的电流、由目标加密数据处理设备的某些电路发出的热量或者电磁辐射等)的外部监测攻击。
各种侧信道攻击可以被设计为获得对被存储在目标加密系统内和/或由目标密码系统处理的某些受保护的信息(例如,被利用来将输入的明文变换成密文的加密密钥)的未授权访问。在说明性示例中,攻击者可以利用基于目标数据处理设备的某些内部状态的顺序数据操纵操作的交互。攻击者可以应用差分功率分析(DPA)方法来测量响应于改变顺序数据操纵操作的一个或者多个数据输入的目标加密数据处理设备的某些电路的功耗,并且因此确定充当数据操纵操作的操作数的一个或者多个受保护的数据项(例如,加密密钥)。
本公开的系统和方法采用用于按照抵抗外部监测攻击的方式来执行某些加密操作的各种加掩方案。在说明性示例中,加掩方案可以涉及通过执行按比特异或运算来将随机生成的整数掩码施加到秘密值。当且仅当两个操作数中的一个操作数为真时,单个比特异或的结果为真(二进制为1);否则,结果为假(二进制为0)。因此,将异或运算应用于两个相等的操作数的结果总是为假。为了对秘密值S进行掩码,通过异或运算来将掩码M施加到秘密值S:为了移除掩码,对加掩码的秘密值和掩码执行异或:
然而,如本文在下面更详细地描述的,在更复杂的场景中,例如,在通过非线性运算来处理加掩码的值的场景中,掩码校正值(即,被采用来移除先前施加的掩码的值)将与掩码不同。
本公开描述了用于按照进行保护免受各种侧信道攻击的方式来在有限域中基于某些多项式评价函数计算所谓通用多项式散列函数的值的系统和方法。在说明性示例中,多项式函数可以由以下函数表示:
其中GF(2n)是指伽罗瓦域,该伽罗瓦域可以被视为n比特整数的有限集合,其中在该域元素上定义了加法和乘法运算。运算中的每个运算将域元素对映射到另一域元素上。GF(2n)中的两个元素的乘法涉及将表示元素的多项式相乘以及将得到的2n比特的多项式除以所选择的不可约域多项式,因此产生n比特的结果。两个元素的加法涉及将多项式相加,在GF(2n)中,这等同于对两个元素执行按比特异或。
本公开的系统和方法可以被采用来保护宽谱多项式散列函数(诸如,可以被用于验证数据完整性和消息的真实性的Poly 1305加密消息认证码(MAC))的实现免受侧信道攻击。具体地,本公开的系统和方法可以被采用来保护在伽罗瓦计数器操作模式(GCM)方法中利用的密钥GHASH函数的实现。
本文中的操作模式是指定义如何重复应用块加密单块操作来变换超过单个块的大小的数据量的算法。GCM是使用二进制伽罗瓦域上的通用散列来提供认证加密的块加密操作模式,GCM具有两种运算:经认证的加密和经认证的解密。经认证的加密运算输入秘密密钥、初始化向量、明文和附加认证数据(AAD),并且产生密文和与该密文相关联的认证标签。经认证的解密操作输入秘密密钥、初始化向量、密文、AAD和认证标签,并且产生明文或者指示输入不可信的特殊符号FAIL。
GCM加密和解密操作利用GHASH函数,该GHASH函数是通用散列函数类型。本文在下面参照图1描述计算GHASH值的示例方法。具体地,计算GHASH涉及在伽罗瓦域GF(2128)中的若干乘法和加法运算。
在某些实现中,可以通过对乘法器和被乘数两者进行掩码来保护乘法运算免受外部监测攻击。这种方案将涉及在伽罗瓦域中执行四个乘法,并且针对每次掩蔽运算,或换句话说针对每个输入数据块(密文和AAD),将进一步需要新的掩码。
本公开通过提供适合通用多项式散列函数的迭代结构的加掩方案来提高通用多项式散列函数(例如,GHASH)计算的效率。本公开的示例方法涉及执行并行乘法运算以通过对仅一个乘法操作数进行掩码(例如,加掩码的数据或者加掩码的散列密钥)并且重新使用掩码校正值作为用于下一次迭代的对应掩码来迭代地计算加掩码的迭代结果和掩码校正值。每个域乘法运算可以涉及迭代地处理操作数比特。可以通过防止在部分加掩码的迭代结果和加掩码的校正值的寄存器组中、存储器中或者通信总线上同时出现来进一步改进示例方法的侧信道攻击阻抗。
因此,在说明性示例中,可以通过在第一乘法运算的开始与第二乘法运算的开始之间引入一个或者多个时钟周期的延迟,故意使并行乘法运算不同步。在另一说明性示例中,如本文在下面更详细地描述的,通过在乘法运算中的一个乘法运算中从最低有效比特(LSB)开始迭代地处理操作数比特并且在另一个乘法运算中从MSB开始迭代地处理操作数比特,可以按照相反的按比特顺序来执行并行乘法运算。本文中的LSB将是指最左边的比特(例如,针对被表示为x0…x127的128比特整型数,为x0),并且本文中的MSB将是指最右边的比特(例如,针对被表示为x0…x127的128比特整型数,为x127)。
因此,本文描述的系统和方法通过按照抵抗外部监测攻击的方式实现加密数据处理操作的性能来表示对通用或者专用计算设备的功能的改进。
本文描述的系统和方法可以由硬件(例如,通用和/或专用处理设备和/或其它设备以及相关联的电路)、软件(例如,可由处理设备执行的指令)或者其组合实现。本文以示例的方式而不是以限制的方式来描述方法和系统的各个方面。
在本文下面描述的各种说明性示例中,密码数据处理设备可以被配置用于或者被采用来利用由GCM方法采用的GHASH函数来实现加密操作。然而,本文描述的用于按照抵抗外部监测攻击的方式来执行加密数据处理操作的系统和方法可以适用于各种其它加密数据处理设备和方法。
图1示意性地图示了根据本公开的一个或者多个方面的用于计算去掩码的通用多项式散列函数(诸如,GHASH函数)的示例电路。在由图1图示的示例实施方式中,通过在GF(2128)域中将散列密钥乘以包括输入数据(例如,密文和/或AAD)的数据块来迭代地产生GHASH函数的值:
其中Ci表示第i个输入数据块,
Xi表示第i次迭代的结果,
H表示散列密钥,
符号*表示在相关联的伽罗瓦域中的乘法运算,以及
符号表示在相关联的伽罗瓦域中的加法运算;该运算也被称为异或运算(也被称为异或(XOR))。
如由图1示意性地图示的,电路100可以包括伽罗瓦域乘法器110,该伽罗瓦域乘法器110可以被采用来在GF(2128)域中将散列密钥寄存器120和累加器130的内容进行相乘。散列密钥寄存器120可以被采用来存储散列密钥值。累加器130可以被采用来存储由加法器140对前一次迭代的结果X’i-1和包括密文和/或附加认证数据(AAD)的输入数据块Ci执行异或运算的结果。寄存器150可以被采用来存储由乘法器110产生的结果。
为了按照抵抗外部监测攻击的方式来计算通用多项式散列函数(例如,本文在上面参照图1描述的示例GHASH函数),本公开的方法和系统利用各种加掩方案。在说明性示例中,被采用来保护示例多项式散列函数实现的掩码方案可以涉及对第一输入数据块进行掩码,并且重新使用对应的掩码校正值作为在随后的迭代中的掩码。因此,可以如下定义第一加掩码的乘法:
其中X0表示用于计算多项式散列函数的初始化值,针对GHASH函数,该初始化值被定义为0128,M表示被利用作为掩码的随机整数值,并且X’1表示第一迭代的加掩码的结果。
由于乘法相对于加法的分布性质(在GHASH的情况下,该分布性质与异或对应),
通过本文在上面呈现的对示例GHASH函数的定义,
因此,
第一迭代的加掩码的结果被用作用于下一次迭代的加掩码的输入:其中X’2表示第二迭代的加掩码的结果。
通过执行与第一迭代中已经执行的那些变换相似的变换,可以如下确定第二迭代X’2的加掩码的结果:
对第二迭代的上述定义可以被一般化来如下定义第i次迭代:
其中X’i表示第i次迭代的加掩码的结果。
可以通过利用掩码校正值MCk=M*Hk执行异或运算来对最后一次迭代的结果进行去掩码:
其中k表示迭代的数目。在说明性示例中,k=m+n+1,其中m是AAD中的输入块的数目,以及n是密文块的数目。
由于掩码校正值MCk=M*Hk独立于输入和反馈(即,先前的迭代结果)值,因此如果两个硬件乘法器是可用的,则可以与加掩码的散列函数计算并行地计算掩码校正值。备选地,可以通过使用单个乘法器以交错方式或者按顺序计算加掩码的散列函数和掩码校正值。
在某些实现中,通过在产生加掩码的数据的乘法运算的开始与产生掩码校正值的乘法运算的开始之间引入一个或者多个时钟周期的延迟,可以故意使两个并行乘法运算不同步。此外,通过在乘法运算中的一次乘法运算中从LSB开始迭代地处理操作数比特并且在另一次乘法运算中从MSB开始迭代地处理操作数比特,可以按照相反的按比特顺序来执行两次并行乘法运算。在说明性示例中,可以通过从LSB开始迭代地处理操作数比特来执行产生加掩码的数据的乘法运算,而通过从MSB开始迭代地处理操作数比特来进行产生掩码校正值的乘法运算。可替代地,如本文在下面更详细地描述的,可以通过从MSB开始迭代地处理操作数比特来执行产生加掩码的数据的乘法运算,而通过从LSB开始迭代地处理操作数比特来进行产生掩码校正值的乘法运算。
图2示意性地图示了根据本公开的一个或者多个方面的用于按照抵抗外部监测攻击的方式来计算通用多项式散列函数(诸如,GHASH函数)的示例电路。如本文在上面更详细地描述的,图2所示示例实现可以涉及对第一输入数据块进行掩码,并且重用对应的掩码校正值作为在随后的迭代中的掩码。
如由图2示意性地图示的,电路200可以包括两个有限域乘法器210和215,使得第一乘法器210可以被采用来在有限域中(例如,在GF(2128)中)将散列密钥寄存器220和累加器225的内容相乘。散列密钥寄存器220可以被采用来存储散列密钥值。累加器225可以被采用来存储由加法器230对前一次迭代X’i-1的加掩码的结果和选择器235的输出执行异或运算的结果。选择器235产生第一迭代由加法器238输出的值选择器235旁路加法器238以产生用于随后的迭代的值Ci。因此,第一乘法器210在第一迭代中产生加掩码的值以及在每次随后的迭代中产生加掩码的值由第一乘法器210产生的值可以被存储在寄存器240处,该寄存器240馈送选择器245。
第二乘法器215可以被采用来在有限域中(例如,在GF(2218)域中)将散列密钥寄存器220和掩码寄存器250的内容相乘。掩码寄存器250存储由选择器255产生的值,在第一迭代中,该值是掩码值M,并且在每次随后的迭代中,该值是掩码校正值MCi=H*MCi-1。因此,第二乘法器215在第一迭代中产生值H*M,并且在每次随后的迭代中产生掩码校正值MCi=H*MCi-1,其中MCi=M*H1。由第二乘法器215产生的值可以被存储在寄存器260处,该寄存器260馈送选择器265。
如本文在下面更详细地描述的,第一乘法器210和第二乘法器215可以被配置为通过在乘法运算中的一次乘法运算中从LSB开始迭代地处理操作数比特,并且在另一次乘法运算中从MSB开始迭代地处理操作数比特来按照相反的按比特顺序执行域乘法运算。
在除了最后一次迭代之外的所有迭代中,第一乘法器210的输出由选择器245提供作为加法器230的输入。在最后一次迭代中,选择器245将第一乘法器210的输出提供至加法器270。在除了最后一次迭代之外的所有迭代中,第二乘法器215的输出由选择器265提供作为选择器255的输入。在最后一次迭代中,选择器265将第二乘法器215的输出提供至加法器270。该加法器270通过产生选择器245和265的输出的异或来在最后一次迭代之后执行去掩码运算:其中k表示迭代的数目。
因此,示例电路200通过对第一输入数据块进行掩码并且重用对应的掩码校正值作为在随后的迭代中的掩码、按照抵抗外部监测攻击的方式来计算通用多项式散列函数(诸如,GHASH函数)。
在另一说明性示例中,被采用来保护示例多项式散列函数实现的加掩方案可以涉及对散列密钥进行掩码。因此,可以如下定义由第i次迭代产生的加掩码的值:
其中是加掩码的散列密钥值。
在每次迭代之后,可以通过将掩码校正值施加到加掩码的迭代结果来移除掩码:
由于乘法相对于加法的分布性质(在GHASH的情况下,该分布性质与异或对应),
最后,由于因此,
产生了第i次迭代的去掩码的结果。
因此,在每次迭代时,执行两次有限域乘法运算。例如,针对GHASH函数,在GF(2128)中执行两次运算。因此,如果两个硬件乘法器是可用的,则可以与加掩码的迭代结果计算并行地计算掩码校正值。备选地,可以使用单个乘法器以交错方式或者按顺序计算加掩码的迭代结果和掩码校正值。
在某些实现中,通过在产生加掩码的数据的乘法运算的开始与产生掩码校正值的乘法运算的开始之间引入一个或者多个时钟周期的延迟,可以故意使两个并行乘法运算不同步。此外,通过在乘法运算中的一个乘法运算中从LSB开始迭代地处理操作数比特并且在另一个乘法运算中从MSB开始迭代地处理操作数比特,可以按照相反的按比特顺序来执行两次并行乘法运算。在说明性示例中,可以通过从LSB开始迭代地处理操作数比特来执行产生加掩码的数据的乘法运算,而通过从MSB开始迭代地处理操作数比特来进行产生掩码校正值的乘法运算。备选地,如本文在下面更详细地描述的,可以通过从MSB开始迭代地处理操作数比特来执行产生加掩码的数据的乘法运算,而通过从LSB开始迭代地处理操作数比特来进行产生掩码校正值的乘法运算。
图3示意性地图示了根据本公开的一个或者多个方面的用于按照抵抗外部监测攻击的方式来计算通用多项式散列函数(诸如,GHASH函数)的示例电路。如本文在上面更详细地描述的,图3所示示例实现可以涉及对散列密钥进行掩码。
如由图3示意性地图示的,电路300可以包括两个有限域乘法器310和315,使得第一乘法器310可以被采用来在有限域中将加掩码的散列密钥寄存器320和累加器325的内容相乘。在GHASH函数的情况下,乘法器310和315是在GF(2128)中的乘法器。加掩码的散列密钥寄存器320可以被采用来存储加掩码的散列密钥值累加器325可以被采用来存储由加法器330对前一次迭代Xi-1的结果和包括密文和/或附加认证数据(AAD)的输入数据块Ci执行加法运算的结果:
由第一乘法器310产生的值可以被馈送至加法器335。
第二乘法器315可以被采用来在有限域中(例如,在GHASH函数的情况下,在GF(2128)域中)将累加器325和掩码寄存器340的内容相乘。因此,第二乘法器315产生掩码校正值由第二乘法器315产生的掩码校正值可以被馈送至加法器335。
如本文在下面更详细地描述的,第一乘法器310和第二乘法器315可以被配置为通过在乘法运算中的一次乘法运算中从LSB开始迭代地处理操作数比特,并且在另一次乘法运算中从MSB开始迭代地处理操作数比特来按照相反的按比特顺序执行域乘法运算。
加法器335通过产生乘法器310和315的输出的和(在GHASH函数的情况下,该和由异或表示)来在每次迭代之后执行去掩码运算:因此产生第i次迭代的去掩码的结果,该去掩码的结果可以被存储在寄存器345中。在除了最后一次之外的所有迭代中,可以将由寄存器345存储的值作为输入提供至加法器330。在完成最后一次迭代时,寄存器345存储通用多项式散列函数的结果值,例如,GHASH函数值。
因此,示例电路300按照抵抗外部监测攻击的方式,通过对散列密钥进行加掩并且通过将掩码校正值施加到加掩码的结果值去除掩码来计算通用多项式散列函数(诸如,GHASH函数)。
如本文在下面参照图4至图5更详细地描述的,通过在乘法运算中的一个乘法运算中从LSB开始迭代地处理操作数比特并且在另一个乘法运算中从MSB开始迭代地处理操作数比特,如本文在上面提到的,可以按照相反的按比特顺序来执行并行乘法运算(例如,产生多项式散列函数的加掩码的中间结果的第一乘法运算和产生掩码校正值的第二乘法)。
图4示意性地图示了根据本公开的一个或者多个方面的通过从LSB开始迭代地处理操作数比特来执行域乘法运算的示例方法。如通过图4示意性地图示的,将被表示为X的第一比特序列乘以被表示为Y的第二比特序列。如本文在下面描述的,执行迭代400A至400N以修改辅助中间值V和中间结果值Z。针对每次迭代400A至400N,图4图示了辅助中间值Vi(列410),在迭代中的一些迭代中对辅助中间值Vi和域减少模数R执行的异或运算(列420)以及中间结果值Zi(列430)。该方法通过利用第二比特序列的值将辅助中间值V初始化:V0=Y,以及利用0将中间结果值Z0初始化来开始。该方法从最左边的被表示为x0的比特开始、经过第一比特序列X的比特来迭代。在每次迭代400A至400N中,如下更新辅助中间值Vi和中间结果值Zi。
在第i次迭代时,如果第一比特序列的第i个比特为0,则中间结果值Zi保持不变;否则,当前中间结果值Zi和辅助中间值Vi的异或形成新的中间结果值Zi+1
如果xi=0,则Zi+1=Zi,否则,
在图4中由示出了对值Z3至Z7的计算的线示意性地图示了第一种情况(即,xi=0);由示出了值Z1、Z2和Z8的计算的线示意性地图示了第二种情况(即,xi=1)。
同样在第i次迭代中,使中间辅助值Vi向右偏移一比特(这等同于将该值乘以2)。如果中间辅助值Vi的MSB为0,则将偏移的中间辅助值Vi保存为新的中间辅助值Vi+1;否则,通过异或运算来进一步将偏移的中间辅助值Vi与域减少模数R组合,并且将结果保存为新的中间辅助值Vi+1:如果MSB1(Vi)=0,则Vi+1:Vi+1=Vi>>1,否则,
由示出了值Z3和Z4的计算的线示意性地图示了第一种情况(即,MSB1(Vi)=0);由示出了值V1、V2和V5至V7的计算的线示意性地图示了第二种情况(即,MSB1(Vi)=1)。
在最后一次迭代之后,值Zn表示乘法结果。
虽然GF(2128)域的元素由128比特的序列表示,但是图4所示说明性示例以8比特的序列进行运算。然而,参照图4描述的方法可以被应用于任意所选择的大小的比特序列,而没有限制。因此,可以如下正式地描述通过从LSB开始迭代地处理操作数比特来乘以128比特的序列的方法。
利用第二比特序列的值来初始化辅助中间值V:V0=Y,并且利用0128初始化中间结果值Z0。在每次迭代0至127时,如下更新辅助中间值Vi和中间结果值Zi
如果xi=0,则Zi+1=Zi,否则,
如果MSB1(Vi)=0,则Vi+1=Vi>>1,否则,在最后一次迭代之后,值Z128表示乘法结果。
图5示意性地图示了根据本公开的一个或者多个方面的通过从MSB开始迭代地处理操作数比特来执行域乘法运算的示例方法。如由图5示意性地图示的,将被表示为X的第一比特序列乘以被表示为Y的第二比特序列。如本文在下面描述的,执行迭代500A至500N以修改中间结果值Z。针对每次迭代500A至500N,图5图示了第一比特序列的被表示为xi的第i比特(列510)、中间结果值Zi(列520)以及在迭代中的一些迭代中对中间结果值Zi和域减少模数R执行的异或运算(列530)。该方法通过利用0来初始化中间结果值Z开始:Z0=0128。该方法从最右边的被表示为x127的比特开始、经过第一比特序列X的比特来迭代。在每次迭代500A至500N中,如下更新中间结果值Zi
在第i次迭代时,使中间结果值Zi向右偏移一比特(这相当于将该值乘以2)。如在图5中由示出了值Z4和Z5的计算的线示意性地图示的,如果中间辅助值Zi的MSB和第一乘法操作数X的第(127-i)比特都为0,则将偏移的中间结果值Zi保存为新的中间辅助值Zi+1:如果x127-i=0并且MSB1(Zi)=0,则Zi+1=Zi>>1。
否则,如在图5中由示出了值Z1和Z8的计算的线所示意性地图示的,如果中间辅助值Zi的MSB为0并且第一乘法操作数X的第(127-i)比特为1,则通过异或运算来进一步将偏移的中间结果值Zi与第二乘法操作数Y组合,并且将结果保存为新的中间结果值Zi+1:如果x127-i=1并且MSB1(Zi)=0,则
否则,如在图5中由示出了值Z2、Z3和Z6的计算的线所示意性地图示的,如果中间辅助值Zi的MSB为1并且第一乘法操作数X的第(127-i)比特为0,则通过异或操作来进一步将偏移的中间结果值Zi与域减少模数R组合,并且将结果保存为新的中间结果值Zi+1:如果x127-i=0并且MSB1(Zi)=1,则
否则,如在图5中由示出了值Z7的计算的线所示意性地图示的,如果中间辅助值Zi的MSB和第一乘法操作数X的第(127-i)比特都等于1,则通过连续的异或运算来进一步将偏移的中间结果值Zi与第二乘法操作数Y和域减少模数R组合,并且将结果保存为新的中间结果值Zi+1:如果x127-i=1并且MSB1(Zi)=1,则在最后一次迭代之后,值Zn表示乘法结果。
虽然GF(2128)域的元素由128比特的序列来表示,但是图5所示说明性示例以8比特的序列进行运算。然而,参照图5描述的方法可以被应用于任意所选择的大小的比特序列,而不受限制。因此,可以正式地如下描述通过从LSB开始迭代地处理操作数比特来乘以128比特的序列的方法。
利用0128来初始化中间结果值。在每次迭代0至127时,如下更新中间结果值Zi
如果x127-i=0并且MSB1(Zi)=0,则Zi+1=Zi>>1。
如果X127-i=1并且MSB1(Zi)=0,则
如果X127-i=0并且MSB1(Zi)=1,则
如果X127-i=1并且MSB1(Zi)=1,则
其中x127-i参考第一乘法操作数X的第(127-i)比特,Y参考第二乘法操作数,并且R参考域减少模数。在最后一次迭代之后,值Z128表示乘法结果。
图6描绘了根据本公开的一个或者多个方面的、用于通过以下操作按照抵抗外部监测攻击的方式来计算示例通用多项式散列函数的示例方法600的流程图:对第一输入数据块进行掩码,并且重新使用对应的掩码校正值作为在随后的迭代中的掩码。方法600和/或其单独的功能、例程、子例程或者操作中的每一个可以由一个或者多个通用和/或专用处理设备来执行。可以并行地或者按照可以与上面描述的顺序不同的顺序来执行方法600的两个或多个功能、例程、子例程或者操作。在某些实现中,方法600可以由单个处理线程执行。备选地,方法600可以由两个或多个处理线程执行,每个线程执行该方法的一个或者多个单独的功能、例程、子例程或者操作。在说明性示例中,实现方法600的处理线程可以被同步(例如,使用信号量、关键部分和/或其它线程同步机制)。备选地,实现方法600的处理线程可以相对于彼此异步地被执行。在说明性示例中,方法600可以由本文在上面参照图2描述的电路200来执行。在另一说明性示例中,方法600可以由本文在下面参照图9描述的计算系统1000来执行。在又一说明性示例中,方法600可以由图9所示被配备有实现图2所示电路200的结构和功能的加密硬件加速器的计算系统1000来执行。
参照图6,在框610处,实现该方法的处理设备可以将掩码值施加到第一输入数据块以初始化加掩码的迭代结果值:
第一输入数据块可以包括密文块或者AAD块。
在框620处,如本文在上面更详细地描述的,处理设备可以将掩码值乘以散列密钥值以初始化掩码校正值:MC1=M*H。该乘法运算在有限域中被执行,例如,GF(2128)域。
框630至660描述了从第二个传入的数据块开始迭代地对每个传入的数据块执行的操作。每个输入数据块可以包括密文块或者AAD块。
在框630处,处理设备可以接收第i个输入数据块Ci
在框640处,如本文在上面更详细地描述的,处理设备可以将散列密钥乘以输入数据块和前一次迭代的加掩码的结果值的组合以产生新的加掩码的结果值,该新的加掩码的结果值然后被反馈至下一次迭代的输入:乘法运算在有限域中被执行,例如针对GHASH函数,在GF(2128)域中。本文中输入数据块和加掩码的结果值的组合是指输入数据块与加掩码的结果值的异或。
在框650处,如本文在上面更详细地描述的,处理设备可以将散列密钥乘以前一次迭代的掩码校正值以产生新的掩码校正值,该新的掩码校正值然后被反馈至下一次迭代的输入:MCi=H*MCi-1
在某些实现中,框640和650所参考的乘法运算可以被并行地执行,以及通过在产生加掩码的数据的乘法运算的开始和产生掩码校正值的乘法运算的开始之间引入一个或者多个时钟周期的延迟而被故意的不同步。此外,如本文在上面更详细地描述的,通过在乘法运算中的一个乘法运算中从LSB开始迭代地处理操作数比特,并且在另一次乘法运算中从MSB开始迭代地处理操作数比特,可以按照相反的按比特顺序来执行两个并行乘法运算。
如本文在上面提到的,取决于可用的硬件乘法器电路的数目,框640和650的操作可以相对于彼此同时或者按顺序执行。
响应于在框660处确定当前输入数据块是最后一个输入数据块,操作可以在框670处继续;否则,该方法会循环回到框630。
在框670处,如本文在上面更详细地描述的,处理设备可以通过将掩码校正值施加到加掩码的结果值来产生去掩码的结果值:其中k表示迭代的数目。去掩码的结果值表示所计算的通用多项式散列函数(例如,GHASH函数)的值。响应于完成框470的操作,该方法可以终止。
图7描绘了根据本公开的一个或者多个方面的用于通过以下操作按照抵抗外部监测攻击的方式来计算示例散列函数的示例方法700的流程图:对散列密钥进行掩码。方法700和/或其单独的功能、例程、子例程或者操作中的每一个可以由一个或者多个通用和/或专用处理设备执行。可以并行地或者可以按照与上面描述的顺序不同的顺序来执行方法700的两个或多个功能、例程、子例程或者操作。在某些实施方式中,方法700可以由单个处理线程来执行。备选地,方法700可以由两个或多个处理线程来执行,每个线程执行该方法的一个或者多个单独的功能、例程、子例程或者操作。在说明性示例中,可以使实施方法700的处理线程同步(例如,通过使用信号量、关键部分和/或其它线程同步机制)。备选地,实现方法700的处理线程可以相对于彼此异步地执行。在说明性示例中,方法700可以由本文在上面参照图3描述的电路300来执行。在另一说明性示例中,方法700可以由本文在下面参照图9描述的计算系统1000来执行。在又一说明性示例中,方法700可以由图9所示的被配备有实现图3所示电路300的结构和功能的加密硬件加速器的计算系统1000来执行。
参照图7,在框710处,实现该方法的处理设备可以将加掩码的散列密钥值施加到第一输入数据块以初始化加掩码的迭代结果值:其中X0是用于计算通用多项式散列函数的初始值;例如,X0=0128。如本文在上面更详细地描述的,可以通过掩码值和散列密钥值的异或来提供加掩码的散列密钥。该方法可以将掩码值应用于第一输入数据块以初始化掩码校正值:
第一输入数据块可以包括密文块或者AAD块。
框720至760描述了从第二个传入的数据块开始迭代地对每个传入的数据块执行的操作。每个输入数据块可以包括密文块或者AAD块。
在框720处,处理设备可以接收第i个输入数据块Ci
在框730处,如本文在上面更详细地描述的,处理设备可以将加掩码的散列密钥乘以接收到的输入数据块和去掩码的迭代结果值的组合以产生加掩码的迭代结果值:乘法运算在有限域中被执行,例如,在GHASH函数的情况下,在GF(2128)域中。本文中输入数据块和未加掩码的迭代结果值的组合是指接收到的输入数据块与未加掩码的迭代结果值的异或。
在框740处,如本文在上面更详细地描述的,处理设备可以将掩码值乘以输入数据块和去掩码的前一迭代结果值的组合以产生掩码校正值:
在某些实现中,框730和740所参考的乘法运算可以并行地被执行,以及通过在产生加掩码的数据的乘法运算的开始和产生掩码校正值的乘法运算的开始之间引入一个或者多个时钟周期的延迟而被故意地不同步。此外,如本文在上面更详细地描述的,通过在乘法运算中的一个乘法运算中从LSB开始迭代地处理操作数比特并且在另一个乘法运算中从MSB开始迭代地处理操作数比特,可以按照相反的按比特顺序来执行两次并行乘法运算。
在框750处,如本文在上面更详细地描述的,处理设备可以通过将掩码校正值MCi施加到加掩码的当前迭代结果值来产生新的去掩码的迭代结果值:
响应于在框760处确定当前输入数据块是最后一个输入数据块,该方法可以终止;否则,该方法会循环回到框720。去掩码的结果值表示通用多项式散列函数(诸如,GHASH函数)的值。
图8描绘了根据本公开的一个或者多个方面的、用于按照抵抗外部监测攻击的方式来计算示例散列函数的一般示例方法800的流程图。方法800描述了示例方法600和700的示例实现,其中640至650以及框730至740所参考的乘法运算被并行地执行,以及通过在乘法运算中的一个乘法运算中从LSB开始迭代地处理操作数比特并且在另一个乘法运算中从MSB开始迭代地处理操作数比特按照相反的按比特顺序而被执行。方法800和/或其单独的功能、例程、子例程或者操作中的每一个可以由一个或者多个通用和/或专用处理设备执行。可以并行地或者可以按照与上面描述的顺序不同的顺序来执行方法800的两个或多个功能、例程、子例程或者操作。在某些实现中,方法800可以由单个处理线程来执行。备选地,方法800可以由两个或多个处理线程来执行,每个线程执行该方法的一个或多个单独的功能、例程、子例程或者操作。在说明性示例中,可以使实现方法800的处理线程同步(例如,通过使用信号量、关键部分和/或其它线程同步机制)。除此之外,实现方法800的处理线程可以相对于彼此异步地执行。在说明性示例中,方法800可以由本文在上面参照图3描述的电路300来执行。在另一说明性示例中,方法800可以由本文在下面参照图9描述的计算系统1000来执行。在又一说明性示例中,方法800可以由图9所示的被配备有实现图3所示电路300的结构和功能的加密硬件加速器的计算系统1000来执行。
参照图8,框810至840描述了迭代地对每个传入的数据块执行的操作,每个传入的数据块可以包括密文块和AAD块。
在框810处,实现该方法的第i次迭代的处理设备可以接收第i个输入数据块和当前迭代结果值。
在框820处,处理设备可以执行第一域乘法运算以产生新的迭代结果值。处理设备可以从所选择的第一比特位置开始迭代地处理输入数据块和迭代结果值的组合的比特。第一比特位置可以由LSB或者MSB中的一个来表示。在说明性示例中,第一乘法运算可以将散列密钥乘以输入数据块和加掩码的迭代结果值的组合。在另一说明性示例中,如本文在上面更详细地描述的,第一乘法运算可以将加掩码的散列密钥乘以输入数据块和迭代结果值的组合。
在框830处,处理设备可以执行第二域乘法运算以产生新的掩码校正值。处理设备可以从所选择的第二比特位置开始迭代地处理操作数比特。第二比特位置可以与第一比特位置不同,并且可以由LSB或者MSB中的一个来表示,使得按照不同的按比特顺序来执行两个乘法运算。在说明性示例中,第二乘法运算可以将加掩码的散列密钥乘以掩码校正值。在另一说明性示例中,如本文在上面更详细地描述的,第二乘法运算可以将掩码值乘以输入数据块和迭代结果值的组合。
在框840处,处理设备可以将新的掩码校正值施加到新的迭代结果值。响应于在框850处确定当前输入数据块是最后一个输入数据块,该方法可以终止;否则,该方法可以循坏回到框810。去掩码的结果值表示GHASH函数的值。
图9图示了可以并入本文所描述的处理设备并且在其中可以执行用于引起计算设备来执行本文所描述的方法的指令集合的计算系统1000的图形表示。计算系统1000可以被连接至LAN、内联网、外联网和/或互联网中的其它计算设备。计算设备可以在客户端-服务器网络环境中以服务器机器的能力进行操作。可以由个人计算机(PC)、机顶盒(STB)、服务器、网络路由器、交换机或者桥接器或者能够执行将由该机器采取的指定动作的指令集合(按顺序或者以其它方式)的任何机器来提供计算设备。进一步地,虽然只图示了单个计算设备,但是术语“计算设备”也应该被视为包括单独地或者联合地执行用于执行本文所描述的方法指令集合(或者多个集合)的计算设备的任何类集。
示例计算系统1000可以包括处理设备1002,在各种说明性示例中,该处理设备1002可以是包括一个或者多个处理核心的通用或者专用处理器。示例计算系统1000可以进一步包括主存储器1004(例如,同步的动态随机存取存储器(DRAM)、只读存储器(ROM))、静态存储器1006(例如,闪速存储器和数据存储设备1018),主存储器1004和静态存储器1006可以经由总线1030来彼此通信。
根据本公开的针对执行本文所描述的操作和步骤的一个或者多个方面,处理设备1002可以被配置为执行用于按照抵抗外部监测攻击的方式来计算散列函数的方法600至800。
示例计算系统1000可以进一步包括可以与网络1020通信的网络接口设备1008。示例计算系统1000还可以包括视频显示单元1010(例如,液晶显示器(LCD)或者阴极射线管(CRT))、字母数字输入设备1012(例如,键盘)、光标控制设备1014(例如,鼠标)和声信号生成设备1016(例如,扬声器)。在一个实施例中,视频显示单元1010、字母数字输入设备1012和光标控制设备1014可以被组合成单个组件或者设备(例如,LCD触摸屏)。
数据存储设备1018可以包括计算机可读存储介质1028,在该计算机可读存储介质1028上,可以存储实现本文描述的方法或者功能中的任何一个或多个的指令的一个或多个集合(例如,方法600至800的指令)。实现方法600至800的指令还可以在示例计算系统1000对其进行执行期间完全地或者至少部分地驻留在主存储器1004内和/或处理设备1002内,因此主存储器1004和处理设备1002还可以构成或者包括计算机可读介质。可以经由网络接口设备1008通过网络1020来进一步传输或者接收指令。
虽然在说明性示例中将计算机可读存储介质1028示出为单个介质,但是术语“计算机可读存储介质”应该被视为包括存储指令的一个或多个集合的单个介质或者多个介质(例如,集中式或者分布式数据库和/或相关联的高速缓冲存储器和服务器)。术语“计算机可读存储介质”还应该被视为包括能够存储、编码或者承载用于由机器执行的、引起该机器来执行本文所描述的方法的指令集合的任何介质。术语“计算机可读存储介质”应该相应地被视为包括但不限于固态存储器、光学介质和磁介质。
除非另有明确说明,否则诸如“更新”、“标识”、“确定”、“发送”、“指派”等术语是指由计算设备执行或者实现的动作和过程,该动作和过程操纵被表示为计算设备的寄存器和存储器内的物理(电子)量的数据以及将这些数据变换成其他数据,这些其他数据被类似地表示为计算设备存储器或者寄存器或者其它这种信息存储装置、传输或者显示设备内的物理量。而且,本文所使用的术语“第一”、“第二”、“第三”、“第四”等旨在作为用于将不同的元件区分开来的标签,并且可以不一定根据其数字标记具有顺序含义。
本文描述的示例还涉及用于执行本文所描述的方法的装置。可以针对所需目的来专门构造该装置,或者该装置可以包括由被存储在计算设备中的计算机程序选择性地进行编程的通用计算设备。这种计算机程序可以被存储在计算机可读的非暂时性存储介质中。
本文所描述的方法和说明性示例并非固有地与任何特定计算机或者其它装置相关。可以根据本文描述的教导来使用各种通用系统,或者可以证明构造更专用的装置来执行所需方法步骤是方便的。用于各种这些系统所需结构将如在上面的描述中阐述的那样出现。
上面的描述旨在是说明性的而非限制性的。虽然已经参照具体的说明性示例描述了本公开,但是要认识到,本公开不限于所描述的示例。应该参照以下权利要求书以及该权利要求书授权的等同物的全部范围来确定本公开的范围。

Claims (20)

1.一种方法,包括:
由处理设备接收输入数据块和迭代结果值;
通过从第一比特位置开始迭代地处理所述输入数据块和所述迭代结果值的组合的比特,来执行第一域乘法运算以产生新的迭代结果值,其中所述第一比特位置由以下中的一个表示:最低有效比特和最高有效比特;
通过从第二比特位置开始迭代地处理操作数比特,来执行第二域乘法运算以产生新的掩码校正值,其中所述第二比特位置由以下中的一个表示:最低有效比特和最高有效比特,并且其中所述第二比特位置与所述第一比特位置不同;
将所述新的掩码校正值应用于所述新的迭代结果值;以及
基于所述新的迭代结果值,产生密码散列函数的值,所述密码散列函数的值将被以下中的至少一个利用:经认证的加密操作或者经认证的解密操作。
2.根据权利要求1所述的方法,其中所述经认证的加密操作基于秘密密钥、初始化向量、和明文,利用所述密码散列函数的所述值来产生密文和认证标签。
3.根据权利要求1所述的方法,其中所述经认证的解密操作基于秘密密钥、初始化向量、密文、和认证标签,利用所述密码散列函数的所述值来产生明文。
4.根据权利要求1所述的方法,其中所述接收和乘法运算被迭代地执行,使得当前迭代的所述新的迭代结果值被提供给下一次迭代作为所述迭代结果值。
5.根据权利要求1所述的方法,其中所述接收和乘法运算被迭代地执行,使得当前迭代的所述新的掩码校正值被提供给下一次迭代作为掩码校正值。
6.根据权利要求1所述的方法,其中所述迭代结果值由加掩码的数据块表示。
7.根据权利要求6所述的方法,其中执行所述第一域乘法运算包括:将散列密钥乘以所述输入数据块和加掩码的迭代结果值的所述组合。
8.根据权利要求6所述的方法,其中执行所述第二域乘法运算包括:将散列密钥乘以掩码校正值。
9.根据权利要求1所述的方法,其中执行所述第一域乘法运算包括:将加掩码的散列密钥乘以所述输入数据块和所述迭代结果值的所述组合。
10.根据权利要求9所述的方法,其中执行所述第二域乘法运算包括:
将掩码值乘以所述输入数据块和所述迭代结果值的所述组合。
11.根据权利要求1所述的方法,其中所述乘法运算在有限域中被执行。
12.根据权利要求1所述的方法,其中所述输入数据块包括以下中的至少一个:密文块或者附加的认证数据(AAD)块。
13.一种系统,包括:
输入接口,所述输入接口用于接收输入数据块和迭代结果值;
第一乘法器电路,所述第一乘法器电路用于通过从第一比特位置开始迭代地处理所述输入数据块和所述迭代结果值的组合的比特,来执行第一域乘法运算以产生新的迭代结果值,其中所述第一比特位置由以下中的一个表示:最低有效比特和最高有效比特;
第二乘法器电路,所述第二乘法器电路用于通过从第二比特位置开始迭代地处理操作数比特,来执行第二域乘法运算以产生新的掩码校正值,其中所述第二比特位置由以下中的一个表示:最低有效比特和最高有效比特,并且其中所述第二比特位置与所述第一比特位置不同;以及
加法器电路,所述加法器电路用于将所述新的掩码校正值应用于所述新的迭代结果值。
14.根据权利要求13所述的系统,其中所述第一乘法器电路被配置为将散列密钥乘以所述输入数据块和加掩码的迭代结果值的所述组合。
15.根据权利要求14所述的系统,其中所述第二乘法器电路被配置为将加掩码的散列密钥乘以掩码校正值。
16.根据权利要求13所述的系统,其中所述第一乘法器电路被配置为将加掩码的散列密钥乘以所述输入数据块和所述迭代结果值的所述组合。
17.根据权利要求16所述的系统,其中所述第二乘法器电路被配置为将掩码值乘以所述输入数据块和所述迭代结果值的所述组合。
18.根据权利要求13所述的系统,其中所述第一乘法器电路和所述第二乘法器电路在有限域中执行乘法运算。
19.一种系统,包括:
第一乘法器电路,所述第一乘法器电路用于通过从第一比特位置开始迭代地处理操作数比特,来将散列密钥乘以输入数据块和加掩码的结果值的组合以产生新的加掩码的结果值,其中所述第一比特位置由以下中的一个表示:最低有效比特和最高有效比特;
第二乘法器电路,所述第二乘法器电路用于通过从第二比特位置开始迭代地处理操作数比特,来将所述散列密钥乘以掩码校正值以产生新的掩码校正值,其中所述第二比特位置由以下中的一个表示:最低有效比特和最高有效比特,并且其中所述第二比特位置与所述第一比特位置不同。
20.一种系统,包括:
第一乘法器电路,所述第一乘法器电路用于通过从第一比特位置开始迭代地处理操作数比特,来将掩码值乘以所述输入数据块和去掩码的所述结果值的组合以产生掩码校正值,其中所述第一比特位置由以下中的一个表示:最低有效比特和最高有效比特;
第二乘法器电路,所述第二乘法器电路用于通过从第二比特位置开始迭代地处理操作数比特,来将加掩码的散列密钥乘以所述输入数据块和所述去掩码的结果值的组合以产生加掩码的结果值,其中所述第二比特位置由以下中的一个表示:最低有效比特和最高有效比特,并且其中所述第二比特位置与所述第一比特位置不同。
CN201780060141.4A 2016-12-21 2017-12-13 保护并行乘法运算免受外部监测攻击 Active CN109791517B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662437396P 2016-12-21 2016-12-21
US62/437,396 2016-12-21
PCT/US2017/066052 WO2018118569A1 (en) 2016-12-21 2017-12-13 Protecting parallel multiplication operations from external monitoring attacks

Publications (2)

Publication Number Publication Date
CN109791517A true CN109791517A (zh) 2019-05-21
CN109791517B CN109791517B (zh) 2023-09-08

Family

ID=62627085

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780060141.4A Active CN109791517B (zh) 2016-12-21 2017-12-13 保护并行乘法运算免受外部监测攻击

Country Status (4)

Country Link
US (2) US10915667B2 (zh)
EP (1) EP3559811B1 (zh)
CN (1) CN109791517B (zh)
WO (1) WO2018118569A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112040086A (zh) * 2019-06-03 2020-12-04 湖北微模式科技发展有限公司 一种图像加密、解密方法及装置、设备和可读存储介质
CN112242186A (zh) * 2020-10-20 2021-01-19 山东省千佛山医院 一种血液检测结果输出定制化系统
CN113032797A (zh) * 2019-12-24 2021-06-25 意法半导体股份有限公司 在处理设备中执行加密操作的方法
CN113141255A (zh) * 2020-01-17 2021-07-20 意法半导体股份有限公司 用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2666303C1 (ru) * 2017-12-14 2018-09-06 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ и устройство для вычисления хэш-функции
FR3086483B1 (fr) * 2018-09-24 2020-10-09 Idemia France Procede de production d'un code d'authentification et dispositif de traitement cryptographique associe
CN110543481B (zh) * 2019-08-23 2022-12-06 紫光展锐(重庆)科技有限公司 数据处理方法、装置、计算机设备及存储介质
US11816229B2 (en) * 2020-08-20 2023-11-14 Intel Corporation Plaintext integrity protection mechanism
US20220083651A1 (en) * 2020-09-17 2022-03-17 Intel Corporation Protection of authentication tag computation against power and electromagnetic side-channel attacks
US20210297243A1 (en) * 2021-06-08 2021-09-23 Intel Corporation Permutation cipher encryption for processor-accelerator memory mapped input/output communication

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283714A1 (en) * 2004-06-19 2005-12-22 Samsung Electronics Co., Ltd. Method and apparatus for multiplication in Galois field, apparatus for inversion in Galois field and apparatus for AES byte substitution operation
US20100228928A1 (en) * 2009-03-04 2010-09-09 Micron Technology, Inc. Memory block selection
JP2012239171A (ja) * 2011-05-11 2012-12-06 Thomson Licensing サイドチャンネル攻撃に対する抵抗力のあるモジュラー累乗法及び装置
US20130301826A1 (en) * 2012-05-08 2013-11-14 Intel Corporation System, method, and program for protecting cryptographic algorithms from side-channel attacks
US20140006753A1 (en) * 2011-12-22 2014-01-02 Vinodh Gopal Matrix multiply accumulate instruction
CN104168264A (zh) * 2014-07-11 2014-11-26 南京航空航天大学 一种低成本、高安全性物理不可克隆函数
CN104579635A (zh) * 2015-01-27 2015-04-29 聚辰半导体(上海)有限公司 可循环迭代抗侧信道攻击的des系统及实现可重映射sbox方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4251875A (en) 1979-02-12 1981-02-17 Sperry Corporation Sequential Galois multiplication in GF(2n) with GF(2m) Galois multiplication gates
US7177891B2 (en) 2002-10-09 2007-02-13 Analog Devices, Inc. Compact Galois field multiplier engine
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
TWI342703B (en) 2007-05-10 2011-05-21 Ind Tech Res Inst Low-latency method and apparatus of ghash operation for authenticated encryption galois counter mode
US20090080646A1 (en) 2007-09-21 2009-03-26 Chih-Hsu Yen Method And Architecture For Parallel Calculating Ghash Of Galois Counter Mode
US8340280B2 (en) 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
CN101901127B (zh) 2009-05-31 2012-07-25 国际商业机器公司 一种迦罗华域乘法器
US9959429B2 (en) 2013-03-15 2018-05-01 Cryptography Research, Inc. Asymmetrically masked multiplication
EP2884387B1 (en) * 2013-12-13 2016-09-14 Thomson Licensing Efficient modular addition resistant to side-channel attacks

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283714A1 (en) * 2004-06-19 2005-12-22 Samsung Electronics Co., Ltd. Method and apparatus for multiplication in Galois field, apparatus for inversion in Galois field and apparatus for AES byte substitution operation
US20100228928A1 (en) * 2009-03-04 2010-09-09 Micron Technology, Inc. Memory block selection
JP2012239171A (ja) * 2011-05-11 2012-12-06 Thomson Licensing サイドチャンネル攻撃に対する抵抗力のあるモジュラー累乗法及び装置
US20140006753A1 (en) * 2011-12-22 2014-01-02 Vinodh Gopal Matrix multiply accumulate instruction
US20130301826A1 (en) * 2012-05-08 2013-11-14 Intel Corporation System, method, and program for protecting cryptographic algorithms from side-channel attacks
CN104168264A (zh) * 2014-07-11 2014-11-26 南京航空航天大学 一种低成本、高安全性物理不可克隆函数
CN104579635A (zh) * 2015-01-27 2015-04-29 聚辰半导体(上海)有限公司 可循环迭代抗侧信道攻击的des系统及实现可重映射sbox方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112040086A (zh) * 2019-06-03 2020-12-04 湖北微模式科技发展有限公司 一种图像加密、解密方法及装置、设备和可读存储介质
CN112040086B (zh) * 2019-06-03 2023-06-06 湖北微模式科技发展有限公司 一种图像加密、解密方法及装置、设备和可读存储介质
CN113032797A (zh) * 2019-12-24 2021-06-25 意法半导体股份有限公司 在处理设备中执行加密操作的方法
CN113141255A (zh) * 2020-01-17 2021-07-20 意法半导体股份有限公司 用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法
CN112242186A (zh) * 2020-10-20 2021-01-19 山东省千佛山医院 一种血液检测结果输出定制化系统
CN112242186B (zh) * 2020-10-20 2021-04-06 山东省千佛山医院 一种血液检测结果输出定制化系统

Also Published As

Publication number Publication date
CN109791517B (zh) 2023-09-08
EP3559811A4 (en) 2021-03-10
WO2018118569A1 (en) 2018-06-28
EP3559811A1 (en) 2019-10-30
US20200026883A1 (en) 2020-01-23
US20210256165A1 (en) 2021-08-19
EP3559811B1 (en) 2024-04-24
US10915667B2 (en) 2021-02-09

Similar Documents

Publication Publication Date Title
CN109791517A (zh) 保护并行乘法运算免受外部监测攻击
CN110235409B (zh) 使用同态加密被保护的rsa签名或解密的方法
US11507705B2 (en) Determining cryptographic operation masks for improving resistance to external monitoring attacks
US20090092245A1 (en) Protection Against Side Channel Attacks
US20210152331A1 (en) Protecting polynomial hash functions from external monitoring attacks
US20030194086A1 (en) Method for strengthening the implementation of ECDSA against power analysis
US20120045061A1 (en) Cryptography circuit particularly protected against information-leak observation attacks by the ciphering thereof
CN106464483B (zh) 用于电子部件实现椭圆曲线密码算法的应对方法、电子电路和电子系统
CN110663215A (zh) 在白盒场景中的椭圆曲线点乘设备和方法
US20130259226A1 (en) Methods and apparatus for correlation protected processing of cryptographic operations
JP7155173B2 (ja) 外部監視攻撃からモジュラーインバージョン演算を保護すること
CN106656471A (zh) 一种用户敏感信息的保护方法和系统
CN109936437B (zh) 一种基于d+1阶掩码的抗功耗攻击方法
EP3475825B1 (en) Cryptographic operations employing non-linear share encoding for protecting from external monitoring attacks
CN111602367A (zh) 用于保护在使白盒密码算法安全的对策中使用的熵源的方法
Ramzanipour et al. Practical Differential Fault Analysis on CRAFT, a Lightweight Block Cipher.
Qahur Al Mahri et al. Fault analysis of AEZ
Kim et al. Protecting secret keys in networked devices with table encoding against power analysis attacks
JP7383949B2 (ja) 情報処理装置及びプログラム
CN106961331A (zh) 一种用于ntru抗侧信道攻击的随机旋转密钥rkr的方法
Lin et al. A DCA-resistant Implementation of SM4 for the White-box Context
Jamal et al. Image Encryption Based on Elliptic Curve Points and Linear Fractional Transformation
CN114640439A (zh) 一种针对高级加密标准aes算法的掩码防护方法及装置
CN117768099A (zh) 一种数据处理方法、装置、设备及可读存储介质
Barker et al. Techniques to Enhance Security of an Authentication Protocol

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