CN108418688B - 用于椭圆曲线加密硬件加速的计算设备、方法和存储介质 - Google Patents
用于椭圆曲线加密硬件加速的计算设备、方法和存储介质 Download PDFInfo
- Publication number
- CN108418688B CN108418688B CN201810018115.1A CN201810018115A CN108418688B CN 108418688 B CN108418688 B CN 108418688B CN 201810018115 A CN201810018115 A CN 201810018115A CN 108418688 B CN108418688 B CN 108418688B
- Authority
- CN
- China
- Prior art keywords
- ecc engine
- signal
- response
- elliptic curve
- data
- 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
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
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/3033—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
-
- 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/12—Details relating to cryptographic hardware or logic circuitry
-
- 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/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
用于椭圆曲线加密(ECC)的技术包括一种具有ECC引擎的计算设备,该ECC引擎读取指示256位数据宽度或者384位数据宽度的数据路径选择器信号。ECC引擎从数据端口读取一个或多个参数,该参数具有通过数据路径选择器信号指示的数据宽度。ECC引擎从指令端口读取操作码,该操作码识别诸如椭圆曲线运算或素域算术运算之类的ECC运算。ECC引擎执行具有通过数据路径选择器识别的数据宽度的运算。ECC引擎将结果数据写入一个或多个输出端口,该结果数据具有通过数据路径选择器识别的数据宽度。ECC引擎可以利用指定的边信道保护等级来执行椭圆曲线运算。计算设备可以包括用于控制ECC引擎的加密驱动器。描述并且要求保护其它实施例。
Description
背景技术
当计算设备和电子通信网络继续以各种形式激增时,信息安全仍然是重要的问题。密码技术经常用于确保将电子信息安全地递送至其设想的接收者,并且用于确定请求对信息或其它设备的访问的设备和/或过程是否应该被准许这样的访问。公钥加密是典型地使用如下两个密钥的技术:私钥,其保持为秘密的;以及公钥,其可以自由地公开,用于定义一组受信任的计算设备中的成员。虽然公钥和私钥是相关的,但是根据公钥不能可行地确定私钥。
椭圆曲线加密(ECC)是一类基于使用有限域上的椭圆曲线的密码运算的公钥加密。ECC运算可以用于执行包括密钥交换和数字签名操作的传统的密码运算。例如,使用ECC运算的常见的密码算法包括用于密钥交换的椭圆曲线迪菲-赫尔曼(ECDH)、用于数字签名/验证操作的椭圆曲线数字签名算法(ECDSA)、用于认证的增强型隐私ID(EPID)、以及其它密码算法。
附图说明
本文中描述的概念在附图中通过示例而非限制的方式来示出。出于示出的简单和清晰,附图中示出的元件不必按比例绘制。在认为适合的地方,附图标记在附图之间重复以示出相对应或类似的元件。
图1是用于椭圆曲线加密(ECC)硬件加速的计算设备的至少一个实施例的简化的框图;
图2是可以通过图1的计算设备建立的环境的至少一个实施例的简化的框图;
图3是图1-图2的ECC引擎的至少一个实施例的简化的框图;
图4是图1-图3的ECC引擎的至少一个实施例的简化的引脚分配图;
图5是可以通过图1-图4的计算设备执行的用于驱动ECC引擎的方法的至少一个实施例的简化的流程图;
图6是可以通过图1-图4的计算设备执行的用于ECC硬件加速的方法的至少一个实施例的简化的流程图;并且
图7是可以通过图1-图4的计算设备执行的用于执行ECC运算的方法的至少一个实施例的简化的流程图。
具体实施方式
虽然本公开的概念容易进行各种修改和替代的形式,但是其特定的实施例已通过附图中的示例示出并且将在本文中详细地被描述。然而,应该理解的是,不是要将本公开的概念限制于公开的特定形式,而是相反,是要涵盖与本公开和所附权利要求一致的所有修改、等效物、以及替代物。
本说明书中的对“一个实施例”、“实施例”、“示出的实施例”等的引用指示描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以或者可以不必包括特定的特征、结构或特性。此外,这样的短语不必指的是相同的实施例。另外,当结合实施例对特定的特征、结构或特性进行描述时,可以认为的是,结合其它实施例来实现这样的特征、结构或特性是在本领域技术人员的知识内的,无论是否明确地对该实施例进行描述。此外,应该认识到的是,以“A、B和C中的至少一个”的形式包括在列表中的项可以表示(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。相似地,以“A、B或C中的至少一个”形式列出的项可以表示(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B 和C)。
在一些情况中,可以以硬件、固件、软件或者其任意组合中来实现所公开的实施例。还可以将公开的实施例实现为由一个或多个暂时性或非暂时性机器可读(例如,计算机可读)存储介质携带的或者存储在其上的指令,该指令可以由一个或多个处理器来读取和执行。机器可读存储介质可以体现为用于存储或发送以由机器(例如,易失性或非易失性存储器、介质光盘、或者其它介质设备)可读形式的信息的任意存储设备、机制、或其它物理结构。
在附图中,一些结构或方法特征可以以特定的布置和/或顺序示出。然而,应该认识到的是,这样的特定的布置和/或顺序可能不是必需的。而在一些实施例中,这样的特征可以以与示出的附图中示出的相比不同的方式和/或顺序来布置。此外,将结构或方法特征包括在特定的附图中不意味着暗示这样的特征在所有实施例中是必需的,并且在一些实施例中,这样的特征可以不被包括或者可以与其它特征组合在一起。
现在参考图1,在示出的实施例中,用于椭圆曲线加密(ECC)硬件加速的计算设备100包括处理器120和ECC引擎122。如以下描述的,通过处理器120执行的软件和/或固件可以向ECC引擎122卸载椭圆曲线密码运算。处理器120对ECC引擎122的数据路径选择线路进行设置以指定密码运算是对256位的数据还是对384位的数据执行。处理器120利用适合的参数和/或操作数来加载ECC引擎122的一个或多个寄存器,指示ECC引擎122执行密码运算,并且然后从ECC引擎122读取结果数据。处理器120 还可以指定将由ECC引擎122使用的特定的边信道攻击保护等级。ECC引擎122可以提供对ECC密码运算的快速、有能效的计算,与使用通用处理器核来执行相同的运算相比具有改进的性能和/或功耗。例如,ECC引擎122 的一个可能的实施例以大约65000个逻辑门实现并且被仿真达到比等效的软件解决方案快大约30倍。此外,通过支持384位数据以及相关联的ECC 运算(即,ECC-384),ECC引擎122可以支持192位安全强度。通过提供低功耗和相对高等级的安全强度,ECC引擎122可以适用于物联网设备或者具有长部署周期(例如,15-20年)的其它低功率的设备。
计算设备100可以体现为能够执行本文中描述的功能的任意类型的计算或计算机设备,该设备没有限制地包括计算机、移动计算设备、物联网设备、网络装置、web装置、可穿戴计算设备、膝上型计算机、上网本计算机、平板计算机、桌上型计算机、工作站、服务器、分布式计算系统、基于处理器的系统、和/或消费者电子设备。如图1中示出,计算设备100 示出性地包括处理器120、输入/输出子系统124、存储器126、数据存储设备128、以及通信子系统130、和/或通常在物联网设备或相似的计算设备中找到的其它组件和设备。当然,在其它实施例中,计算设备100可以包括其它或额外的组件,例如,通常在移动计算设备中找到的组件(例如,各种输入/输出设备)。额外地,在一些实施例中,示出的组件中的一个或多个可以并入另一组件或者另外形成另一组件的部分。例如,在一些实施例中,存储器126或者其部分可以并入处理器120。
处理器120可以体现为能够执行本文中描述的功能的任意类型的处理器。处理器120可以体现为单核或多核处理器、数字信号处理器、微控制器、或者其它处理器或处理/控制电路。如示出的,处理器120包括ECC引擎122。ECC引擎122可以体现为能够执行本文中描述的功能的任意功能块、IP核、嵌入式控制器、逻辑电路、逻辑门、和/或处理器120的其它组件。此外,虽然示出为包括在处理器120中,但是应该理解的是在一些实施例中,ECC引擎122可以包括在诸如I/O子系统124之类的计算设备100 的不同的组件中或者可以体现为独立加速器、协处理器、安全引擎、或者其它集成电路。
存储器126可以体现为能够执行本文中描述的功能的任意类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器126可以存储在计算设备100的操作期间使用的各种数据和软件,例如,操作系统、应用、程序、库和驱动程序。存储器126经由I/O子系统124通信地耦合至处理器 120,该I/O子系统可以体现为用于利用处理器120、存储器126以及计算设备100的其它组件来促进输入/输出操作的电路和/或组件。例如,I/O子系统124可以体现为或者另外包括存储器控制器中心,输入/输出控制中心、平台控制器中心、集成控制电路、固件设备、通信链路(即,点对点式链路、总线链路、导线、电缆、导光板、印刷电路板迹线等)和/或用于促进输入/输出操作的其它组件和子系统。在一些实施例中,I/O子系统124可以形成片上系统(SoC)的部分,并且与处理器120、存储器126以及计算设备100的其它组件一起并入在单个集成电路芯片上。
数据存储设备128可以体现为被配置用于数据的短期或长期存储的任意类型的设备,例如,存储器设备和电路、存储器卡、硬盘驱动、固态驱动、或者其它数据存储设备。计算设备100的通信子系统130可以体现为能够通过网络实现计算设备100与其它远程设备之间的通信的任意通信电路、设备或者其集合。通信子系统130可以被配置为使用任意一个或多个通信技术(例如,有线或无线通信)以及相关联的协议(例如,以太网、WiMAX、等)来实现这样的通信。
如示出的,计算设备100还可以包括一个或多个外围设备132。外围设备132可以包括任意数量的额外输入/输出设备、接口设备、和/或其它外围设备。例如,在一些实施例中,外围设备132可以包括显示器、触摸屏、图形电路、键盘、鼠标、扬声器系统、麦克风、网络接口、和/或其它输入/ 输出设备、接口设备、和/或外围设备。
现在参考图2,在示出的实施例中,计算设备100建立操作期间的环境 200。示出的环境200包括加密客户端202、加密驱动器204、以及ECC引擎122。环境200的各种组件可以体现为硬件、固件、软件、或者其组合。如此,在一些实施例中,环境200的组件中的一个或多个可以体现为电子设备的电路或集合(例如,加密客户端电路202、加密驱动器电路204、和 /或ECC引擎电路122)。应该认识到的是,在这样的实施例中,加密客户端电路202、加密驱动器电路204、和/或ECC引擎电路122中的一个或多个可以形成处理器120、I/O子系统124和/或计算设备100的其它组件中的一个或多个的部分。此外,在一些实施例中,示出的组件中的一个或多个可以形成另一组件的部分,和/或示出的组件中的一个或多个可以彼此独立。
加密客户端202可以体现为通过计算设备100执行的使用椭圆曲线加密(ECC)来执行密码过程的任意操作系统、库、应用或者其它计算机程序。例如,加密客户端202可以体现为执行包括ECC运算的密码协议的库或应用,所述密码协议例如为ECDSA、ECDH、EPID、或者其它协议。为了执行密码过程,加密客户端202调用加密驱动器204来执行一个或多个密码运算,例如,椭圆曲线标量乘法、椭圆曲线点加、椭圆曲线倍点、素域求幂、素域乘法、素域加法和/或素域减法。如以下进一步描述的,加密驱动器204被配置为对ECC引擎122进行编程以执行请求的密码运算。
ECC引擎122被配置为读取ECC引擎122的数据路径选择器信号。数据路径选择器信号指示256位数据宽度或者384位数据宽度。ECC引擎122 进一步被配置为从ECC引擎122的数据端口读取对应于请求的密码运算的参数的一个或多个参数值。每个参数具有通过数据路径选择器信号指示的数据宽度。ECC引擎122进一步被配置为从ECC引擎122的指令端口读取指示请求的密码运算的操作码,并且执行请求的密码运算。密码运算还具有通过数据路径选择器信号指示的数据宽度。在一些实施例中,操作码可以指示ECC引擎122的寄存器,并且ECC引擎122可以将参数值存储在识别的寄存器中。ECC引擎122进一步被配置为响应于执行密码运算,将结果数据写入ECC引擎122的输出端口。结果数据还具有通过数据路径选择器信号指示的数据宽度。
加密驱动器204被配置为确定ECC引擎122的忙信号是否已被设置,并且然后响应于确定忙信号未被设置,对ECC引擎122的数据路径选择器信号进行设置。加密驱动器204进一步被配置为响应于设置数据路径选择器信号,声明ECC引擎122的开始信号。加密驱动器204进一步被配置为响应于声明开始信号,向ECC引擎122的指令端口写入操作码,并且响应于写入操作码,声明ECC引擎122的指令有效信号。
ECC引擎122进一步被配置为确定开始信号是否已声明,并且响应于确定开始信号已声明,对忙信号进行设置。ECC引擎122进一步被配置为响应于确定开始信号已声明,确定指令有效信号是否已声明,并且响应于确定指令有效信号已声明,读取操作码。ECC引擎122进一步被配置为响应于执行密码运算,清除忙信号,并且响应于清除忙信号,声明ECC引擎122的运算完成信号。加密驱动器204进一步被配置为确定ECC引擎122 的运算完成信号是否已声明,并且响应于确定ECC引擎122的运算完成信号已声明,从ECC引擎122的输出端口读取结果数据。
现在参考图3,附图300示出了ECC引擎122的各种组件的一个可能的实施例。如示出的,ECC引擎122可以包括执行控制器302、多个执行资源304以及寄存器314。执行资源304示出性地包括点乘单元306、点加 /倍点单元308、p-求幂单元310、以及p-乘加减(p-MAS)单元312。执行资源304中的每个可以从寄存器314中加载数据并且将数据存储至寄存器 314。此外,数据可以在某些执行资源304之间直接传输。特别地,点乘单元306可以向点加/倍点单元308、p-求幂单元310以及p-MAS单元312提供数据;点加/倍点单元308可以向p-MAS单元312提供数据;并且p-求幂单元310可以向p-MAS单元312提供数据。
执行控制器302被配置为对提供给ECC引擎122的指令进行解码并且生成相对应的内部控制信号。如以下进一步描述的,执行控制器302还可以针对某些运算将输入数据从仿射坐标(即,x和y坐标)转换为雅可比 (Jacobian)投影坐标。执行控制器302激活相对应的执行资源304以执行当前指令。在执行之后,执行控制器302可以将雅可比投影坐标转换回至仿射坐标。执行控制器302被配置为在一个或多个数据输出端口上输出结果数据,并且向加密驱动器204发送结果已准备好的信号。
点乘单元306被配置为计算标量乘法运算[d]P,其中d是标量值,并且 P是椭圆曲线上的点。点乘单元306可以执行标量乘法运算,如果参数λ为零,则使用二进制左-2-右的加倍-和-相加过程来执行该运算,或者如果参数λ为非零,则使用Montgomery Ladder过程。
点加/倍点单元308被配置为执行点加运算A+B以及倍点运算2A,其中,A和B都为椭圆曲线上的点。点加/倍点单元308可以基于标准雅可比投影坐标点加公式来执行A+B以及2A运算。在一些实施例中,点加/倍点单元308可以通过基于曲线参数a的值执行不同的运算来针对某些椭圆曲线提供对2A运算的加速。例如,如果a为零,则点加/倍点单元308可以利用六个素域乘法运算来执行2A运算,如果a为三,则点加/倍点单元308 可以利用八个素域乘法运算来执行2A运算,并且如果a为非零并且不为三,则点加/倍点单元308可以利用10个素域乘法运算来执行2A运算。
p-求幂单元310被配置为利用时序和简单功率/电磁辐射保护来计算素域求幂ab(mod p)。相似地,p-MAS单元312被配置为利用时序和简单功率/电磁辐射保护来计算素域乘法a·b(mod p)、素域加法a+b(mod p) 以及素域相减a-b(mod p)。
现在参考图4,图400示出了寄存器314以及通过ECC引擎122提供的各种输入/输出信号、线路、引脚、总线或者其它接口连接的一个可能的实施例。如以下进一步描述的,通过处理器120执行的软件和/或固件可以通过读取和写入ECC引擎122的数据和/或控制信号来控制ECC引擎122。
如示出的,示出的ECC引擎122包括八个寄存器314。寄存器314中的每个为384位宽。如以下进一步描述的,ECC引擎122可以被编程以针对384位运算使用每个寄存器314的所有384位,或者可以被编程以针对 256位运算使用每个寄存器314的最低有效256位。寄存器314中的每个可以存储由处理器120提供的参数数据以及通过ECC引擎122生成的中间数据和结果数据。如图4中示出的,寄存器314包括r0x寄存器402、r0y寄存器404、d/r1x寄存器406、λ/r1y寄存器408、p寄存器410、a寄存器412、 r0z寄存器414以及r1z寄存器416。每个寄存器314的语义可以取决于通过 ECC引擎122执行的特定的密码运算,并且进一步在以下描述。当然,除了图4中示出的顶级的寄存器314之外,在一些实施例中,ECC引擎122 可以包括未示出的额外的寄存器。
ECC引擎122包括数据输入端口418以及数据输入有效信号420。数据输入端口可以包括384个分离的信号、线路、位、引脚或者其它接口连接。如以下进一步描述的,处理器120可以将要被存储在寄存器314中的一个中的参数数据写入数据输入端口418。处理器120可以设置数据输入有效信号420来指示有效数据在数据输入端口418上。
ECC引擎122包括数据输出端口422以及数据输出端口424。数据输出端口422、424中的每个可以包括384个分离的信号、线路、位、引脚或者其它接口连接。如以下进一步描述的,ECC引擎122可以将输出数据从 ECC运算中写入到数据输出端口422、424中的一个或多个上。例如,ECC 引擎122可以将点C的x、y坐标分别写入数据输出端口422、424。ECC 引擎122进一步包括数据输出有效信号430。ECC引擎122可以设置数据输出有效信号430来指示有效数据在数据输出端口422、424上。
ECC引擎122包括ECC忙信号426和ECC完成信号428。ECC引擎 122可以设置ECC忙信号426来指示ECC引擎当前正在处理密码运算并且处理器120不应该开始新的密码运算。ECC引擎122可以在ECC完成信号 428上声明脉冲以指示完成密码运算。如以下进一步描述的,在ECC完成信号428被声明之后,处理器120可以从数据输出端口422、424读取结果数据。ECC引擎122进一步包括时钟信号432以及异步重置信号434。
如示出的,ECC引擎122包括数据路径选择器信号436。如以下进一步描述的,处理器120可以设置数据路径选择器信号436来对ECC引擎122 进行编程以对384位数据执行384位密码运算,或者清除数据路径选择器信号436来对ECC引擎122进行编程以对256位数据执行256位密码运算。
ECC引擎122进一步包括ECC开始信号438、指令有效信号440、以及指令端口422。如以下进一步描述的,处理器120可以在ECC开始信号 438上声明脉冲以使ECC引擎122开始处理新的密码运算。如以上描述的,在ECC开始信号438被声明之后,ECC引擎122可以设置ECC忙信号426。处理器120可以将指令操作码写入指令端口442。如以下进一步描述的,指令操作码可以识别要被加载有数据的寄存器314或者要被执行的密码运算。当有效指令操作码已被写入指令端口422时,处理器120还可以在指令有效信号440上声明脉冲。如以下进一步描述的,响应于指令有效信号440 的声明,ECC引擎122可以将数据读取至指定的寄存器314或者执行指定的密码运算。
现在参考图5,在使用中,计算设备100可以执行用于驱动ECC引擎 122的方法500。应该认识到的是,在一些实施例,方法500的操作可以通过图2中示出的计算设备100的环境200中的一个或多个组件来执行。例如,方法500可以由加密驱动器204执行,该方法可以体现为由处理器120 执行的软件、固件和/或微代码。方法500在框502中开始,在框502中,计算设备100确定ECC引擎122是否为忙。例如,计算设备100可以读取 ECC引擎122的ECC忙信号426,并且确定ECC忙信号426是否已设置。如果ECC引擎122为忙,则方法500循环回到框502以继续等待ECC引擎 122。如果ECC引擎122为不忙,则方法500前进至框504。
在框504中,计算设备100根据针对ECC密码运算的期望的位宽度对 ECC引擎122的256位/384位数据路径选择器信号436进行设置。例如,处理器120可以设置数据路径选择器信号436来对ECC引擎122进行编程以对384位数据执行384位密码运算,或者清除数据路径选择器信号436 来对ECC引擎122进行编程以对256位数据执行256位密码运算。当然,在一些实施例中,可以保留数据路径选择器信号436的意义。各种参数和结果数据的位宽度因此取决于数据路径选择器信号436的值。
在框506中,计算设备100声明ECC引擎122的开始信号438。例如,处理器120可以在开始信号438上声明脉冲。如以下结合图6进一步描述的,响应于在开始信号438上声明脉冲,ECC引擎122处理ECC运算。
在框508中,计算设备100将参数值写入ECC引擎122的数据输入端口418。取决于数据路径选择器信号436的值,计算设备100可以将384位值写入数据输入端口418,或者将256位值写入数据输入端口418的最低有效256位。计算设备100还设置数据输入有效信号420来指示已将有效信号写入数据输入端口418。计算设备100可以写入针对将由ECC引擎122 执行的ECC运算所需要的参数中的任意一个。特别地,参数值可以对应于图4中示出的寄存器402至412中的任意一个。例如,参数可以对应于点A 或B的x-坐标或y-坐标、素域运算的操作数a或b、标量值d、边信道攻击抵抗参数λ、素模p或者曲线参数a。要注意的是,在示出的实施例中,r0z 寄存器414和r1z寄存器416可以不通过由处理器120执行的软件来写入。
在框510中,计算设备100将操作码写入ECC引擎122的指令端口442,该操作码识别将对写入数据输入端口418的数据进行存储的寄存器402至 412。操作码中的每个可以体现为对将由ECC引擎122执行的特定指令进行识别的四位二进制值。以下,表1包括有效操作码及其相关联的指令的一个可能的实施例。如示出的,操作码0001至0110对使ECC引擎122向相对应的寄存器402至412写入的写入指令进行识别。例如,操作码0001 是向r0x寄存器402的写入指令,操作码0010是向r0y寄存器404的写入指令,等等。在将操作码写入指令端口442之后,在框512中,计算设备100 声明ECC引擎122的指令有效信号440。例如,处理器120可以在指令有效信号440上声明脉冲。如以下进一步描述的,响应于指令有效信号440 被声明,ECC引擎122可以从数据输入端口418读取参数数据并且将该数据存储在通过写入指令端口442的操作码识别的寄存器中。
表1.用于ECC引擎命令的有效操作码以及相关联的指令
在框514中,计算设备100针对将执行的ECC运算确定是否应该将额外的参数加载到ECC引擎122中。如果有额外的参数剩余,则方法500循环回到框508来加载剩余的参数。如果没有额外的参数剩余,则方法500 前进至框516。
在框516中,计算设备100将用于要被执行的ECC运算的操作码写入 ECC引擎122的指令端口442。以上的表1包括有效操作码及其相关联的指令的一个可能的实施例。特别地,计算设备100可以写入用于椭圆曲线运算的操作码,例如,用于椭圆曲线标量乘法的操作码1000、用于椭圆曲线点加的操作码1001,或者用于椭圆曲线倍点的操作码1010。替代地,计算设备100可以写入用于素域算术运算的操作码,例如,用于素域求幂的操作码1011、用于素域乘法的操作码1100、用于素域加法的操作码1101、或者用于素域减法的操作码1110。在框518中,计算设备100声明ECC引擎122的指令有效信号440。例如,处理器120可以在指令有效信号440上声明脉冲。如以下进一步描述的,响应于指令有效信号440被声明,ECC 引擎122执行通过写入到指令端口442的操作码指定的ECC运算。ECC引擎122可以基于数据路径选择器信号436来执行384位的运算或者256位的运算。
在框520中,计算设备100确定ECC引擎122是否已完成处理ECC 运算。例如,处理器120可以等待将由ECC引擎122在ECC完成信号428 上声明的脉冲。如果ECC引擎122未完成处理ECC运算,则方法500循环回到框520来继续等待ECC引擎122。如果已完成ECC运算,则方法500 前进至框522。
在框522中,计算设备100从ECC引擎122的数据输出端口422、424 中的一个或多个读取结果数据。如果ECC引擎122的数据输出有效信号430 被设置,则计算设备100可以仅读取结果数据。通过计算设备100读取的特定数据可以取决于执行的ECC运算。例如,针对椭圆曲线运算,计算设备100可以从数据输出端口422读取结果点的x坐标,并且从数据输出端口424读取结果点的y坐标。作为另一示例,针对素域运算,计算设备100 可以从数据输出端口422读取结果值。计算设备100可以取决于数据路径选择器信号436的值来读取384位结果数据或者256位结果数据。在读取结果数据之后,方法500循环回到框502以执行另一ECC运算。
现在参考图6,在使用中,计算设备100可以执行用于ECC硬件加速的方法600。应该认识到的是,在一些实施例中,方法600的操作可以通过图2中示出的计算设备100的环境200中的一个或多个组件来执行,该组件例如为ECC引擎122。方法600在框602中开始,在框602中,ECC引擎122监测在ECC引擎122的开始信号428上声明的脉冲。如以上描述的,通过处理器120执行的软件和/或固件可以在开始信号438上声明脉冲来开始处理ECC运算。如果未检测到脉冲,则方法600循环回到框602以继续监测开始信号438。如果检测到脉冲,则方法600前进至框604。
在框604中,ECC引擎122设置忙信号426。忙信号426指示ECC引擎122当前正在处理ECC运算。如以上描述的,在开始另一ECC运算之前,通过计算设备100执行的软件和/或固件可以等待直至忙信号426被清除。
在框606中,ECC引擎122读取256位/384位的数据路径选择器信号 436并且激活选择的数据路径。如以上描述的,处理器120可以设置数据路径选择器信号436来对ECC引擎122进行编程以对384位数据执行384位密码运算,或者清除数据路径选择器信号436来对ECC引擎122进行编程以对256位数据执行256位密码运算。
在框608中,ECC引擎122监测在指令有效信号440上声明的脉冲。如以上描述的,在用于将数据写入寄存器或者用于执行ECC运算的指令已被写入指令端口442之后,通过处理器120执行的软件和/或固件可以在指令有效信号440上声明脉冲。如果未检测到脉冲,则方法600循环回到框 608以继续监测指令有效信号440。如果检测到脉冲,则方法600前进至框610。
在框610中,ECC引擎122从指令端口442读取指令操作码。如以上描述的,操作码示出性地体现为识别将由ECC引擎122执行的指令的四位值。在上述表1中描述了有效操作码。在框612中,ECC引擎122确定操作码是否识别对应于寄存器314的写入指令。例如,在示出的实施例中, ECC引擎122可以确定操作码是否在0001与0110之间,包括0001和0110。如果操作码未识别写入指令,则方法600向前分岔至框618,如以下描述的。如果操作码识别了写入指令,则方法600前进至框614。
在框614中,ECC引擎122从数据输入端口418读取参数数据。如果数据输入有效信号420被设置,则ECC引擎122可以仅读取参数数据。额外地或替代地,在一些实施例中,响应于在数据输入有效信号420上声明的脉冲,ECC引擎122可以读取参数数据。ECC引擎122可以取决于数据路径选择器信号436的值从数据输入端口418读取384位的数据或者256 位的数据。在框616中,ECC引擎122将从数据输入端口418读取的数据存储到通过写入指令指定的寄存器314中。例如,针对操作码0001,ECC 引擎122将数据存储到r0x寄存器402中,针对操作码0010,ECC引擎122 将数据存储到r0y寄存器404中,等等。在存储数据之后,方法600循环回到框608以继续监测指令有效信号440。如以上结合图5描述的,通过处理器120执行的软件和/或固件可以执行额外的写入指令来将由即将执行的特定ECC运算使用的参数数据写入到寄存器314中的每个中。
参考回至框612,如果指令操作码不识别写入指令,则方法600向前分岔至框618,在框618中,ECC引擎122确定指令操作码是否识别椭圆曲线指令。如以上表1中示出的,用于椭圆曲线运算的操作码包括用于椭圆曲线标量乘法的操作码1000、用于椭圆曲线点加的操作码1001、以及用于椭圆曲线倍点的操作码1010。如表1中示出的,如果指令操作码未识别写入指令或者椭圆曲线指令,则指令操作码识别素域算术指令,例如,用于素域求幂的操作码1011、用于素域乘法的操作码1100、用于素域加法的操作码1101、以及用于素域减法的操作码1110。要注意的是,用于保留或者未定义的操作码的ECC引擎122的行为未在图6中示出。
如果指令操作码未识别椭圆曲线指令(即,指令操作码识别素域算术指令),则方法600分岔至框620。在框620中,ECC引擎122使用ECC 引擎122的执行资源304来执行指定的素域算术运算。例如,执行控制器 302可以声明各种内部控制信号以使p-求幂单元310和/或p-MAS单元312 执行通过指令操作码指定的素域算术运算。执行资源304可以将中间数据和/或结果数据存储到寄存器314中的一个或多个中。在执行素域指令之后,方法600前进至框624,如以下描述的。
参考回至框618,如果指令操作码识别椭圆曲线指令,则方法600分岔至框622,在框622中,ECC引擎122使用ECC引擎122的执行资源304 来执行指定的椭圆曲线运算。ECC引擎122可以使用由存储在λ/r1y寄存器 408中的参数λ指定的边信道攻击保护的等级来执行椭圆曲线运算。例如,如果λ/r1y寄存器408等于零,则ECC引擎122可以不利用边信道攻击保护来执行运算,这可以提供改进的性能并且可以适用于不涉及私钥的功能(例如,ECDSA验证功能)。继续该示例,如果λ/r1y寄存器408等于一,则ECC 引擎122可以利用简单边信道保护来执行运算,并且如果λ/r1y寄存器408 是大于一的随机值,则ECC引擎122可以利用差分边信道保护来执行运算。以下结合图7描述了用于利用可配置的边信道保护来执行椭圆曲线指令的方法的一个可能的实施例。在执行椭圆曲线指令之后,方法700前进至框 624。
在框624中,ECC引擎122将数据输出到数据输出端口422、424中的一个或多个上,并且设置数据输出有效信号430。例如,ECC引擎122可以将数据从寄存器314中的一个或多个拷贝至数据输出端口422、424。特定的数据输出取决于通过ECC引擎122执行的指令。例如,针对椭圆曲线指令(例如,操作码1000、1001和1010),ECC引擎122可以将结果点的 x坐标输出至数据输出端口422,并且将结果点的y坐标输出至数据输出端口424。针对素域指令(例如,操作码1011、1100、1101和1110),ECC 引擎122可以将值输出至数据输出端口422。ECC引擎122可以取决于数据路径选择器信号436来输出384位数据或者256位数据。
在框626中,ECC引擎122清除忙信号426。清除忙信号指示ECC引擎122已准备好处理另一ECC运算。在框628中,ECC引擎122在ECC 完成信号428上声明脉冲。如以上描述的,在声明ECC完成信号428之后,通过处理器120执行的软件和/或固件可以从数据输出端口422、424读取结果。在声明ECC完成信号428之后,方法600循环回到框602以监测额外的ECC运算。
现在参考图7,在使用中,计算设备100可以执行方法700以用于利用可配置的边信道保护来执行ECC指令。应该认识到的是,在一些实施例中,方法700的运算可以通过图2中示出的计算设备100的环境200中的一个或多个组件来执行,该组件例如为ECC引擎122。特别地,可以结合图6 的框622来执行方法700,如以上描述的。方法700在框702中开始,在框702中,ECC引擎122确定指定的ECC指令是否为通过操作码1000指示的椭圆曲线标量乘法[d]A。如果是,则方法700向前分岔至框706,如以下描述的。如果指定的ECC指令不是标量乘法,则方法700前进至框704。在框704中,ECC引擎122使用ECC引擎122的执行资源来执行选择的ECC 运算。例如,执行控制器302可以声明各种内部控制信号以用于使点加/倍点单元308和/或p-MAS单元312执行通过指令操作码指定的椭圆曲线运算 (例如,用于操作码1001的椭圆曲线点加A+B或者用于操作码1010的椭圆曲线倍点2A)。执行资源304可以将中间数据和/或结果数据存储到寄存器314中的一个或多个中。在执行椭圆曲线运算之后,方法700前进至框718,如以下描述的。
参考回至框702,如果ECC指令是标量乘法,则方法700分岔至框706,在框706中,ECC引擎122确定存储在λ/r1y寄存器408中的参数λ是否大于一。例如,参数λ可以是由处理器120的软件和/或固件提供的大于一的随机数。
如果参数λ不大于一(即,如果λ为零或一),则方法700分岔至框708,在框708中,ECC引擎122将仿射坐标转换为雅可比投影坐标。仿射坐标可以使用对应于椭圆曲线方程的x和y值来描述点A和/或点B。仿射坐标转换为雅可比投影坐标将那些点投影到不同的但是等效的坐标系统中。 ECC引擎122可以从寄存器314读取仿射坐标,并且然后将雅可比投影坐标存储回至寄存器314中。例如,可以将点A的仿射坐标存储在r0x寄存器 402和r0y寄存器404中,并且可以将点B的仿射坐标存储在d/r1x寄存器 406和λ/r1y寄存器408中。可以将点A的雅可比投影坐标存储在r0x寄存器402、r0y寄存器404和r0z寄存器414中,并且可以将点B的仿射坐标存储在d/r1x寄存器406、λ/r1y寄存器408和r1z寄存器416中。在生成雅可比投影坐标之后,方法700前进至框712,如以下描述的。
参考回至框706,如果参数λ大于一,则方法700分岔至框710,在框 710中,ECC引擎122将雅可比投影坐标转换为随机化的雅可比投影坐标。 ECC引擎122可以使用随机数(例如,λ)来执行坐标上的变换以创建可以用于椭圆曲线运算的等效的坐标。由于雅可比投影坐标的性质,那些随机雅可比投影坐标可以用于运算,并且将提供与非随机化的雅可比投影坐标相同的结果。通过对随机化的数据执行椭圆曲线运算,ECC引擎122可以提供对差分边信道攻击的保护。在生成随机化的雅可比投影坐标之后,方法700前进至框712。
在框712中,ECC引擎122确定参数λ是否等于零。如果是,则方法 700分岔至框714,在框714中,ECC引擎122利用边信道攻击保护来执行标量乘法运算。特别地,ECC引擎122可以使用加倍-和-相加运算来执行标量乘法运算。例如,执行控制器302可以声明各种内部控制信号以用于使点乘单元306、点加/倍点单元308、p-求幂单元310和/或p-MAS单元312 执行标量乘法运算。通过ECC引擎122执行的用于执行加倍-和-相加运算的计算工作的量可以取决于输入数据而变化,并且因此针对λ等于零,ECC 引擎122可以不提供边信道攻击保护。然而,不利用边信道保护来执行ECC 引擎122可以比利用边信道保护来执行ECC引擎122的性能快大约11/2倍。因此,不利用边信道保护的执行可以适用于不涉及秘密密钥的运算(例如, ECDSA验证功能)。在执行标量乘法运算之后,方法700前进至框718,如以下描述的。
参考回至框712,如果参数λ不等于零,则方法700分岔至框716,在框716中,ECC引擎122利用边信道保护来执行标量乘法运算。特别地, ECC引擎122可以使用MontgomeryLadder算法来执行标量乘法运算。例如,执行控制器302可以声明各种内部控制信号以用于使点乘单元306、点加/倍点单元308、p-求幂单元310和/或p-MAS单元312执行标量乘法运算。 Montgomery Ladder算法针对秘密值的每个位执行相同的处理,并且因此时序、功耗、发射的电磁辐射、和/或用于处理秘密的每个位的其它边信道数据可以是一致的。如果参数λ为一,则ECC引擎122对雅可比投影坐标执行Montgomery Ladder算法,并且因此可以提供简单的边信道攻击保护。如果参数λ大于一,则ECC引擎122对随机化的雅可比投影坐标执行Montgomery Ladder算法,并且因此可以提供差分边信道攻击保护。在执行标量乘法运算之后,方法700前进至框718。
在框718中,ECC引擎122将雅可比投影坐标转换为仿射坐标。ECC 引擎122可以从寄存器314读取雅可比投影坐标,并且然后将仿射坐标存储回至寄存器314中。在生成仿射坐标之后,方法700完成。通过ECC引擎122生成的仿射坐标可以用作针对ECC指令的输出数据。如以上描述的,在完成椭圆曲线指令之后,ECC引擎122可以声明ECC完成信号428,并且通过处理器120执行的软件和/或固件可以从数据出口端口422、424读取输出数据。
应该认识到的是,在一些实施例中,方法500、600和/或700可以体现为存储在计算机可读介质上的各种指令,该指令可以通过处理器120、ECC 引擎122、I/O子系统124和/或计算设备100的其它组件来执行以使计算设备100执行相应的方法500、600和/或700。计算机可读介质可以体现为能够通过计算设备100读取的任意类型的介质,包括但是不限于存储器126、数据存储设备128、固件设备和/或其它介质。
示例
以下提供了本文中公开的技术的示出的示例。技术的实施例可以包括以下描述的示例中的任意一个或多个以及任意组合。
示例1包括一种用于密码加速的计算设备,该计算设备包括用于以下的椭圆曲线加密(ECC)引擎:读取ECC引擎的数据路径选择器信号,其中,数据路径选择器信号指示256位数据宽度或者384位数据宽度;从ECC 引擎的数据端口读取密码运算的参数的参数值,其中,参数值具有通过数据路径选择器信号指示的数据宽度;响应于对参数值的读取,从ECC引擎的指令端口读取第一操作码,其中,第一操作码指示密码运算;响应于对第一操作码的读取,利用参数值执行密码运算,其中,密码运算具有通过数据路径选择器信号指示的数据宽度;并且响应于对密码运算的执行,将结果数据写入ECC引擎的输出端口,其中,结果数据具有通过数据路径选择器信号指示的数据宽度。
示例2包括示例1的主题,并且其中,密码运算包括素域算术运算。
示例3包括示例1和2中的任意一个的主题,并且其中,素域算术运算包括素域求幂运算、素域乘法运算、素域加法运算、或者素域减法运算。
示例4包括示例1-3中的任意一个的主题,并且其中,密码运算包括椭圆曲线运算。
示例5包括示例1-4中的任意一个的主题,并且其中,椭圆曲线运算包括椭圆曲线标量乘法运算、椭圆曲线点加运算、或者椭圆曲线减法运算。
示例6包括示例1-5中的任意一个的主题,并且其中,执行椭圆曲线运算包括利用指定的边信道保护等级执行椭圆曲线运算,其中,参数值指示指定的边信道保护等级。
示例7包括示例1-6中的任意一个的主题,并且其中,指定的边信道保护等级包括无保护、简单保护、或者差分保护。
示例8包括示例1-7中的任意一个的主题,并且其中,执行椭圆曲线运算包括:将一个或多个仿射坐标转换为相对应的雅可比投影坐标,其中,仿射坐标和雅可比投影坐标被存储在ECC引擎的一个或多个相对应的寄存器中;利用雅可比投影坐标执行椭圆曲线运算;并且响应于对椭圆曲线运算的执行,将雅可比投影坐标转换为相对应的仿射坐标。
示例9包括示例1-8中的任意一个的主题,并且其中:椭圆曲线运算包括椭圆曲线标量乘法;指定的边信道保护等级包括无保护;并且执行椭圆曲线运算进一步包括执行加倍-和-相加标量乘法算法。
示例10包括示例1-9中的任意一个的主题,并且其中:椭圆曲线运算包括椭圆曲线标量乘法;指定的边信道保护等级包括简单保护;并且执行椭圆曲线运算进一步包括执行Montgomery Ladder标量乘法算法。
示例11包括示例1-10中的任意一个的主题,并且其中:椭圆曲线运算包括椭圆曲线标量乘法;指定的边信道保护等级包括差分保护;将一个或多个仿射坐标转换为相对应的雅可比投影坐标包括将一个或多个仿射坐标转换为相对应的随机化的雅可比投影坐标;并且执行椭圆曲线运算进一步包括利用随机化的雅可比投影坐标执行Montgomery Ladder标量乘法算法。
示例12包括示例1-11中的任意一个的主题,并且其中,ECC引擎进一步用于:确定ECC引擎的开始信号是否被声明;响应于确定开始信号被声明,设置ECC引擎的忙信号;响应于对密码运算的执行,清除忙信号;并且响应于对忙信号的清除,声明ECC引擎的运算完成信号;其中,读取数据路径选择器信号包括响应于对忙信号的设置,读取数据路径选择器信号。
示例13包括示例1-12中的任意一个的主题,并且进一步包括加密驱动器,用于:确定ECC引擎的忙信号是否被设置;响应于确定忙信号未被设置,设置ECC引擎的数据路径选择器信号;响应于对数据路径选择器信号的设置,声明ECC引擎的开始信号;响应于对开始信号的声明,确定ECC 引擎的运算完成信号是否被声明;并且响应于确定ECC引擎的运算完成信号被声明,从ECC引擎的输出端口读取结果数据。
示例14包括示例1-13中的任意一个的主题,并且其中,ECC引擎进一步用于:响应于确定开始信号被声明,确定ECC引擎的指令有效信号是否被声明;其中,读取第一操作码包括响应于确定ECC引擎的指令有效信号被声明,读取第一操作码。
示例15包括示例1-14中的任意一个的主题,并且进一步包括加密驱动器,用于:响应于对ECC引擎的开始信号的声明,将第一操作码写入ECC 引擎的指令端口;并且响应于对第一操作码的写入,声明ECC引擎的指令有效信号。
示例16包括示例1-15中的任意一个的主题,并且其中,ECC引擎进一步用于:响应于确定开始信号被声明,从ECC引擎的指令端口读取第二操作码,其中,第二操作码指示密码运算的参数;并且将参数值存储在ECC 引擎的寄存器中,其中,该寄存器是通过第二操作码来识别的;其中,读取参数值包括响应于对第二操作码的读取,读取参数值。
示例17包括示例1-16中的任意一个的主题,并且进一步包括加密驱动器,用于:响应于对开始信号的声明,将参数值写入ECC引擎的数据端口;响应于对参数值的写入,将第二操作码写入ECC引擎的指令端口;并且响应于对第二操作码的写入,声明ECC引擎的指令有效信号。
示例18包括一种用于密码加速的方法,所述方法包括:通过计算设备的椭圆曲线加密(ECC)引擎,读取ECC引擎的数据路径选择器信号,其中,数据路径选择器信号指示256位数据宽度或者384位数据宽度;通过 ECC引擎,从ECC引擎的数据端口读取密码运算的参数的参数值,其中,参数值具有通过数据路径选择器信号指示的数据宽度;响应于读取参数值,通过ECC引擎,从ECC引擎的指令端口读取第一操作码,其中,第一操作码指示密码运算;响应于读取第一操作码,通过ECC引擎,利用参数值执行密码运算,其中,密码运算具有通过数据路径选择器信号指示的数据宽度;以及响应于执行密码运算,通过ECC引擎,将结果数据写入ECC引擎的输出端口,其中,结果数据具有通过数据路径选择器信号指示的数据宽度。
示例19包括示例18的主题,并且其中,执行密码运算包括执行素域算术运算。
示例20包括示例18和19中的任意一个的主题,并且其中,执行素域算术运算包括执行素域求幂运算、素域乘法运算、素域加法运算、或者素域减法运算。
示例21包括示例18-20中的任意一个的主题,并且其中,执行密码运算包括执行椭圆曲线运算。
示例22包括示例18-21中的任意一个的主题,并且其中,执行椭圆曲线运算包括执行椭圆曲线标量乘法运算、椭圆曲线点加运算、或者椭圆曲线减法运算。
示例23包括示例18-22中的任意一个的主题,并且其中,执行椭圆曲线运算包括利用指定的边信道保护等级执行椭圆曲线运算,其中,参数值指示指定的边信道保护等级。
示例24包括示例18-23中的任意一个的主题,并且其中,指定的边信道保护等级包括无保护、简单保护、或者差分保护。
示例25包括示例18-24中的任意一个的主题,并且其中,执行椭圆曲线运算包括:将一个或多个仿射坐标转换为相对应的雅可比投影坐标,其中,仿射坐标和雅可比投影坐标被存储在ECC引擎的一个或多个相对应的寄存器中;使用雅可比投影坐标来执行椭圆曲线运算;并且响应于执行椭圆曲线运算,将雅可比投影坐标转换为相对应的仿射坐标。
示例26包括示例18-25中的任意一个的主题,并且其中:椭圆曲线运算包括椭圆曲线标量乘法;指定的边信道保护等级包括无保护;并且执行椭圆曲线运算进一步包括执行加倍-和-相加标量乘法算法。
示例27包括示例18-26中的任意一个的主题,并且其中:椭圆曲线运算包括椭圆曲线标量乘法;指定的边信道保护等级包括简单保护;并且执行椭圆曲线运算进一步包括执行Montgomery Ladder标量乘法算法。
示例28包括示例18-27中的任意一个的主题,并且其中:椭圆曲线运算包括椭圆曲线标量乘法;指定的边信道保护等级包括差分保护;将一个或多个仿射坐标转换为相对应的雅可比投影坐标包括将一个或多个仿射坐标转换为相对应的随机化的雅可比投影坐标;执行椭圆曲线运算进一步包括使用随机化的雅可比投影坐标来执行Montgomery Ladder标量乘法算法。
示例29包括示例18-28中的任意一个的主题,并且进一步包括:通过 ECC引擎,确定ECC引擎的开始信号是否被声明;响应于确定开始信号被声明,通过ECC引擎,设置ECC引擎的忙信号;响应于执行密码运算,通过ECC引擎,清除忙信号;并且响应于清除忙信号,通过ECC引擎,声明 ECC引擎的运算完成信号;其中,读取数据路径选择器信号包括响应于设置忙信号,读取数据路径选择器信号。
示例30包括示例18-29中的任意一个的主题,并且进一步包括:通过计算设备,确定ECC引擎的忙信号是否被设置;响应于确定忙信号未被设置,通过计算设备,设置ECC引擎的数据路径选择器信号;响应于设置数据路径选择器信号,通过计算设备,声明ECC引擎的开始信号;响应于声明开始信号,通过计算设备,确定ECC引擎的运算完成信号是否被声明;并且响应于确定ECC引擎的运算完成信号被声明,通过计算设备,从ECC 引擎的输出端口读取结果数据。
示例31包括示例18-30中的任意一个的主题,并且进一步包括:响应于确定开始信号被声明,通过ECC引擎,确定ECC引擎的指令有效信号是否被声明;其中,读取第一操作码包括响应于确定ECC引擎的指令有效信号被声明,读取第一操作码。
示例32包括示例18-31中的任意一个的主题,并且进一步包括:响应于声明ECC引擎的开始信号,通过计算设备,将第一操作码写入ECC引擎的指令端口;并且响应于写入第一操作码,通过计算设备,声明ECC引擎的指令有效信号。
示例33包括示例18-32中的任意一个的主题,并且进一步包括:响应于确定开始信号被声明,通过ECC引擎,从ECC引擎的指令端口读取第二操作码,其中,第二操作码指示密码运算的参数;并且通过ECC引擎,将参数值存储在ECC引擎的寄存器中,其中,寄存器是通过第二操作码来识别的;其中,读取参数值包括响应于读取第二操作码,读取参数值。
示例34包括示例18-33中的任意一个的主题,并且进一步包括:响应于声明开始信号,通过计算设备,将参数值写入ECC引擎的数据端口;响应于写入参数值,通过计算设备,将第二操作码写入ECC引擎的指令端口;并且响应于写入第二操作码,通过计算设备,声明ECC引擎的指令有效信号。
示例35包括一种计算设备,该计算设备包括:处理器;以及存储器,该存储器具有存储在其中的多个指令,该指令当由处理器执行时,使计算设备执行示例18-34中的任意一个的方法。
示例36包括一种或多种机器可读存储介质,该机器可读存储介质包括存储在其上的多个指令,该指令响应于被执行引起计算设备执行示例18-34 中的任意一个的方法。
示例37包括一种计算设备,该计算设备包括用于执行示例18-34的任意一个的方法的单元。
示例38包括一种用于密码加速的计算设备,计算设备包括用于通过计算设备的椭圆曲线加密(ECC)引擎,读取ECC引擎的数据路径选择器信号的单元,其中,数据路径选择器信号指示256位数据宽度或者384位数据宽度;用于通过ECC引擎,从ECC引擎的数据端口读取密码运算的参数的参数值的单元,其中,参数值具有通过数据路径选择器信号指示的数据宽度;用于响应于读取参数值,通过ECC引擎,从ECC引擎的指令端口读取第一操作码的单元,其中,第一操作码指示密码运算;用于响应于读取第一操作码,通过ECC引擎,利用参数值执行密码运算的单元,其中,密码运算具有通过数据路径选择器信号指示的数据宽度;以及用于响应于执行密码运算,通过ECC引擎,将结果数据写入ECC引擎的输出端口的单元,其中,结果数据具有通过数据路径选择器信号指示的数据宽度。
示例39包括示例38的主题,并且其中,用于执行密码运算的单元包括用于执行素域算术运算的单元。
示例40包括示例38和39中的任意一个的主题,并且其中,用于执行素域算术运算的单元包括用于执行素域求幂运算的单元、用于执行素域乘法运算的单元、用于执行素域加法运算的单元、或者用于执行素域减法运算的单元。
示例41包括示例38-40中的任意一个的主题,并且其中,用于执行密码运算的单元包括用于执行椭圆曲线运算的单元。
示例42包括示例38-41中的任意一个的主题,并且其中,用于执行椭圆曲线运算的单元包括用于执行椭圆曲线标量乘法运算的单元、用于执行椭圆曲线点加运算的单元、或者用于执行椭圆曲线减法运算的单元。
示例43包括示例38-42中的任意一个的主题,并且其中,用于执行椭圆曲线运算的单元包括用于利用指定的边信道保护等级执行椭圆曲线运算的单元,其中,参数值指示指定的边信道保护等级。
示例44包括示例38-43中的任意一个的主题,并且其中,指定的边信道保护等级包括无保护、简单保护、或者差分保护。
示例45包括示例38-44中的任意一个的主题,并且其中,用于执行椭圆曲线运算的单元包括:用于将一个或多个仿射坐标转换为相对应的雅可比投影坐标的单元,其中,仿射坐标和雅可比投影坐标被存储在ECC引擎的一个或多个相对应的寄存器中;用于使用雅可比投影坐标来执行椭圆曲线运算的单元;以及用于响应于执行椭圆曲线运算,将雅可比投影坐标转换为相对应的仿射坐标的单元。
示例46包括示例38-45中的任意一个的主题,并且其中:椭圆曲线运算包括椭圆曲线标量乘法;指定的边信道保护等级包括无保护;并且用于执行椭圆曲线运算的单元进一步包括用于执行加倍-和-相加标量乘法算法的单元。
示例47包括示例38-46中的任意一个的主题,并且其中:椭圆曲线运算包括椭圆曲线标量乘法;指定的边信道保护等级包括简单保护;并且用于执行椭圆曲线运算的单元进一步包括用于执行Montgomery Ladder标量乘法算法的单元。
示例48包括示例38-47中的任意一个的主题,并且其中:椭圆曲线运算包括椭圆曲线标量乘法;指定的边信道保护等级包括差分保护;用于将一个或多个仿射坐标转换为相对应的雅可比投影坐标的单元包括用于将一个或多个仿射坐标转换为相对应的随机化的雅可比投影坐标的单元;并且用于执行椭圆曲线运算的单元进一步包括用于使用随机化的雅可比投影坐标来执行Montgomery Ladder标量乘法算法的单元。
示例49包括示例38-48中的任意一个的主题,并且进一步包括:用于通过ECC引擎,确定ECC引擎的开始信号是否被声明的单元;用于响应于确定开始信号被声明,通过ECC引擎,设置ECC引擎的忙信号的单元;用于响应于执行密码运算,通过ECC引擎,清除忙信号的单元;以及用于响应于清除忙信号,通过ECC引擎,声明ECC引擎的运算完成信号的单元;其中,用于读取数据路径选择器信号的单元包括用于响应于设置忙信号,读取数据路径选择器信号的单元。
示例50包括示例38-49中的任意一个的主题,并且进一步包括:用于确定ECC引擎的忙信号是否被设置的单元;用于响应于确定忙信号未被设置,设置ECC引擎的数据路径选择器信号的单元;用于响应于设置数据路径选择器信号,声明ECC引擎的开始信号的单元;用于响应于声明开始信号,确定ECC引擎的运算完成信号是否被声明的单元;以及用于响应于确定ECC引擎的运算完成信号被声明,从ECC引擎的输出端口读取结果数据的单元。
示例51包括示例38-50中的任意一个的主题,并且进一步包括:用于响应于确定开始信号被声明,通过ECC引擎,确定ECC引擎的指令有效信号是否被声明的单元;其中,用于读取第一操作码的单元包括用于响应于确定ECC引擎的指令有效信号被声明,读取第一操作码的单元。
示例52包括示例38-51中的任意一个的主题,并且进一步包括:用于响应于声明ECC引擎的开始信号,将第一操作码写入ECC引擎的指令端口的单元;以及用于响应于写入第一操作码,声明ECC引擎的指令有效信号的单元。
示例53包括示例48-52中的任意一个的主题,并且进一步包括:用于响应于确定开始信号被声明,通过ECC引擎,从ECC引擎的指令端口读取第二操作码的单元,其中,第二操作码指示密码运算的参数;以及用于通过ECC引擎,将参数值存储在ECC引擎的寄存器中的单元,其中,寄存器是通过第二操作码来识别的;其中,用于读取参数值的单元包括用于响应于读取第二操作码,读取参数值的单元。
示例54包括示例38-53中的任意一个的主题,并且进一步包括:用于响应于声明开始信号,将参数值写入ECC引擎的数据端口的单元;用于响应于写入参数值,将第二操作码写入ECC引擎的指令端口的单元;以及用于响应于写入第二操作码,声明ECC引擎的指令有效信号的单元。
Claims (25)
1.一种用于密码加速的计算设备,所述计算设备包括椭圆曲线加密(ECC)引擎,其用于:
读取所述ECC引擎的数据路径选择器信号,其中,所述数据路径选择器信号指示256位数据宽度或者384位数据宽度;
从所述ECC引擎的数据端口读取密码运算的参数的参数值,其中,所述参数值具有通过所述数据路径选择器信号指示的数据宽度;
响应于对所述参数值的读取,从所述ECC引擎的指令端口读取第一操作码,其中,所述第一操作码指示所述密码运算;
响应于对所述第一操作码的读取,利用所述参数值执行所述密码运算,其中,所述密码运算具有通过所述数据路径选择器信号指示的数据宽度;并且
响应于对所述密码运算的执行,将结果数据写入所述ECC引擎的输出端口,其中,所述结果数据具有通过所述数据路径选择器信号指示的数据宽度。
2.根据权利要求1所述的计算设备,其中,所述密码运算包括素域算术运算。
3.根据权利要求1所述的计算设备,其中,所述密码运算包括椭圆曲线运算。
4.根据权利要求3所述的计算设备,其中,执行所述椭圆曲线运算包括利用指定的边信道保护等级执行所述椭圆曲线运算,其中,所述参数值指示所述指定的边信道保护等级。
5.根据权利要求4所述的计算设备,其中,所述指定的边信道保护等级包括无保护、简单保护、或者差分保护。
6.根据权利要求4所述的计算设备,其中,执行所述椭圆曲线运算包括:
将一个或多个仿射坐标转换为相对应的雅可比投影坐标,其中,所述仿射坐标和所述雅可比投影坐标被存储在所述ECC引擎的一个或多个相对应的寄存器中;
利用所述雅可比投影坐标执行所述椭圆曲线运算;并且
响应于对所述椭圆曲线运算的执行,将所述雅可比投影坐标转换为相对应的仿射坐标。
7.根据权利要求6所述的计算设备,其中:
所述椭圆曲线运算包括椭圆曲线标量乘法;
所述指定的边信道保护等级包括无保护;并且
执行所述椭圆曲线运算进一步包括执行加倍-和-相加标量乘法算法。
8.根据权利要求6所述的计算设备,其中:
所述椭圆曲线运算包括椭圆曲线标量乘法;
所述指定的边信道保护等级包括简单保护;并且
执行所述椭圆曲线运算进一步包括执行Montgomery Ladder标量乘法算法。
9.根据权利要求6所述的计算设备,其中:
所述椭圆曲线运算包括椭圆曲线标量乘法;
所述指定的边信道保护等级包括差分保护;
将所述一个或多个仿射坐标转换为所述相对应的雅可比投影坐标包括将所述一个或多个仿射坐标转换为相对应的随机化的雅可比投影坐标;并且
执行所述椭圆曲线运算进一步包括利用所述随机化的雅可比投影坐标执行Montgomery Ladder标量乘法算法。
10.根据权利要求1所述的计算设备,其中,所述ECC引擎进一步用于:
确定所述ECC引擎的开始信号是否被声明;
响应于确定所述开始信号被声明,设置所述ECC引擎的忙信号;
响应于所述对所述密码运算的执行,清除所述忙信号;并且
响应于对所述忙信号的清除,声明所述ECC引擎的运算完成信号;
其中,读取所述数据路径选择器信号包括响应于对所述忙信号的设置,读取所述数据路径选择器信号。
11.根据权利要求10所述的计算设备,所述计算设备进一步包括加密驱动器,其用于:
确定所述ECC引擎的所述忙信号是否被设置;
响应于确定所述忙信号未被设置,设置所述ECC引擎的所述数据路径选择器信号;
响应于对所述数据路径选择器信号的设置,声明所述ECC引擎的所述开始信号;
响应于对所述开始信号的声明,确定所述ECC引擎的所述运算完成信号是否被声明;并且
响应于确定所述ECC引擎的所述运算完成信号被声明,从所述ECC引擎的输出端口读取结果数据。
12.根据权利要求10所述的计算设备,其中,所述ECC引擎进一步用于:
响应于确定所述开始信号被声明,确定所述ECC引擎的指令有效信号是否被声明;
其中,读取所述第一操作码包括响应于确定所述ECC引擎的所述指令有效信号被声明,读取所述第一操作码。
13.根据权利要求12所述的计算设备,所述计算设备进一步包括加密驱动器,其用于:
响应于对所述ECC引擎的所述开始信号的声明,将所述第一操作码写入所述ECC引擎的所述指令端口;并且
响应于所述第一操作码的写入,声明所述ECC引擎的所述指令有效信号。
14.一种用于密码加速的方法,所述方法包括:
通过计算设备的椭圆曲线加密(ECC)引擎,读取所述ECC引擎的数据路径选择器信号,其中,所述数据路径选择器信号指示256位数据宽度或者384位数据宽度;
通过所述ECC引擎,从所述ECC引擎的数据端口读取密码运算的参数的参数值,其中,所述参数值具有通过所述数据路径选择器信号指示的数据宽度;
响应于读取所述参数值,通过所述ECC引擎,从所述ECC引擎的指令端口读取第一操作码,其中,所述第一操作码指示所述密码运算;
响应于读取所述第一操作码,通过所述ECC引擎,利用所述参数值执行所述密码运算,其中,所述密码运算具有通过所述数据路径选择器信号指示的数据宽度;以及
响应于执行所述密码运算,通过所述ECC引擎,将结果数据写入所述ECC引擎的输出端口,其中,所述结果数据具有通过所述数据路径选择器信号指示的数据宽度。
15.根据权利要求14所述的方法,其中:
执行所述密码运算包括执行椭圆曲线运算;以及
执行所述椭圆曲线运算包括利用指定的边信道保护等级执行所述椭圆曲线运算,其中,所述参数值指示所述指定的边信道保护等级。
16.根据权利要求15所述的方法,其中,所述指定的边信道保护等级包括无保护、简单保护、或者差分保护。
17.根据权利要求15所述的方法,其中,执行所述椭圆曲线运算包括:
将一个或多个仿射坐标转换为相对应的雅可比投影坐标,其中,所述仿射坐标和所述雅可比投影坐标被存储在所述ECC引擎的一个或多个相对应的寄存器中;
使用所述雅可比投影坐标来执行所述椭圆曲线运算;以及
响应于执行所述椭圆曲线运算,将所述雅可比投影坐标转换为相对应的仿射坐标。
18.根据权利要求14所述的方法,所述方法进一步包括:
通过所述ECC引擎,确定所述ECC引擎的开始信号是否被声明;
响应于确定所述开始信号被声明,通过所述ECC引擎,设置所述ECC引擎的忙信号;
响应于执行所述密码运算,通过所述ECC引擎,清除所述忙信号;以及
响应于清除所述忙信号,通过所述ECC引擎,声明所述ECC引擎的运算完成信号;
其中,读取所述数据路径选择器信号包括响应于设置所述忙信号,读取所述数据路径选择器信号。
19.根据权利要求18所述的方法,所述方法进一步包括:
通过所述计算设备,确定所述ECC引擎的所述忙信号是否被设置;
响应于确定所述忙信号未被设置,通过所述计算设备,设置所述ECC引擎的所述数据路径选择器信号;
响应于设置所述数据路径选择器信号,通过所述计算设备,声明所述ECC引擎的所述开始信号;
响应于声明所述开始信号,通过所述计算设备,确定所述ECC引擎的所述运算完成信号是否被声明;以及
响应于确定所述ECC引擎的所述运算完成信号被声明,通过所述计算设备,从所述ECC引擎的所述输出端口读取结果数据。
20.一种或多种包括多个指令的计算机可读存储介质,所述指令响应于被执行使计算设备用于:
通过所述计算设备的椭圆曲线加密(ECC)引擎,读取所述ECC引擎的数据路径选择器信号,其中,所述数据路径选择器信号指示256位数据宽度或者384位数据宽度;
通过所述ECC引擎,从所述ECC引擎的数据端口读取密码运算的参数的参数值,其中,所述参数值具有通过所述数据路径选择器信号指示的数据宽度;
响应于读取所述参数值,通过所述ECC引擎,从所述ECC引擎的指令端口读取第一操作码,其中,所述第一操作码指示所述密码运算;
响应于读取所述第一操作码,通过所述ECC引擎,利用所述参数值执行所述密码运算,其中,所述密码运算具有通过所述数据路径选择器信号指示的数据宽度;并且
响应于执行所述密码运算,通过所述ECC引擎,将结果数据写入所述ECC引擎的输出端口,其中,所述结果数据具有通过所述数据路径选择器信号指示的数据宽度。
21.根据权利要求20所述的一种或多种计算机可读存储介质,其中:
执行所述密码运算包括执行椭圆曲线运算;并且
执行所述椭圆曲线运算包括利用指定的边信道保护等级执行所述椭圆曲线运算,其中,所述参数值指示所述指定的边信道保护等级。
22.根据权利要求21所述的一种或多种计算机可读存储介质,其中,所述指定的边信道保护等级包括无保护、简单保护、或者差分保护。
23.根据权利要求21所述的一种或多种计算机可读存储介质,其中,执行所述椭圆曲线运算包括:
将一个或多个仿射坐标转换为相对应的雅可比投影坐标,其中,所述仿射坐标和所述雅可比投影坐标被存储在所述ECC引擎的一个或多个相对应的寄存器中;
使用所述雅可比投影坐标来执行所述椭圆曲线运算;并且
响应于执行所述椭圆曲线运算,将所述雅可比投影坐标转换为相对应的仿射坐标。
24.根据权利要求20所述的一种或多种计算机可读存储介质,进一步包括多个指令,所述指令响应于被执行使所述计算设备用于:
通过所述ECC引擎,确定所述ECC引擎的开始信号是否被声明;
响应于确定所述开始信号被声明,通过所述ECC引擎,设置所述ECC引擎的忙信号;
响应于执行所述密码运算,通过所述ECC引擎,清除所述忙信号;并且
响应于清除所述忙信号,通过所述ECC引擎,声明所述ECC引擎的运算完成信号;
其中,读取所述数据路径选择器信号包括响应于设置所述忙信号,读取所述数据路径选择器信号。
25.根据权利要求24所述的一种或多种计算机可读存储介质,进一步包括多个指令,所述指令响应于被执行使所述计算设备用于:
确定所述ECC引擎的所述忙信号是否被设置;
响应于确定所述忙信号未被设置,设置所述ECC引擎的所述数据路径选择器信号;
响应于设置所述数据路径选择器信号,声明所述ECC引擎的所述开始信号;
响应于声明所述开始信号,确定所述ECC引擎的所述运算完成信号是否被声明;并且
响应于确定所述ECC引擎的所述运算完成信号被声明,从所述ECC引擎的所述输出端口读取结果数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/428,773 | 2017-02-09 | ||
US15/428,773 US10404459B2 (en) | 2017-02-09 | 2017-02-09 | Technologies for elliptic curve cryptography hardware acceleration |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108418688A CN108418688A (zh) | 2018-08-17 |
CN108418688B true CN108418688B (zh) | 2023-02-21 |
Family
ID=62910263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810018115.1A Active CN108418688B (zh) | 2017-02-09 | 2018-01-09 | 用于椭圆曲线加密硬件加速的计算设备、方法和存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10404459B2 (zh) |
CN (1) | CN108418688B (zh) |
DE (1) | DE102018100280A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018145190A1 (en) * | 2017-02-13 | 2018-08-16 | Infosec Global Inc. | Elliptic curve cryptography scheme with simple side-channel attack countermeasure |
US11157240B2 (en) * | 2019-02-15 | 2021-10-26 | International Business Machines Corporation | Perform cryptographic computation scalar multiply instruction |
CN110247771B (zh) * | 2019-06-21 | 2022-10-25 | 恒宝股份有限公司 | 一种智能卡及其曲线参数密钥的管理方法 |
JP2022045614A (ja) * | 2020-09-09 | 2022-03-22 | キオクシア株式会社 | 演算装置 |
CN113419989B (zh) * | 2021-06-11 | 2023-01-20 | 上海壁仞智能科技有限公司 | 人工智能芯片及其操作方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023659A (zh) * | 2013-01-08 | 2013-04-03 | 武汉大学 | 一种参数位宽可扩展的ecc加密硬件装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7200225B1 (en) * | 1999-11-12 | 2007-04-03 | Richard Schroeppel | Elliptic curve point ambiguity resolution apparatus and method |
TW577020B (en) * | 2001-07-12 | 2004-02-21 | Ip Flex Inc | Integrated circuit device |
US7346159B2 (en) * | 2002-05-01 | 2008-03-18 | Sun Microsystems, Inc. | Generic modular multiplier using partial reduction |
JP4128395B2 (ja) * | 2002-05-23 | 2008-07-30 | 三菱電機株式会社 | データ変換装置 |
DE602007008313D1 (de) * | 2006-05-10 | 2010-09-23 | Inside Contactless | Verfahren zur Weiterleitung von aus- und eingehenden Daten in ein NFC-Chipset |
US7961872B2 (en) * | 2006-12-04 | 2011-06-14 | Lsi Corporation | Flexible hardware architecture for ECC/HECC based cryptography |
US8345864B1 (en) * | 2008-12-12 | 2013-01-01 | Emc Corporation | Elliptic curve cryptography scalar multiplication with on demand acceleration table generation |
US20110154501A1 (en) * | 2009-12-23 | 2011-06-23 | Banginwar Rajesh P | Hardware attestation techniques |
US10243727B2 (en) * | 2013-10-31 | 2019-03-26 | Ati Technologies Ulc | Method and system for constant time cryptography using a co-processor |
DE102015107509A1 (de) * | 2014-10-14 | 2016-04-14 | Infineon Technologies Ag | Chip und Verfahren zum Betreiben einer Verarbeitungsschaltung |
FR3033965B1 (fr) * | 2015-03-18 | 2018-12-07 | Maxim Integrated Products, Inc. | Systèmes et procédés de commande de dispositifs de cryptage sur courbe elliptique sécurisés |
US10520110B2 (en) * | 2016-10-10 | 2019-12-31 | Citrix Systems, Inc. | Systems and methods for executing cryptographic operations across different types of processing hardware |
-
2017
- 2017-02-09 US US15/428,773 patent/US10404459B2/en not_active Expired - Fee Related
-
2018
- 2018-01-08 DE DE102018100280.7A patent/DE102018100280A1/de not_active Withdrawn
- 2018-01-09 CN CN201810018115.1A patent/CN108418688B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023659A (zh) * | 2013-01-08 | 2013-04-03 | 武汉大学 | 一种参数位宽可扩展的ecc加密硬件装置 |
Also Published As
Publication number | Publication date |
---|---|
US20180227115A1 (en) | 2018-08-09 |
US10404459B2 (en) | 2019-09-03 |
DE102018100280A1 (de) | 2018-08-09 |
CN108418688A (zh) | 2018-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108418688B (zh) | 用于椭圆曲线加密硬件加速的计算设备、方法和存储介质 | |
US10826710B2 (en) | Technologies for robust computation of elliptic curve digital signatures | |
US11424907B2 (en) | Countermeasures for side-channel attacks on protected sign and key exchange operations | |
US11995184B2 (en) | Low-latency digital signature processing with side-channel security | |
US10924276B2 (en) | System, apparatus and method for performing a plurality of cryptographic operations | |
US20220014363A1 (en) | Combined post-quantum security utilizing redefined polynomial calculation | |
US20200110906A1 (en) | Encryption circuit for performing virtual encryption operations | |
US20220166614A1 (en) | System and method to optimize generation of coprime numbers in cryptographic applications | |
US12047514B2 (en) | Digital signature verification engine for reconfigurable circuit devices | |
US9571281B2 (en) | CRT-RSA encryption method and apparatus | |
JP4351987B2 (ja) | モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム | |
US11502836B2 (en) | Method for performing cryptographic operations on data in a processing device, corresponding processing device and computer program product | |
TWI630545B (zh) | 非模數乘法器、用於非模數乘法的方法及計算裝置 | |
EP3972187A1 (en) | Protection of authentication tag computation against power and electromagnetic side-channel attacks | |
JP2010257045A5 (zh) | ||
US20220085993A1 (en) | Reconfigurable secret key splitting side channel attack resistant rsa-4k accelerator | |
US11792004B2 (en) | Polynomial multiplication for side-channel protection in cryptography | |
Fournaris | Toward flexible security and trust hardware structures for mobile-portable systems | |
US20230042366A1 (en) | Sign-efficient addition and subtraction for streamingcomputations in cryptographic engines | |
KR20240148684A (ko) | 조건부 연산기, 조건부 연산 방법 및 조건부 연산 시스템 | |
CN103684763A (zh) | 基于rsa算法的数据加密方法、装置及智能卡 | |
CN112487448A (zh) | 一种加密信息处理装置、方法及计算机设备 | |
CN108880816A (zh) | 一种彩虹签名装置 | |
Hunter | A Memory Controller for FPGA Applications | |
JP2009258460A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |