CN114830597A - 混淆用于椭圆曲线密码学的密码参数及相关***和设备 - Google Patents
混淆用于椭圆曲线密码学的密码参数及相关***和设备 Download PDFInfo
- Publication number
- CN114830597A CN114830597A CN202080086611.6A CN202080086611A CN114830597A CN 114830597 A CN114830597 A CN 114830597A CN 202080086611 A CN202080086611 A CN 202080086611A CN 114830597 A CN114830597 A CN 114830597A
- Authority
- CN
- China
- Prior art keywords
- cryptographic
- obfuscated
- parameter
- parameters
- component
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/723—Modular exponentiation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3252—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Storage Device Security (AREA)
Abstract
本公开描述了一种混淆过程,用于混淆密码运算的密码参数,所述密码运算诸如为椭圆曲线密码学和椭圆曲线点乘法中使用的计算。此类混淆过程可用于混淆设备特性,否则可能会泄露关于所述密码参数、密码运算或更一般的密码运算的信息,诸如有时从侧信道攻击和格子攻击收集的信息。
Description
相关申请的交叉引用
本申请根据35U.S.C.§199(e)要求2019年12月17日提交的美国临时专利申请序列号62/949,285的权益,其各自的公开内容据此全文以引用方式并入本文。
技术领域
一个或多个实施方案整体涉及椭圆曲线密码学,并且更具体地讲,一些实施方案更一般地涉及在执行椭圆曲线密码学时混淆参数和设备操作。
背景技术
在密码学中使用大量的计算,包括计算私钥、共享密钥和公钥。执行此类计算的设备用于促进设备之间的安全和可信通信。
随着网络通信的发展,密码方案已经变得更加先进且复杂。攻击和规避此类密码方案的方法也已经变得更加复杂,从而需要技术安全性的进一步发展。侧信道攻击是使用从***的实施方式中收集的信息而不是利用算法本身的弱点的一种形式的攻击。因此,本公开的发明人认识到,混淆和盲化由执行密码学计算的设备呈现出的物理和电过程是有利的。
附图说明
为了容易地识别对任何特定元素或动作的讨论,参考标记中最重要的一个或多个数字是指首次介绍该元素的图号。
图1是描绘根据实施方案的能够改进的特定示例性加密和信息共享过程的流程图。
图2A是描绘根据实施方案的能够改进的特定示例性过程的流程图。
图2B是描绘根据实施方案的能够改进的特定示例性过程的流程图。
图3是描绘根据一个实施方案的执行混淆的密码运算的一般过程的流程图。
图4A和图4B是描绘根据一个或多个实施方案的用于混淆密码运算的过程的流程图。
图5是描绘根据一个或多个实施方案的用于混淆密码运算的电路的功能框图。
图6是描绘根据一个实施方案的包括电子***的加密引擎的***的框图,该电子***被配置为根据图3、图4以及图4A和图4B所描绘的过程和图5所描绘的电路来混淆密码运算。
图7是描绘电路的框图,在一些实施方案中,该电路可用于实施本文所公开的各种功能、操作、动作、过程和/或方法,包括在硬件电路上。
具体实施方式
在以下具体实施方式中,参考了形成本公开的一部分的附图,并且在附图中以举例的方式示出了可实施本公开的实施方案的特定示例。充分详细地描述了这些实施方案,以使本领域的普通技术人员能够实践本公开。然而,可利用其他实施方案,并且可在不脱离本公开的范围的情况下进行结构、材料和过程的变化。本文所呈现的图示并不旨在为任何特定方法、***、装置或结构的实际视图,而仅仅是用于描述本公开的实施方案的理想化表示。本文所呈现的附图未必按比例绘制。为了读者的方便,各附图中的类似结构或部件可保持相同或相似的编号;然而,编号的相似性并不意味着该结构或部件在尺寸、组成、配置或任何其他属性方面必须是相同的。
应当容易理解,如本文一般所述并且在附图中示出的实施方案的部件可以许多种不同的配置来布置和设计。因此,对各种实施方案的以下描述并不旨在限制本公开的范围,而是仅代表各种实施方案。虽然实施方案的各个方面可在附图中呈现,但是附图未必按比例绘制,除非特别指明。
此外,所示出和描述的特定实施方式是示例,并且不应理解为是实施本公开的唯一方式,除非本文另外指明。元件、电路和功能可以框图形式示出,以便不以不必要的细节模糊本公开。相反,所示出和描述的特定实施方式仅为示例性的,并且不应理解为实施本公开的唯一方式,除非本文另外指明。另外,块定义和各个块之间逻辑的分区是特定实施方式的示例。对于本领域的普通技术人员将显而易见的是,本公开可通过许多其他分区解决方案来实践。在大多数情况下,已省略了关于定时考虑等的细节,其中此类细节不需要获得本公开的完全理解,并且在相关领域的普通技术人员的能力范围内。
本领域的普通技术人员将会理解,可使用多种不同技术和技法中的任何一者来表示信息和信号。例如,可在整个本说明书中参考的数据、指令、命令、信息、信号、位、符号和芯片可由电压、电流、电磁波、磁场或粒子、光场或粒子或者它们的任何组合来表示。为了清晰地呈现和描述,一些附图可以将信号示出为单个信号。本领域的普通技术人员应当理解,信号可表示信号总线,其中总线可具有多种位宽度,并且本公开可在包括单个数据信号在内的任意数量的数据信号上实现。
结合本文所公开的实施方案描述的各种例示性逻辑块、模块和电路可以用通用处理器、专用处理器、数字信号处理器(DSP)、集成电路(IC)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立栅极或晶体管逻辑部件、分立硬件部件或设计成执行本文所描述的功能的其任何组合来实现或执行。通用处理器(在本文中也可称为主机处理器或仅称为主机)可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可实现为计算装置的组合,诸如DSP和微处理器的组合、多个微处理器、与DSP核结合的一个或多个微处理器或任何其他此类配置。在通用计算机被配置为执行与本公开的实施方案相关的计算指令(例如,软件代码)时,包括处理器的通用计算机被认为是专用计算机。
实施方案可根据被描绘为流程图、流程示意图、结构图或框图的过程来描述。虽然流程图可将操作动作描述为连续过程,但是这些动作中的许多动作可按照另一序列、并行地或基本上同时地执行。此外,可重新安排动作的顺序。过程可对应于方法、线程、函数、过程、子例程、子程序等。此外,本文公开的方法可通过硬件、软件或这两者来实施。如果在软件中实现,这些函数可作为一个或多个指令或代码存储或传输到计算机可读介质上。计算机可读介质包括计算机存储介质和通信介质两者,该通信介质包括有利于将计算机程序从一个位置传递到另一个位置的任何介质。
使用诸如“第一”、“第二”等名称对本文的元件的任何引用不限制那些元件的数量或顺序,除非明确陈述此类限制。相反,这些名称可在本文中用作在两个或更多个元件或元件的实例之间进行区分的便利方法。因此,提及第一元件和第二元件并不意味着在那里只能采用两个元件,或者第一元件必须以某种方式在第二元件之前。此外,除非另外指明,一组元件可包括一个或多个元件。
如本文所用,涉及给定参数、属性或条件的术语“基本上”是指并且包括在本领域的普通技术人员将会理解的给定参数、属性或条件满足小程度的方差的程度,诸如例如在可接受的制造公差内。以举例的方式,取决于基本上满足的具体参数、属性或条件,参数、属性或条件可至少满足90%、至少满足95%、或甚至至少满足99%。
如本文所用,对“密码过程”的引用是指包括计算的操作,这些计算形成与执行加密和解密,生成并且解析密钥、子密钥或执行与密码术或密码学相关的任何其他步骤或计算相关的协议的一部分或全部。密码过程可由设备执行,例如,基于固件或软件执行协议的一部分的密码处理器或通用处理器。密码过程的非限制性示例包括用于生成密码信息(例如,用于生成公钥、私钥、共享密钥和任何各种中间密钥,但不限于此)的算法,以及用于交换密码信息、身份信息以及用于协定协议的协议。
如本文所用,“混淆设备特性”是指使设备的任何外部可观察特性和从其收集的信息变得模糊或不清楚,包括但不限于操作期间设备的特性。此类特性可包括但不限于:功率消耗、定时信息、磁场信息、热特征信息、其他特征上类似的信息,以及它们的组合。混淆并不意味着无法从设备特性中辨别出信息,尽管可能如此,但混淆旨在包括使此类信息更无用或者需要更多处理以使得此类信息有用。
私钥中的长零字符串允许黑客通过在计算期间分析芯片的功率特征(powersignature)来收集关于私钥的信息。为了完全隐藏在密码运算中使用的私钥的值,使用具有与私钥相同长度的随机数来混淆私钥的值。另外,专用常数值被添加到私钥以确保密钥的任何相关部分都不为零。用于处理私钥的修改算法然后用于从混淆的私钥中提取正确的信息。
图1是描绘根据本公开的发明人已知的现有技术的双方(A方和B方)之间的加密信息交换过程100(例如,公钥/私钥认证和/或密钥协定协议,但不限于此)的泳道流程图。图1也是可通过本文所公开的混淆来改进的加密信息交换过程的非限制性示例。
图1所描绘的信息交换可在用于发送和接收经由有线/无线路径的连接的任何合适的组合/子组合建立的消息的任何合适的通信链路上发生。连接可包括网络连接诸如互联网或专用网络、不需要互联网或网络访问的本地连接、通信接口诸如用于串行和并行通信的接口,以及它们的组合/子组合,但不限于此。
在操作102中,过程100的A方和B方彼此交换它们的公钥。作为非限制性示例,A方和/或B方可检索相应的先前生成的公钥或者使用先前生成的私钥来生成其相应的公钥,并且将这样的公钥发送给彼此。
在操作104和操作106中,过程100的A方和B方各自使用它们相应的私钥和从操作102接收的公钥来计算共享密钥。作为非限制性示例,在操作104和操作106中执行的计算可包括根据用于公钥/私钥认证(例如,所谓的“签名并且验证”,但不限于此)或用于由A方和B方实施的特定密码协定协议的密码算法的密码运算。密码协定协议的非限制性示例包括椭圆曲线Diffie-Hellman或椭圆曲线数字签名算法。密码算法的非限制性示例包括椭圆曲线点乘法和模幂。
在图1所描绘的示例中,当在操作114中成功地计算密钥协定协议的必要密码信息并且建立安全通信链路时,理论上,A方和B方可使用安全通信链路,并且更具体地,使用公钥类型加密诸如“签名并且验证”来彼此通信。在操作108中,过程100的A方使用在操作104中计算的共享密钥来加密信息。在操作110中,A方向B方发送包括操作108的加密信息的消息。在操作112中,B方使用在操作106中计算的共享密钥并且使用双方提前协定的任何其他工具(诸如在操作102中共享的A方的公共密钥)来解密从A方接收的加密信息。
在过程诸如过程100中,在各方交换加密信息的情况下,A方和B方可执行多个密码运算中的任何一个密码运算,并且攻击者可观察到这些密码运算。图2A和图2B描绘可以观察到的密码过程的两个非限制性示例:图2A描绘了使用椭圆曲线点乘法获得公钥的过程200a,并且图2B描绘了使用椭圆曲线点乘法获得共享密钥的过程200b。
在椭圆曲线密码点乘法的情况下,私钥为密码参数“a”,其指定在给定椭圆曲线上从生成器点G到目的地点P的变换。可用于在椭圆曲线上从生成器点G到达目的地点P的算法的非限制性示例是将生成器点G与自身相乘一定次数或使其翻倍,然后与自身相加(所谓的“双加”)。在这种情况下,私钥是生成器点G与其自身相乘的次数。需注意,按照惯例,加法算法落入术语“椭圆曲线点乘法”,因此dG可以指指数运算G1、G2…Gd,并且可以指加法运算G、2G、3G…dG。本文所使用的具体非限制性示例是加法的,但其他形式的点乘法(包括指数的)不超出本公开的范围并且被具体设想。稍后将在本文中在数学上讨论椭圆曲线点乘法。
转至图2A所描绘的具体示例,在操作202中,过程200a获得给定椭圆曲线上的生成器点G。作为非限制性示例,生成器点G和椭圆曲线函数可以从共享生成器点G和椭圆曲线函数,或者共享椭圆曲线函数和用于计算生成器点G的参数的机构获得。加密通信的各方可以提前约定使用预先确定的生成器点G或椭圆曲线函数、由特定机构提供的生成器点G或椭圆曲线函数,或者其计算方法和参数。生成器点G有时也被称为基点Q。
在操作204中,过程200a获得私钥“a”。私钥可以是数字或字符串。私钥可根据需要已经被预先计算并且被存储,或者被即时计算。
在操作206中,过程200a至少部分地基于其私钥“a”来计算公钥“Ha”。公钥Ha、私钥“a”和生成器点G之间的关系由等式1表示:
aG=Ha
等式(1)
更具体地,可通过使用私钥“a”和生成器点G来执行点乘法算法来计算公钥Ha。
在操作208中,过程200a与另一方共享公钥Ha,并且获得另一方的公钥“Hb”。
转至图2B在操作210中描绘的特定示例,过程200b计算共享密钥“S”。例如,过程200b可根据等式2使用其他方公钥Hb及其自身的私钥“a”来计算共享密钥“S”:
aHb=S
等式(2)
类似地,另一方使用其私钥和公钥Ha来计算另一共享密钥“S”。需注意,如果每一方使用其自身的私钥来计算其公钥,并且使用另一方的公钥及其自身的私钥来计算共享密钥“S”,则每一方对共享密钥S的相应计算受到另一方的私钥的影响。
在操作212中,存储从操作210获得的共享密钥“S”。如果按预期执行密钥协定协议,则共享密钥“S”是A方和B方所公知的。由于共享密钥“S”实际上从未在执行密钥协定协议的各方之间进行交换,所以监听它们的通信的未授权方没有机会对其进行拦截。因此,共享密钥“S”可以安全地用于对A方和B方之间传送的信息进行加密和解密。例如,在椭圆曲线Diffie-Hellman密钥交换的典型实施方式中,可使用共享密钥“S”来导出用于加密通信的会话密钥。
由过程200a和过程200b例示的密码过程中的每一个密码过程可包括一个或多个密码运算。例如,椭圆曲线点乘法可在过程200a的操作206中用于计算公钥Ha,并且还可以在过程200b的操作210中用于计算共享密钥“S”。
攻击者希望辨别关于密码运算的信息,这些密码运算依赖于秘密密码参数和密码信息,诸如私钥和共享密钥,但不限于此。一些攻击者所使用的一种技术是观察执行使用秘密密码信息的密码运算的设备呈现出的特性。可以观察到的设备呈现出的特性的非限制性示例包括设备的定时、功率消耗、热变化和磁场产生,该设备可由观察者用来获得关于由该设备执行的密码运算的信息。利用从设备观察到的信息以及所观察到的信息与密码运算的输入之间的已知(或可疑)关系,攻击者可以获得密码运算的输入。作为非限制性示例,攻击者可以在计算期间至少部分地基于输入和定时/功率特征之间的已知关系从设备的此类定时/功率特征获知输入。
通过混淆一个或多个密码运算,输入和所呈现出的特性之间的已知或可疑关系变得更弱,因此计算、密钥和其他秘密密码信息可对攻击者进一步隐藏。
有时采用快捷方式来加速密码运算,例如,以适应关于处理器、电源或存储器的限制。本公开的发明人认识到,这些快捷方式可创建标记和由此导致的可由攻击者观察和使用的设备呈现出的特性,包括这些特性是为了规避或克服混淆密码过程的尝试。
椭圆曲线密码学(ECC)的一个重要方面是椭圆曲线点乘法(ECPM)(使用ECPM的ECC在本文中也称为椭圆曲线密码学点乘法或“ECCPM”)。ECPM在曲线上产生目的地点P,并且基点Q(在ECC中称为生成点G)和目的地点P(在ECC中称为公钥Ha)之间的关系是标量“d”(在ECC中称为私钥“a”)。
在本公开中,“点乘法”被用作“椭圆曲线点乘法”的简写。使用与用于密码运算的其他曲线的点乘法不超出本公开的范围,诸如模幂,但不限于此。设想与非双加类型的算法(例如,所谓的“紧凑算法”,诸如在2016年1月的互联网研究任务组(IRTF)的征求意见稿(RFC)-7748中指定的X25519 Diffie Hellman,但不限于此)一起使用并且不超出本公开的范围,例如,与用于转换双加格式的转换器一起使用。
可使用不同的方法来防止在执行点乘法时一方的私钥的公开。例如,假设椭圆曲线E由等式3表示:
E:y2=x3+ax+b
等式(3)
假设椭圆曲线E上的基点Q进行点乘以到达目的地点P,则Q和P之间的关系由等式4表示,其中“*”是点乘法的数学运算符:
P=d*Q
等式(4)
算法1定义了用于执行点乘法的从左到右的基于二进制窗口的类型的算法:
算法1
有时在ECC的点乘法中采用快捷方式来加速计算。作为非限制性示例,为了加速算法1中的计算,有时标量“d”的两个或两个以上的位(但少于所有位)用于每个步骤。位数量被称为u位的窗口大小,并且标量d和基点Q的u位用于算法1的每次迭代。在不超出范围的情况下可使用固定的和可变的窗口大小,但除非另有明确说明,否则在本文所讨论的实施方案和示例中使用固定的窗口大小和固定的窗口。
有时跳过算法1的步骤2.2,但跳过步骤2.2可导致设备的可观察的定时公开(例如,可用于确定定时信息的设备呈现出的一个或多个可观察的特性)。更具体地,为了获得定时恒定点乘法,如果跳过了步骤2.2,则可以将虚拟加法添加到算法1。这可以模糊定时公开,但虚拟计算是唯一的修改,并且执行此类计算的设备可呈现出对应于唯一修改的可观察的功率特征。可通过侧信道攻击(SCA)来观察这些功率特征,并且因此可获得标量的零位。在辨别零位之后,网格攻击或另一攻击可用于恢复标量的其他位,在一些情况下包括纯文本位(即,未被盲化或以其他方式变换的位)。
作为另一非限制性示例,在一些情况下,纯文本标量可用于点乘法。如果使用相同的标量并且将其重新用于点乘法,则可以使用轮廓攻击(profile attack)和其他聚类和相关方法来获得标量。
为了解决标量的可能公开,本公开的发明人已知的技术是在标量被提供为点乘法的参数之前“盲化”该标量,使得将不同的盲化标量用于每个特定的点乘法。假定等式3的基点“Q”(2维标量)的阶数“n”(1维标量),则发明人已知的一种方法是通过用随机数r和阶数n的简单相加来形成新的随机化标量k(标量“d”在本文中也可称为“纯文本标量”以将其与随机化标量或进一步处理的标量区分开),如等式5所表示:
k=d+r*n
等式(5)
按照惯例,阶数“n”为满足n*Q=∞的一维标量。因此,r*n*Q=∞,则等式5可被重写并且由等式6表示:
k*Q=d*Q+r*n*Q=d*Q+∞=d*Q
等式(6)
每次执行点乘法时,生成并且使用新的随机标量。虽然该方法确实混淆了纯文本标量的内容,但本公开的发明人认识到这些技术中的若干缺点:
首先,如果所选择的标量包括连续零(即,归零位)的游程,那么如果将任何特殊加法(即,虚拟加法)应用于归零位,则可以呈现出并且观察特殊功率特征。
其次,通常,纯文本标量d和阶数n具有相同的位长度,并且随机数r通常为至少32位长。因此,根据等式5和等式6,随机化标量k将比纯文本标量d长至少32位,(与较小随机化标量k相比)这减慢了ECPM计算的速度。作为特定的非限制性示例,如果纯文本标量为8×32位,则如果生成并且使用随机化标量k,则ECPM过程将减慢12.5%。
接下来,对于一些ECC曲线和基点Q,阶数“n”可具有非常长的不间断的零值位。作为特定的非限制性示例,假设“n”是具有长的不间断的0值位序列的64位数。如果使用32位随机数“r”来盲化“d”,则至少32位的“d”将不会被盲化。相反,如果使用64位随机数“r”来盲化标量“d”,则随机化标量“k”将比“d”长64位,因此计算将慢得多(待生成密码字典(crunch)的位更多)。实际上,不间断的零值位非常长。因此,任何先前已知的混淆方法可能并不是足够有效的(例如,在计算上有效,但不限于此)。作为特定的非限制性示例,来自等式5的secp224k1密钥对的“n”为n=01 00000000 00000000 00000000 0001DCE8 D2EC6184CAF 0A971 769FB1F7。为了使用该阶数“n”使用等式5来混淆整个纯文本标量“d”,将多于96的位添加到原文本标量“d”,这极大地降低了ECPM的效率。
一般来讲,本公开的发明人认识到需要一种没有上述一些或全部缺点的混淆过程。
本发明的一个或多个实施方案整体涉及一种混淆过程,该混淆过程可应用于密码参数(例如,私钥,但不限于此)以获得完全盲化的混淆的密码参数,并且因此混淆密码过程的密码运算。
图3是描绘根据一个或多个实施方案的用于混淆密码过程的密码运算的一般过程300的流程图。作为非限制性示例,过程300可应用于过程200a或过程200b的操作。
在操作302中,过程300获得一个或多个混淆参数。在一个或多个实施方案中,混淆参数可包括基于窗口的ECPM的窗口大小(例如,以位长度为单位)、待混淆的密码参数的长度,或将由混淆过程应用的随机性程度中的一者或多者,但不限于此。在一个或多个实施方案中,私钥、公钥或任何其他密码参数的长度可以用用来表示参数的位数量来表示,但不限于此。
在操作304中,过程300将混淆过程应用于密码过程的密码参数(例如,私钥或共享密钥,但不限于此)以获得混淆的密码参数。混淆过程被应用于整个密码参数,并且更具体地,可直接或间接地应用于如本文所讨论的密码参数的连续的、离散的、窗口大小的部分。在一个或多个实施方案中,密码参数的窗口大小的部分和/或其派生(例如,第一混淆的密码参数,但不限于此)可以是连续的或非连续的。
可获得具有与密码参数的位长度基本上相同的位长度的混淆的密码参数,即,相对于原始密码参数的位长度基本上不增加混淆的密码参数的位长度。通过使用随机化标量k的窗口大小的部分(例如,下文关于图4A和图4B所讨论的第一混淆的密码参数)、窗口大小的非零常数w,以及窗口大小的随机数r来计算变量e的窗口大小的部分,这些分量的每次迭代之和(例如,fi)是窗口大小的,并且窗口大小的总和的字符串(即,fi=v-->0)与随机化标量k以及因此标量d(密码参数)具有相同的位长度。在操作302中获得的混淆参数被用作应用于密码参数的混淆过程的参数。在不超出本公开的范围的情况下,其他参数可以另外与混淆过程一起使用。
在操作306中,过程300执行密码过程的密码运算以获得密码过程的密码信息。响应于在操作304中将混淆过程应用于密码参数而获得的混淆的密码参数被用作密码运算的参数。密码运算可包括本文所讨论的ECC的点乘法计算。
通过使用混淆的密码参数执行密码运算,可能更一般地公开关于密码运算、密码混淆参数和密码过程的信息的设备特性可以被混淆。作为非限制性示例,如果攻击者了解特定密码运算的输入与执行这些密码运算的设备呈现出的功率特征之间的关系,则密码运算的混淆将破坏该关系和/或功率特征的信息值。
图4A是描绘根据一个或多个实施方案的用于ECC的混淆过程400a的流程图。混淆过程400a是应用于过程300中的密码参数的混淆过程的非限制性示例。
通过一般论述,根据等式5A(下文)生成“简单地”或“第一”混淆的密码参数,并且将其重新格式化为具有三个分量的表达式:随机数、非零常数和可变分量。随机数为混淆的密码参数提供一定程度的随机性。非零常数确保不存在零的游程,并且可变分量确保混淆的密码参数与第一混淆的密码参数相关,并且因此与密码参数相关。此外,通过为每个分量选择长度并且可选地预先计算ECPM的某些结果,可以在基本上不增加大小的情况下盲化整个密码参数(即,混淆的密码参数并非有意义地长于(位长度)密码参数),并且因此对执行ECPM的复杂性的影响(如果有影响的话)可以忽略不计。
在操作402中,混淆过程400a获得一个或多个混淆参数,诸如密码参数长度、密码参数的每个窗口部分的窗口大小,以及随机性程度,但不限于此。
在操作404中,混淆过程400a将第一混淆过程应用于密码参数,从而获得第一混淆的密码参数。在一个实施方案中,第一混淆过程是根据等式5A的标量d到随机化标量k的变换。生成一维随机数r,简单地将其乘以阶数n并且添加到标量d以生成新的标量k,该算法一般被表示为等式5A:
k=d+r×n
等式5A
如上所述,标量d被等式5A盲化的程度取决于阶数n的零值的位的数量和随机数r的长度。优选地,随机数r的位长度将小于阶数n以简化处理。假定(下文所讨论的)等式7包括随机生成的分量z,则在等式5A中将阶数n乘以随机数r是可选的,在这种情况下,k将是新标量k,而不是随机化标量k。
在操作406中,混淆过程400a将第一混淆的密码参数重新格式化为对应于第一混淆的密码参数的随机化表达式。
图4B是描绘根据一个或多个实施方案的用于重新格式化第一混淆的密码参数的过程400b的流程图。随机表达式可具有至少三个分量:正非零常数w、随机数z,以及将w和z与k关联起来的变量e。随机化表达式对应于等式7:
k=e+ω+z
等式7
假定新标量k与标量d具有相同的位长度,则为了使等式7为真,e、w和z应当分别与新标量k以及因此标量d具有相同的位长度。可通过从新标量k中减去非零常数w和随机数z来计算变量e。这些分量e、w和z中的每一者可被存储并且用于执行ECCPM,换句话讲,等式7的表达式的右侧是标准的从左到右的ECCPM的输入。
为了清楚起见,此后将重新格式化的k称为新公式f。在重新格式化之后,fi(i=v-1,…,0)可表示为等式8,其中v是待处理的u位大小的部分的数量,因此是所执行的迭代的数量:
fi-v→0=((ei,u-1…ei,0)+(wi,u-1…wi,0)+(zi,u-1…zi,0))
等式8
继续参考图4B,在操作412处,过程400b获得对应于第一混淆的密码参数的表达式的第一分量,该第一分量具有非零常数值。该第一分量在本文中也可称为“非零常数w”。使用二进制算术来最小化计算优选地是肯定的,然而使用带符号的(即,正的或负的)二进制表示不超出本公开的范围。
非零常数w确保ECPM块的输入作为整体是非零值,否则可能导致执行ECPM的加密硬件公开特殊的功率特征。非零常数w可以是提前预先计算的或针对每个密码过程计算的所存储的整数。非零常数w具有窗口大小(即,u位)的位长度。作为非限制性示例,如果使用u位=3的窗口大小,则在从左到右的二进制算法中使用的每个窗口为3位长,并且3位用于表示非零常数w,该非零常数可具有1至7的值。
在操作414处,过程400b获得对应于第一混淆的密码参数的表达式的第二分量,该第二分量具有随机生成的值。该第二分量在本文中也可称为“随机数z”。随机数z确保每个运算中一定程度的随机性。随机数z为随机生成的整数(例如,使用非确定性数字生成、确定性数字生成或它们的组合,但不限于此),与随机标量k或标量d具有相同的位长度,或者针对新公式f的每个窗口大小的部分生成。例如,如果v是第一混淆的密码参数中的离散的(即,部分之间没有公共位)窗口大小的部分的数量,并且在非限制性示例中v=10,则随机数z可具有v个窗口大小的部分,或者随机数zv=0->10可包括十个随机生成的数字,每个数字由窗口大小的位数表示。
在操作416处,过程400b获得对应于第一混淆的密码参数的表达式的第三分量。该第三分量具有对应于第一混淆的密码参数、第一分量和第二分量的相应值之间的差的值。由于每个随机数z针对给定窗口大小的部分生成,因此变量e(即,ei)的特定窗口大小的部分可通过取第一混淆的密码参数k(即,ki)的特定窗口大小的部分与随机数z和非零常数w之和的差来计算。需注意,ei=v至e0的级联具有与第一混淆的密码参数和密码参数的相应位长度基本上相同的位长度。
当e+w+z的窗口大小的部分和基点Q根据新公式f由从左到右的二进制算法连续处理时,该处理由算法2表示:
算法2
在该新公式中,fi(i=v-1,…,0)将不再介于0和(2u-1)之间。从左到右的每个u位窗口大小的部分将绝不为零(避免可识别的功率特征以及/或者需要虚拟计算),并且其实际值可以介于1和(2u+1-1)之间,换句话讲,在2位和常数w=1的情况下,由于非零常数w和额外的随机性z对等式7的作用而介于1和7之间。
返回到图4A的混淆过程400a:对于u位的给定窗口大小,对于给定窗口大小的部分,存在由表达式e+w+z表示的有限数量的整数值,并且因此算法2的每次迭代都有有限数量的结果,即1*Q、2*Q、3*Q…m*Q,其中m是由f的u位大小的部分表示的最大整数。可选地,在操作408中,混淆过程400a计算并且存储响应于具有所获得的第一分量(过程400b的操作412)、第二分量(过程400b的操作414)和第三分量(过程400b的操作416)的表达式而执行的至少一些密码运算的结果。作为非限制性示例,混淆过程400a响应于新公式f和窗口大小u来计算和存储执行ECPM的结果。这些所存储的预先计算的值或“预先计算”可在算法2的每次迭代中用于fi*Q(步骤2.2),以降低计算复杂性。
结果及因此预先计算的数量与经由随机数z引入的随机性程度成比例。在一个或多个实施方案中,所计算和所存储的预先计算的数量m可通过经由随机数z引入的随机性程度来选择。在各种实施方案中,可通过将随机数z的窗口大小的部分(例如,最高有效位)的位位置的二进制值设置为二进制1来降低随机性程度,或者可通过添加更多不同的随机数z来增加随机性程度。
在操作410处,混淆过程400a执行密码过程的基于固定窗口的密码运算(例如,固定窗口ECPM或ME,但不限于此)以获得密码过程的密码信息。密码运算的参数包括随机化表达式。
如本文所用,术语“随机数”包括真随机数和伪随机数,除非上下文将向本领域的普通技术人员指示特定类型的随机数。作为非限制性示例,随机数生成可涉及片上非递归随机数生成器、线性反馈移位寄存器、随机数生成软件,以及它们的组合。随机数生成的非限制性示例包括确定性随机数生成、非确定性随机数生成,以及它们的组合。
需注意,根据上文所讨论的可能条件,不存在零值的情况,因此,与本公开的发明人已知的常规技术不同,不需要特殊的添加。原始标量d被完全/绝对地混淆为新公式f,并且来自阶数n的不间断的零值位(例如,连续的不间断的零值位)的长度将不影响混淆。当已经根据所公开的过程执行混淆时,这降低了算法2中使用的离散的窗口大小的部分之间的相关性的强度。相对于本公开的发明人已知的常规混淆过程,降低相关性的强度使得执行侧信道攻击(SCA)或其他相关或聚类攻击来获得标量d(更具体地,它所表示的密码参数)变得更加困难。需注意,新公式f的位长度可以与原始标量d的位长度相同或与之相比较短,因此与获得比原始标量长的混淆的标量的常规混淆过程相比,所公开的混淆过程不会对速度(例如,加密硬件的计算速率)产生不利影响。当对于ECPM执行从左到右的二进制算法时预先计算还节省了一些处理,因此在计算和存储预先计算所需的时间和存储器空间方面可存在一些折衷。
需注意,执行预先计算的设备呈现出的功率特征差异可来自读取预先计算的内容,但也可来自不同预先计算的地址。在一些实施方案中,为了进一步盲化用于预先计算的内容和地址,每次迭代可以用不同的随机数周期性地或随机地盲化/不盲化预先计算,这不会对ECC点乘法的效率产生不利影响。
需注意,在一些使用情况下,可存在适当的物理元件用来停止操纵原始标量d的尝试。在此类情况下,可能不需要在新公式f中包括随机数z,否则这将使得更加难以辨别可用于尝试操纵标量d的定时信息。在此类情况下,仍然可针对原始标量d的每u位添加非零值偏移量(即,非零常数w)以限制许多预先计算。限制预先计算的数量简化了对预先计算的地址和具有不同随机数的地址内容(例如,所存储的预先计算)的任何盲化。
需注意,可用存储器空间、呈现出功率特征的程度、密码过程易受外部操纵的程度,以及加密硬件的处理能力因设备和应用而变化。具体设想的是,本领域的普通技术人员可以修改上文所讨论的各种特性(诸如随机数z的随机性程度、常数w的值和预先计算的数量,但不限于此)以适应特定使用情况,所有这些都不超出本公开的范围。
图5是描绘被配置为执行混淆过程400a的电路500的功能框图。如图所示,电路500包括简单盲化乘法器502、加法器504、变换器506、ECCPM 508和预计算机ECPM 510的功能块,这些功能块被选择来强调对应于每个块及其输入和输出的处理逻辑的功能性。
简单盲化乘法器502是被配置为生成输入r和n的简单乘法的结果的一维乘法器。在此,简单盲化乘法器502被配置为通过执行输入(在此为随机数r和阶数n)的二进制乘法来生成结果Y。加法器504被配置为执行输入(在此为由简单盲化乘法器502生成的结果Y)和标量d的二进制加法。加法器504响应于结果Y和标量d的相加而生成随机化标量k。变换器506是被配置为将由加法器504生成的随机化标量k变换(例如,重新格式化,但不限于此)成对应于等式7中的表达式的新公式f(具有三个分量、变量e、非零常数w和随机数z)的处理逻辑。
预计算机(pre-computer)ECPM 510为椭圆曲线点乘法器,该椭圆曲线点乘法器被配置为对新公式f(标记为输入512)和基点Q的窗口大小的部分执行ECPM,以生成对ECCPM508可用的预先计算(例如,1Q,2Q…mQ)。ECCPM 508是椭圆曲线密码学点乘法器,该椭圆曲线密码学点乘法器可以使用由预计算机ECPM 510生成的预先计算来对新公式f(标记为输入512)和基点Q执行ECPM以生成点P。在各种实施方案中,由ECCPM 508和预计算机ECPM 510执行的ECPM可以是用于算法2的点乘法的从左到右的二进制方法,如上所述。
图6是描绘根据一个或多个实施方案的包括加密引擎606的***600的框图,该加密引擎被配置为使用如本文所公开的混淆(例如,执行过程400b以及/或者包括电路500)来执行ECCPM。
加密引擎606可以为或者形成电子***的一部分,诸如片上***或其他微电子设备,被配置为经由接口604向用户设备602(例如,微控制器或较高级别的***部件,但不限于此)提供密码服务。
加密引擎606包括存储器608,该存储器可以为只读存储器,包括存储器618,该存储器可以为静态随机存取存储器,以及处理器628。作为非限制性示例,用于执行密码运算614和混淆过程612的处理器可执行指令610存储在存储器608处,作为用于实施机器代码指令或内部状态机排序的微代码或另一硬件级指令,用于执行本文所讨论的用于混淆密码参数或用于执行ECPM和ECCPM的一些或全部操作。椭圆曲线信息616还存储在存储器608处,该存储器包括信息,诸如基点Q、系数、阶数n、ECM的模素数,以及ECCPM或ECCM的标准名称和类型,这些分别用于密码过程,诸如ECDH和ECDSA。
可变化的信息被存储在存储器618处,诸如预先计算620、标量622(即,标量d)、临时变量624(例如,第一混淆的密码参数(即,新的或随机化的标量k);完全混淆的密码参数(即,新公式f)及其分量(即,变量e、非零常数w和随机数z),以及椭圆曲线P上的点);以及密码信息626(例如,公开私有密钥、共享秘密、会话密钥,但不限于此)。
图7是描绘电路700的框图,在一些实施方案中,该电路可用于实施本文所公开的各种功能、操作、动作、过程和/或方法,包括在硬件电路上。电路700包括操作地联接到一个或多个装置(在本文中有时称为“存储装置704”)(诸如数据存储设备,但不限于此)的一个或多个处理器(在本文中有时称为“处理器702”)。存储装置704包括存储在其上(例如,存储在计算机可读存储器上)的机器可执行代码706,并且处理器702包括逻辑电路708。机器可执行代码706包括描述可由逻辑电路708实施(例如,由该逻辑电路执行)的功能元件的信息。逻辑电路708适于实施(例如,执行)由机器可执行代码706描述的功能元件。当执行由机器可执行代码706描述的功能元件时,电路700应被认为是被配置用于执行本文所公开的功能元件(诸如过程100、过程200a、过程200b、过程300、过程400a和过程400b的操作)的专用硬件,以及电路500的混淆过程的功能块和***600的块。在一些实施方案中,处理器702可被配置为按顺序、同时地(例如,在一个或多个不同的硬件平台上)或在一个或多个并行过程流中执行由机器可执行代码706描述的功能元件。
当由处理器702的逻辑电路708实施时,机器可执行代码706被配置为调整处理器702以执行本文所公开的实施方案的操作。例如,机器可执行代码706可被配置为调整处理器702以执行针对过程300、过程400a、过程400b所讨论的操作的至少一部分或全部,以及电路500。
处理器702可包括通用处理器、专用处理器、中央处理单元(CPU)、微控制器、可编程逻辑控制器(PLC)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立栅极或晶体管逻辑、分立硬件部件、其他可编程设备或被设计成执行本文公开的功能的它们的任何组合。在通用计算机被配置为执行与本公开的实施方案相关的计算指令(例如,软件代码)时,包括处理器的通用计算机被认为是专用计算机。需注意,通用处理器(在本文中也可称为主机处理器或简称主机)可以是微处理器,但在替代方案中,处理器702可包括任何常规处理器、控制器、微控制器或状态机。处理器702也可被实施为计算设备的组合,诸如DSP和微处理器的组合、多个微处理器、与DSP核心结合的一个或多个微处理器或任何其他此类配置。
在一些实施方案中,存储器704包括易失性数据存储器(例如,随机存取存储器(RAM))、非易失性数据存储器(例如,闪存存储器、硬盘驱动器、固态驱动器、可擦除可编程只读存储器(EPROM)等)。在一些实施方案中,处理器702和存储装置704可被实施为单个设备(例如,半导体器件产品、片上***(SOC),但不限于此)。在一些实施方案中,处理器702和存储装置704可被实施为单独的设备。
在一些实施方案中,机器可执行代码706可包括计算机可读指令(例如,软件代码、固件代码)。作为非限制性示例,计算机可读指令可由存储装置704存储,由处理器702直接访问,并且由处理器702至少使用逻辑电路708执行。同样作为非限制性示例,计算机可读指令可被存储在存储装置704上,被传输到存储器设备(未示出)以供执行,并且由处理器702使用至少逻辑电路708来执行。因此,在一些实施方案中,逻辑电路708包括能够以电的方式配置的逻辑电路708。
在一些实施方案中,机器可执行代码706可描述要在逻辑电路708中实施以执行功能元件的硬件(例如,电路)。该硬件可以从低级晶体管布局到高级描述语言的各种抽象级别中的任何一种进行描述。在高级抽象下,可使用硬件描述语言(HDL),诸如电气和电子工程师协会(IEEE)标准硬件描述语言(HDL),但不限于此。作为非限制性示例,可以使用VerilogTM,SystemVerilogTM或超大规模集成(VLSI)硬件描述语言(VHDLTM)。
HDL描述可根据需要以多种其他抽象级别中的任一种转换成描述。作为非限制性示例,高级描述可被转换为逻辑级描述诸如寄存器传送语言(RTL)、栅极级(GL)描述、布局级描述或掩模级描述。作为非限制性示例,由逻辑电路708的硬件逻辑电路(例如,栅极、触发器、寄存器,但不限于此)执行的微操作可在RTL中描述并且然后通过合成工具转换成GL描述,并且GL描述可通过安置和路由工具转换成布局级描述,该布局级描述对应于可编程逻辑设备的集成电路、分立栅极或晶体管逻辑部件、分立硬件部件或它们的组合的物理布局。因此,在一些实施方案中,机器可执行代码706可包括HDL、RTL、GL描述、掩模级描述、其他硬件描述或它们的任何组合。
在机器可执行代码706包括硬件描述(以任何抽象级别)的实施方案中,***(未示出,但包括存储装置704)可被配置为实现由机器可执行代码706描述的硬件描述。作为非限制性示例,处理器702可包括可编程逻辑设备(例如,FPGA或PLC),并且逻辑电路708可被电控制以将对应于硬件描述的电路实施到逻辑电路708中。同样作为非限制性示例,逻辑电路708可包括根据机器可执行代码706的硬件描述由制造***(未示出,但包括存储装置704)制造的硬连线逻辑部件。
无论机器可执行代码706包括计算机可读指令还是硬件描述,逻辑电路708都适于在实施机器可执行代码706的功能元件时执行由机器可执行代码706描述的功能元件。需注意,虽然硬件描述可能不直接描述功能元件,但硬件描述间接描述了由硬件描述所描述的硬件元件能够执行的功能元件。
作为非限制性示例,电路700可在利用ECC算法的安全密码***中实施,该ECC算法实施椭圆曲线点乘法,例如密钥卡令牌(诸如RSA SecurID,作为非限制性示例)、自动柜员机、包括密钥、硬件锁、软件许可证等的金融交易。
本领域的普通技术人员将了解本文所讨论的实施方案的许多应用。
作为非限制性示例,根据一个或多个实施方案混淆的密码过程可以与密钥协定协议一起使用,这些密钥协定协议涉及椭圆曲线点乘法和模幂化,诸如包括椭圆曲线DiffieHellman(ECDH)、椭圆曲线数字签名算法(ECDSA)、通用椭圆曲线密码学(ECC)算法,以及Rivest–Shamir–Adleman(RSA),但不限于此。
作为另一非限制性示例,本文所讨论的混淆过程可用于响应于来自处理器的查询而自动指示处理器混淆在密码过程中使用的参数。例如,所公开的混淆过程可响应于在混叠寄存器处接收到密码参数而自动发起,该混叠寄存器被存储器映射到逻辑电路,用于对密码参数应用混淆过程以获得混淆的密码参数。该混叠寄存器可以与一个或多个密码过程相关联。然后,混淆的密码参数可用作密码过程的密码运算的参数。
作为另一非限制性示例,使用本文所讨论的相同过程的混淆过程和密码过程可用于公钥签名***和签名验证,诸如生成会话密钥。
作为另一非限制性示例,用于混淆设备的外部可观察特性的技术包括但不限于可应用于涉及椭圆曲线点乘法(ECPM)的任何计算的技术。其他类似的情境不超出本公开的范围。作为非限制性示例,所公开的实施方案可应用于在Rivest-Shamir-Adleman(RSA)模幂引擎应用芯片中使用的模幂。在这种情况下,读取不同预先计算的相关性降低,并且因此攻击者将更难以通过在(由设备)读取混淆的预先计算期间观察功率特征来获得标量。
虽然混淆的密码参数(例如,随机化表达式或新公式f,但不限于此)的位长度与密码参数的位长度基本上相同,但应当理解,所公开的实施方案为本领域的普通技术人员提供了将位长度控制为与密码参数相同的位长度的选项。作为非限制性示例,如果需要,本领域的普通技术人员可以修改所公开的实施方案,以随着窗口大小和位长度(相对于密码参数或第一混淆的密码参数的位长度)的对应增加而增加可用随机数的范围。
如本公开内容所用,涉及多个元件的术语“组合”可包括所有元件的组合或某些元件的各种不同子组合中的任何一种组合。例如,短语“A、B、C、D或它们的组合”可指A、B、C或D中的任一个;A、B、C和D中的每一个的组合;以及A、B、C或D的任何子组合,诸如A、B和C;A、B和D;A、C和D;B、C和D;A和B;A和C;A和D;B和C;B和D;或C和D。
用于本公开,尤其是所附权利要求书中的术语(例如,所附权利要求书的主体,但不限于此)通常旨在作为“开放”术语(例如,术语“包括”应被解释为“包括但不限于”,术语“具有”应被解释为“至少具有”,术语“包括”应被解释为“包括但不限于”,但不限于此)。
另外,如果预期特定数量的引入的权利要求表述,则在权利要求中将明确叙述此类意图,并且在不进行此类表述的情况下,不存在此类意图。例如,作为对理解的辅助,以下所附权利要求书可包含使用引入性短语“至少一个”和“一个或多个”来引入权利要求叙述。然而,使用此类短语不应理解为暗示由不定冠词“一个”或“一种”引入的权利要求表述将包含此类引入的权利要求表述的任何特定权利要求限定于仅包含一个此类表述的实施方案,即使当相同的权利要求包括介绍性短语“一个或多个”或“至少一个”和不定冠词,诸如“一个”或“一种”(例如,“一个”和/或“一种”可被解释为指的是“至少一个”或“一个或多个”,但不限于此);使用定冠词来引入权利要求叙述也是如此。
另外,即使明确叙述了特定数量的所引入的权利要求叙述,本领域的技术人员也将认识到,此类叙述应被解译为旨在至少所叙述的数量(例如,无修饰的叙述“两项叙述”在没有其他修饰成分的情况下旨在至少两项叙述,或两项或更多项叙述,但不限于此)。此外,在使用类似于“A、B和C等中的至少一个”或“A、B和C等中的一个或多个”的惯例的那些情况下,通常此类构造旨在仅包括A、仅包括B、仅包括C、包括A和B两者、包括A和C两者、包括B和C两者或包括A、B和C三者等等。
此外,无论在说明书、权利要求书或附图中,呈现两个或更多个替代性术语的任何分离的词或措辞应当理解为考虑包括该术语中的一个术语、该术语中的任意一个术语或两个术语的可能性。例如,短语“A或B”应理解为包括“A”或“B”或“A和B”的可能性。
本公开的附加非限制性实施方案包括:
实施方案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中任一项所述的方法,还包括:通过设置对应于所述混淆的密码参数的表达式的分量的最高有效位来调整与所述混淆过程相关联的随机性程度,所述分量具有随机生成的值。
实施方案11:根据实施方案1至10中任一项所述的方法,还包括:响应于对应于所述密码参数的随机化表达式来执行基于固定窗口的密码运算。
实施方案12:一种电子***的加密引擎,包括:处理器;第一存储器,所述第一存储器上存储有处理器可执行指令,所述处理器可执行指令在由所述处理器执行时使所述处理器:将混淆过程应用于密码过程的整个密码参数以获得混淆的密码参数,其中所述混淆的密码参数的位长度与所述密码参数的位长度基本上相同;以及执行所述密码过程的密码运算以获得密码信息,其中所述密码运算的参数包括所述混淆的密码参数。
实施方案13:根据实施方案12所述的加密引擎,其中所述密码运算包括用于椭圆曲线点乘法运算或模幂运算的运算。
实施方案14:根据实施方案12和13中任一项所述的加密引擎,其中所述混淆过程被配置为:将第一混淆过程应用于所述密码参数以获得第一混淆的密码参数;以及将所述第一混淆的密码参数重新格式化为对应于所述第一混淆的密码参数的随机化表达式。
实施方案15:根据实施方案12至14中任一项所述的加密引擎,其中所述混淆过程被配置为:获得对应于所述第一混淆的密码参数的表达式的第一分量,其中所述第一分量具有非零值;获得对应于所述第一混淆的密码参数的所述表达式的第二分量,其中所述第二分量具有随机生成的值;以及获得对应于所述第一混淆的密码参数的所述表达式的第三分量,其中所述第三分量具有对应于所述第一混淆的密码参数、所述第一分量和所述第二分量的值之间的差的值。
实施方案16:根据实施方案12至15中任一项所述的加密引擎,其中所述混淆过程被配置为:预先计算执行所述密码运算中的至少一些密码运算得到的结果;以及将所述预先计算的结果存储在可写入存储器中。
实施方案17:一种具有机器可执行指令的计算机可读存储设备,所述机器可执行指令在由处理器执行时被配置为使所述处理器能够执行包括以下方面的操作:获得混淆参数;将混淆过程应用于密码过程的整个密码参数以获得混淆的密码参数,而不相对于所述密码参数的位长度增加所述混淆的密码参数的位长度,其中所述混淆过程的参数包括所述混淆参数;以及执行密码过程的密码运算以获得密码信息,其中所述密码运算的参数包括所述混淆的密码参数。
实施方案18:根据实施方案17所述的计算机可读存储设备,其中所述操作还包括:将第一混淆过程应用于所述密码参数以获得第一混淆的密码参数;以及将所述第一混淆的密码参数重新格式化为对应于所述第一混淆的密码参数的随机化表达式。
实施方案19:根据实施方案17和18中任一项所述的计算机可读存储设备,其中所述操作还包括:获得对应于所述第一混淆的密码参数的表达式的第一分量,其中所述第一分量具有非零值;获得对应于所述第一混淆的密码参数的所述表达式的第二分量,其中所述第二分量具有随机生成的值;以及获得对应于所述第一混淆的密码参数的所述表达式的第三分量,其中所述第三分量具有对应于所述第一混淆的密码参数、所述第一分量和所述第二分量的值之间的差的值。
虽然本文关于某些图示实施方案描述了本发明,但本领域的普通技术人员将认识到并理解本发明不受此限制。相反,在不脱离下文所要求保护的本发明的范围及其法律等同形式的情况下,可对图示实施方案和所述实施方案进行许多添加、删除和修改。此外,来自一个实施方案的特征可与另一个实施方案的特征组合,同时仍被包括在发明人所设想的本发明的范围内。
Claims (20)
1.一种混淆密码过程的至少一部分的方法,所述方法包括:
获得混淆参数;
将混淆过程应用于密码过程的整个密码参数,以获得具有与所述密码参数的位长度基本上相同的位长度的混淆的密码参数,其中所述混淆过程的参数包括所述混淆参数;以及
执行密码过程的密码运算以获得密码信息,其中所述密码运算的参数包括所述混淆的密码参数。
2.根据权利要求1所述的方法,其中所述将所述混淆过程应用于所述整个密码参数包括将混淆运算应用于所述密码参数的离散的窗口大小的部分。
3.根据权利要求1所述的方法,其中获得所述混淆参数包括获得密码参数长度、窗口大小和随机性程度中的一者或多者。
4.根据权利要求1所述的方法,其中所述将所述混淆过程应用于所述密码过程的所述整个密码参数以获得所述混淆的密码参数包括:
将第一混淆过程应用于所述密码参数以获得第一混淆的密码参数;以及
将所述第一混淆的密码参数重新格式化为对应于所述第一混淆的密码参数的随机化表达式。
5.根据权利要求4所述的方法,其中所述将所述第一混淆的密码参数重新格式化为对应于所述第一混淆的密码参数的所述随机化表达式包括:
获得对应于所述第一混淆的密码参数的表达式的第一分量,所述第一分量具有非零值;
获得对应于所述第一混淆的密码参数的所述表达式的第二分量,所述第二分量具有随机生成的值;以及
获得对应于所述第一混淆的密码参数的所述表达式的第三分量,所述第三分量具有对应于所述第一混淆的密码参数、所述第一分量和所述第二分量的值之间的差的值。
6.根据权利要求1所述的方法,还包括:
确保所述混淆的密码参数的长度与所述密码参数的长度相同。
7.根据权利要求1所述的方法,还包括:
获得具有与所述密码参数的位长度相同的位长度的第三分量。
8.根据权利要求1所述的方法,其中所述执行所述密码运算包括执行以下项中的一者:椭圆曲线点乘法运算或模幂运算。
9.根据权利要求1所述的方法,还包括:
预先计算响应于所述随机化表达式执行所述密码运算中的至少一些密码运算得到的结果。
10.根据权利要求1所述的方法,还包括:
通过设置对应于所述混淆的密码参数的表达式的分量的最高有效位来调整与所述混淆过程相关联的随机性程度,所述分量具有随机生成的值。
11.根据权利要求1所述的方法,还包括:
响应于对应于所述密码参数的随机化表达式来执行基于固定窗口的密码运算。
12.一种电子***的加密引擎,包括:
处理器;
第一存储器,所述第一存储器上存储有处理器可执行指令,所述处理器可执行指令在由所述处理器执行时使所述处理器:
将混淆过程应用于密码过程的整个密码参数以获得混淆的密码参数,其中所述混淆的密码参数的位长度与所述密码参数的位长度基本上相同;以及
执行所述密码过程的密码运算以获得密码信息,其中所述密码运算的参数包括所述混淆的密码参数。
13.根据权利要求12所述的加密引擎,其中所述密码运算包括用于椭圆曲线点乘法运算或模幂运算的运算。
14.根据权利要求12所述的加密引擎,其中所述混淆过程被配置为:
将第一混淆过程应用于所述密码参数以获得第一混淆的密码参数;以及
将所述第一混淆的密码参数重新格式化为对应于所述第一混淆的密码参数的随机化表达式。
15.根据权利要求14所述的加密引擎,其中所述混淆过程被配置为:
获得对应于所述第一混淆的密码参数的表达式的第一分量,其中所述第一分量具有非零值;
获得对应于所述第一混淆的密码参数的所述表达式的第二分量,其中所述第二分量具有随机生成的值;以及
获得对应于所述第一混淆的密码参数的所述表达式的第三分量,其中所述第三分量具有对应于所述第一混淆的密码参数、所述第一分量和所述第二分量的值之间的差的值。
16.根据权利要求12所述的加密引擎,其中所述混淆过程被配置为:
预先计算执行所述密码运算中的至少一些密码运算得到的结果;以及
将所述预先计算的结果存储在可写入存储器中。
17.一种具有机器可执行指令的计算机可读存储设备,所述机器可执行指令在由处理器执行时被配置为使所述处理器能够执行包括以下方面的操作:
获得混淆参数;
将混淆过程应用于密码过程的整个密码参数以获得混淆的密码参数,而不相对于所述密码参数的位长度增加所述混淆的密码参数的位长度,其中所述混淆过程的参数包括所述混淆参数;以及
执行密码过程的密码运算以获得密码信息,其中所述密码运算的参数包括所述混淆的密码参数。
18.根据权利要求17所述的计算机可读存储设备,其中所述操作还包括:
将第一混淆过程应用于所述密码参数以获得第一混淆的密码参数;以及
将所述第一混淆的密码参数重新格式化为对应于所述第一混淆的密码参数的随机化表达式。
19.根据权利要求18所述的计算机可读存储设备,其中所述操作还包括:
获得对应于所述第一混淆的密码参数的表达式的第一分量,其中所述第一分量具有非零值;
获得对应于所述第一混淆的密码参数的所述表达式的第二分量,其中所述第二分量具有随机生成的值;以及
获得对应于所述第一混淆的密码参数的所述表达式的第三分量,其中所述第三分量具有对应于所述第一混淆的密码参数、所述第一分量和所述第二分量的值之间的差的值。
20.根据权利要求18所述的计算机可读存储设备,其中所述操作还包括:
预先计算执行所述密码运算中的至少一些密码运算得到的结果;以及
将所述预先计算的结果存储在可写入存储器中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962949285P | 2019-12-17 | 2019-12-17 | |
US62/949,285 | 2019-12-17 | ||
PCT/US2020/058363 WO2021126379A1 (en) | 2019-12-17 | 2020-10-30 | Obfuscating cryptographic parameters used in elliptical curve cryptography, and related systems and devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114830597A true CN114830597A (zh) | 2022-07-29 |
Family
ID=73554505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080086611.6A Pending CN114830597A (zh) | 2019-12-17 | 2020-10-30 | 混淆用于椭圆曲线密码学的密码参数及相关***和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11936768B2 (zh) |
CN (1) | CN114830597A (zh) |
DE (1) | DE112020006160T5 (zh) |
WO (1) | WO2021126379A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113343283B (zh) * | 2021-07-30 | 2021-10-15 | 深圳前海微众银行股份有限公司 | 一种数据处理方法 |
IL285456A (en) * | 2021-08-08 | 2023-03-01 | Nuvoton Technology Corp | Protection against attack by carrier analysis |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2809893B1 (fr) * | 2000-06-02 | 2002-11-15 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique sur courbe elliptique |
US9497029B2 (en) * | 2012-09-28 | 2016-11-15 | Intel Corporation | Hardening of direct anonymous attestation from side-channel attack |
US10235506B2 (en) | 2015-05-05 | 2019-03-19 | Nxp B.V. | White-box modular exponentiation |
WO2018217535A1 (en) | 2017-05-26 | 2018-11-29 | Microchip Technology Incorporated | System, method, and apparatus for obfuscating device operations |
-
2020
- 2020-10-30 DE DE112020006160.4T patent/DE112020006160T5/de active Pending
- 2020-10-30 CN CN202080086611.6A patent/CN114830597A/zh active Pending
- 2020-10-30 US US17/086,007 patent/US11936768B2/en active Active
- 2020-10-30 WO PCT/US2020/058363 patent/WO2021126379A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
DE112020006160T5 (de) | 2022-10-06 |
WO2021126379A1 (en) | 2021-06-24 |
US20210184831A1 (en) | 2021-06-17 |
US11936768B2 (en) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Groß et al. | Domain-oriented masking: Compact masked hardware implementations with arbitrary protection order | |
Kim et al. | Design and implementation of a private and public key crypto processor and its application to a security system | |
US7961874B2 (en) | XZ-elliptic curve cryptography with secret key embedding | |
US7961873B2 (en) | Password protocols using XZ-elliptic curve cryptography | |
US8391477B2 (en) | Cryptographic device having tamper resistance to power analysis attack | |
AU782868B2 (en) | Information processing device, information processing method and smartcard | |
EP3596876B1 (en) | Elliptic curve point multiplication device and method for signing a message in a white-box context | |
EP1248409A2 (en) | Attack-resistant cryptographic method and apparatus | |
EP1808762B1 (en) | Encryption processing apparatus, encryption processing method, and computer program | |
US11824986B2 (en) | Device and method for protecting execution of a cryptographic operation | |
EP2622458A1 (en) | Protecting modular exponentiation in cryptographic operations | |
US11936768B2 (en) | Obfuscating cryptographic parameters used in elliptical curve cryptography, and related systems and devices | |
CN107896142B (zh) | 一种执行模幂运算的方法及装置、计算机可读存储介质 | |
JP2004304800A (ja) | データ処理装置におけるサイドチャネル攻撃防止 | |
US9722773B2 (en) | Method of determining a representation of a product of a first element and a second element of a finite set, method of evaluating a function applied to an element of a finite set and associated devices | |
Vijayakumar et al. | Comparative study of hyperelliptic curve cryptosystem over prime field and its survey | |
Abarzúa et al. | Survey on performance and security problems of countermeasures for passive side-channel attacks on ECC | |
US9590805B1 (en) | Ladder-based cryptographic techniques using pre-computed points | |
Arunachalam et al. | FPGA implementation of time-area-efficient Elliptic Curve Cryptography for entity authentication | |
US7983415B2 (en) | Method for performing iterative scalar multiplication which is protected against address bit attack | |
KR20020086005A (ko) | 타원곡선 암호 시스템을 위한 역원 연산기 | |
Lalonde | Private and public-key side-channel threats against hardware accelerated cryptosystems | |
AU2005203004B2 (en) | Information processing device, information processing method and smartcard | |
JP2008224830A (ja) | 耐タンパーベキ乗演算方法 |
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 |