CN109479003A - 安全椭圆曲线密码指令 - Google Patents
安全椭圆曲线密码指令 Download PDFInfo
- Publication number
- CN109479003A CN109479003A CN201780045957.XA CN201780045957A CN109479003A CN 109479003 A CN109479003 A CN 109479003A CN 201780045957 A CN201780045957 A CN 201780045957A CN 109479003 A CN109479003 A CN 109479003A
- Authority
- CN
- China
- Prior art keywords
- input information
- instruction
- dot product
- processor
- ecc
- 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
Links
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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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
-
- 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
- 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/16—Obfuscation or hiding, e.g. involving white box
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一方面的处理器包括解码单元,用于对利用经模糊的输入信息的椭圆曲线密码(ECC)点乘指令解码。利用经模糊的输入信息的ECC点乘指令用于指示用于存储用于ECC点乘操作的输入信息的多个源操作数。将被存储在多个源操作数中的输入信息中的至少一些将被模糊。执行单元与解码单元耦合。执行单元用于响应于利用经模糊的输入信息的ECC点乘指令,将ECC点乘结果存储在将由利用经模糊的输入信息的ECC点乘指令指示的目的地存储位置中。公开了其他处理器、方法、系统和指令。
Description
背景技术
密码可用于执行密钥交换以帮助保护数据和/或通信的机密性和完整性。两种类型的密码是对称密钥密码和非对称或公钥密码。对称密钥密码使用单个类型的密钥。同一密钥用于加密数据和解密数据。此外,同一密钥用于生成数字签名和验证数字签名。相比之下,公钥密码使用两种不同类型的密钥。密钥中的一个是秘密的或私有的,而另一个密钥不是秘密的而是公开可用的。公钥和私钥用于不同的互补目的。例如,公钥可以用于加密数据,而私钥可以用于解密经加密的数据。作为另一示例,私钥可以用于生成数字签名,而公钥可以用于验证数字签名。
公钥密码被广泛地使用。例如,公钥密码被广泛地用于各种互联网标准或协议,诸如例如,安全套接层(SSL)、传输层安全(TLS)、互联网协议安全(IPsec)、安全/多用途互联网邮件扩展(S/MIME)、良好隐私(PGP)、和GNU隐私防护(GPG)。
当在互联网和/或其他通信信道上采用这些标准或协议时,初始阶段通常涉及建立信道的安全性、交换密码密钥以及验证证书。可以使用各种公钥算法。一种公钥算法是Diffie–Hellman密钥交换算法,其有时被称为Diffie–Hellman,或简称为D-H。Diffie–Hellman算法通常用于通过公共信道安全地交换秘密密码密钥。另一种公钥算法是数字签名算法(DSA)算法。DSA通常用于提供数字签名。又一种公钥算法是RSA算法(以其作者Rivest、Shamir、Adleman命名)。RSA通常用于安全地交换秘密密码密钥以及提供数字签名。可以使用ECC操作(例如,ECC点乘指令)来设置安全通信信道。
附图说明
图1是根据一个实施例的可操作以执行利用经模糊的输入信息的椭圆曲线密码(ECC)点乘指令的处理器的框图。
图2是根据一个实施例的执行利用经模糊的输入信息的ECC点乘指令的方法的流程框图。
图3是根据一个实施例的利用蒙哥马利约分来执行利用经模糊的输入信息的ECC点乘指令的方法的详细示例的流程框图。
图4是根据一个实施例的利用经模糊的输入信息的ECC点乘指令的框图。
图5是根据一个实施例的立即数的框图。
图6是根据一个实施例的执行单元的框图。
图7是根据另一实施例的执行单元的框图。
图8是根据另一实施例的执行单元的框图。
图9A是示出根据一个实施例的有序流水线以及寄存器重命名、乱序发布/执行流水线的框图。
图9B是示出根据一个实施例的实现ECC点乘指令的处理器的微架构的框图。
图10A是根据一个实施例的单个处理器核以及其到管芯上互连网络的连接以及它的第二级(L2)高速缓存的本地子集的框图。
图10B是根据一个实施例的图10A的处理器核的部分的展开图的框图。
图11是根据一个实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形的处理器的框图。
图12是根据一个实施例的计算机架构的框图。
图13是根据另一实施例的计算机架构的框图。
图14是根据另一实施例的计算机架构的框图。
图15是根据另一实施例的计算机架构的框图。
图16是根据一个实施例的使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文中所公开的是ECC点乘指令、用于执行这些指令的处理器、在处理或执行这些指令时由处理器执行的方法以及包含用于处理或执行这些指令的一个或多个处理器的系统。在一些实施例中,ECC点乘指令可以用于结合各种不同的公钥密码算法(诸如例如,RSA、DSA、和Diffie-Hellman算法)来执行ECC点乘。在这些公钥密码算法中,当在互联网和/或其他通信链路上建立安全会话(例如,结合安全会话设置、证书签名、证书验证等)时,ECC点乘往往被大量使用。在其他实施例中,本文公开的ECC点乘指令可以用于结合各种其他计算机实现的算法和/或通信相关算法和/或数据处理算法来执行ECC点乘。本公开的范围不限于这些ECC点乘指令的任何已知用途,而是它们是可由本领域技术人员用于各种不同目的的通用指令。
在下列描述中,阐述众多特定细节(例如,特定指令操作、用于实现ECC点乘的特定算法、特定数据格式、特定处理器配置、特定微架构细节、特定操作序列等)。然而,可在没有这些特定细节的情况下实施实施例。在其他实例中,未详细示出公知的电路、结构和技术,以避免使对本说明书的理解模糊。
受信任计算环境中的处理器核的安全通信可以使用密码来加密被传输的数据和利用密钥的消息认证码。例如,处理器可以通过建立安全信道并利用证书验证执行密钥交换来设置安全通信会话。如上所述,RSA通常用于安全地交换秘密密码密钥以及提供数字签名。
然而,ECC点乘的常规软件实现可能不足以保护这种秘密或私有信息。例如,这种秘密或私有信息对于至少一些软件通常是可读的或以其他方式可访问的。然而,包括甚至最高特权的系统级软件(例如,虚拟机监视器(VMM)、操作系统(OS)、基本输入/输出系统(BIOS)等)的所有软件都可能被破坏(例如,在有特权的恶意软件的情况下)并且因此可能不是完全可信的,从而阻碍处理器核上的超安全计算。如果软件被破坏并且能够读取秘密或私有信息,则与公钥密码算法相关联的预期安全性可能被至少部分地损害。在一些情况下,这可能是巨大的问题。作为一个示例,在一些情况下,秘密密钥可能是极度有价值的(例如,比在单个会话中被保护的数据更有价值)。作为另一示例,在OpenSSL心脏出血(Heartbleed)弱点中,由于OpenSSL中的缺陷,可能的受信任的网络服务器的任何私钥都可能由于存储器缓冲器溢出而已经被盗。这可以允许网络服务器被充分地模仿,使得客户端可能不知道它们正在与真实的网络服务器还是冒名顶替的网络服务器通信。
ECC操作可以在中央处理单元(CPU)核上以高性能执行,尤其是如果存在用于加速数学计算的处理的特殊指令(例如,mulx、adcx、adox等)。然而,在秘密密钥是极度有价值(例如,比在单个会话中被保护的数据更有价值)的使用中,需要以超安全的方式执行使用的机制。
本文描述的实施例在ECC点乘中使用经模糊的信息来增强对秘密或机密信息(例如,输入到ECC点乘计算的信息)的保护。本文还公开了用于执行“密钥锁定”ECC操作(例如,原始秘密密钥从不对软件可见)的指令。ECC点乘指令可以使用素数域、二进制域等。在一些实施例中,甚至对最高特权的系统级软件(例如,VMM、OS、BIOS等),经模糊的信息也可能不是可访问的,或者至少是不可读的。下文将进一步讨论使信息模糊的各种不同的合适方式。这可以用于帮助提高各种公钥密码算法的安全性,以及各种其他用途。
可以为运行诸如OpenSSL的标准软件应用的服务器实现的安全级别是极度有价值的,并且可以通过启用高性能和容易的软件(例如,无OSV启用依赖性)来实现。与只能在选定级别运行的特定安全技术不同,ECC点乘指令可以在所有特权级别运行。这些指令通过使用特殊ISA在处理器上实现超安全操作,并且这些类型的密钥锁定的ISA可以提供高度安全和受信任的平台。
图1是可操作以执行利用经模糊的输入信息的ECC点乘指令102的实施例的处理器100的实施例的框图。在一些实施例中,处理器100可以是通用处理器(例如,台式计算机、膝上型计算机或其他计算机中所使用类型的通用微处理器或中央处理单元(CPU))。替代地,处理器100可以是专用处理器。合适的专用处理器的示例包括但不限于,密码处理器、通信处理器、网络处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器)。处理器可具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构中的任一种,或者具有不同架构的组合(例如,不同的核可具有不同的架构)。
在操作期间,处理器100可接收第一指令。第一指令可以包括利用经模糊的输入信息的ECC点乘指令102。例如,可通过总线或其他互连从存储器预取、取出或以其他方式接收指令102。指令102可表示处理器的指令集的宏指令、汇编语言指令、机器代码指令或其他指令或控制信号。
处理器100包括解码单元104(例如,解码器)。解码单元104可接收第一指令并对第一指令解码。第一指令可以包括利用经模糊的输入信息的ECC点乘指令102。解码单元104可输出反映、表示相对较高级的利用经模糊的输入信息的ECC点乘指令102和/或从相对较高级的利用经模糊的输入信息的ECC点乘指令102导出的相对较低级的指令或控制信号(例如,微指令、微操作、微代码进入点、经解码的指令或控制信号等)。在一些实施例中,解码单元104可以包括用于接收指令的一个或多个输入结构(例如,端口、互连、接口)、与输入结构耦合用于识别并解码指令102的指令识别和解码逻辑、以及与指令识别和解码逻辑耦合用于输出较低级指令或控制信号的一个或多个输出结构(例如,端口、互连、接口)。可使用各种不同的机制来实现解码单元104,各种不同的机制包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现方式、可编程逻辑阵列(PLA)和适用于实现解码单元的其他机制。
在一些实施例中,作为直接将利用经模糊的输入信息的ECC点乘指令102提供给解码单元104的替代方案,可以任选地使用指令仿真器、变换器、变形器、解释器或其他指令转换模块。各种类型的指令转换模块可以以软件、硬件、固件、或其组合实现。在一些实施例中,指令转换模块可位于处理器100外部,诸如例如,在分开的管芯上和/或存储器中(例如,作为静态的、动态的或运行时仿真模块)。作为示例,指令转换模块可接收利用经模糊的输入信息的ECC点乘指令102,该指令可以是第一指令集中的指令,并且指令转换模块可将利用经模糊的输入信息的ECC点乘指令102仿真、变换、变形、解释或以其他方式转换为可以是第二不同指令集中的一个或多个对应的中间指令或控制信号。可将第二指令集中的这一个或多个中间指令或控制信号提供给解码单元(例如,解码单元104),该解码单元可将它们解码为可由处理器100的原生硬件(例如,一个或多个执行单元)执行的一个或多个较低级的指令或控制信号。
在一些实施例中,利用经模糊的输入信息的ECC点乘指令102可显式地指定(例如,通过一个或多个字段或一组位)或以其他方式指示(例如,隐式地指示)多个源操作数116的存储位置。源操作数116可以用于存储与指令102相关联的ECC点乘操作或计算的输入信息118。在一些实施例中,指令102还可以显式地指定或以其他方式指示将存储响应于指令102和/或作为其结果的ECC点乘结果122的目的地存储位置。作为一个示例,指令102可具有源和/或目的地操作数字段,用于指定或以其他方式指示用于这些操作数的存储位置。或者,用于这些操作数中的一个或多个的存储位置可以任选地对于指令102是隐式的(例如,对于指令的操作码是隐式的),而不是被显式地指定。
如所示,处理器100在部署和/或使用期间可以可操作以与存储器114耦合或以其他方式与存储器114通信。应当注意,本公开的实施例仅涉及处理器,其能够或者可操作以与存储器耦合并与存储器交互,但是尚未与存储器耦合。如所示,在一些实施例中,源操作数116和将存储ECC点乘结果122的目的地存储位置可以可选地是存储器114中的位置。作为示例,在一些实施例中,指令102可以可选地指定或以其他方式指示处理器100的一组寄存器124中的寄存器,其可以存储用于这些操作数的存储器114中的位置的地址或其他指针。替代地,一个或多个紧缩数据寄存器、处理器的专用流缓冲器中的位置、或其他存储位置可以可选地用于这些源和/或目的地操作数中的一个或多个。此外,尽管为了便于说明而在示图中示出为分开的,但是在一些实施例中,用于源操作数(例如,用于基址)的同一存储位置可以可选地被重新用作存储ECC点乘结果的目的地存储位置。例如,指令102可以显式地指定地址以指示将存储源操作数的存储器114中的位置,并且存储器114中的同一位置将用于目的地存储位置对于处理器100可以是隐式的或固有的(例如,基于指令102的操作码)。
寄存器124可以表示可操作以存储数据的管芯上存储位置。在一个方面中,寄存器124可以可选地是32位或64位的通用寄存器。寄存器124可表示架构上可见或对软件和/或编程者可见的架构寄存器,并且/或者是由处理器的指令集中的指令指示以标识操作数的寄存器。这些架构寄存器与给定微架构中的其他非架构寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)形成对照。可在不同的微架构中、以不同方式实现寄存器124,并且寄存器124不限于任何特定类型的设计。合适类型的寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器以及它们的组合。
再次参考图1,包括经模糊的输入信息120的各种不同类型的输入信息118适用于不同的实施例。在一些实施例中,输入信息可以包括基点、标量乘数、模数、根据模数预计算的一个或多个参数(例如,一个或多个约分常数)、或其各种组合。如下文将进一步讨论的,用于ECC点乘的各种约分算法(例如,蒙哥马利约分、巴雷特约分等)定义约分常数,其通常从模数和/或可能的其他输入参数导出,以帮助简化ECC点乘的实现。一般而言,足以允许执行ECC点乘计算的输入信息的任何组合可以可选地用于不同的实施例。
另外,可以可选地将任何这种输入信息118(包括可能没有一个或可能全部或任何中间级别)提供为经模糊的输入信息120,以帮助提供特定实现所需的任何附加量的安全性。
作为一个示例,如果要基于ECC点乘计算导出的秘密密钥旨在用于保护不被认为是足够秘密的和/或应该由模糊提供附加保护(例如,如由编程者为特定实现所确定的)的信息,则可以可选地不使任何输入信息模糊。相反,可以通过省略用于对这种经模糊的信息解密或以其他方式去模糊的操作来实现潜在的一些提高的性能。作为另一示例,如果要基于ECC点乘计算导出的秘密密钥旨在用于保护被认为是足够秘密的和/或应该由模糊提供附加保护(例如,如由编程者为特定实现所确定的)的信息,则可以可选地对从至少一些到所有输入信息(例如,架构可编程或可配置部分)的任何地方进行模糊。例如,在一个实施例中,经模糊的输入信息可以可选地包括经模糊的基点、经模糊的标量乘数、和经模糊的模数、或其任何组合。
在一些实施例中,指令可以灵活地指定或指示输入信息的一个或多个部分是否被模糊。例如,指令的一组可编程或可配置的一个或多个位可以指示标量乘数是否被模糊,指令的另一组可编程或可配置的一个或多个位可以指示基点是否被模糊,而指令的又一组可编程或可配置的一个或多个位可以指示模数是否被模糊。在其他实施例中,指令可以隐式地指示(例如,对于操作码其可以是固定的)输入信息的一个或多个部分是否被模糊。例如,仅第一部分(例如,标量乘数)被模糊对于第一指令的第一操作码可以是隐式的,仅第二不同部分(例如,模数)被模糊对于第二不同指令的第二不同操作码可以是隐式的,仅第三不同部分(例如,基点)被模糊对于第三不同指令的第三不同操作码可以是隐式的,并且多个部分(例如,所有基点、标量乘数、和模数)被模糊对于第四进一步不同指令的第四进一步不同操作码可以是隐式的。还可以使用这些方法的组合。例如,第一部分(例如,标量乘数)被模糊对于操作码可以是隐式的,并且指令的一组一个或多个位可以指示第二部分(例如,模数)是否被模糊。构想这些方法的各种不同组合。
各种不同类型的经模糊的输入信息120适用于不同的实施例。经模糊的输入信息不是被输入到ECC点乘计算的实际输入信息本身。例如,经模糊的标量乘数(k*)不是被输入到ECC点乘计算的实际标量乘数(k)。相反,经模糊的标量乘数(k*)可以表示可以被去模糊以确定被输入到ECC点乘计算的实际标量乘数(k)的经模糊的值。在各实施例中,经模糊的输入信息可以包括各种不同类型的加密、卷积、修改或以其他方式模糊的输入信息中的任一种,除非知道秘密(例如,秘密108),否则不能在排除困难、极端困难、计算不切实际、或不可行性中的一种(取决于特定实现所需的特定级别的增强的安全性)的情形下根据上述经模糊的输入信息来确定实际输入信息。秘密(例如,秘密108)对于处理器可以是已知的但是不可由软件访问或至少不可读(例如,甚至是最高特权的系统级软件)。
再次参考图1,执行单元106与解码单元104耦合,并且在一些实施例中与寄存器124耦合(例如,如果指向源操作数126的指针存储在寄存器124中)。当部署在系统中时,在一些实施例中,执行单元106可以可操作以与存储器114耦合(例如,如果源操作数存储在其中则用于接收源操作数)。执行单元106可接收表示利用经模糊的输入信息的ECC点乘指令102和/或从该指令导出的一个或多个经解码或以其他方式转换的指令或控制信号。执行单元106还可以接收用于ECC点乘操作的输入信息118,包括任何可选的经模糊的输入信息120。在一些实施例中,存在可选地至少一些经模糊的输入信息120,但本公开的范围不限于此。
如所示,执行单元106可以包括秘密108、与秘密耦合的去模糊单元110、以及与去模糊单元110耦合的ECC点乘单元112。如前所述,秘密108对于执行单元106和/或处理器100可以是可用的,但是不可由软件访问、或至少不可读(例如,甚至是最有特权的级别的系统软件)。在一些实施例中,去模糊单元110和/或执行单元106和/或处理器100可以可操作以响应于和/或作为利用经模糊的输入信息的ECC点乘指令102的结果(例如,响应于从指令解码的指令或控制信号)来使用秘密108以对经模糊的输入信息120进行去模糊。对实际输入信息的去模糊和/或生成可以完全在处理器100的范围内执行,使得实际输入信息可以永远不可由软件读取。在一些实施例中,去模糊单元110可以可选地可操作以响应于该指令而如果去模糊操作未成功则用信号通知错误。例如,在一些实施例中,经模糊的输入信息可以包括认证或完整性校验信息,其可以用于确定去模糊操作是否提供可认证输入信息和/或具有完整性的输入信息。在一个方面中,这种失败的去模糊可以导致用信号通知错误和/或可以导致指令的进一步执行被停止(例如,阻止生成和存储ECC点乘结果)。
秘密108和去模糊在本文中将被广泛地解释为基于各种不同类型的信息、逻辑、或信息和逻辑的组合中的任一个,从其中可以根据经模糊的输入信息确定实际输入信息,但是在没有它的情况下,不能在排除至少困难或极端困难的情形下根据经模糊的输入信息确定实际输入信息。在一些实施例中,经模糊的输入信息可以表示经加密的输入信息,并且秘密可以表示秘密密码密钥,秘密密码密钥可以在管芯上存储和/或生成并且可以用于对经加密的输入信息解密以确定实际输入信息。在其他实施例中,秘密可以表示可以以特定方式(例如,根据密码或数学算法)与经模糊的输入信息组合以确定实际输入信息的信息。
在其他实施例中,秘密108可以表示可以用于以特定方式(例如,根据密码、数学或逻辑变换)修改或变换经模糊的输入信息以确定实际输入信息的信息和/或逻辑。在进一步的实施例中,秘密可以表示作为秘密存储在处理器上的实际输入信息本身,如果经模糊的输入信息具有特定所需值或者通过测试或标准,则可以选择和使用该秘密。在另一些实施例中,秘密可以表示可操作以秘密方式修改经模糊的输入信息以确定实际输入信息的信息和/或逻辑。在一些实施例中,秘密可以包括早期软件在处理器中存储的但是后来的软件不能读取的信息和/或早期软件在处理器中配置的但是后来的软件不能读取或重新配置的逻辑,但是本公开的范围不限于此。替代地,秘密可以表示可以用于对经模糊的输入信息去模糊的其他类型的秘密管芯上信息和/或秘密管芯上逻辑。这些方法的各种组合通常也是合适的。应理解,这些仅是一些说明性示例。本文其他地方讨论的其他方法也是合适的。此外,另一些方法对本领域技术人员而言将是显而易见的,并且具有本公开的益处。
ECC点乘单元112可以可操作以根据整组输入信息(例如,包括任何去模糊的输入信息)生成ECC点乘结果122。在一些实施例中,ECC点乘结果可以在执行单元内并且在同一单个利用经模糊的输入信息的ECC点乘指令的执行的范围内生成。一个潜在的优点是,这可以有助于避免暴露经密码地处理的部分或中间结果,其可能潜在地被分析以揭示应该是秘密的信息(例如,先前描述的各种类型的经模糊的输入信息中的任一个)。相反,在一些实施例中,所有这些中间结果可以保持在ECC点乘单元112和/或执行单元106和/或处理器100内,而不是存储在架构上可见的寄存器或存储器位置中。一旦已经生成了ECC点乘结果122,执行单元可以可操作以响应于和/或作为指令的结果而将ECC点乘结果122存储在由指令指示的目的地存储位置(例如,存储器114中的位置)中。通常,在许多公钥密码使用的情况下,ECC点乘结果122可以以未加密和未模糊的格式存储,因为它通常将由常规软件处理。
有利地,通过将经模糊的输入信息而不是将实际输入信息提供给处理器100,软件(例如,甚至有特权的恶意软件)可能不能直接读取实际输入信息,并且在至少困难或在一些实施例中的极端困难的情形下(例如,根据特定实现所需的特定级别的增强的安全性)可能不能确定实际输入信息。例如,当结合公钥密码使用时,这可以有助于保护秘密或私有信息(例如,私钥)和/或以其他方式有助于提高安全性。
执行单元106和/或处理器100可以包括具体的或特定的逻辑(例如,晶体管、集成电路、或可能与固件(例如,存储在非易失性存储器中的指令)组合的其他硬件),其可操作以执行利用经模糊的输入信息的ECC点乘指令102和/或响应于和/或作为该指令的结果(例如,响应于从其解码的指令或控制信号)存储ECC点乘结果122。作为示例,执行单元106可以包括微代码引擎、状态机等,以执行ECC点乘的操作。在一些实施例中,执行单元106可以包括:一个或多个输入结构(例如,端口、互连、接口),用于接收输入信息和/或经模糊的输入信息;电路或逻辑,与一个或多个输入结构耦合,用于接收并处理所接收的信息,并生成ECC点乘结果122;以及一个或多个输出结构(例如,端口、互连、接口),与电路或逻辑耦合,用于输出ECC点乘结果122。为了避免混淆本描述,已示出和描述了相对简单的处理器。
然而,处理器100可任选地包括其他处理器组件。例如,各种不同的实施例可包括针对图9-11中的任一图所示和所述的组件的各种不同的组合和配置。处理器100的所有组件可耦合在一起以允许它们按预期操作。
图2是执行利用经模糊的输入信息的ECC点乘指令102的实施例的方法230的实施例的流程框图。在各种实施例中,可由处理器、指令处理装置或其他数字逻辑设备来执行该方法。在一些实施例中,可由图1的处理器100和/或可在图1的处理器100内执行方法230。本文中针对处理器100所描述的组件、特征和特定的任选细节也任选地适用于方法230。替代地,可由不同的处理器或装置和/或在不同的处理器或装置内执行方法230。此外,处理器100可以执行与方法230不同的方法。
在框231处,该方法包括接收利用经模糊的输入信息的ECC点乘指令102。在各方面中,可在处理器或处理器的部分(例如,指令取出单元、解码单元、总线接口单元等)处接收指令102。在各方面中,可从处理器外和/或管芯外的源(例如,从存储器、互连等)或从处理器上和/或管芯上的源(例如,从指令高速缓存、指令队列等)接收指令102。
利用经模糊的输入信息的ECC点乘指令102可以指定或以其他方式指示存储用于ECC点乘操作的输入信息的多个源操作数(例如,在存储器中的多个位置处)。在一些实施例中,输入信息可以包括基点、标量乘数、模数、根据模数预计算的一个或多个参数(例如,一个或多个约分常数)、或其足以为给定的方法提供所有所需输入的各种组合。在一些实施例中,可以可选地使输入信息(例如,上述输入信息中的任一个)中的至少一些模糊,但是这不是必须的。经模糊的输入信息可以与本文其他地方描述的相同或类似。
在框232处,可以响应于和/或作为利用经模糊的输入信息的ECC点乘的结果而存储ECC点乘结果122。ECC点乘结果122可以存储在目的地存储位置中,其由利用经模糊的输入信息的ECC点乘指令102指定或以其他方式指示。
所图示的方法涉及架构操作(例如,那些从软件角度可见的操作)。在其他实施例中,该方法可以任选地包括一个或多个微架构操作。作为示例,可乱序地取出、解码、调度指令,可访问源操作数,执行单元可执行微架构操作以实现该指令,等等。在一些实施例中,用于实现该指令的微架构操作可以可选地包括针对图3或6-8中的任一个所示和所述的那些操作中的任何操作,包括为其提及的变型。
可以可选地执行的一个示例操作用于对经模糊的输入信息去模糊。这可以可选地包括本文其他地方讨论的去模糊方法中的任一个的操作。
通常,完全执行ECC点乘可能花费相对大量的周期(例如,取决于操作数尺寸,从数千到数万或甚至更多)。由于对操作数去模糊所需的计算,完全执行利用经模糊的输入信息的ECC点乘指令可能花费甚至更多周期。
部分地由于相对大量的周期,有时在完成之前指令的执行被中断是可能的。在一些实施例中,可以可选地采取若干可能的预防措施中的一个以有助于确保可能被分析以确定秘密信息的部分或中间状态不变成可由软件读取。
在一些实施例中,响应于在执行指令时的中断,执行单元106可以可操作以停止执行ECC点乘计算和/或指令、对在中断时或附近计算的当前中间状态加密、并且将经加密的中间状态存储在存储位置(例如,存储器114中的位置)中。作为示例,可以利用不可由软件读取的处理器的秘密密钥对中间状态加密。在已经解决中断之后,可以检取、解密经加密的中间状态,并且算法可以以恢复的中间状态开始来恢复。在其他实施例中,响应于在执行指令时的中断,执行单元可以可操作以停止执行ECC点乘计算和/或指令、并且将在中断时或附近计算的当前中间状态存储在不可由软件读取的处理器的管芯上存储(例如,非架构上可见的存储)中。在其他实施例中,响应于在执行指令时的中断,执行单元可以可操作以停止执行ECC点乘计算和/或指令、并且丢弃在中断时或附近计算的当前中间状态。这些方法中的任一个可以可选地用于图1的处理器100和/或图2的方法230。
ECC点乘涉及椭圆曲线。椭圆曲线是有限域(例如,模素数p)上的曲线,包括满足等式y2=x3+ax+b(mod p)的点。p的值可以是大的素数。
椭圆曲线具有称为无穷远点的特殊点。基本曲线参数是{a,b,p}以及生成点及其顺序。对于所有国家标准和技术研究所(NIST)素数曲线,参数“a”具有特殊值(p-3),并且使用“a”的特殊值来示出。
对曲线的点的群组操作由以下操作定义:1)两个点的“加法”,或2)点的“加倍”。
考虑定义为(x1,y1)的第一点P1和定义为(x2,y2)的第二点P2,其中P1!=-P2,以下定义为:
P3=(x3,y3)=P1+P2(将两个点“相加”)为:
x3=L2–x1–x2(mod p)
y3=L(x1–x3)–y1(mod p)
其中L=(y2–y1)/(x2-x1)(mod p)
点P1的“加倍”定义为:
x3=L2–2x1(mod p)
y3=L(x1–x3)–y1(mod p)
其中L=(3x12–3)/2y1(mod p)
因为L的计算涉及昂贵的求逆操作(相当于除法),所以可以使用诸如射影坐标的其他坐标表示。通过使用雅可比射影坐标,将z!=0的射影点(x,y,z)映射到仿射点(x/z2,y/z3),并且当z=0时映射到无穷远点。一旦坐标被变换为射影,可以完成一系列点加或点加倍,而无需昂贵的求逆操作。在一系列点加/加倍之后,必须转换回仿射,这需要求逆操作。然而,该成本分摊在整个一系列点加/加倍上。ECC中的基本操作称为标量点乘法,其中点与标量“相乘”。
为了高效地计算在点-相加/加倍内使用的大整数模算术,需要高效的约分算法。通常,利用特殊素数(例如,NIST p256)来定义ECC曲线,其中可以快速地完成约分而无需任何除法。
尽管循环示出了从右到左的方法,但是可以定义从左到右的方法,与对一组位分组的窗口技术或用于提高性能的非相邻形式(NAF)表示组合。
利用经模糊的输入信息的ECC点乘指令102可以用于具有任意尺寸的操作数的安全椭圆曲线点乘操作,以转换在诸如SSL(安全套接层)/TLS(传输层安全)和IPSec(互联网协议安全)的协议中使用的已知的重要公钥算法。ECC点乘用于TLS/SSL、国家安全套件-B算法、诸如边界网关协议的新兴标准(例如,需要安全性的新兴标准已经采用了具有P-256的ECC)。IETF(互联网工程任务组)正在开发BGPSEC(边界网关协议安全)标准,并且ECC的性能效率对于满足严格的互联网路由表收敛要求至关重要。
可以利用对应于p、B和k的三个任意长度操作数来定义指令102。一般范围的尺寸可以是任意素数的32位的倍数的从192位到512位的操作数。注意,存在具有奇数尺寸的特殊素数,诸如P521。这些特殊素数是枚举的,因为只存在少量特殊素数,并且可以利用非常简单的约分技术(使用简单的ALU指令)来对它们进行操作。枚举的素数来自NIST曲线,包括:
1.P-192
2.P-224
3.P-256//关键的一个,因为这是安全性RSA3K
4.P-384
5.P-521
因此,特殊曲线的尺寸可以由表sp_sizes[]={192,224,256,384,521,…}来表示。我们可以在立即数字节中定义高效的操作数类型/尺寸字段。一个示例编码如下:
如果1则imm8[7],在字段imm8[3:0]中枚举特殊素数
tmp=192+(32*imm8[3:0])//覆盖32位的倍数的从192到672的尺寸
size=imm8[7]?(sp_sizes[imm8[3:0]]):tmp
在一个实施例中,每个操作数存储在由特殊过程“加密”的存储器中,使得软件不能解密内容。解密只能在ECC点乘过程期间由硬件中的特殊电路使用秘密处理器密钥来完成。
一个操作数(p)是指向包含(素数)模数的“经加密”的存储器区域的指针。加密p可能是可选的,因为对于特殊的枚举的曲线,素数是已知的。另一个操作数(k)是包含标量乘数操作数的“经加密”的存储器区域。第三操作数(B)是包含基点(x和y坐标对)作为输入的“经加密”的存储器区域,并且被结果覆写。结果在没有特殊加密的情况下被写回,因为它需要由普通软件处理。
利用经模糊的输入信息的ECC点乘指令102可以首先通过使用秘密的隐藏处理器密钥来解密保存源操作数的存储器缓冲器。所检取的密钥永远不能被一般的软件看见,并且将只在指令的执行的范围内被使用。因为利用可变的操作数尺寸来指定指令,并且每个指令可以是约100k+个周期的处理,所以微架构应该支持被中断并且恢复指令的执行。然而,需要注意确保需要被保存和恢复的部分状态永远不会被软件误用(例如,通过确保被加密的特殊保存区域,可能通过相同的隐藏处理器密钥),使得指令是超安全的并且不会揭示依赖于操作数的任何部分信息。
注意,在一些算法中,一些操作数是公共的,诸如模数。在Diffie-Hellman阶段1中,该点也被发布(ECC组的生成器基点),而在阶段2中,它需要被保持为秘密的。在此类情形下,加密公共的信息会是浪费的。因此,我们可以将方案扩展为具有说明哪个操作数是加密的以及哪个操作数是原始的的位。
操作数中的一个或多个可以存储在由特殊过程“加密”的存储器中,使得软件不能解密内容。解密可以在点乘过程期间由硬件中的特殊电路使用秘密处理器密钥来完成。
为了进一步说明某些概念,考虑用于ECC点乘的一些可能的实现算法可能是有帮助的。用于实现标量点乘(例如,k*B)的一种可能算法在下列伪代码中示出:
xB,yB=点B的坐标
t位素数p
k=(kt-1…k1k0)2
初始化Q=∞
For i from 0 to t-1
Q=k*B
B=2B//点加倍
If ki=1
Q=Q+B//点加
Return Q
如所示,标量乘数可以由其各个位(ki)表示,其中ki的范围从k0到kt-1。Q的值可以是标量乘数k与基点B的乘积。最初,可以将值Q设置为等于∞。然后,可以在循环的t(例如,1024)个迭代中的每一个期间更新值Q。对于t个迭代中的每一个,执行点加倍(即,值B被更新为等于其自身与2的乘积(即,B=2B))。对于t个迭代中的每一个,当循环的对应标量乘数位(即,ki)被设置为二进制一时(即,当ki=1时),执行点加(即,值Q被更新为等于其自身加上B(即,Q=Q+B))。在循环的末尾处,返回Q的值作为ECC点乘的结果。如果需要,可以可选地使用用于实现ECC点乘的该算法。
然而,该算法的实现可能往往是缓慢的。一方面,实现在点加和点加倍中使用的模操作通常可能是缓慢的。代表性地,可以利用类似除法的操作来实现这些操作,这通常花费相对长的时间来计算,至少与像乘法的其他类型的操作相比。此外,此类模操作需要在循环的每个迭代内执行,循环可能有多个迭代(例如,在该示例中为t,或者在一些情况下甚至更多)。因此,尽管根据一些实施例该算法适用于实现ECC点乘,但是通常可能期望使用ECC点乘算法,ECC点乘算法使用特殊的模块化约分方案以实现更快的性能。在一个实施例中,利用特殊素数(例如,NIST p256)来定义ECC曲线,其中可以快速地完成约分而无需任何除法。在另一实施例中,在主循环开始之前,可以利用一系列简单的ALU指令来完成模块化约分(例如,蒙哥马利约分)。
图3是利用蒙哥马利约分执行利用经模糊的输入信息的ECC点乘指令102的实施例的详细方法335的示例实施例的流程框图。在各种实施例中,可由处理器、指令处理装置或其他数字逻辑设备来执行该方法。在一些实施例中,可由图1的处理器100和/或可在图1的处理器100内执行方法335。本文中针对处理器100所描述的组件、特征和特定的任选细节也任选地适用于方法335。替代地,可由不同的处理器或装置和/或在不同的处理器或装置内执行方法335。此外,处理器100可以执行与方法335不同的方法。
在框336处,该方法包括接收利用经模糊的输入信息的ECC点乘指令102。该指令可以指定或以其他方式指示一个或多个源操作数,其存储可选地经模糊的基点(B)、可选地经模糊的标量乘数(k)、可选地经模糊的模数(p)、可选地用于蒙哥马利约分的一个或多个可选地经模糊的约分常数、或表示蒙哥马利约分算法的至少足够的输入的其任何组合。实施例构想使这些输入信息的从没有一个到全部的范围的任何组合模糊。
然后,在框337处,如果对于特定实施例存在任何可选的经模糊的输入信息,则可以对其去模糊。可以使用本文其他地方描述的任何方法和/或以任何方式来执行去模糊。
然后,在框338处,如果蒙哥马利约分的任何所需约分常数尚未在由源操作数提供的输入信息中作为预计算的约分常数提供,则可以计算蒙哥马利约分的任何所需约分常数。替代地,可以可选地在由源操作数提供的输入信息中将约分常数中的一个或多个提供为预计算的常数。这可以有助于避免需要在指令的执行的范围内计算这些约分常数。在使用操作数尺寸(例如,1024位操作数)的一些实施例中,该方法可以使用由蒙哥马利约分定义的两个约分常数(R2和μ)作为模数(p)的函数。R2的值可以通过等式R2=2(2*操作数-尺寸)模p来计算。mu的值可以通过等式μ=-p-1模(264)来计算。
接下来,在框339处,可以利用蒙哥马利约分使用约分常数R2和μ来执行ECC点乘计算。这些等式用于在循环之前预计算并且将xB,yB变换到蒙哥马利空间。然后,可以在循环的迭代中的每一个期间更新值Q。与上述非蒙哥马利实现相反,不需要执行类似除法的操作,从而提高性能。
在循环的末尾处,对最终值Q执行蒙哥马利约分(即,在返回Q之前将Q从蒙哥马利空间变换回来)。这表示ECC点乘结果122。
再次参考图3,在框340处,由蒙哥马利约分计算的ECC点乘结果122可以存储在由指令指示的目的地存储位置中。本文其他地方描述的目的地存储位置中的任一个是合适的。
前述方法仅表示利用蒙哥马利约分来执行利用经模糊的输入信息的ECC点乘指令102的方法的一个说明性示例实施例。还构想了其他方法并且其对于获得本公开的益处的本领域普通技术人员将是明显的。例如,所示的方法基于基点、标量乘数、和模数,但是在其他实施例中,基点、标量乘数、和模数可以具有各种其他2的幂的尺寸,包括若干数量级(例如,可以从256位到大约16384位的范围)。作为另一示例,所示的方法基于使用64位的字尺寸的字级蒙哥马利约分算法,但是在其他实施例中,可以可选地使用32位或其他字尺寸。此外,已经以相对基础的形式描述了该方法,但是可以可选地将多个操作添加到该方法中和/或从该方法中去除。此外,不需要特定的操作顺序,而是可以可选地以其他顺序执行某些操作和/或使它们重叠。
在下面的伪代码中示出了合适的利用经模糊的输入信息的ECC点乘的一个具体示例实施例,名为ECC_POINT_MUL_LOCKED。
ECC_POINT_MUL_LOCKED{
//输入和输出
SrcDst R3//指向包含可选地“经加密”的点和结果(各自作为仿射x:y坐标对)的存储器
//输入信息
imm8
Src1R1//指向包含可选地“经加密”的标量乘数的存储器的指针
//src2对于使用枚举素数的特殊曲线是可选的和不需要的
Src2R2//指向包含可选地“经加密”的素数模数的存储器的指针
//对基点、模数、和标量乘数去模糊
{xB||yB}=(imm8[4])?de-obfuscate(Srcdst):*srcdst
k=(imm8[5])?de-obfuscate(Src1):*src1
If(imm8[7])p=get-enumerated-prime(imm8[3:0])
Else p=(imm8[6])?de-obfuscate(Src2):*src2
//如果去模糊失败则可选地用信号通知错误
找到k中的第一集合msb的索引作为X
Transform-coordinates-affine-to-jacobian(B)//可选的,用于执行
初始化Q=∞
For i from 0 to X
B=2B//点加倍
If ki=1
Q=Q+B//点加
Transform-coordinates-jacobian-to-affine(Q)//可选的,用于执行*srcdst=Q
ECC_POINT_MUL_LOCKED指令可以显式地指定或隐式地指示第一寄存器(R1),例如第一64位通用寄存器,其用于存储存储器中的位置的有效地址、指针或其他指示,该位置用于存储具有经模糊的标量乘数的第一源操作数(Src1)。该指令还可以显式地指定或隐式地指示第二寄存器(R2),例如第二64位通用寄存器,其用于存储存储器中的位置的有效地址、指针或其他指示,该位置用于存储具有经模糊的模数的第二源操作数(Src2)。该指令还可以显式地指定或隐式地指示第三寄存器(R3),例如第三64位通用寄存器,其用于存储存储器中的位置的有效地址、指针或其他指示,该位置用于存储源-目的地操作数(SrcDst),源-目的地操作数最初具有经模糊的基点,并且在指令的完成后用作将存储ECC点乘结果的目的地存储位置。替代地,可以可选地使用本文其他地方公开的指示源和/或目的地操作数的各种其他方式中的任一个。
在一个实施例中,对所有基点、标量乘数、和模数进行模糊。替代地,在其他实施例中,可以可选地对包括基点、标量乘数、和模数的任何组合的任何一个或多个进行模糊。该指令可以控制或以其他方式使执行单元对经模糊的基点、标量乘数、和模数进行去模糊。本文其他地方提及的去模糊方法中的任一个是合适的(例如,下面针对图6-8描述的方法中的一个)。作为一个说明性示例,执行单元可以使用秘密处理器密码密钥来解密经加密的输入信息。如果去模糊或用于检取操作数的操作中的任一个失败(例如,如果经加密的缓冲器具有与它们相关联的完整性校验失败的形式),则可以可选地用信号通知错误。在这种情况下,将不计算输出。
在一个实施例中,不通过源操作数作为输入来提供蒙哥马利约分常数,因此指令可以控制或以其他方式使执行单元计算蒙哥马利约分常数。具体地,可以在指令的执行内计算R2和U常数。代表性地,可以对每个ECC点乘操作/指令预计算这些常数一次。然后,该指令可以控制或以其他方式使执行单元利用约分常数来执行ECC点乘计算的蒙哥马利约分。最后,响应于该指令,执行单元可以将ECC点乘结果存储在目的地存储位置(例如,在这种情况下SrcDst)中。
在下面的伪代码中示出了合适的利用经模糊的输入信息的ECC点乘的另一具体示例实施例,名为MODEXP_LOCKED2。
ECC_POINT_MUL_LOCKED2{
//输入信息
Src1 R1//存储指向具有经模糊的N||R2||U的存储器位置的指针的寄存器
Src2 R2//存储指向具有经模糊的标量乘数的存储器位置的指针的寄存器
SrcDst R3//存储指向具有经模糊的基点的存储器位置的指针的寄存器
//对基点、模数、和标量乘数去模糊
N||R2||U=de-obfuscate(Src1)//如果去模糊失败则可选地用信号通知错误
k=de-obfuscate(Src2)//如果去模糊失败则可选地用信号通知错误
B=de-obfuscate(SrcDst)//如果去模糊失败则可选地用信号通知错误
//因为已经预计算,所以不需要计算蒙哥马利约分常数
//执行ECC点乘
初始化Q=∞
For i from 0 to X
B=2B//点加倍
If ki=1
Q=Q+B//点加
*SrcDst=Montgomery-Reduce(Q)
}
ECC_POINT_MUL_LOCKED2指令类似于ECC_POINT_MUL_LOCKED 1指令。上面对ECC_POINT_MUL_LOCKED1指令提及的讨论和变型也可选地应用于ECC_POINT_MUL_LOCKED2指令。然而,一个区别是ECC_POINT_MUL_LOCKED2指令通过源操作数(例如,作为预计算的常数)提供R2和U约分常数作为输入。在所示的实施例中,约分常数是可选地串接的(例如,如符号||所示)或以其他方式与模数一起提供的,但是这不是必须的。约分常数是可以从模数推导出的,因此将它们保持在同一源操作数中有一些益处。
然而,在其他实施例中,约分常数可以由其他源操作数和/或多个源操作数提供。因为提供约分常数作为输入,所以执行单元不需要计算这些约分常数作为指令的操作的一部分。相反,对于其他输入参数,如果约分常数被模糊,则可以对它们进行去模糊。在一些实施例中,如果模数被模糊,则约分常数可能也被模糊,而如果模数未被模糊,则约分常数可能未被模糊。
用于ECC点乘的合适的约分算法的另一示例是巴雷特约分。其他实施例涉及与图3所示的方法类似的方法,除了使用巴雷特约分常数,并且巴雷特约分算法用于执行ECC点乘。在一些实施例中,该方法可以使用由巴雷特约分定义的约分常数作为模数(p)的函数,如等式U=floor(22048/p)所示。
2个数字X和Y的巴雷特乘法可以被执行为巴雷特约分(X*Y,p,U)。对于平方操作,这也可以被类似地执行。注意,这有点类似于两个数字的蒙哥马利乘法,其可以作为两个数字的常规乘法、随后是蒙哥马利约分来完成。
巴雷特约分与先前描述的蒙哥马利约分具有某些相似性。应当理解,针对蒙哥马利约分所描述的特征和可选变型也可选地适用于巴雷特约分,除非另行指出,或者除非以其他方式显而易见(例如,除非它们与巴雷特约分不兼容)。
名为ECC_POINT_MUL_LOCKED3的合适的利用经模糊的输入信息的ECC点乘的又一具体示例实施例与上面针对ECC_POINT_MUL_LOCKED1所示的相同,除了使用巴雷特约分常数和计算而不是蒙哥马利约分常数和计算。名为ECC_POINT_MUL_LOCKED4的合适的利用经模糊的输入信息的ECC点乘的再一具体示例实施例与上面针对ECC_POINT_MUL_LOCKED2所示的相同,除了使用巴雷特约分常数和计算而不是蒙哥马利约分常数和计算。
图4是利用经模糊的输入信息的ECC点乘指令402的示例实施例的框图。指令包括操作代码或操作码442。该操作码可表示可操作以标识要执行的指令和/或操作(例如,利用经模糊的输入信息的ECC点乘操作)的多个位或者一个或多个字段。
该指令还包括第一源指示字段444、第二源指示字段446、和第三源/目的地指示字段448。这些源指示字段可以用于指定或以其他方式指示用于提供输入参数和/或可选地经模糊的输入参数的源操作数的源存储位置。该指令可以包括指示用于ECC点乘操作的输入信息的对应部分是否被模糊的至少一个字段。在一个实施例中,源操作数存储一个或多个经模糊的秘密输入参数和一个或多个未模糊的公共输入参数。作为示例,这些字段中的每一个可以包括用于指定用于相关联的操作数的寄存器、存储器位置或其他存储位置的地址的位。在其他实施例中,可以使用更少或更多的源和/或目的地指示字段。例如,可以可选地在单个较大的存储器位置中提供输入信息。作为另一示例,这些存储位置中的一个或多个可以可选地对于指令(例如,操作码)是隐式的或固有的,而不是被指定的。此外,如果需要,可以可选地使用附加的单独的目的地指示字段,而不是使第三字段是源/目的地指示字段。
在一些实施例中,该指令还可以可选地具有操作数尺寸指示字段450。操作数尺寸指示字段可以允许指定或指示源操作数的尺寸。这可以有助于提供要使用的灵活或可变的以及架构上可编程或可配置的尺寸的操作数。在一些实施例中,单个尺寸字段可以用于指定或以其他方式指示用于所有源操作数的单个尺寸,但是本公开的范围不限于此。在一些实施例中,为了提供相对高级别的灵活性,指令可以允许操作数尺寸被配置为在从约256位到约16000位的范围,但是本公开的范围不限于任何已知尺寸。替代地,如果需要,可以可选地使用固定尺寸操作数,并且可以可选地省略操作数尺寸指示字段。作为示例,固定的足够大的操作数尺寸可以可选地用于容纳预期用于特定实现的操作数的尺寸,并且未被较小操作数占用的任何未使用的位可以可选地用零填充。
在一些实施例中,该指令还可以可选地具有一个或多个操作数模糊指示字段452。一个或多个操作数模糊指示字段中的每一个可以用于指示对应的操作数是否可选地被模糊。作为示例,在一些实施例中,可以存在第一操作数模糊指示字段或一个或多个位的集合以指示第一操作数(例如,用于存储基点)是否被模糊,可以存在第二操作数模糊指示字段或一个或多个位的集合以指示第二操作数(例如,用于存储标量乘数)是否被模糊,并且可以存在第三操作数模糊指示字段或一个或多个位的集合以指示第三操作数(例如,用于存储模数)是否被模糊。
替代地,指令的操作码可以可选地固定哪些操作数(例如,基点、标量乘数、和模数中的哪一个)被模糊。例如,可以可选地为基点、标量乘数、和模数的不同组合被模糊、它们全部被调制、它们都不被调制(仅举数例)提供不同的操作码指令。有利地,这可以有助于允许编程者配置或指定哪些操作数被模糊,使得可以保护期望安全的操作数,而不期望被保护的其他操作数不需要被去模糊。作为一个示例,在一些算法中,诸如DSA和Diffie-Hellman,一些操作数是公共的,诸如模数(例如,NIST公布的素数)。在Diffie-Hellman阶段1中,基点也是公布的或公开的,而在阶段2中,它需要是秘密的或私有的。在一些情况下,可以通过不模糊公共的信息和需要对其去模糊来实现更好的性能。
这仅仅是合适指令的一个说明性示例。替代的实施例可包括所示字段的子集和/或可添加附加字段。所示的字段布置不是必须的,相反,可以以各种方式重新布置字段。
此外,这些字段中的每一个可由连续的一组位组成,或者可包括逻辑地表示字段的非连续的或分开的位。
图5是具有操作数尺寸指示字段550的示例实施例和操作数模糊指示字段556的示例实施例的立即数554的示例实施例的框图。在该实施例中,立即数是8位立即数,但是可以可选地使用更大或更小的立即数。
立即数的位[3:0]表示基本操作数尺寸指示字段550A。替代地,更少或更多的位可以用于将基本操作数尺寸潜在地表示为从最小操作数尺寸的偏移。立即数的位[7]表示素数指示字段550B。在一些实施例中,基本操作数尺寸指示字段550A可以指定操作数的基本尺寸,并且素数指示字段550B可以指示是否使用已知的素数集合(例如,NIST等)或者是否在指令中显式地指定素数。作为示例,在一个实现方式中,可以将位[3:0]左移一位以确定基本尺寸,并且如果位[7]被设置为二进制一,则可以使用已知的素数集合。
否则,如果位[7]被清除为二进制零,则可以从指令显式地指定素数。
立即数的位[6:4]表示三个操作数模糊指示字段556。这些字段中的每一个可以用于指示三个源操作数中的不同的对应的一个是否被模糊。作为一个说明性示例,位[6]可以对应于用于存储模数的源操作数,位[5]可以对应于用于存储标量乘数的源操作数,并且位[4]可以对应于用于存储基点的源操作数。替代地,可以以不同方式将这些位分配给基点、标量乘数和模数。位[6:4]中的每一个的一个值(例如,二进制一)可以指示对应的源操作数被模糊,而另一个值(例如,二进制零)可以指示对应的源操作数未被模糊。这些每操作数模糊指示字段的一个潜在优点是增强的灵活性。例如,一些使用可以使标量乘数、模数和基点中的给定的一个是秘密的,而其他使用可以使同一给定的一个是公共的或私有的,并且对应的操作数模糊指示字段可以允许编程者模糊或不模糊给定的一个以实现更高的安全性或避免不必要的往往降低性能的去模糊。
在下面的伪代码中示出了合适的利用经模糊的输入信息的ECC点乘的进一步的具体示例实施例,名为ECC_POINT_MUL_LOCKED5。
ECC_POINT_MUL_LOCKED5{
//输入信息
Src1 R1//具有指向具有可选地经模糊的模数的存储器位置的指针的寄存器
Src2 R2//具有指向具有可选地经模糊的标量乘数的存储器位置的指针的寄存器
SrcDst R3//具有指向具有可选地经模糊的基点的存储器位置的指针的寄存器
imm8
//对基点、模数、和标量乘数去模糊
p=(imm8[6])?de-obfuscate(Src1):*Src1//可选地用信号通知错误
k=(imm8[5])?de-obfuscate(Src2):*Src2//可选地用信号通知错误
B=(imm8[4])?de-obfuscate(SrcDst):*SrcDst//可选地用信号通知错误
//计算蒙哥马利约分常数
R2=22048mod N
U=-N-1mod(264)
//执行ECC点乘
初始化Q=∞
For i from 0 to X
B=2B//点加倍
If ki=1
Q=Q+B//点加
*SrcDst=Montgomery-Reduce(Q)
}
ECC_POINT_MUL_LOCKED5指令类似于ECC_POINT_MUL_LOCKED1。上面对ECC_POINT_MUL_LOCKED1指令提及的讨论和变型也可选地适用于ECC_POINT_MUL_LOCKED5指令。然而,一个区别是ECC_POINT_MUL_LOCKED5指令允许源操作数(Src1、Src2和SrcDst)中的每一个被可选地模糊(例如,可编程配置)。仅那些经模糊的参数需要被去模糊。
名为ECC_POINT_MUL_LOCKED6的利用经模糊的输入信息的合适的ECC点乘的又一具体示例实施例与上面针对ECC_POINT_MUL_LOCKED3所示的相同,除了它使用与ECC_POINT_MUL_LOCKED5指令相同的立即数和模糊可配置性。名为ECC_POINT_MUL_LOCKED7的利用经模糊的输入信息的合适的ECC点乘的进一步的具体示例实施例与上面针对ECC_POINT_MUL_LOCKED4所示的相同,除了它使用与ECC_POINT_MUL_LOCKED5指令相同的立即数和模糊可配置性。
图6是执行单元606的实施例的框图,响应于具有经加密的输入信息的ECC点乘指令102,执行单元606可操作以从经加密的ECC点乘输入信息620解密实际的ECC点乘输入信息660。经加密的输入信息620是经模糊的输入信息的示例。经加密的输入信息存储在可由指令指定或以其他方式指示的存储位置616(例如,寄存器或存储器位置)中。执行单元606包括解密单元610。执行单元606和/或解密单元610可以被耦合以接收经加密的输入信息620。解密单元610和/或执行单元606还可以被耦合以接收秘密密码密钥608。秘密密码密钥608可由解密单元610和/或执行单元606访问和可用,但是不可由软件662(例如,甚至是最高特权的系统软件)访问、或至少不可读。在一些实施例中,最初秘密密码密钥608可能已经由软件写入或存储到处理器中,但是随后软件662可能不能读取它。在所示的实施例中,秘密密码密钥608是执行单元606的一部分。在其他实施例中,秘密密码密钥608可以替代地与执行单元606分开,但是与执行单元606和/或解密单元610耦合(例如,存储在处理器的密钥箱中)。
解密单元610可以接收秘密密码密钥608,并且可以可操作以使用秘密密码密钥608将经加密的输入信息620解密为经解密的ECC点乘输入信息660。本领域已知的各种不同的解密算法是合适的,诸如例如,高级加密标准(AES)、数据加密标准(DES)、三重DES(3DES)、Rivest密码4(RC4)和其他块/流密码。ECC点乘单元612与解密单元610耦合,并且可以接收经解密的输入信息660。ECC点乘单元可以使用经解密的输入信息来计算ECC点乘结果,如本文其他地方所述。有利地,在ECC点乘计算中使用的实际输入信息660可以由执行单元606和/或其处理器响应于指令而生成,但是该实际输入信息可能永远不会驻留在处理器的架构寄存器、或存储器位置、或任何其他架构上可见的存储位置中、或以其他方式可由软件662读取。
图7是执行单元706的实施例的框图,响应于利用经模糊的输入信息的ECC点乘指令102,执行单元706可操作以从ECC点乘输入信息指示符720确定秘密的ECC点乘输入信息760。输入信息指示符702是经模糊的输入信息的示例。指示符720可以广泛地表示可以用于选择、标识或以其他方式指示一组秘密的实际输入信息的各种不同类型的信息或值中的任一个。指示符720可以存储在可由指令指定或以其他方式指示的存储位置716(例如,寄存器或存储器位置)中。
执行单元706包括ECC点乘输入信息确定单元710,其在本文中也简称为确定单元710。执行单元706和/或确定单元710可以被耦合以接收输入信息指示符720。确定单元710和/或执行单元706还可以被耦合到不同组的秘密的ECC点乘输入信息708。不同组的秘密的ECC点乘输入信息708表示可由确定单元710和/或执行单元706访问和可用的秘密,但是不可由软件762(例如,甚至是最高特权的系统软件)访问或对于软件762不可用。在所示的实施例中,不同组的秘密输入信息708是执行单元706的一部分。在其他实施例中,不同组的秘密输入信息708可以替代地与执行单元706分开,但是与执行单元706和/或确定单元710耦合。确定单元710可以可操作以使用指示符720从不同组的秘密输入信息708中确定或获得一组秘密输入信息760。
在不同实施例中,确定单元710可以使用指示符720以不同方式确定秘密输入信息708。在一些实施例中,可以在列表、表格、阵列或其他有序布置中排列不同组的秘密输入信息708。指示符720可以表示用于选择或指示特定的一组秘密输入信息的索引、偏移、数字或其他指示符。例如,值为八的指示符720可以选择阵列的第八条目中的秘密输入信息708。在其他实施例中,指示符720可以是标识符。不同组的秘密输入信息708可以不一定以任何特定顺序布置。然而,不同组的秘密输入信息708中的每一个可以具有不同的对应的唯一标识符。例如,第一组可以具有标识符“00000000”,第二组可以具有标识符“00000010”,第三组可以具有标识符“01000000”,等等。标识符可以与该组秘密输入信息708的标识符匹配,以选择或指示该组秘密输入信息708。这些只是数个说明性示例。构想了使用指示符来确定一组秘密输入信息708的其他方式,并且对于本领域技术人员而言将是显而易见的并且具有本公开的益处。
ECC点乘单元712与确定单元710耦合,并且可以接收秘密输入信息760。ECC点乘单元712可以使用秘密输入信息708来计算ECC点乘结果,如本文其他地方所述。有利地,响应于指令,秘密输入信息708可以由执行单元和/或其处理器生成,但是可能永远不可由软件762读取。
图8是执行单元806的实施例的框图,响应于利用经模糊的输入信息的ECC点乘指令102,执行单元806可操作以从可认证的经模糊的输入信息820确定经去模糊和认证的ECC点乘输入信息860。可认证的经模糊的输入信息820存储在可由指令指定或以其他方式指示的存储位置816(例如,寄存器或存储器位置)中。除了被模糊之外,输入信息820也是可认证的。在一些实施例中,可以通过向经模糊的输入信息添加附加位(例如,认证或完整性校验位)来实现这种认证。
执行单元806包括ECC点乘输入信息去模糊和认证单元810。该单元在本文中也简称为去模糊和认证单元810。执行单元806和/或去模糊和认证单元810可以被耦合以接收可认证的经模糊的输入信息820。去模糊和认证单元和/或执行单元还可以被耦合到不可由软件862(例如,甚至是最有特权的系统软件)访问或至少不可读的秘密808。在所示的实施例中,秘密808是执行单元806的一部分。在其他实施例中,秘密808可以替代地与执行单元806分开,但是与执行单元806和/或去模糊和认证单元810耦合。
去模糊和认证单元810可以可操作以使用秘密808和可认证的经模糊的输入信息820来获得经认证的经去模糊的输入信息860。可以如本文其他地方所述的来执行去模糊。在一些实施例中,可认证的经模糊的输入信息820可以包括经加密和可认证的输入信息。作为示例,在一些实施例中,其中包括执行单元806的处理器在其指令集中可以具有编码密钥指令。处理器可以执行编码密钥指令以生成可认证的经模糊的输入信息820,其包括经模糊的输入信息加上附加认证或完整性校验信息。替代地,密钥包装算法可以可选地用于提供可认证和经模糊的输入信息820。去模糊和认证单元810可以可操作以使用秘密或隐藏的密码密钥来解密和认证这种信息。
如果所生成的经去模糊的输入信息不是预期的和/或与认证信息不一致,则认证可能失败。在一些实施例中,在这种失败的认证的情况下,执行单元806可以用信号通知错误864。例如,可以将错误864传递给软件662(例如,操作系统的错误处理程序)。在这种情况下,处理器可以停止执行指令而不存储输出。
ECC点乘单元812与去模糊和认证单元810耦合,并且可以接收经认证的经去模糊的输入信息860。ECC点乘单元812可以使用经认证的经去模糊的输入信息860来计算ECC点乘结果,如本文其他地方所述。有利地,认证或完整性校验可以与模糊一起使用。
其他实施例涉及不指示经模糊的输入信息并且不具有对输入信息进行模糊和去模糊的能力的ECC点乘指令。这些指令可以类似于本文公开的其他ECC点乘指令,除了代替指示经模糊的输入信息,它们仅能够指示未模糊的输入信息。未模糊的输入信息可以是本文其他地方提及的任何信息(例如,实际上用于执行ECC点乘的基点、标量乘数和模数)。可能不需要对输入信息解密或以其他方式去模糊,因为它未被模糊并且可以直接用于ECC点乘计算。除了这些模糊/去模糊区别之外,指令可以以其他方式具有与本文公开的其他ECC点乘指令类似或相同的特性和变型。代表性地,这些指令可以用于某些实现方式,其中对输入信息进行模糊可能不是必须的或者不是足够重要的。例如,可能是如下情况:其中密码密钥是短暂存在的(例如,仅用于一次或几次加密)、其中要被加密的数据不足够重要以证明模糊是合理的、其中指令用于非密码点乘等等。在这些情况下,对输入信息进行模糊的益处可能较少,而通常可以通过避免需要执行去模糊来获得某些性能提高。
处理器核可通过不同的方式、出于不同的目的并且在不同的处理器中实现。举例而言,此类核的实现可包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)与CPU在分开的芯片上的协处理器;2)与CPU在相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上所描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
图9A是示出根据本公开的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图。图9B是示出根据本公开的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名的乱序发布/执行架构核的框图。图9A-B中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图9A中,处理器流水线901包括取出级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也称为分派或发布)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级918、异常处置级922和提交级924。
图9B是示出根据一个实施例的实现利用经模糊的输入信息的ECC点乘指令102的处理器900的微架构的框图。具体地,处理器900描绘根据本公开的至少一个实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。利用经模糊的输入信息的ECC点乘指令102的实施例可以在处理器900中实现。在一个实施例中,处理器900是图1的处理器100。
处理器900包括前端单元930,该前端单元930耦合至执行引擎单元950,前端单元930和执行引擎单元950两者耦合至存储器单元970。处理器900可以包括核990,其是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代核类型。作为又一选项,处理器900可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在另一实施例中,核990可以具有五个级。
前端单元930包括耦合到指令高速缓存单元934(例如,指令高速缓存510)的分支预测单元932,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)单元936,该指令转换后备缓冲器单元耦合到指令取出单元938(例如,预取单元508),该指令取出单元耦合到解码单元940(例如,指令解码单元512)。解码单元940(也称为解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元940可使用各种不同的机制来实现。合适机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元934进一步耦合至存储器单元970。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括重命名/分配器单元952,该重命名/分配器单元952耦合至引退单元954和一个或多个调度器单元的集合956。调度器单元956表示任何数目的不同调度器,包括预留站(RS)、中央指令窗等。调度器单元956耦合至物理寄存器堆单元958。物理寄存器堆单元958中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等。(多个)物理寄存器堆单元958与引退单元954重叠以图示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。各种不同类型的寄存器可适用,只要它们能够存储并提供如本文中所描述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元954和物理寄存器堆单元958耦合至执行集群960。(多个)执行集群960包括一个或多个执行单元962的集合和一个或多个存储器访问单元964的集合。执行单元962可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)进行操作。
尽管一些实施例可以包括专用于特定功能或功能集合的数个执行单元,但是其他实施例可仅包括一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元956、(多个)物理寄存器堆单元958和(多个)执行集群960示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元964的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序发布/执行。
存储器访问单元964的集合耦合至存储器单元970,该存储器单元970可包括数据预取器、数据TLB单元972、数据高速缓存单元(DCU)974、第二级(L2)高速缓存单元976,仅举数例。在一些实施例中,DCU974也称为第一级数据高速缓存(L1高速缓存)。DCU 974可处置多个未决的高速缓存未命中,并继续服务传入的存储和加载。它还支持维护高速缓存一致性。数据TLB单元972是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元964可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元970中的数据TLB单元972。L2高速缓存单元976可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实施例中,数据预取器通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到DCU 974。预取可以指在处理器实际需要数据之前将存储在存储器层级结构(例如,较低级别高速缓存或存储器)的一个存储器位置(例如,地方)的数据传送至更接近处理器的较高级别的存储器位置(例如,产生较低的访问等待时间)。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器中的一个到数据高速缓存和/或预取缓冲器的早期检取。
处理器900可以支持一个或多个指令集(例如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可以不支持多线程化(例如,执行两个或更多个并行的操作或线程的集合、时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化))。
尽管在乱序执行的上下文中描述寄存器重命名,但应当理解,寄存器重命名可在有序架构中被使用。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代的实施例也可具有用于指令和数据的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存都可在核和/或处理器的外部。
图10A-B示出更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图10A是根据本公开的实施例的单个处理器核以及它与管芯上互连网络1002的连接及其第二级(L2)高速缓存的本地子集1004的框图。在一个实施例中,指令解码器1000支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存1006允许对进入标量和向量单元中的高速缓存存储器的低等待时间的访问。尽管在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器集合(分别为标量寄存器11012和向量寄存器1014),并且在这些寄存器之间转移的数据被写至存储器并随后从一级(L1)高速缓存1006读回,但是本公开的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集1004是全局L2高速缓存的部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核对应一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集1004的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集1004中,并且可以与其他处理器核访问它们自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在该处理器核自身的L2高速缓存子集1004中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图10B是根据本公开的实施例的图10A中的处理器核的一部分的展开图。图10B包括L1高速缓存1004的L1数据高速缓存1006A部分、以及关于向量单元1010和向量寄存器1014的更多细节。具体而言,向量单元1010是16宽向量处理单元(VPU)(见16宽ALU 1028),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU利用混合单元1020支持对寄存器输入的混合,利用数值转换单元1022A-B支持数值转换,并且利用复制单元1024支持对存储器输入的复制。写掩码寄存器1026允许断言所得的向量写入。
图11是根据本公开的实施例可能具有超过一个核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器1100的框图。图11中的实线框示出具有单个核1102A、系统代理1110、一个或多个总线控制器单元的集合1116的处理器1100,而虚线框的可选附加示出具有多个核1102A-N、系统代理单元1110中的一个或多个集成存储器控制器单元的集合1114以及专用逻辑1108的替代处理器1100。
由此,处理器1100的不同实现可包括:1)CPU,其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1102A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核1102A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1102A-N是大量通用有序核。由此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层级结构包括核内的一个或多个级别的高速缓存、一组或一个或多个共享高速缓存单元1106、以及耦合至集成存储器控制器单元1114的集合的外部存储器(未示出)。共享高速缓存单元1106的集合可包括一个或多个中间级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合,中间级别的高速缓存诸如第2级(L2)、第3级(L3)、第4级(L4)或其他级别的高速缓存。尽管在一个实施例中,基于环的互连单元1112将专用逻辑1108、共享高速缓存单元1106的集合以及系统代理单元1110/(多个)集成存储器控制器单元1114互连,但替代实施例可使用任何数量的公知技术来将此类单元互连。在一个实施例中,维持一个或多个高速缓存单元1106和核1102A-N之间的一致性。
在一些实施例中,核1102A-N中的一个或多个能够实现多线程化。系统代理1110包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1102A-N以及集成图形逻辑1108的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1102A-N在架构指令集方面可以是同构的或异构的;即,核1102A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够仅执行该指令集的子集或者执行不同的指令集。
图12-16是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参见图12,所示为根据本公开的一个实施例的系统1200的框图。系统1200可包括一个或多个处理器1210、1215,这些处理器耦合至控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/输出中枢(IOH)1250(其可以在分开的芯片上);GMCH 1290包括存储器和图形控制器,存储器1240和协处理器1245耦合至该存储器和图形控制器;IOH 1250将输入/输出(I/O)设备1260耦合至GMCH 1290。替代地,存储器和图形控制器中的一个或两个在处理器(如本文中所描述的)内集成,存储器1240和协处理器1245直接耦合到处理器1210、以及在单一芯片中具有IOH 1250的控制器中枢1220。
附加的处理器1215的可选性质在图12中通过虚线来表示。每一处理器1210、1215可包括本文中所描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。
存储器1240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接1295来与(多个)处理器1210、1215进行通信。
在一个实施例中,协处理器1245是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1220可包括集成图形加速器。
在处理器1210、1215的物理资源之间会存在包括架构、微架构、热、功耗特性等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1210将这些协处理器指令识别为具有应当由附连的协处理器1245执行的类型。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。(多个)协处理器1245接受并执行所接收的协处理器指令。
实施例可在许多不同的系统类型中实现。现在参照图13,其中示出了根据一个实现方式的多处理器系统1300的框图。如图13所示,多处理器系统1300是点对点互连系统,且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。如图13中所示,处理器1370和1380中的每一个可以是包括第一和第二处理器核(即,处理器核1374a和1374b以及处理器核1384a和1384b)的多核处理器,尽管这些处理器中可能存在多得多的核。处理器各自可包括根据本公开的实施例的混合型写入模式逻辑。利用经模糊的输入信息的ECC点乘指令102的实施例可以在处理器1370、处理器1380、或两者中实现。
虽然以两个处理器1370、1380来示出,但应理解本公开的范围不限于此。在其他实现方式中,在给定处理器中可存在一个或多个附加处理器。
处理器1370和1380被示为分别包括集成存储器控制器单元1372和1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(P-P)接口1376和1388;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可以经由使用点对点(P-P)接口电路1388、1388的P-P接口1350来交换信息。如图13所示,IMC 1382和1382将处理器耦合到相应的存储器,即存储器1332和存储器1334,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1370、1380可各自经由使用点对点接口电路1376、1394、1386、1398的各个P-P接口1352、1354来与芯片组1390交换信息。芯片组1390还可经由高性能图形接口1339来与高性能图形电路1338交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1390可经由接口1396耦合至第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图13所示,各种I/O设备1314可连同总线桥1318一起耦合到第一总线1316,总线桥1318将第一总线1316耦合到第二总线1320。在一个实施例中,第二总线1320可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线1320,包括例如,键盘和/或鼠标1322、通信设备1327以及可包括指令/代码和数据1330的存储单元1328(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 1324可被耦合至第二总线1320。注意,其他架构是可能的。例如,代替图13的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参照图14,所示出的是根据本公开的实施例的第三系统1400的框图。图13和14中的类似元件使用类似附图标记,且在图14中省略了图13的某些方面以避免使图14的其他方面模糊。
图14示出处理器1370、1380可包括集成存储器和I/O控制逻辑(“CL”)。对于至少一个实施例,CL可包括诸如本文中所述的集成存储器控制器单元IMC 1372和1382。此外,CL或IMC 1372、1382还可包括I/O控制逻辑。图14示出了存储器1332、1334耦合到IMC 1372、1382,并且I/O设备1414也耦合到IMC 1372、1382。传统I/O设备1415耦合至芯片组1390。利用经模糊的输入信息的ECC点乘指令102的实施例可以在处理器1370、处理器1380、或两者中实现。
图15是可包括核1501中的一个或多个的示例性芯片上系统(SoC)。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图15,所示出的是根据本公开的实施例的SoC 1500的框图。另外,虚线框是更先进的SoC上的特征。在图15中,互连单元1502耦合至:应用处理器1510,包括一组一个或多个核1501A-N以及共享高速缓存单元1506;系统代理单元1509;总线控制器单元1516;集成存储器控制器单元1514;一组或一个或多个媒体处理器1520,可包括集成图形逻辑1508、用于提供静态和/或视频照相功能的图像处理器1524、提供硬件音频加速的音频处理器1526以及提供视频编码/解码加速的视频处理器1528;静态随机存取存储器(SRAM)单元1530;直接存储器存取(DMA)单元1532;以及显示单元1540,用于耦合至一个或多个外部显示器。可以在SoC 1500中实现页面添加和内容复制的实施例。
本文中所公开的机制的实施例可被实现在硬件、软件、固件或此类实现方式的组合中。本公开的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图13中示出的代码1330)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级过程编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中所描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的表示处理器中的各种逻辑的表示性指令来实现,该表示性指令在由机器读取时使得该机器制造用于执行本文中所描述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非暂态的有形安排,其包括存储介质,诸如:硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本公开的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。此类实施例也可被称为程序产品。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核来处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图16是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图16示出可使用x86编译器1604来编译利用高级语言1602的程序,以生成可由具有至少一个x86指令集核的处理器1616原生执行的x86二进制代码1606。具有至少一个x86指令集核的处理器1616表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1604表示可操作用于生成x86二进制代码1606(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1616上执行。
类似地,图16示出可以使用替代的指令集编译器1608来编译利用高级语言1602的程序,以生成可以由不具有至少一个x86指令集核的处理器1614(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码1610。指令转换器1612用于将x86二进制代码1606转换成可以由不具有x86指令集核的处理器1614原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。由此,指令转换器1612通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件或其组合。
也可以可选地将针对图3-8中任意一个所描述的组件、特征和细节应用于图1-2中的任意一个。此外,针对任一装置所描述的组件、特征、以及细节还可任选地应用于在实施例中可由这种装置和/或使用这种装置执行的任一方法中。可将本文所述的处理器中的任意一个包括在本文所公开的计算机系统中的任意一个中。在一些实施例中,计算机系统可包括动态随机存取存储器(DRAM)。或者,计算机系统可包括不需要被刷新的易失性存储器类型或闪存存储器。本文中所公开的指令可利用本文中所示的、具有本文中示出的微架构中的任一微架构的、在本文中示出的系统中的任一系统上的处理器中的任一处理器来执行。
下列示例涉及进一步的实施例。
示例1是处理器,包括:解码单元,用于对利用经模糊的输入信息的椭圆曲线密码(ECC)点乘指令解码,利用经模糊的输入信息的ECC点乘指令用于指示用于存储用于ECC点乘操作的输入信息的多个源操作数,其中将被存储在多个源操作数中的输入信息的至少一部分将被模糊;以及执行单元,与解码单元耦合,执行单元用于响应于利用经模糊的输入信息的ECC点乘指令,将ECC点乘结果存储在将由利用经模糊的输入信息的ECC点乘指令指示的目的地存储位置中。
在示例2中,如示例1的处理器,其中多个源操作数用于存储经模糊的标量乘数、经模糊的基点、或经模糊的模数中的至少一个。
在示例3中,如示例1-2中的任一项的处理器,其中多个源操作数用于存储约分常数或经模糊的约分常数中的一个,其中约分常数由用于ECC点乘的约分算法定义并且可从模数导出。
在示例4中,如示例1-3中的任一项的处理器,其中多个源操作数用于存储经模糊的秘密输入参数和未模糊的公共输入参数。
在示例5中,如示例1-4中的任一项的处理器,其中利用经模糊的输入信息的ECC点乘指令包括指示用于ECC点乘操作的输入信息的对应部分是否被模糊的至少一个字段。
在示例6中,如示例1-5中的任一项的处理器,进一步包括不可由软件读取的秘密,其中在没有秘密的情况下输入信息不能被导出,其中ECC点乘结果基于输入信息。
在示例7中,如示例1-6中的任一项的处理器,进一步包括不可由软件读取的处理器的秘密密钥,其中经模糊的输入信息用于包括将利用秘密密钥被解密的经加密的输入信息。
在示例8中,如示例1-7中的任一项的处理器,其中经模糊的输入信息用于包括指示一组秘密的未模糊的输入信息的值,其中一组秘密的未模糊的输入信息将是以下各项中的至少一种情形:存储在处理器上并且不可由软件读取;或在处理器上生成并且不可由软件读取。
在示例9中,如示例1-8中的任一项的处理器,其中值将是以下各项中的至少一个:用于选择一组秘密的未模糊的输入信息的索引;用于选择一组秘密的未模糊的输入信息的数字;或一组秘密的未模糊的输入信息的标识符。
在示例10中,如示例1-9中的任一项的处理器,其中利用经模糊的输入信息的ECC点乘指令包括将用于确定多个源操作数的尺寸是多个不同的可能尺寸中的一个的至少一个字段。
在示例11中,如示例1-10中的任一项的处理器,其中利用经模糊的输入信息的ECC点乘指令包括:将用于确定基本尺寸的尺寸指示字段;以及用于指示已知的一组素数是否将被使用或素数在经模糊的输入信息指令中是否被指定的素数指示字段。
在示例12中,如示例1-11中的任一项的处理器,其中执行单元用于响应于利用经模糊的输入信息的ECC点乘指令的第二实例而进行以下操作:检测对经模糊的输入信息去模糊的尝试的失败;以及用信号通知错误。
在示例13中,如示例1-12中的任一项的处理器,其中执行单元用于响应于利用经模糊的输入信息的ECC点乘指令的第二实例而进行以下操作:在中断之后停止执行利用经模糊的输入信息的ECC点乘指令的第二实例;利用不可由软件读取的处理器的秘密密钥对与利用经模糊的输入信息的ECC点乘指令的第二实例的被中断的执行相关联的中间状态加密;以及将经加密的中间状态存储在存储位置中。
在示例14中,如示例1-13中的任一项的处理器,其中执行单元用于响应于利用经模糊的输入信息的ECC点乘指令的第二实例而进行以下操作:在中断之后停止执行利用经模糊的输入信息的ECC点乘指令的第二实例;以及丢弃与利用经模糊的输入信息的ECC点乘指令的第二实例的被中断的执行相关联的中间状态。
在示例15中,如示例1-14中的任一项的处理器,其中利用经模糊的输入信息的ECC点乘指令用于指示处理器的多个寄存器,并且其中寄存器中的每一个用于存储指向用于存储多个源操作数中的对应一个的存储器中的位置的指针。
在示例16中,如示例1-15中的任一项的处理器,其中利用经模糊的输入信息的ECC点乘指令是对曲线的多个点的群组操作,群组操作包括曲线的两个点的加法或曲线的点的加倍中的至少一个。
示例17是方法,包括:由处理器接收利用经模糊的输入信息的椭圆曲线密码(ECC)点乘指令,利用经模糊的输入信息的ECC点乘指令指示存储用于ECC点乘操作的输入信息的多个源操作数,其中存储在多个源操作数中的输入信息的至少第一部分被模糊;以及响应于接收利用经模糊的输入信息的ECC点乘指令,将ECC点乘结果存储在由利用经模糊的输入信息的ECC点乘指令指示的目的地存储位置中。
在示例18中,如示例17的处理器,其中利用秘密使输入信息的第一部分模糊,其中秘密对于处理器可用并且秘密不可由软件读取。
在示例19中,如示例1-18中的任一项的处理器,其中多个源操作数的第一部分存储经模糊的指数、经模糊的基数、和经模糊的模数中的至少一个。
在示例20中,如示例1-19中的任一项的处理器,其中多个源操作数存储约分常数和经模糊的约分常数中的至少一个,其中约分常数由用于ECC点乘的约分算法定义并且可从模数导出。
在示例21中,如示例1-20中的任一项的处理器,其中利用经模糊的输入信息的ECC点乘指令包括指示用于ECC点乘操作的输入信息的对应部分是否被模糊的至少一个字段。
示例22是用于处理指令的系统,包括:互连;处理器,与互连耦合,处理器用于:接收利用经模糊的输入信息的椭圆曲线密码(ECC)点乘指令,利用经模糊的输入信息的ECC点乘指令指示用于存储用于ECC点乘操作的输入信息的多个源操作数,其中将被存储在多个源操作数中的输入信息的至少第一部分将被模糊;以及响应于接收利用经模糊的输入信息的ECC点乘指令,将ECC点乘结果存储在将由利用经模糊的输入信息的ECC点乘指令指示的目的地存储位置中;以及动态随机存取存储器(DRAM),与互连耦合,DRAM存储包括利用经模糊的输入信息的ECC点乘指令的多个不同实例的指令,其中利用经模糊的输入信息的ECC点乘指令的不同实例中的每一个指示对应的一组源操作数,其中每一组源操作数存储用于利用经模糊的输入信息的ECC点乘指令的不同实例的不同类型的经模糊的输入信息。
在示例23中,如示例22的处理器,其中处理器用于接收指示多个源操作数的指令,多个源操作数用于存储经模糊的标量乘数、经模糊的基点、和经模糊的模数中的至少一个。
各实施例可具有以上所描述的结构特征的不同组合。例如,也可参照本文中描述的方法或过程来实现上文中描述的计算系统的所有任选特征,并且可在一个或多个实施例中的任何地方使用示例中的细节。
尽管已参考有限数量的实施例描述了本公开,但是,本领域技术人员将从其中理解很多修改和变型。所附权利要求书旨在将所有此类修改和变型涵盖为落在本公开的真实精神和范围内。
在以下描述中,阐明了众多特定细节(诸如,特定类型的处理器和系统配置的示例、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线级和操作等)以提供对本公开的透彻理解。然而,对本领域普通技术人员将显而易见的是,不一定要采用这些具体细节来实施本公开。在其他实例中,未详细描述公知的组件或方法,以避免不必要地使本公开模糊,公知的组件或方法诸如,特定或替代的处理器架构、用于所描述算法的特定逻辑电路/代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现、代码中算法的特定表达、特定的掉电和功率门控技术/逻辑以及计算机系统的其他特定的操作细节。
各实施例是参考特定集成电路中的(诸如计算平台或微处理器中的)访问控制来描述的。实施例也可以适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的各实施例不仅限于台式计算机系统或便携式计算机,诸如,UltrabooksTM计算机。并且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、芯片上系统(SoC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行以下教导的功能与操作的任何其他系统。描述了系统可以是任何类型的计算机或嵌入式系统。所公开的各实施例可以特别用于低端设备,诸如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监视控制和数据采集(SCADA)系统等等。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将在以下描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是它们的组合)对于用性能考量来平衡的‘绿色技术’的前景是至关重要的。
虽然本文中的实施例参照处理器来描述,但其他实施例也适用于其他类型的集成电路和逻辑设备。本公开的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件也可受益于更高的流水线吞吐量和提高的性能。本公开的诸个实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本公开不限于执行512位、256位、128位、64位、32位、或16位数据运算的处理器或机器,并可适用于在其中执行数据操纵或管理的任何处理器和机器。此外,本文中的描述提供了示例,并且附图出于说明性目的示出了各种示例。然而,这些示例不应当以限制性意义来解释,因为它们仅仅旨在提供本公开的诸个实施例的示例,而并非对本公开的实施例的所有可能实现方式进行穷举。
虽然下述的示例是在执行单元和逻辑电路情境下描述指令处置和分配,但本公开的其他实施例也可通过存储在机器可读有形介质上的数据或指令来完成,这些数据或指令在被机器执行时使得机器执行与本公开的至少一个实施例相一致的功能。在一个实施例中,与本公开的实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令编程的通用处理器或专用处理器执行本公开的步骤。本公开的诸个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程来执行根据本公开的实施例的一个或多个操作。替代地,本公开的诸个实施例的操作可由包含用于执行这些操作的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
被用于对逻辑进行编程以执行本公开的诸个实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或传送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计可经历从创造到仿真到制造的各阶段。表示设计的数据可用数种方式来表示该设计。首先,如仿真中有用的,可使用硬件描述语言或另一功能性描述语言来表示硬件。另外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某一阶段都达到表示硬件模型中各种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁或光存储(诸如,盘)可以是存储经由光学或电学波来传送的信息的机器可读介质,这些光学或电学波被调制或以其他方式生成以传送这些信息。当指示或承载代码或设计的电学载波被传送达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实施例的技术的物品(诸如,编码在载波中的信息)。
如本文中所使用的模块指硬件、软件、和/或固件的任何组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非暂态介质上的代码。此外,在另一实施例中,模块的使用是指包括代码的非暂态介质,该代码专门适于由微控制器执行以进行预定的操作。并且如可以被推断,在又一实施例中,术语模块(在此示例中)可指微控制器和非暂态介质的组合。通常,被图示为分开的模块的边界一般不同并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实施例中,使用短语“被配置成”指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然“被配置成”执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用短语‘用于’、‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如以上所注意,在一个实施例中,用于、能够、或能用于的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是高逻辑电平,0指的是低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑的值或多个逻辑的值。不过,也使用了计算机系统中的值的其他表示。例如,十进制数10还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置,而已更新的值潜在地包括低逻辑值,即,置位。注意,可利用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可访问/可读介质包括提供(即,存储和/或发送)诸如由计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些非瞬态机器可访问介质与可从其接收信息的非瞬态介质相区别。
被用于对逻辑进行编程以执行本公开的实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储)内。此外,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定全部是指同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,将显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。因此,应当认为说明书和附图是说明性的而不是限制性的。此外,实施例和其他示例性语言的上述使用不一定是指同一实施例或同一示例,而可能是指不同和独特的实施例,也有可能是同一实施例。
具体实施方式的一些部分在对计算机存储器内的数据位的操作的算法和符号表示方面来呈现。这些算法描述及表示是数据处理领域的技术人员用于向本领域的其他技术人员最有效地传达其工作实质的手段。算法在此一般被理解为导致所需结果的自洽的操作序列。这些操作需要对物理量进行物理操纵。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。主要出于常见用途的考虑,时不时地将这些信号称为位、值、要素、符号、字符、项、数字等已被证明是方便的。本文中描述的块可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些和类似的术语将与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非明确指明,否则从上文的讨论中显而易见地看出,可以理解,在全文中,利用诸如“接收”、“存储”、“定义”、“接收”、“确定”、“发布”、“链接”、“关联”、“获取”、“认证”、“禁止”、“执行”、“请求”、“通信”等术语的讨论,指的是计算系统或类似电子计算设备的动作和进程,该计算系统或类似电子计算设备操纵在该计算系统的寄存器和存储器内表示为物理(例如,电子)量的数据并将其转换成在该计算系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。
在本文中使用的词语“示例”或“示例性”意味着用作示例、实例或说明。在此被描述为“示例”或“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。相反,词语“示例”或“示例性”的使用旨在以具体的方式来呈现诸概念。如在该申请中使用的,术语“或”旨在表示包含性的“或”,而不是排它性的“或”。也就是说,除非另有指定或根据上下文显而易见,否则“X包括A或B”旨在表示自然包含性排列中的任一者。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在任何前述的情况下都满足“X包括A或B”。此外,在本申请和所附权利要求中使用的冠词“一”和“一个”一般应当被解释为表示“一个或多个”,除非另有规定或根据上下文明确指示为单数形式。此外,通篇对术语“实施例”或“一个实施例”或“实现方式”或“一种实现方式”的使用不旨在意指同一个实施例或实现方式,除非被描述为如此。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等旨在用作用于在不同元件之间进行区分的标记,并且可以不一定具有根据它们的数字指定的顺序含义。
Claims (25)
1.一种方法,包括:
由处理器接收利用经模糊的输入信息的椭圆曲线密码(ECC)点乘指令,所述利用经模糊的输入信息的ECC点乘指令指示存储用于ECC点乘操作的输入信息的多个源操作数,其中存储在所述多个源操作数中的所述输入信息的至少第一部分被模糊;以及
响应于接收所述利用经模糊的输入信息的ECC点乘指令,将ECC点乘结果存储在由所述利用经模糊的输入信息的ECC点乘指令指示的目的地存储位置中。
2.如权利要求1所述的方法,其特征在于,利用秘密使所述输入信息的所述第一部分模糊,其中所述秘密对于所述处理器可用并且所述秘密不可由软件读取。
3.如权利要求1所述的方法,其特征在于,所述多个源操作数的所述第一部分存储经模糊的指数、经模糊的基数、和经模糊的模数中的至少一个。
4.如权利要求1所述的方法,其特征在于,所述多个源操作数存储约分常数和经模糊的约分常数中的至少一个,其中所述约分常数由用于ECC点乘的约分算法定义并且可从模数导出。
5.如权利要求1所述的方法,其特征在于,所述利用经模糊的输入信息的ECC点乘指令包括指示用于所述ECC点乘操作的所述输入信息的对应部分是否被模糊的至少一个字段。
6.一种设备,包括用于执行如任一前述权利要求所述的方法的装置。
7.至少一种机器可读介质,包括多个指令,所述指令当被执行时用于实现如任一前述权利要求所述的方法或实现如任一前述权利要求所述的设备。
8.一种处理器,包括:
解码单元,用于对利用经模糊的输入信息的椭圆曲线密码(ECC)点乘指令解码,所述利用经模糊的输入信息的ECC点乘指令用于指示用于存储用于ECC点乘操作的输入信息的多个源操作数,其中将被存储在所述多个源操作数中的所述输入信息的至少一部分将被模糊;以及
执行单元,与所述解码单元耦合,所述执行单元用于响应于所述利用经模糊的输入信息的ECC点乘指令,将ECC点乘结果存储在将由所述利用经模糊的输入信息的ECC点乘指令指示的目的地存储位置中。
9.如权利要求8所述的处理器,其特征在于,所述多个源操作数用于存储经模糊的标量乘数、经模糊的基点、或经模糊的模数中的至少一个。
10.如权利要求8所述的处理器,其特征在于,所述多个源操作数用于存储约分常数或经模糊的约分常数中的一个,其中所述约分常数由用于ECC点乘的约分算法定义并且可从模数导出。
11.如权利要求8所述的处理器,其特征在于,所述多个源操作数用于存储经模糊的秘密输入参数和未模糊的公共输入参数。
12.如权利要求8所述的处理器,其特征在于,所述利用经模糊的输入信息的ECC点乘指令包括指示用于所述ECC点乘操作的所述输入信息的对应部分是否被模糊的至少一个字段。
13.如权利要求8所述的处理器,其特征在于,进一步包括不可由软件读取的秘密,其中在没有所述秘密的情况下所述输入信息不能被导出,其中所述ECC点乘结果基于所述输入信息。
14.如权利要求8所述的处理器,其特征在于,进一步包括不可由软件读取的所述处理器的秘密密钥,其中所述经模糊的输入信息用于包括将利用所述秘密密钥被解密的经加密的输入信息。
15.如权利要求8所述的处理器,其特征在于,所述经模糊的输入信息用于包括指示一组秘密的未模糊的输入信息的值,其中所述一组秘密的未模糊的输入信息将是以下各项中的至少一种情形:
存储在所述处理器上并且不可由软件读取;或
在所述处理器上生成并且不可由软件读取。
16.如权利要求15所述的处理器,其特征在于,所述值将是以下各项中的至少一个:
用于选择所述一组秘密的未模糊的输入信息的索引;
用于选择所述一组秘密的未模糊的输入信息的数字;或
所述一组秘密的未模糊的输入信息的标识符。
17.如权利要求8所述的处理器,其特征在于,所述利用经模糊的输入信息的ECC点乘指令包括将用于确定所述多个源操作数的尺寸是多个不同的可能尺寸中的一个的至少一个字段。
18.如权利要求17所述的处理器,其特征在于,所述利用经模糊的输入信息的ECC点乘指令包括:
用于确定基本尺寸的尺寸指示字段;以及
用于指示已知的一组素数是否将被使用或素数在所述经模糊的输入信息指令中是否被指定的素数指示字段。
19.如权利要求8所述的处理器,其特征在于,所述执行单元用于响应于所述利用经模糊的输入信息的ECC点乘指令的第二实例而进行以下操作:
检测对所述经模糊的输入信息去模糊的尝试的失败;以及
用信号通知错误。
20.如权利要求8所述的处理器,其特征在于,所述执行单元用于响应于所述利用经模糊的输入信息的ECC点乘指令的第二实例而进行以下操作:
在中断之后停止执行所述利用经模糊的输入信息的ECC点乘指令的所述第二实例;
利用不可由软件读取的所述处理器的秘密密钥对与所述利用经模糊的输入信息的ECC点乘指令的所述第二实例的被中断的执行相关联的中间状态加密;以及
将经加密的中间状态存储在存储位置中。
21.如权利要求8所述的处理器,其特征在于,所述执行单元用于响应于所述利用经模糊的输入信息的ECC点乘指令的第二实例而进行以下操作:
在中断之后停止执行所述利用经模糊的输入信息的ECC点乘指令的所述第二实例;以及
丢弃与所述利用经模糊的输入信息的ECC点乘指令的所述第二实例的被中断的执行相关联的中间状态。
22.如权利要求8所述的处理器,其特征在于,所述利用经模糊的输入信息的ECC点乘指令用于指示所述处理器的多个寄存器,并且其中所述寄存器中的每一个用于存储指向用于存储所述多个源操作数中的对应一个的存储器中的位置的指针。
23.如权利要求8所述的处理器,其特征在于,所述利用经模糊的输入信息的ECC点乘指令是对曲线的多个点的群组操作,所述群组操作包括所述曲线的两个点的加法或所述曲线的点的加倍中的至少一个。
24.一种用于处理指令的系统,包括:
互连;
处理器,与所述互连耦合,所述处理器用于:
接收利用经模糊的输入信息的椭圆曲线密码(ECC)点乘指令,所述利用经模糊的输入信息的ECC点乘指令指示用于存储用于ECC点乘操作的输入信息的多个源操作数,其中将被存储在所述多个源操作数中的所述输入信息的至少第一部分将被模糊;以及
响应于接收所述利用经模糊的输入信息的ECC点乘指令,将ECC点乘结果存储在将由所述利用经模糊的输入信息的ECC点乘指令指示的目的地存储位置中;以及
动态随机存取存储器(DRAM),与所述互连耦合,所述DRAM存储包括所述利用经模糊的输入信息的ECC点乘指令的多个不同实例的指令,其中所述利用经模糊的输入信息的ECC点乘指令的所述不同实例中的每一个指示对应的一组源操作数,其中每一组源操作数存储用于所述利用经模糊的输入信息的ECC点乘指令的所述不同实例的不同类型的经模糊的输入信息。
25.如权利要求24所述的系统,其特征在于,所述处理器用于接收指示所述多个源操作数的指令,所述多个源操作数用于存储经模糊的标量乘数、经模糊的基点、和经模糊的模数中的至少一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/248,643 US10270598B2 (en) | 2016-08-26 | 2016-08-26 | Secure elliptic curve cryptography instructions |
US15/248,643 | 2016-08-26 | ||
PCT/US2017/043161 WO2018038831A1 (en) | 2016-08-26 | 2017-07-20 | Secure elliptic curve cryptography instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109479003A true CN109479003A (zh) | 2019-03-15 |
CN109479003B CN109479003B (zh) | 2023-07-18 |
Family
ID=61243786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780045957.XA Active CN109479003B (zh) | 2016-08-26 | 2017-07-20 | 用于安全椭圆曲线密码指令的处理器、系统、方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10270598B2 (zh) |
EP (1) | EP3504838B1 (zh) |
CN (1) | CN109479003B (zh) |
WO (1) | WO2018038831A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10496373B2 (en) * | 2017-12-28 | 2019-12-03 | Intel Corporation | Unified integer and carry-less modular multiplier and a reduction circuit |
US10797859B2 (en) * | 2018-03-22 | 2020-10-06 | Arm Limited | Low area optimization for NB-IoT applications |
US10289816B1 (en) * | 2018-06-08 | 2019-05-14 | Gsfm Llc | Methods, systems, and devices for an encrypted and obfuscated algorithm in a computing environment |
CN108875416B (zh) * | 2018-06-22 | 2020-05-19 | 北京智芯微电子科技有限公司 | 椭圆曲线多倍点运算方法和装置 |
KR102557993B1 (ko) | 2018-10-02 | 2023-07-20 | 삼성전자주식회사 | 메모리 이용 효율을 향상한 보안 처리기를 포함하는 시스템 온 칩, 메모리 시스템 및 시스템 온 칩의 동작방법 |
US11157240B2 (en) * | 2019-02-15 | 2021-10-26 | International Business Machines Corporation | Perform cryptographic computation scalar multiply instruction |
CN112631961B (zh) * | 2019-09-24 | 2024-06-11 | 阿里巴巴集团控股有限公司 | 一种内存管理单元、地址转译方法以及处理器 |
CN114338039B (zh) * | 2021-12-28 | 2024-07-30 | 上海市数字证书认证中心有限公司 | 白盒处理后的椭圆曲线签名方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080044010A1 (en) * | 2005-07-12 | 2008-02-21 | Ihor Vasyltasov | Cryptographic system and method for encrypting input data |
US7739521B2 (en) * | 2003-09-18 | 2010-06-15 | Intel Corporation | Method of obscuring cryptographic computations |
CN102279725A (zh) * | 2011-09-01 | 2011-12-14 | 北京华大信安科技有限公司 | Ecc协处理器 |
CN104320247A (zh) * | 2014-09-22 | 2015-01-28 | 杭州电子科技大学 | 一种基于椭圆曲线与指纹模糊金库的共享密钥保护方法 |
US20160043863A1 (en) * | 2014-08-05 | 2016-02-11 | Inside Secure | Elliptic curve encryption method comprising an error detection |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2369304A1 (en) | 2002-01-30 | 2003-07-30 | Cloakware Corporation | A protocol to hide cryptographic private keys |
KR100699836B1 (ko) | 2005-03-19 | 2007-03-27 | 삼성전자주식회사 | 스칼라 곱에서 dfa 대책을 위한 장치 및 방법 |
DE102005041102A1 (de) | 2005-08-30 | 2007-03-15 | Siemens Ag | Verfahren zur Skalarmultiplikation von Punkten auf einer elliptischen Kurve |
US8332649B2 (en) | 2005-11-08 | 2012-12-11 | Panasonic Corporation | Authentication system, signature creating device, and signature verifying device |
KR100874909B1 (ko) * | 2006-01-14 | 2008-12-19 | 삼성전자주식회사 | Dfa에 대항하는 몽고메리 전력 래더 알고리즘을 사용하는 암호화 방법 |
US7760875B2 (en) | 2006-06-29 | 2010-07-20 | Intel Corporation | Accelerating Diffie-Hellman key-exchange protocol with zero-biased exponent windowing |
US7864951B2 (en) | 2006-07-10 | 2011-01-04 | King Fahd University Of Petroleum And Minerals | Scalar multiplication method with inherent countermeasures |
US7961877B2 (en) | 2006-12-14 | 2011-06-14 | Intel Corporation | Factoring based modular exponentiation |
US7925011B2 (en) | 2006-12-14 | 2011-04-12 | Intel Corporation | Method for simultaneous modular exponentiations |
US7912886B2 (en) | 2006-12-14 | 2011-03-22 | Intel Corporation | Configurable exponent FIFO |
US8243919B2 (en) * | 2007-03-07 | 2012-08-14 | Research In Motion Limited | Method and apparatus for performing elliptic curve scalar multiplication in a manner that counters power analysis attacks |
CN102099780B (zh) | 2008-05-07 | 2015-08-12 | 耶德托公司 | 指数模糊 |
US8542820B2 (en) | 2009-02-05 | 2013-09-24 | Infineon Technologies Ag | Apparatus for calculating a result of a scalar multiplication |
US8112066B2 (en) | 2009-06-22 | 2012-02-07 | Mourad Ben Ayed | System for NFC authentication based on BLUETOOTH proximity |
EP2437160A1 (en) | 2010-10-04 | 2012-04-04 | Nagravision S.A. | Blinding of modular exponentiation |
US8904190B2 (en) | 2010-10-20 | 2014-12-02 | Advanced Micro Devices, Inc. | Method and apparatus including architecture for protecting sensitive code and data |
FR2977953A1 (fr) | 2011-07-13 | 2013-01-18 | St Microelectronics Rousset | Protection d'un calcul d'exponentiation modulaire par addition d'une quantite aleatoire |
US8799343B2 (en) | 2011-09-22 | 2014-08-05 | Intel Corporation | Modular exponentiation with partitioned and scattered storage of Montgomery Multiplication results |
US9092645B2 (en) | 2011-12-05 | 2015-07-28 | Intel Corporation | Efficient multiplication, exponentiation and modular reduction implementations |
CN104012030B (zh) | 2011-12-21 | 2018-04-13 | 英特尔公司 | 用于保护对称加密密钥的系统及方法 |
US8955144B2 (en) | 2013-06-28 | 2015-02-10 | Intel Corporation | Protecting information processing system secrets from debug attacks |
US10075290B2 (en) * | 2013-12-20 | 2018-09-11 | Koninklijke Philips N.V. | Operator lifting in cryptographic algorithm |
US20160043853A1 (en) | 2014-08-07 | 2016-02-11 | Htc Corporation | Device and Method of Handling Device-to-Device Communication |
US10372886B2 (en) * | 2015-05-05 | 2019-08-06 | Nxp B.V. | Protecting the input/output of modular encoded white-box RSA/ECC |
US10313129B2 (en) | 2015-06-26 | 2019-06-04 | Intel Corporation | Keyed-hash message authentication code processors, methods, systems, and instructions |
US10089500B2 (en) | 2015-09-25 | 2018-10-02 | Intel Corporation | Secure modular exponentiation processors, methods, systems, and instructions |
US10142101B2 (en) | 2015-09-29 | 2018-11-27 | Intel Corporation | Hardware enforced one-way cryptography |
-
2016
- 2016-08-26 US US15/248,643 patent/US10270598B2/en active Active
-
2017
- 2017-07-20 EP EP17844080.6A patent/EP3504838B1/en active Active
- 2017-07-20 WO PCT/US2017/043161 patent/WO2018038831A1/en unknown
- 2017-07-20 CN CN201780045957.XA patent/CN109479003B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7739521B2 (en) * | 2003-09-18 | 2010-06-15 | Intel Corporation | Method of obscuring cryptographic computations |
US20080044010A1 (en) * | 2005-07-12 | 2008-02-21 | Ihor Vasyltasov | Cryptographic system and method for encrypting input data |
CN102279725A (zh) * | 2011-09-01 | 2011-12-14 | 北京华大信安科技有限公司 | Ecc协处理器 |
US20160043863A1 (en) * | 2014-08-05 | 2016-02-11 | Inside Secure | Elliptic curve encryption method comprising an error detection |
CN104320247A (zh) * | 2014-09-22 | 2015-01-28 | 杭州电子科技大学 | 一种基于椭圆曲线与指纹模糊金库的共享密钥保护方法 |
Non-Patent Citations (2)
Title |
---|
SANDRO BARTOLINI ET AL: "Instruction Set Extensions for Cryptographic Applications", 《CRYPTOGRAPHIC ENGINEERING》 * |
余荣威等: "抗侧信道攻击的椭圆曲线点乘算法设计", 《计算机工程与应用》 * |
Also Published As
Publication number | Publication date |
---|---|
US20180062843A1 (en) | 2018-03-01 |
EP3504838A4 (en) | 2020-01-15 |
EP3504838A1 (en) | 2019-07-03 |
US10270598B2 (en) | 2019-04-23 |
EP3504838B1 (en) | 2021-06-02 |
CN109479003B (zh) | 2023-07-18 |
WO2018038831A1 (en) | 2018-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109479003A (zh) | 安全椭圆曲线密码指令 | |
CN105095772B (zh) | 用于安全地保存并恢复计算平台状态的方法和装置 | |
CN106575215B (zh) | 处理指令的系统、设备、方法、处理器、介质和电子设备 | |
TWI595376B (zh) | 用於提供密碼算術功能的處理器、機器可讀媒體、方法及處理系統 | |
CN104484284B (zh) | 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 | |
CN107667499A (zh) | 带密钥散列消息认证码处理器、方法、系统和指令 | |
CN110659244A (zh) | 内联编码能力 | |
CN107094369A (zh) | 用于提供simd sm3密码散列函数的指令和逻辑 | |
TWI706321B (zh) | 安全模指數處理器、方法、系統、及指令 | |
CN110233721A (zh) | Sm4加速处理器、方法和系统 | |
CN105302522B (zh) | 提供通用gf(256)simd密码算法功能性的指令和逻辑 | |
CN107209722A (zh) | 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑 | |
CN103975302A (zh) | 矩阵乘法累加指令 | |
CN104620254A (zh) | 用于低开销的存储器重播保护的并行化的计数器攀树 | |
CN105204820B (zh) | 用于提供通用gf(256)simd加密算术功能的指令和逻辑 | |
CN108228960A (zh) | 用于熔丝验证的基于Simon的散列 | |
CN107133018A (zh) | 执行groestl散列的指令 | |
US11507699B2 (en) | Processor with private pipeline | |
CN108228137A (zh) | 蒙哥马利乘法处理器、方法、系统和指令 | |
CN104126170A (zh) | 打包数据操作掩码寄存器算术组合处理器、方法、系统及指令 | |
CN110659505A (zh) | 用于对机密数据和附加认证数据进行加密或解密的加速器 | |
US10496373B2 (en) | Unified integer and carry-less modular multiplier and a reduction circuit | |
US20230081763A1 (en) | Conditional modular subtraction instruction | |
US20230136291A1 (en) | Zero extended 52-bit integer fused multiply add and subtract instructions | |
CN116069390A (zh) | 模数加法指令 |
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 |