CN107924444B - 安全的模幂运算处理器、方法、系统和指令 - Google Patents
安全的模幂运算处理器、方法、系统和指令 Download PDFInfo
- Publication number
- CN107924444B CN107924444B CN201680049318.6A CN201680049318A CN107924444B CN 107924444 B CN107924444 B CN 107924444B CN 201680049318 A CN201680049318 A CN 201680049318A CN 107924444 B CN107924444 B CN 107924444B
- Authority
- CN
- China
- Prior art keywords
- input information
- instruction
- obfuscated
- processor
- modular exponentiation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 83
- 230000004044 response Effects 0.000 claims abstract description 31
- 230000015654 memory Effects 0.000 claims description 100
- 230000009467 reduction Effects 0.000 claims description 85
- 238000004422 calculation algorithm Methods 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 21
- 238000010586 diagram Methods 0.000 description 39
- 238000004364 calculation method Methods 0.000 description 25
- RNAMYOYQYRYFQY-UHFFFAOYSA-N 2-(4,4-difluoropiperidin-1-yl)-6-methoxy-n-(1-propan-2-ylpiperidin-4-yl)-7-(3-pyrrolidin-1-ylpropoxy)quinazolin-4-amine Chemical compound N1=C(N2CCC(F)(F)CC2)N=C2C=C(OCCCN3CCCC3)C(OC)=CC2=C1NC1CCN(C(C)C)CC1 RNAMYOYQYRYFQY-UHFFFAOYSA-N 0.000 description 15
- 238000004891 communication Methods 0.000 description 12
- 238000007667 floating Methods 0.000 description 11
- 230000011664 signaling Effects 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 101100058681 Drosophila melanogaster Btk29A gene Proteins 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013478 data encryption standard Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000002904 solvent Substances 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
-
- 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/3013—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 involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems
-
- 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/302—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 involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明的一方面的一种处理器包括解码单元,所述解码单元用于对利用模糊化输入信息进行模幂运算的指令进行解码。所述利用模糊化输入信息进行模幂运算的指令用于指示将存储用于模幂运算操作的输入信息的多个源操作数。将存储在所述多个源操作数中的所述输入信息中的至少一部分输入信息将被模糊化。执行单元与所述解码单元耦合。响应于所述利用模糊化输入信息进行模幂运算的指令,所述执行单元用于将模幂运算结果存储在目的地存储位置中,所述目的地存储位置将由所述利用模糊化输入信息进行模幂运算的指令指示。公开了其他处理器、方法、系统和指令。
Description
背景
技术领域
本文描述的实施例总体上涉及处理器。具体地,本文描述的实施例总体上涉及在处理器中执行模幂运算。
背景技术
密码技术被广泛用于帮助保护数据和/或通信的机密性和完整性。两种常用类型的密码技术是对称密钥密码技术和非对称或公钥密码技术。
对称密钥密码技术使用单一类型的密钥。同一密钥既用于加密数据又用于解密数据。另外,同一密钥既用于生成数字签名又用于验证数字签名。
相比之下,公钥密码技术使用两种不同类型的密钥。这两种密钥中的一种是秘密的或私密的,而另一种密钥不是秘密的而是公开可用的。所谓的公钥和私钥被用于不同的互补性目的。例如,公钥可用于加密数据,而私钥可用于解密已加密数据。作为另一个示例,私钥可用于生成数字签名,而公钥可用于验证数字签名。
公钥密码技术被广泛使用。例如,公钥密码技术被广泛用于各种互联网标准或协议,如例如安全套接层(SSL)、传输层安全(TLS)、互联网协议安全(IPsec)、安全/多用途互联网邮件扩充(S/MIME)、良好隐私(PGP)和GNU隐私卫士(GPG)。
一般地,当经由互联网和/或其他通信信道采用这样的标准或协议时,初始阶段一般涉及建立信道的安全性、交换密码密钥并且验证证书。可使用各种公钥算法。一种公钥算法是Diffie-Hellman密钥交换算法,这种算法有时被称为Diffie-Hellman、或简称为D-H。Diffie-Hellman算法通常用于经由公共信道来安全地交换秘密密码密钥。另一种公钥算法是数字签名算法(DSA)算法。DSA通常用于提供数字签名。又一种公钥算法是RSA算法(以其作者Rivest、Shamir、Adleman命名)。RSA通常用于安全地交换秘密密码密钥并且提供数字签名。
附图说明
可通过参考以下描述和附图来最佳地理解本发明,所述描述和附图用于说明实施例。在附图中:
图1是处理器的实施例的框图,所述处理器可操作用于执行利用模糊化输入信息进行模幂运算的指令的实施例。
图2是一种执行利用模糊化输入信息进行模幂运算的指令的实施例的方法的实施例的流程框图。
图3是一种利用蒙哥马利约简来执行利用模糊化输入信息进行模幂运算的指令的实施例的方法的详细示例实施例的流程框图。
图4是利用模糊化输入信息进行模幂运算的指令的示例实施例的框图。
图5是立即数的示例实施例的框图。
图6是合适的执行单元的第一实施例的框图。
图7是合适的执行单元的第二实施例的框图。
图8是合适的执行单元的第三实施例的框图。
图9A是框图,展示了有序流水线的实施例和寄存器重命名乱序发布/执行流水线的实施例。
图9B是处理器核的实施例的框图,所述处理器核包括耦合至执行引擎单元的前端单元,并且所述前端单元和执行引擎单元两者都耦合至存储器单元。
图10A是单个处理器核的实施例连同其与管芯上互连网络的连接以及连同其2级(L2)高速缓存的本地子集的框图。
图10B是图10A的处理器核的一部分的展开视图的实施例的框图。
图11是可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器的实施例的框图。
图12是计算机架构的第一实施例的框图。
图13是计算机架构的第二实施例的框图。
图14是计算机架构的第三实施例的框图。
图15是计算机架构的第四实施例的框图。
图16是根据本发明的实施例的使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文公开了模幂运算指令、用于执行这些指令的处理器、在处理或执行这些指令时由这些处理器执行的方法以及结合有一个或多个用于处理或执行这些指令的处理器的系统。在一些实施例中,模幂运算指令可用于结合各种不同的公钥密码算法(如例如,RSA、DSA和Diffie-Hellman算法)来执行模幂运算。在这样的公钥密码算法中,当经由互联网和/或其他通信链路建立安全会话(例如,结合安全会话设置、证书签名、证书验证等等)时,模幂运算的使用率往往很高。在其他实施例中,本文公开的模幂运算指令可用于结合各种其他计算机实施的算法和/或与通信有关的算法和/或数据处理算法来执行模幂运算。本发明的范围并不限于这些模幂运算指令的任何已知用途,而是它们为可由本领域技术人员用于各种不同目的的通用指令。
在以下描述中,陈述了大量具体细节(例如,具体指令操作、用于实施模幂运算的具体算法、具体数据格式、具体处理器配置、具体微架构细节、具体操作序列等)。然而,可以在没有这些具体细节的情况下实践实施例。在其他实例中,未详细示出众所周知的电路、结构和技术,以避免模糊对所述描述的理解。
最初,对模幂运算进行简单讨论可能是有帮助的。可如等式1中所示的那样来表达模幂运算:
R=BE mod N 等式1
根据此表达式,模幂运算结果(R)等于将底数(B)升幂到指数(E)的幂运算对模数(N)取模后的余数。幂运算涉及使或将底数(B)升幂到指数(E)次方。通过示例的方式,如果指数是正整数,那么幂运算可表示使指数数目个底数相乘(例如,指数数目次的B*B*B*B…)。然后,可用模数(N)除幂运算结果以确定余数R。
通常,在许多应用中,底数、指数和/或模数中的一者或多者可表示相对较大的整数(例如,通常大于约256位,且常常大得多)。例如,在RSA、DSA和Diffie-Hellman的许多实施方式中,底数、指数和模数中的每一者是各自至少为512位、各自至少为1024位或甚至更大的较大整数并不少见。另外,所用整数的尺寸可随时间的推移潜在地增大,以便有助于提供附加的安全性。因此,执行这样的模幂运算计算一般往往是计算密集型的且耗时的。在一方面,本文公开的模幂运算指令可往往有助于加速模幂运算计算,这可有助于改进性能。
另外,在一些实施例中,模幂运算指令可以是利用模糊化输入信息进行模幂运算的指令和/或可具有模糊化输入信息。这些指令可有助于改进模幂运算计算的机密性或安全性。通常,且尤其是在用于公钥密码应用中时,模幂运算计算可以基于秘密、私密或机密信息。作为一个说明性示例,在RSA用于通常在互联网服务器上完成的签名过程的情况下,指数(E)是不应被泄露的秘密或私密值。在其他应用中,不同和/或附加的信息可潜在地是秘密的或私密的,如例如底数(B)、指数(E)、模数(N)从模数计算得到的参数(例如,约简常数)或其他信息的任何组合。
然而,一个挑战是模幂运算的常规软件实施方式并未充分保护这样的秘密或私密信息。例如,这样的秘密或私密信息一般是为至少一些软件可读的或以其他方式可存取的。然而,所有软件(包括即使是享有最高特权的系统级软件(例如,虚拟机监控程序(VMM)、操作系统(OS)、基本输入/输出系统(BIOS)等等))都可能潜在地被毁坏(例如,在享有特权的恶意软件的情况下),且因此可并不是完全值得信赖的。如果软件被毁坏并且能够读取秘密或私密信息,那么与公钥密码算法相关联的预期安全性可至少部分地妥协掉。在一些情况下,这会是一个巨大的问题。作为一个示例,在一些情况下,秘密密钥可以是极其有价值的(例如,比单一会话中受保护的数据更有价值)。作为另一个示例,在OpenSSL Heartbleed漏洞中,由于OpenSSL中的故障,假定可信的网页服务器的任何私钥都可由于存储缓冲区溢出而可能被偷走。这可允许充分冒充所述网页服务器,使得客户端无法知道其是与真实的网页服务器通信还是与冒名顶替的网页服务器通信。如果没有线索或证据来证明私钥被偷走,那么为了实现真正的安全,潜在地很大数目的服务器将不得不撤消并生成新证书,这些新证书一般倾向于非常具有挑战性。
有利地,本文公开的利用模糊化输入信息进行模幂运算的指令的模糊化信息可有助于显著提高对秘密或机密信息(例如,输入到模幂运算计算的信息)的保护。在一些实施例中,模糊化信息可以是为甚至享有最高特权的系统级软件(例如,VMM、OS、BIOS等)所不可存取的或至少不可读的。下文将进一步讨论对信息进行模糊化的各种不同的合适方式。这可用于帮助提高各种公钥密码算法的安全性、以及各种其他用途。
图1是处理器100的实施例的框图,所述处理器可操作用于执行利用模糊化输入信息进行模幂运算的指令102的实施例。在一些实施例中,处理器可以是通用处理器(例如,台式计算机、膝上型计算机或其他计算机中所使用的类型的通用微处理器或中央处理单元(CPU))。可替代地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于:密码处理器、通信处理器、网络处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器)。处理器可具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构中的任一者,或具有不同架构的组合(例如,不同的核可具有不同的架构)。
在操作期间,处理器可接收利用模糊化输入信息进行模幂运算的指令102。例如,可经由总线或其他互连从存储器预取、获取或以其他方式接收指令。指令可表示处理器的指令集的宏指令、汇编语言指令、机器代码指令或其他指令或控制信号。
处理器包括解码单元或解码器104。解码单元可接收并解码利用模糊化输入信息进行模幂运算的指令102。解码单元可输出相对较低级的指令或控制信号(例如,微指令、微运算、微代码入口点、已解码指令或控制信号等),这些指令或控制信号反映、表示用模糊化输入信息指令进行的相对更高级别的模幂运算和/或从用模糊化输入信息指令进行的相对更高级别的模幂运算导出。在一些实施例中,解码单元可包括:一个或多个输入结构(例如,(多个)端口、(多个)互连、接口),其用于接收指令;指令辨识和解码逻辑,其与输入结构耦合以辨识和解码指令;以及一个或多个输出结构(例如,(多个)端口、(多个)互连、接口),其与指令辨识和解码逻辑耦合以输出较低级的指令或控制信号。可使用各种不同的机构来实施解码单元,这些机构包括但不限于:微代码只读存储器(ROM)、查找表、硬件实施方式、可编程逻辑阵列(PLA)和适合于实施解码单元的其他机构。
在一些实施例中,代替将利用模糊化输入信息进行模幂运算的指令直接提供给解码单元的是,可选地,可以使用指令仿真器、翻译器、变形器、解释器或其他指令转换模块。可以以软件、硬件、固件或其组合来实施各种类型的指令转换模块。在一些实施例中,指令转换模块可以被定位在处理器外部,如例如,在分开的管芯上和/或在存储器(例如,静态、动态或运行时间仿真模块)中。通过示例的方式,指令转换模块可接收利用模糊化输入信息进行模幂运算的指令(其可以属于第一指令集),并且可将利用模糊化输入信息进行模幂运算的指令仿真、翻译、变形、解释或以其他方式转换为一个或多个对应的中间指令或控制信号,所述中间指令或控制信号可以属于第二不同的指令集。可将第二指令集的一个或多个中间指令或控制信号提供给解码单元(例如,解码单元104),所述解码单元可以将其解码成可由处理器的本机硬件(例如,一个或多个执行单元)执行的一个或多个较低级指令或控制信号。
在一些实施例中,利用模糊化输入信息进行模幂运算的指令102可明确指定(例如,通过一个或多个字段,或位集合)或以其他方式指示(例如,隐式指示)多个源操作数116的存储位置。这些源操作数可用于存储与指令相关联的模幂运算操作或计算的输入信息118。在一些实施例中,指令也可明确指定或以其他方式指示将响应于指令和/或作为指令的结果而存储模幂运算结果122的目的地存储位置。作为一个示例,指令可具有源操作数字段和/或目的地操作数字段以指定或以其他方式指示这些操作数的存储位置。可替代地,这些操作数中的一者或多者的存储位置可以可选地对指令而言是隐式的(例如,对指令的操作码是隐式的)而非为明确指定的。
如所示,处理器100在部署和/或使用期间可操作用于与存储器114耦合或以其他方式通信。应注意,本发明的实施例只涉及处理器,所述处理器能够或可操作用于与存储器耦合或相互作用但尚未与存储器耦合。如所示,在一些实施例中,源操作数116和将存储模幂运算结果的目的地存储位置可以可选地是存储器中的位置。通过示例的方式,在一些实施例中,指令可以可选地指定或以其他方式指示在存储器的一组寄存器124中的寄存器,这些寄存器可将地址或其他指针存储到存储器中的用于这些操作数的位置。可替代地,可以可选地将一个或多个打包数据寄存器、处理器的专用流缓冲区中的位置或其他存储位置用于这些源操作数和/或目的地操作数中的一者或多者。此外,虽然为易于说明在插图中被示为分开的,但是在一些实施例中,可选地,用于源操作数(例如,用于底数)的同一存储位置可重用作用于存储模幂运算结果的目的地存储位置。例如,指令可明确指定用于指示存储器中将存储源操作数的位置的地址,并且可暗示处理器或为处理器所固有(例如,基于指令的操作码)的是:存储器中的相同位置将被用于目的地存储位置。
寄存器124可表示可操作用于存储数据的管芯上存储位置。在一方面,可选地,寄存器124可以为32位或64位通用寄存器。这些寄存器可表示为软件和/或程序员可见的架构上可见或架构寄存器,和/或是由处理器的指令集的指令所指示的用于识别操作数的寄存器。这些架构寄存器与给定微架构中的其他非架构寄存器(例如,临时寄存器、重排序缓冲区、引退寄存器等)形成对照。寄存器可以在不同的微架构中以不同方式实施,并且不限于任何特定类型的设计。合适类型的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器及其组合。
再次参考图1,各种不同类型的输入信息118(包括模糊化输入信息120)适合于不同的实施例。在一些实施例中,输入信息可包括底数、指数、模数、从模数在预先计算得到的一个或多个参数(例如,一个或多个约简常数)或其各种组合。如下文将进一步讨论的,用于模幂运算的各种约简算法(例如,蒙哥马利约简、巴雷特约简等)对常常是从模数和/或潜在地其他输入参数导出的约简常数进行定义,以有助于简化模幂运算的实施方式。一般而言,在不同实施例中,可选地,可以使用足以允许执行模幂运算计算的输入信息的任何组合。
另外,这样的输入信息118中的任何输入信息(包括可能这样的输入信息中没有任何输入信息,或这可能这样的输入信息中的所有输入信息,或任何中间水平)都可以可选地被提供作为模糊化输入信息120,以有助于提供对于特定的实施方式所期望的任何附加量的安全性。作为一个示例,如果待基于模幂运算计算导出的秘密密钥旨在用于保护不认为是充分秘密的和/或不认为应受到通过模糊化提供的附加保护(例如,如由程序员针对特定的实施方式所确定),那么可选地输入信息中没有一者可以被模糊化。相反,潜在地,可通过省略用于对这样的模糊化信息进行解密或以其他方式进行去模糊化的操作来实现某种增强的性能。作为另一个示例,如果待基于模幂运算计算导出的秘密密钥旨在用于保护认为是充分秘密的和/或认为应受到通过模糊化提供的附加保护(例如,如由程序员针对特定的实施方式所确定),那么可选地从输入信息中的至少一些到输入信息的全部的任何地方(例如,架构上可编程或可配置的部分)可以被模糊化。例如,在一个实施例中,可选地,模糊化输入信息可以包括模糊化底数、模糊化指数和模糊化模数,或其任何组合。
在一些实施例中,指令可灵活地指定或指示输入信息中的一个或多个部分是否被模糊化。例如,所述指令的可编程或可配置的一组一个或多个位可指示指数是否被模糊化,所述指令的可编程或可配置的另一组一个或多个位可指示底数是否被模糊化,并且所述指令的可编程或可配置的又一组一个或多个位可指示模数是否被模糊化。在其他实施例中,指令可隐式指示(例如,其对于操作码可以是固定的)输入信息中的一个或多个部分是否被模糊化。例如,对第一指令的第一操作码而言隐式的是:仅第一部分(例如,指数)被模糊化,对第二不同指令的第二不同操作码而言隐式的是:仅第二不同部分(例如,模数)被模糊化,并且对第三仍不同的指令的第三仍不同的操作码而言隐式的是:多个部分(例如,全部的底数、指数和模数)被模糊化。也可使用这样的方法的组合。例如,对操作码而言隐式的是:第一部分(例如,指数)被模糊化,并且指令的一个或多个位的集合可指示第二部分(例如,模数)是否被模糊化。考虑了这些方法的各种不同的组合。
各种各样不同类型的模糊化输入信息120适合于不同的实施例。模糊化输入信息并不是输入到模幂运算计算中的实际输入信息自身。例如,模糊化指数(E*)并不是输入到模幂运算计算中的实际指数(E)。相反,模糊化指数(E*)可表示可经去模糊化以确定输入到模幂运算计算中的实际指数(E)的模糊化值。在各种实施例中,模糊化输入信息可包括各种各样不同类型的经加密、卷积、修改或以其他方式模糊化的输入信息中的任一者,除非秘密(例如,秘密108)已知,否则无法从中确定实际输入信息,除非根据对于特定的实施方式所期望的特定水平的增强式安全性以一定的难度、极端的难度、计算的不切实际性或不可行性中的一者来实现。秘密(例如,秘密108)可以是为处理器已知的,但为软件(例如,甚至是享有最高特权的系统级软件)所不可存取的或至少不可读的。
再次参考图1,执行单元106与解码单元104耦合,并且在一些实施例中与寄存器124耦合(例如,如果指向源操作数的指针存储在这些寄存器中)。当被部署在系统中时,在一些实施例中,执行单元可操作用于与存储器114耦合(例如,在源操作数存储在其中的情况下接收这些源操作数)。执行单元可接收一个或多个经解码或以其他方式转换的指令或控制信号,这些指令或控制信号表示利用模糊化输入信息进行模幂运算的指令102和/或从利用模糊化输入信息进行模幂运算的指令102导出。执行单元也可接收用于模幂运算操作的输入信息118,包括任何可选的模糊化输入信息120。在一些实施例中,可选地存在至少一些模糊化输入信息,不过本发明的范围并不限于此。
如所示,执行单元可包括秘密108、与秘密耦合的去模糊化单元110和与去模糊化单元耦合的模幂运算单元112。如先前所描述的,秘密可对执行单元和/或处理器可用,但为软件(例如,甚至是享有最高特权级别的系统软件)所不可存取的或至少不可读的。在一些实施例中,去模糊化单元和/或执行单元和/或处理器可以响应于利用模糊化输入信息进行模幂运算的指令和/或作为利用模糊化输入信息进行模幂运算的指令的结果(例如,响应于从指令解码得到的指令或控制信号)而进行操作,以使用秘密来对模糊化输入信息120进行去模糊化。实际输入信息的去模糊化和/或生成可完全在处理器的范围内执行,使得实际输入信息永远不会为软件可读。在一些实施例中,可选地,去模糊化单元可以响应于指令可操作,以在去模糊化操作不成功的情况下用信号通知错误。例如,在一些实施例中,模糊化输入信息可包括鉴别或完整性检查信息,所述鉴别或完整性检查信息可用于确定去模糊化操作是否提供可鉴别的输入信息和/或具有完整性的输入信息。在一方面,这样的失败的去模糊化可导致用信号通知错误和/或可导致停止进一步执行指令(例如,防止生成和存储模幂运算结果)。
本文将秘密和去模糊化广泛解释为是基于各种各样不同类型的信息、逻辑或信息与逻辑的组合中的任一者,可根据以上各者从模糊化输入信息来确定实际输入信息,但没有以上各者的话就无法从模糊化输入信息来确定实际输入信息(除非以至少一定的难度或极端的难度来实现)。在一些实施例中,模糊化输入信息可表示已加密输入信息,并且秘密可表示可在管芯上存储和/或生成的秘密密码密钥,所述秘密密码密钥可用于解密已加密输入信息以确定实际输入信息。在其他实施例中,秘密可表示可以特定的方式(例如,根据密码或数学算法)与模糊化输入信息相组合以确定实际输入信息的信息。
在其他实施例中,秘密可表示可用于以特定方式(例如,根据密码、数学或逻辑变换)修改或变换模糊化输入信息以确定实际输入信息的信息和/或逻辑。在进一步的实施例中,秘密可表示作为秘密被存储在处理器上的实际输入信息自身,其可在模糊化输入信息具有特定的需求值或者通过测试或标准的情况下选择和使用。在还有其他的实施例中,秘密可表示可操作用于以秘密的方式修改模糊化输入信息以确定实际输入信息的信息和/或逻辑。在一些实施例中,秘密可包括早期软件存储到处理器中但是后期软件不能够读取的信息和/或早期软件配置在处理器中但是后期软件不能够读取或重新配置的逻辑,不过本发明的范围并不限于此。可替代地,秘密可表示可用于对模糊化输入信息进行去模糊化的其他类型的秘密管芯上信息和/或秘密管芯上逻辑。这些方法的各种组合一般也是合适的。应了解,这些仅仅是少数说明性示例。本文别处讨论的其他方法也是合适的。此外,还有其他方法是将为本领域技术人员所显而易见的,并且具有本公开的益处。
模幂运算单元112可操作用于从输入信息的完整集合(包括任何去模糊化输入信息)中生成模幂运算结果122。在一些实施例中,模幂运算结果可在执行单元内生成并且在同一单个利用模糊化输入信息进行模幂运算的指令的执行范围内。一个潜在的优点是:这可有助于避免暴露密码处理部分或中间结果,这些密码处理部分或中间结果可潜在地经分析以泄露被认为是秘密的信息(例如,先前描述的各种类型的模糊化输入信息中的任一者)。相反,在一些实施例中,可将所有这样的中间结果保存在模幂运算单元和/或执行单元106和/或处理器内,以代替将其存储在架构上可见的寄存器或存储器位置中。一旦已生成模幂运算结果,执行单元就可响应于指令和/或作为指令的结果可操作,以将模幂运算结果存储在由指令指示的目的地存储位置(例如,存储器中的位置)中。常常,在许多公钥密码技术使用的情况下,可以非加密和非模糊化的格式存储模幂运算结果,因为其一般将由常规的软件来处理。
有利地,通过将模糊化输入信息提供给处理器以代替实际输入信息,软件(例如,甚至是享有特权的恶意软件)可不能够直接读取实际输入信息,并且可不能够以至少一定的难度或极端的难度(例如,根据对于特定的实施方式所期望的特定水平的增强式安全性)来确定实际输入信息。当结合公钥密码技术使用时,例如,这可有助于保护秘密或私密信息(例如,私钥)和/或以其他方式有助于提高安全性。
执行单元和/或处理器可包括具体或特定的逻辑(例如,晶体管、集成电路系统或潜在地与固件(例如,存储在非易失性存储器中的指令)组合的其他硬件),所述逻辑可操作用于执行利用模糊化输入信息进行模幂运算的指令和/或响应于指令和/或作为指令的结果(例如,响应于从中解码得到的指令或控制信号)来存储模幂运算结果。通过示例的方式,执行单元可包括微代码引擎、状态机等等,以执行模幂运算的操作。在一些实施例中,执行单元可包括:一个或多个输入结构(例如,(多个)端口、(多个)互连、接口),其用于接收输入信息和/或模糊化输入信息;电路系统或逻辑,其与输入结构耦合以接收和处理接收到的信息并生成模幂运算结果;以及一个或多个输出结构(例如,(多个)端口、(多个)互连、接口),其与电路系统或逻辑耦合以输出模幂运算结果。
为避免使描述模糊,已示出和描述了相对简单的处理器。然而,可选地,处理器可以包括其他处理器组件。例如,各种不同的实施例可包括针对图9至图11中的任一者示出和描述的组件的各种不同的组合和配置。可将处理器的所有组件耦合在一起以允许它们按照预期的那样操作。
图2是方法230的实施例的流程框图,所述方法执行利用模糊化输入信息进行模幂运算的指令的实施例。在各种实施例中,所述方法可由处理器、指令处理设备或其他数字逻辑装置来执行。在一些实施例中,方法230可由图1的处理器100来执行和/或在其内执行。可选地,本文针对处理器100而描述的组件、特征和具体可选的细节也适用于方法230。可替代地,方法230可由不同的处理器或设备来执行和/或在其内执行。此外,处理器100可执行不同于方法230的方法。
所述方法包括:在框231处,接收利用模糊化输入信息进行模幂运算的指令。在各个方面,可在处理器或其一部分(例如,指令获取单元、解码单元、总线接口单元等)处接收指令。在各个方面,可从处理器外(off-processor)源和/或管芯外(off-die)源(例如,从存储器、互连等)接收指令,或从处理器上(on-processor)源和/或管芯上源(例如,从指令高速缓存、指令队列等)接收指令。
利用模糊化输入信息进行模幂运算的指令可指定或以其他方式指示多个源操作数(例如,在存储器中的多个位置处),这些源操作数存储用于模幂运算操作的输入信息。在一些实施例中,输入信息可包括底数、指数、模数、从模数预先计算得到的一个或多个参数(例如,一个或多个约简常数)或其各种组合,以上各者足以为给定方法提供全部所需的输入。在一些实施例中,可选地,输入信息(例如,上述输入信息中的任一者)中的至少一部分输入信息可被模糊化,不过这并非是必需的。所述模糊化输入信息可以与本文别处描述的模糊化输入信息相同或类似。
在框232处,可响应于利用模糊化输入信息进行的模幂运算和/或作为利用模糊化输入信息进行的模幂运算的结果来存储模幂运算结果。模幂运算结果可存储在由利用模糊化输入信息进行模幂运算的指令指定或以其他方式指示的目的地存储位置中。
所说明的方法涉及架构操作(例如,从软件角度可见的架构操作)。在其他实施例中,可选地,所述方法可包括一个或多个微架构操作。通过示例的方式,可获取、解码、乱序调度指令,可存取源操作数,执行单元可执行微架构操作以实施指令等。在一些实施例中,可选地,用于实施指令的微架构操作可包括针对图3或图6至图8中的任一者示出和描述的微架构中的任一者,包括针对其所提到的变型。可选地,可以执行的一个示例操作是对模糊化输入信息进行去模糊化。可选地,这可以包括本文别处讨论的去模糊化方法中的任一种的操作。
通常,完整地执行模幂运算可占用相对较大数目的循环(例如,从几千或几万或甚至更多,这取决于操作数尺寸)。由于对操作数去模糊化所需的计算,完整地执行利用模糊化输入信息进行模幂运算的指令可能会占用甚至更多的循环。
部分地由于相对较大数目的循环,有可能在完成之前不时中断指令的执行。在一些实施例中,可选地,可以采取几种可能的预防措施中的一者,以有助于确保部分或中间状态(其可潜在地经分析以确定秘密信息)并没有变得为软件可读。
在一些实施例中,响应于在执行指令时的中断,执行单元可操作用于:停止执行模幂运算计算和/或指令;加密在中断的时候或前后计算得到的当前中间状态;以及将已加密中间状态存储在存储位置(例如,存储器中的位置)中。通过示例的方式,可用处理器的为软件不可读的秘密密钥来加密中间状态。在已解决中断之后,可检索、解密已加密中间状态,并且可从恢复的中间状态开始恢复算法。在其他实施例中,响应于在执行指令时的中断,执行单元可操作用于:停止执行模幂运算计算和/或指令;以及将在中断的时候或前后计算得到的当前中间状态存储在处理器的为软件不可读的管芯上存储装置(例如,非架构上可见的存储装置)中。在其他实施例中,响应于在执行指令时的中断,执行单元可操作用于:停止执行模幂运算计算和/或指令;以及丢弃在中断的时候或前后计算得到的当前中间状态。可选地,可以在图1的处理器100和/或图2的方法230中使用这些方法中的任一种。
为进一步说明某些概念,考虑用于模幂运算的少数可能的实施算法可以是有帮助的。在以下伪代码中示出了用于在没有任何特殊的所谓约简方法的情况下实施模幂运算的一种可能的算法:
E=(e1023 e1022 e1021…e2 e1 e0)2
Initialize A=1
For i from 1023 to 0
A=A2 modulo N
If ei=1
A=A*B modulo N
Return A
如所示,指数可由其个别位(ei)来表示,其中ei的范围为e0至e1023。最初,可将值A设定成等于1。然后,可在循环的1024次迭代中的每一者期间更新值A。具体地,在1024次迭代中的每一者内,可将值A更新成等于其平方对N取模(即,A=A2 modulo N)。针对1024次迭代中的每一者,当循环的对应指数位(即,ei)被设定成二进制1(即,当ei=1时),将值A进一步更新成等于其自身与底数(B)对N取模的乘积(即A=A*B modulo N)。其他方面,当循环的对应指数位(即,ei)被清除到二进制0(即,当ei=0时),不执行此。在循环结束时,返回A的值以作为模幂运算的结果。
可选地,若需要,则可以使用用于实施模幂运算的这种算法。然而,常常这种算法的实施可往往是慢的。一方面,在循环的迭代内执行的(多个)取模操作一般实施起来往往是慢的。代表性地,可用类似于除法的操作来实施这些操作,至少与其他类型的类似于乘法的操作相比,这些类似于除法的操作一般计算起来花费相对较长的时间。另外,需要在循环的每次迭代内执行这样的(多个)取模操作,其中可存在许多个迭代(例如,在这个示例中为1024次,或在一些情况下甚至更多)。因此,虽然这种算法适合于根据一些实施例来实施模幂运算,但是常常可能期望使用这样一种模幂运算算法,即这种模幂运算算法使用特殊的模约简方案以便实现更快的执行速度。
图3是详细的方法335的示例实施例的流程框图,所述方法利用蒙哥马利约简来执行利用模糊化输入信息进行模幂运算的指令的实施例。在各种实施例中,所述方法可由处理器、指令处理设备或其他数字逻辑装置来执行。在一些实施例中,方法335可由图1的处理器100来执行和/或在其内执行。可选地,本文针对处理器100而描述的组件、特征和具体可选的细节也适用于方法335。可替代地,方法335可由不同的处理器或设备来执行和/或在其内执行。此外,处理器100可执行不同于方法335的方法。
所述方法包括:在框336处,接收利用模糊化输入信息进行模幂运算的指令。指令可指定或以其他方式指示一个或多个源操作数,所述源操作数存储可选地模糊化底数(B)、可选地模糊化指数(E)、可选地模糊化模数(N)、可选地蒙哥马利(Montgomery)约简中所使用的一个或多个可选地模糊化约简常数或其任何组合,以上各者表示至蒙哥马利约简算法的至少有效输入。实施例预期使这样的输入信息的任何组合(范围为它中没有一者到它的全部)模糊化。
然后,在框337处,可对任何可选的模糊化输入信息(如果针对特定的实施例存在任何模糊化输入信息)进行去模糊化。可使用本文别处描述的方法中的任一种和/或方式中的任一种来执行去模糊化。
然后,在框338处,可计算蒙哥马利约简的所需约简常数中的任一者(如果这些约简常数并未已经被提供作为由(多个)源操作数提供的输入信息中的预先计算得到的约简常数)。可替代地,可选地,这些约简常数中的一者或多者可被提供作为由(多个)源操作数提供的输入信息中的预先计算得到的常数。这可有助于避免需要在指令的执行范围内计算这些约简常数。在使用1024位操作数的一些实施例中,所述方法可使用由蒙哥马利约简定义为模数(N)的函数的两个约简常数(R2和U),如等式2和3中所示:
R2=22048 modulo N 等式2
U=-N-1 modulo(264) 等式3
接下来,在框339处,可使用约简常数R2和U利用蒙哥马利约简来执行模幂运算计算。通过示例的方式,可如以下伪代码中所示来执行此:
E=(e1023 e1022 e1021…e2 e1 e0)2
B’=B*R2//Montgomery-multiplication==B*R mod N(蒙哥马利乘法==B*Rmod N)
Initialize A=B’
Identify index of most significant set bit in E as X(将E中的最高有效设定位的索引标识为X)
For i ranging from X-1to 0
A=A2//Montgomery square(蒙哥马利平方)
If ei=1
A=A*B’//Montgomery-multiplication(蒙哥马利乘法)
Return Montgomery-Reduce(A)
在以上伪代码中:
(1)数X和Y的蒙哥马利乘法可表示(X*Y*R-1)mod N;
(2)数X的蒙哥马利平方可表示(X*X*R-1)mod N;
(3)数X的蒙哥马利约简可表示(X*R-1)mod N。
指数可再次由其个别位(ei)表示,其中在1024位指数的这个特定示例中ei的范围为e0至e1023。最初,可执行蒙哥马利乘法,以通过用R2常数乘底数来计算B’值(即,B’=蒙哥马利乘法(B,R2))。然后,可将值A设定成等于B’。接下来,实施了可选的一方面,其中识别指数(E)中的最高有效设定位的索引(X),并且然后可选地仅针对范围为(X-1)到0的计数器(i)值来执行循环。换句话说,代替执行循环的最大次数的迭代(例如,1024次迭代)的是,可选地,可以省略对应于比指数(E)中的最高有效设定位更有效的清除位的迭代。这在一些情况下可有助于改进性能,但可选地并不是必需的。相反,若需要,可选地,可以执行循环的最大次数的迭代(例如,1024次迭代)。
然后,可在循环的迭代中的每一者期间更新值A。具体地,在这些迭代中的每一者内,可将值A更新成等于其蒙哥马利平方。应注意,与上文描述的非蒙哥马利实施方式相反,无需执行类似于除法的操作且由此改进性能。针对这些迭代中的每一者,当循环的对应指数位(即,ei)被设定成二进制1(即,当ei=1时),将值A进一步更新成等于其自身与B’值的蒙哥马利乘法。其他方面,当循环的对应指数位(即,ei)被清除到二进制0(即,当ei=0时),不执行此。应再次注意,与上文描述的非蒙哥马利实施方式相反,无需执行类似于除法的操作且由此改进性能。在循环结束时,对最终的值A执行蒙哥马利约简。这表示模幂运算结果。
再次参考图3,在框340处,可将如通过蒙哥马利约简计算得到的模幂运算结果存储在由指令指示的目的地存储位置中。本文别处描述的目的地存储位置中的任一者是合适的。
上述方法仅仅表示利用蒙哥马利约简来执行利用模糊化输入信息进行模幂运算的指令的方法的一个说明性示例实施例。其他方法也是预期的和将为本领域技术人员所显而易见的,并且具有本公开的益处。例如,所说明的方法是基于1024位底数、指数和模数,不过在其他实施例中,底数、指数和模数可具有各种其他2的乘方的尺寸,涉及几个数量级(例如,范围可为256位到大约16,384位)。作为另一个示例,所说明的方法是基于使用64位的字长的字级蒙哥马利约简算法,不过在其他实施例中可选地可以使用32位或其他字长。另外,已经以相对基本的形式描述了所述方法,但是可选地可以将若干操作添加到所述方法和/或从所述方法移除若干操作。另外,不要求操作的特定次序,而是可选地某些操作可以以其他次序执行和/或重叠。
在以下伪代码中说明了用模糊化输入信息进行的合适模幂运算的一个具体示例实施例(即,MODEXP_LOCKED1):
MODEXP_LOCKED1{
//输入信息
Src1 R1//寄存器将指针存储到具有模糊化模数的存储器位置
Src2 R2//寄存器将指针存储到具有模糊化指数的存储器位置
SrcDst R3//寄存器将指针存储到具有模糊化底数的存储器位置
//对底数、模数和指数进行去模糊化
N=de-obfuscate(Src1)//可选地,如果去模糊化失败,则用信号通知失败
E=de-obfuscate(Src2)//可选地,如果去模糊化失败,则用信号通知失败
B=de-obfuscate(SrcDst)//可选地,如果去模糊化失败,则用信号通知失败
//计算蒙哥马利约简常数
R2=22048mod N
U=-N-1 mod(264)
//执行模幂运算
B’=B*R2//Montgomery-multiply==B*R mod N(蒙哥马利乘法==B*R mod N)
Initialize A=B’
Determine index of most significant set bit in E as X(将E中的最高有效设定位的索引确定为X)
For i from X-1to 0
A=A2//蒙哥马利乘方
If ei=1
A=A*B’//蒙哥马利乘法
*SrcDst=Montgomery-Reduce(A)
}
在如下的蒙哥马利约简操作内使用U常数(U常数也可用于本文的其他蒙哥马利约简操作中):
Montgomery-reduction(X,N,U){
A=X
For(i=0…(1024/64-1)){//A被分为其64位的分块ai
ui=ai*U mod 264
A=A+ui*N*264*i
}
A=A/21024
If(A>=N)A=A-N
Return A//==(X*R-1)mod N.
}
MODEXP_LOCKED1指令可明确指定或隐式指示第一寄存器(R1)(例如,第一64位通用寄存器),所述第一寄存器将存储存储器中的一个位置的有效地址、指针或其他指示,所述位置将存储具有模糊化模数的第一源操作数(Src1)。指令还可明确指定或隐式指示第二寄存器(R1)(例如,第二64位通用寄存器),所述第二寄存器将存储存储器中的一个位置的有效地址、指针或其他指示,所述位置将存储具有模糊化指数的第二源操作数(Src2)。指令还可明确指定或隐式指示第三寄存器(R3)(例如,第三64位通用寄存器),所述第三寄存器将存储存储器中的一个位置的有效地址、指针或其他指示,所述位置将存储源-目的地操作数(SrcDst),所述SrcDst最初具有模糊化底数并且在完成指令后即刻充当将存储模幂运算结果的目的地存储位置。可替代地,可选地,可代替使用本文别处公开的指示源操作数和/或目的地操作数的各种其他方式中的任一者。
在这个实施例中,底数、指数和模数全部都被模糊化。可替代地,在其他实施例中,可选地,底数、指数和模数中的任何一者或多者(包括任何组合)可以被模糊化。指令可控制或以其他方式使执行单元对模糊化底数、指数和模数进行去模糊化。本文别处提到的去模糊化方法中的任一种是合适的(例如,下文针对图6至图8所描述的方法中的一种)。作为一个说明性示例,执行单元可使用秘密处理器密码密钥来解密已加密输入信息。可选地,如果这些去模糊化中的任一者失败,那么可用信号通知错误。
在这个实施例中,由于未通过源操作数将蒙哥马利约简常数提供作为输入,所以指令可控制或以其他方式使执行单元计算蒙哥马利约简常数。具体地,可在指令的执行范围内计算R2和U常数。代表性地,可每模幂运算操作/指令预先计算这些常数一次。然后,指令可控制或以其他方式使执行单元利用约简常数来执行模幂运算计算的蒙哥马利约简。最后,响应于指令,执行单元可将模幂运算结果存储在目的地存储位置(例如,在这种情况下为SrcDst)中。
在以下伪代码中说明了用模糊化输入信息进行的合适模幂运算的另一个具体示例实施例(即,MODEXP_LOCKED2):
MODEXP_LOCKED2{
//输入信息
Src1 R1//寄存器将指针存储到具有模糊化底数N||R2||U的存储器位置
Src2 R2//寄存器将指针存储到具有模糊化指数的存储器位置
SrcDst R3//寄存器将指针存储到具有模糊化底数的存储器位置
//对底数、模数和指数进行去模糊化
N||R2||U=de-obfuscate(Src1)//可选地,如果去模糊化失败,则用信号通知失败
E=de-obfuscate(Src2)//可选地,如果去模糊化失败,则用信号通知失败
B=de-obfuscate(SrcDst)//可选地,如果去模糊化失败,则用信号通知失败
//不需要计算蒙哥马利约简常数,因为已经提前计算了
//执行模幂运算
B’=B*R2//Montgomery-multiply==B*R mod N(蒙哥马利乘法==B*R mod N)
Initialize A=B’
Determine index of most significant set bit in E as X(将E中的最高有效设定位的索引确定为X)
For i from X-1to 0
A=A2//蒙哥马利乘方
If ei=1
A=A*B’//蒙哥马利乘法
*SrcDst=Montgomery-Reduce(A)
}
MODEXP_LOCKED2指令类似于MODEXP_LOCKED1指令。可选地,上文针对MODEXP_LOCKED1指令提到的讨论和变型也适用于MODEXP_LOCKED2指令。然而,一个不同之处是:MODEXP_LOCKED2指令通过源操作数将R2和U约简常数提供作为输入(例如,作为预先计算得到的常数)。在所说明的实施例中,可选地,这些约简常数被级联(例如,如由符号||所示)或以其他方式与模数一起提供,不过这并非是必需的。约简常数可从模数导出,因此将它们保存在同一个源操作数中是有一些益处的。然而,在其他实施例中,可由其他源操作数和/或多个源操作数提供约简常数。因为约简常数被提供作为输入,所以不需要执行单元计算这些约简常数以作为指令的操作的一部分。相反,如果约简常数关于其他输入参数被模糊化,那么可对它们进行去模糊化。在一些实施例中,如果模数被模糊化,那么约简常数也可被模糊化,而如果模数未被模糊化,那么约简常数可不被模糊化。
用于模幂运算的合适约简算法的另一个示例是巴雷特约简。其他实施例涉及类似于图3中所示的方法的方法(除了使用巴雷特约简常数之外),并且使用巴雷特约简算法来执行模幂运算。在一些实施例中,所述方法可使用由巴雷特约简定义为模数(N)的函数的约简常数,如等式4中所示:
U=floor(22048/N) 等式4
巴雷特约简可使用如以下伪代码中所示的约简常数:
//执行模幂运算,其中
E=(e1023 e1022 e1021…e2 e1 e0)2
Initialize A=B
Identify index of most significant set bit in E as X(将E中的最高有效设定位的索引标识为X)
For i ranging from X-1to 0
A=A2//巴雷特平方约简
If ei=1
A=A*B//巴雷特乘法约简
Return(A)
针对1024位的模数的约简自身可以如下执行:
Barrett-reduction(X,N,U){
Q1=floor(X/21023)
Q2=Q1*U
Q3=floor(Q2/21025)
R1=X mod 21025
R2=Q3*N mod 21025
R=R1-R2
If(R<0)R=R+21025
while(R>=N)R=R-N
Return R//==X mod N.
}
可将2个数X和Y的巴雷特乘法执行为巴雷特约简(X*Y,N,U)。针对平方运算也可类似地执行此。应注意,这有点类似于两个数的蒙哥马利乘法,其可被完成为两个数的规则乘法、之后为蒙哥马利约简。
巴雷特约简与先前描述的蒙哥马利约简具有某些相似之处。为避免使描述模糊,将主要描述不同或附加的特征,而不重复所有的类似特征和可选变型。然而,应了解,可选地,除非另有陈述或除非另外明确显而易见的(例如,除非针对蒙哥马利约简所描述的特征和可选变型与巴雷特约简不相容),否则这些特征和可选变型也适用于巴雷特约简。
用模糊化输入信息进行的合适模幂运算的又一个具体示例实施例(即,MODEXP_LOCKED3)与上文针对MODEXP_LOCKED1所示的示例实施例相同,除了使用巴雷特约简常数和计算以代替蒙哥马利约简常数和计算之外。合适的利用模糊化输入信息进行的模幂运算的仍进一步具体示例实施例(即,MODEXP_LOCKED4)与上文针对MODEXP_LOCKED2所示的示例实施例相同,除了使用巴雷特约简常数和计算以代替蒙哥马利约简常数和计算之外。
图4是利用模糊化输入信息进行模幂运算的指令402的示例实施例的框图。指令包括操作码(operation code/opcode)442。所述操作码可表示多个位或者一个或多个字段,所述位或字段可操作用于识别指令和/或待执行的操作(例如,利用模糊化输入信息操作进行的模幂运算)。
指令还包括第一源指示字段444、第二源指示字段446和第三源/目的指示字段448。这些源指示字段可用于指定或以其他方式指示用于提供输入参数和/或可选地模糊化输入参数的源操作数的源存储位置。通过示例的方式,这些字段中的每个字段可以包括用于指定相关联的操作数的寄存器地址、存储器位置或其他存储位置的位。在其他实施例中,可使用更少或更多的源指示字段和/或目的指示字段。例如,可选地,可以将输入信息提供在单个更大的存储器位置中。作为另一个示例,可选地,这些存储位置中的一者或多者对于指令可以是隐式的或为其所固有的(例如,操作码),而非被指定的。进一步地,若需要,可选地,可以使用附加的分开的目的指示字段,以代替使第三字段为源/目的指示字段。
在一些实施例中,可选地,指令也可具有操作数尺寸指示字段450。所述操作数尺寸指示字段可允许指定或指示源操作数的尺寸。这可有助于提供灵活的或可变的并且架构上可编程或可配置的具有一定尺寸的操作数。在一些实施例中,单一尺寸字段可用于指定或以其他方式指示所有源操作数的单一尺寸,不过本发明的范围并不限于此。在一些实施例中,为了提供相对较高级别的灵活性,指令可允许将操作数尺寸配置成范围为大约256位到大约16,000位,不过本发明的范围并不限于任何已知的尺寸。可替代地,若需要,可选地,可以使用固定尺寸的操作数,并且可选地,可以省略操作数尺寸指示字段。通过示例的方式,可选地,可以使用充分大的固定操作数尺寸以适应被期望用于特定的实施方式的操作数的尺寸,并且可选地,可用0填充未被更小的操作数占据的任何未用位。
在一些实施例中,可选地,指令还可具有一个或多个操作数模糊化指示字段452。一个或多个操作数模糊化指示字段中的每一者可用于指示对应的操作数是否可选地被模糊化。通过示例的方式,在一些实施例中,可存在用于指示第一操作数(例如,待用于存储底数)是否被模糊化的第一操作数模糊化指示字段或一个或多个位的集合,可存在用于指示第二操作数(例如,待用于存储指数)是否被模糊化的第二操作数模糊化指示字段或一个或多个位的集合,并且可存在用于指示第三操作数(例如,待用于存储模数)是否被模糊化的第三操作数模糊化指示字段或一个或多个位的集合。可替代地,可选地,指令的操作码可以决定哪些操作数(例如,底数、指数和模数中哪个)被模糊化。例如,可选地,可以针对被模糊化的底数、指数和模数的不同组合来提供不同的操作码指令,举几个例子,这些操作码指令全部被调制(modulated)和它们中没有一者被调制。有利地,这可有助于允许程序员配置或指定哪些操作数被模糊化使得期望为安全的操作数可以得到保护,而不期望得到保护的操作数则无需被进行去模糊化。作为一个示例,在一些算法(如,DSA和Diffie-Hellman)中,一些操作数是公共的,如模数(例如,NIST发布的素数)。在Diffie-Hellman阶段1中,底数也是已发布的或公共的,而在阶段2中其需要为秘密或私密的。在一些情况下,可通过不进行模糊化和需要对公共信息进行去模糊化来实现更好的性能。
这仅仅是合适的指令的一个说明性示例。替代性实施例可以包括所说明的字段的子集和/或可以添加附加字段。所述字段的所说明的安排不是必需的,而是所述字段可以以各种方式重新安排。此外,所述字段中的每个字段可以由连续位集合组成,或者可以包括在逻辑上表示字段的非连续的或分离的位。
图5是立即数554的示例实施例的框图,所述立即数具有操作数尺寸指示字段550的示例实施例和操作数模糊化指示字段556的示例实施例。在这个实施例中,立即数是8位立即数,不过可选地可以使用更大或更小的立即数。
立即数的位[3:0]表示基本操作数尺寸指示字段550A。可替代地,更少或更多的位可用于表示潜在地作为与最小操作数尺寸的偏移量的基本操作数尺寸。立即数的位[7]表示三倍操作数尺寸指示字段550B。基本操作数尺寸指示字段和三倍操作数尺寸指示字段一同或共同地表示用于将操作数的尺寸指示为多种不同可能的尺寸中的任一者的操作数尺寸指示字段。在一些实施例中,基本操作数尺寸指示字段可指定操作数的基本尺寸,并且三倍操作数尺寸指示字段可指示基本尺寸是否被增大为三倍以确定操作数的尺寸。通过示例的方式,在一个实施方式中,位[3:0]可向左移位一个位以确定基本尺寸,并且如果位[7]被设定成二进制1,那么基本尺寸可变成三倍。其他方面,如果位[7]被清除到二进制0,那么可将基本尺寸用作操作数尺寸而不使尺寸变成三倍。三倍操作数尺寸指示字段的一个潜在的优点是:一些用法涉及不仅为2的乘方而且为2的乘方的三倍的操作数尺寸。三倍操作数尺寸指示字段允许按照3的这样的乘方来方便地按比例缩放。
立即数的位[6:4]表示三个操作数模糊化指示字段556。这些字段中的每一者可用于指示三个源操作数中的不同的对应一者是否被模糊化。作为一个说明性示例,位[6]可对应于用于存储模数的源操作数,位[5]可对应于用于存储指数的源操作数,并且位[4]可对应于用于存储底数的源操作数。可替代地,可以不同的方式将这些位分配给底数、指数和模数。位[6:4]中的每一者的一个值(例如,二进制1)可指示对应的源操作数被模糊化,而另一个值(例如,二进制0)可指示对应的源操作数未被模糊化。这样的每操作数模糊化指示字段的一个潜在的优点是提高了灵活性。例如,一些用法可使指数、模数和底数中的一给定项为秘密的,而其他用法可使同一给定项为公开或私密的,并且对应的操作数模糊化指示字段可允许程序员使所述给定者模糊化抑或不模糊化,以实现更高的安全性抑或避免倾向于降低性能的不必要的去模糊化。
在以下伪代码中说明了合适的利用模糊化输入信息进行的模幂运算的进一步具体示例实施例(即,MODEXP_LOCKED5):
MODEXP_LOCKED5{
//输入信息
Src1 R1//寄存器具备到具有可选地模糊化模数的存储器位置的指针
Src2 R2//寄存器具备到具有可选地模糊化指数的存储器位置的指针
SrcDst R3//寄存器具备到具有可选地模糊化底数的存储器位置的指针
imm8
//对底数、模数和指数进行去模糊化
N=(imm8[6])?de-obfuscate(Src1):*Src1//可选地,用信号通知失败
E=(imm8[5])?de-obfuscate(Src2):*Src2//可选地,用信号通知失败
B=(imm8[4])?de-obfuscate(SrcDst):*SrcDst//可选地,用信号通知失败
//计算蒙哥马利约简常数
R2=22048mod N
U=-N-1 mod(264)
//执行模幂运算
B’=B*R2//Montgomery-multiply==B*R mod N(蒙哥马利乘法==B*R mod N)
Initialize A=B’
Determine index of most significant set bit in E as X(将E中的最高有效设定位的索引确定为X)
For i from X-1to 0
A=A2//蒙哥马利乘方
If ei=1
A=A*B’//蒙哥马利乘法
*SrcDst=Montgomery-Reduce(A)
}
MODEXP_LOCKED5指令类似于MODEXP_LOCKED1。可选地,上文针对MODEXP_LOCKED1指令提到的讨论和变型也适用于MODEXP_LOCKED5指令。然而,一个不同之处是:MODEXP_LOCKED5指令允许源操作数(Src1、Src2和SrcDst)中的每一者可选地被模糊化(例如,可编程配置)。只有那些模糊化参数才需要被进行去模糊化。
合适的利用模糊化输入信息进行的模幂运算的又一个具体示例实施例(即,MODEXP_LOCKED6)与上文针对MODEXP_LOCKED3所示的示例实施例相同,除了其使用与MODEXP_LOCKED5指令同一立即数和模糊化可配置性之外。合适的利用模糊化输入信息进行的模幂运算的进一步具体示例实施例(即,MODEXP_LOCKED7)与上文针对MODEXP_LOCKED4所示的示例实施例相同,除了其使用与MODEXP_LOCKED5指令同一立即数和模糊化可配置性之外。
图6是执行单元606的实施例的框图,所述执行单元可操作用于响应于用已加密输入信息指令进行的模幂运算从已加密模幂运算输入信息620来解密实际模幂运算输入信息660。已加密输入信息是模糊化输入信息的示例。已加密输入信息被存储在可由指令指定或以其他方式指示的存储位置616(例如,寄存器或存储器位置)中。执行单元包括解密单元610。执行单元和/或解密单元可被耦合以接收已加密输入信息。解密单元和/或执行单元还可以被耦合以接收秘密密码密钥608。秘密密码密钥是为解密单元和/或执行单元可存取的或可用的,但为软件662(例如,甚至是享有最高特权的系统软件)所不可存取或至少不可读的。在一些实施例中,最初,秘密密码密钥可已通过软件被写入或存储到处理器中,但随后软件662可不能够读取其。在所说明的实施例中,秘密密码密钥是执行单元的一部分。在其他实施例中,秘密密码密钥可改为与执行单元分开,但是与执行单元和/或解密单元耦合(例如,存储在处理器的密钥柜中)。
解密单元可接收秘密密码密钥,并且可操作用于使用秘密密码密钥以将已加密输入信息解密成已解密输入信息660。本领域中已知的各种不同的解密算法是合适的,如例如,高级加密标准(AES)、数据加密标准(DES)、三重DES(3DES)、李维斯特加密4(RivestCipher 4,RC4)以及其他块/流加密。模幂运算单元612与解密单元耦合,并且可接收已解密输入信息。模幂运算单元可使用已解密输入信息来计算模幂运算结果,如本文别处所描述。有利地,可由执行单元和/或其处理器响应于指令来生成模幂运算计算中所使用的实际输入信息660,但这个实际输入信息永远不会驻留在处理器的架构寄存器或存储器位置或任何其他架构上可见的存储位置中,或以其他方式为软件662可读。
图7是执行单元706的实施例的框图,所述执行单元可操作用于响应于利用模糊化输入信息进行模幂运算的指令从模幂运算输入信息指示符720来确定秘密模幂运算输入信息760。输入信息指示符是模糊化输入信息的示例。指示符可广泛地表示可用于选择、识别或以其他方式指示一组秘密实际输入信息的各种各样不同类型的信息或值中的任一者。指示符可被存储在可由指令指定或以其他方式指示的存储位置716(例如,寄存器或存储器位置)中。
执行单元包括模幂运算输入信息确定单元710(本文也将其简单地称为确定单元)。执行单元和/或确定单元可被耦合以接收输入信息指示符。确定单元和/或执行单元也可耦合至秘密模幂运算输入信息的不同集合708。秘密模幂运算输入信息的不同集合表示秘密,所述秘密是为确定单元和/或执行单元可存取的或可用的,但为软件762(例如,甚至是享有最高特权的系统软件)所不可存取或不可用的。在所说明的实施例中,秘密输入信息的不同集合是执行单元的一部分。在其他实施例中,秘密输入信息的不同集合可改为与执行单元分开,但与执行单元和/或解密单元耦合。确定单元710可操作用于使用指示符720从不同组秘密输入信息708中确定或获得一组秘密输入信息760。
在不同实施例中,确定单元可使用指示符来以不同的方式确定秘密输入信息。在一些实施例中,可以列表、表格、阵列或其他有序安排对秘密输入信息的不同集合排序。指示符可表示用于选择或指示特定一组秘密输入信息的索引、偏移量、数目或其他指示符。例如,值8的指示符可选择在阵列的第8条目中的秘密输入信息。在其他实施例中,指示符可以是标识符。可不必以任何特定的次序来安排秘密输入信息的不同集合。然而,秘密输入信息的不同集合中的每一者可具有不同的对应的唯一标识符。例如,第一集合可以具有标识符“00000000”,第二集合可以具有标识符“00000010”,第三集合可以具有标识符“01000000”等。标识符可与一组秘密输入信息的标识符相匹配以便选择或指示所述一组秘密输入信息。这些仅仅是几个说明性示例。使用指示符来确定一组秘密输入信息的其他方式也在考虑范围之内,并且对于本领域中的且受益于本公开的技术人员而言是显而易见的。
模幂运算单元712与确定单元710耦合,并且可接收秘密输入信息760。模幂运算单元可使用秘密输入信息来计算如本文别处所描述的模幂运算结果。有利地,可由执行单元和/或其处理器响应于指令来生成秘密输入信息,但永远不会为软件762可读。
图8是执行单元806的实施例的框图,所述执行单元可操作用于响应于利用模糊化输入信息进行模幂运算的指令而从可鉴别的模糊化输入信息820中确定已去模糊化和鉴别的模幂运算输入信息860。可鉴别的模糊化输入信息被存储在可由指令指定或以其他方式指示的存储位置816(例如,寄存器或存储器位置)中。除了被模糊化之外,输入信息还是可鉴别的。在一些实施例中,可通过将附加的位(例如,鉴别或完整性检查位)加到模糊化输入信息来实现这样的鉴别。
执行单元包括模幂运算输入信息去模糊化和鉴别单元810。本文也将这个单元简单地称为去模糊化和鉴别单元。执行单元和/或去模糊化和鉴别单元可被耦合以接收可鉴别的模糊化输入信息。去模糊化和鉴别单元和或执行单元也可耦合至秘密808,所述秘密为软件862(例如,甚至是享有最高特权的系统软件)所不可存取的或至少不可读的。在所说明的实施例中,秘密是执行单元的一部分。在其他实施例中,秘密可改为与执行单元分开,但与执行单元和/或解密单元耦合。
去模糊化和鉴别单元可操作用于使用秘密和可鉴别的模糊化输入信息以获得已鉴别的去模糊化输入信息860。可如本文别处所描述来执行去模糊化。在一些实施例中,可鉴别的模糊化输入信息可包括已加密和可鉴别的输入信息。通过示例的方式,在一些实施例中,其中包括有执行单元的处理器在其指令集中可以具有编码密钥指令。处理器可执行编码密钥指令以生成可鉴别的模糊化输入信息,其包括模糊化输入信息外加附加的鉴别或完整性检查信息。可替代地,可选地,密钥包裹算法可以用于提供可鉴别的模糊化输入信息。去模糊化和鉴别单元可操作用于使用秘密或隐藏的密码密钥来解密和鉴别这样的信息。
如果生成的去模糊化输入信息不是预期的信息和/或与鉴别信息不一致,那么鉴别可失败。在一些实施例中,如果发生这样的失败的鉴别,那么执行单元可用信号通知错误864。例如,所述错误可以递送到软件(例如,操作系统的错误处理程序)。在这样的情况下,处理器可停止执行指令而不存储输出。
模幂运算单元812与去模糊化和鉴别单元810耦合,并且可接收已鉴别的去模糊化输入信息860。模幂运算单元可使用已鉴别的去模糊化输入信息来计算如本文别处所描述的模幂运算结果。有利地,鉴别或完整性检查可与模糊化一起使用。
其他实施例涉及不指示模糊化输入信息且不具有使输入信息模糊化和去模糊化的能力的模幂运算指令。这些指令可类似于本文公开的其他模幂运算指令,除了它们仅能够指示非模糊化输入信息以代替指示模糊化输入信息之外。非模糊化输入信息可以是本文别处提到的非模糊化输入信息(例如,实际用于执行模幂运算的底数、指数和模数)中的任一者。可无需对所述输入信息进行解密或以其他方式进行去模糊化,因为其未被模糊化并且可以直接用于模幂运算计算中。除这样的模糊化/去模糊化差别以外,指令可在其他方面具有与本文公开的其他模幂运算指令类似或相同的特性和变型。代表性地,可在某些实施方式中使用这样的指令,在这些实施方式中使输入信息去模糊化可能是没必要的或不是充分重要的。例如,可以是这样的情况:密码密钥是短暂的(例如,仅用于一次或几次加密)、待加密的数据对于证明模糊化不是充分重要的、指令用于非密码模幂运算等。在这样的情况下,使输入信息去模糊化的益处较少,而性能方面的一些提高可一般通过避免需要执行去模糊化来获得。
示例性核架构、处理器和计算机架构
处理器核能够以不同的方式实现,用于不同的目的地以及在不同的处理器中。例如,这样的核的实施方式可包括:1)通用有序核,其旨在用于通用计算;2)高性能通用乱序核,其旨在用于通用计算;3)专用核,其主要旨在用于图形和/或科学(吞吐量)计算。不同处理器的实施方式可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括主要旨在用于图形和/或科学(吞吐量)的一个或多个专用核。这样的不同处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同包装中的分开的管芯上的协处理器;3)在与CPU相同管芯上的协处理器(在这种情况下,这样的协处理器有时被称为专用逻辑(如集成图形和/或科学(吞吐量)逻辑),或被称为专用核);以及4)系统芯片,其可包括在相同管芯上的所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、上述协处理器和附加功能性。接下来描述示例性核架构,之后是对示例性处理器和计算机架构的描述。
示例性核架构
有序和乱序核框图
图9A是框图,展示了根据本发明的实施例的示例性有序流水线和示例性寄存器重命名乱序发布/执行流水线两者。图9B是框图,展示了根据本发明的实施例的将包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名乱序发布/执行架构核两者。图9A和图9B中的实线框展示了有序流水线和有序核,而虚线框的可选添加展示了寄存器重命名乱序发布/执行流水线和核。假定有序方面是乱序方面的子集,将描述乱序方面。
在图9A中,处理器流水线900包括获取阶段902、长度解码阶段904、解码阶段906、分配阶段908、重命名阶段910、调度(也被称为分派或发布)阶段912、寄存器读取/存储器读取阶段914、执行阶段916、回写/存储器写入阶段918、异常处理阶段922以及提交阶段924。
图9B示出了处理器核990,所述处理器核包括耦合至执行引擎单元950的前端单元930,并且所述执行引擎单元和前端单元两者都耦合至存储器单元970。核990可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或可替代核类型。作为又另一个选项,核990可以是专用核,如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元930包括耦合至指令高速缓存单元934的分支预测单元932,所述指令高速缓存单元耦合至指令转换后备缓冲器(TLB)936,所述指令转换后备缓冲器耦合至指令获取单元938,所述指令获取单元耦合至解码单元940。解码单元940(或解码器)可以对指令进行解码并且生成从原始指令中解码出的、或以其他方式反映原始指令或从原始指令衍生出的一个或多个微运算、微代码入口点、微指令、其他指令或其他控制信号作为输出。解码单元940可以使用各种不同的机制来实施。合适的机构的示例包括但不限于:查找表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核990包括存储用于某些宏指令的微代码(例如,存储在解码单元940中或以其他方式存储在前端单元930内)的微代码ROM或其他介质。解码单元940耦合至执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括耦合至引退单元954的重命名/分配器单元952和一组一个或多个调度器单元956。(多个)调度器单元956表示任何数目的不同调度器,包括保留站、中央指令窗等。(多个)调度器单元956耦合至(多个)物理寄存器堆单元958。(多个)物理寄存器单元958各自表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,比如,标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为有待执行的下一指令的地址的指令指针)等。在一个实施例中,(多个)物理寄存器堆单元958包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、以及通用寄存器。(多个)物理寄存器堆单元958被引退单元954重叠,以说明可实施寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲区和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲区和(多个)引退寄存器堆;使用寄存器映射和寄存器池;等)。引退单元954和(多个)物理寄存器堆单元958耦合至(多个)执行群集960。(多个)执行群集960包括一组一个或多个执行单元962和一组一个或多个存储器访问单元964。执行单元962可以执行各种运算(例如,移位、加法、减法、乘法)以及对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)执行。尽管一些实施例可包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可只包括一个执行单元或包括全都执行全部功能的多个执行单元。(多个)调度器单元956、(多个)物理寄存器堆单元958、以及(多个)执行集群960被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,所述流水线各自具有其本身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群,并且在分开的存储器访问流水线的情况下,实现了其中只有所述流水线的执行集群具有(多个)存储器访问单元964的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一者或多者可以是乱序发布/执行流水线,并且其余的是有序流水线。
所述一组存储器访问单元964耦合至存储器单元970,所述存储器单元包括耦合至数据高速缓存单元974的数据TLB单元972,所述数据高速缓存单元耦合至2级(L2)高速缓存单元976。在一个示例性实施例中,存储器访问单元964可以包括各自耦合至存储器单元970中的数据TLB单元972的加载单元、存储地址单元、以及存储数据单元。指令高速缓存单元934进一步耦合至存储器单元970中的2级(L2)高速缓存单元976。L2高速缓存单元976耦合至一个或多个其他级的高速缓存并且最终耦合至主存储器。
通过示例的方式,示例性寄存器重命名、乱序发布/执行核架构可如下实施流水线900:1)指令获取938执行获取阶段902和长度解码阶段904;2)解码单元940执行解码阶段906;3)重命名/分配器单元952执行分配阶段908和重命名阶段910;4)(多个)调度器单元956执行调度阶段912;5)(多个)物理寄存器堆单元958和存储器单元970执行寄存器读取/存储器读取阶段914;执行集群960执行执行阶段916;6)存储器单元970和(多个)物理寄存器堆单元958执行回写/存储器写入阶段918;7)各个单元可参与异常处理阶段922中;以及8)引退单元954和(多个)物理寄存器堆单元958执行提交阶段924。
核990可支持一个或多个指令集(例如,x86指令集(具有在更新版本的情况下已添加的一些扩展);加利福尼亚州森尼维耳市的美普思科技(MIPS Technologies)的MIPS指令集;加利福尼亚州森尼维耳市的安谋控股(ARM Holdings)的ARM指令集(具有可选的额外扩展,如NEON)),其包括本文描述的(多个)指令。在一个实施例中,核990包括支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用打包数据来执行许多多媒体应用所使用的操作。
应当理解,核可以支持多线程化(执行两个或更多个并行的操作或线程集),并且可以以各种方式来完成多线程化,所述各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分获取和解码以及此后诸如超线程化技术中的同步多线程化)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应当理解的是,可以在有序架构中使用寄存器重命名。虽然处理器的所示实施例还包括分开的指令和数据高速缓存单元934/974和共享的L2高速缓存单元976,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,所述系统可以包括在核和/或处理器外部的内部高速缓存和外部高速缓存的组合。可替代地,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图10A和图10B展示了更特定的示例性有序核架构的框图,所述核是芯片中的多个逻辑块(包括相同类型和/或不同类型的其他核)之一。根据应用,逻辑块通过具有某些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑的高带宽互连网络(例如,环形网络)进行通信。
图10A是根据本发明的实施例的单个处理器核、连同其与管芯上互连网络1002的连接以及连同其2级(L2)高速缓存1004的本地子集的框图。在一个实施例中,指令解码器1000支持具有打包数据指令集扩展的x86指令集。L1高速缓存1006允许对标量和向量单元中的高速缓存存储器的低等待时间访问。虽然在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器堆(分别为标量寄存器11012和向量寄存器1014),并且在它们之间传送的数据被写入存储器并且然后从1级(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位宽ALU1028),所述向量处理单元执行整数、单精度浮点和双精度浮点指令中的一者或多者。VPU支持用混合单元1020对寄存器输入进行混合、用转换单元1022A和1022B进行数字转换、以及用复制单元1024对存储器输入进行复制。写入掩码寄存器1026允许预测结果向量写入。
具有集成存储器控制器和图形的处理器
图11是根据本发明的实施例的可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器1100的框图。图11中的实线框展示了具有单个核1102A、系统代理1110、一组一个或多个总线控制器单元1116的处理器1100,而虚线框的可选添加展示了具有多个核1102A至1102N、系统代理1110中的一组一个或多个集成存储器控制器单元1114以及专用逻辑1108的替代处理器1100。
因此,处理器1100的不同实施方式可包括:1)CPU,其具有为集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑1108和为一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合)的核1102A至1102N;2)协处理器,其具有为旨在主要用于图形和/或科学(吞吐量)的大量专用核的核1102A至1102N;以及3)协处理器,其具有为大量通用有序核的核1102A至1102N。因此,处理器1100可以是通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器等。处理器可以在一个或多个芯片上实施。处理器1100可以是一个或多个衬底的一部分和/或可以使用如例如BiCMOS、CMOS或NMOS的多种加工技术中的任何一种技术在一个或多个衬底上实施。
存储器层级包括核内的一个或多个级别的高速缓存,一组一个或多个共享高速缓存单元1106、以及外部存储器(未示出),所述外部存储器耦合至所述一组集成存储器控制器单元1114。所述一组共享高速缓存单元1106可以包括一个或多个中级高速缓存,比如,2级(L2)、3级(L3)、4级(L4)、或其他级别的高速缓存、终极高速缓存(LLC)和/或其组合。虽然在一个实施例中,基于环形的互连单元1112将集成图形逻辑1108、所述一组共享高速缓存单元1106、以及系统代理单元1110/(多个)集成存储器控制器单元1114互连,但替代实施例可以使用任何数量的用于互连这种单元的已知技术。在一个实施例中,在一个或多个高速缓存单元1106与核1102A至1102N之间保持相干性。
在一些实施例中,所述核1102A至1102N中的一个或多个核能够进行多线程。系统代理1110包括协调和操作核1102A至1102N的那些组件。系统代理单元1110可包括(例如)功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核1102A至1102N和集成图形逻辑1108的功率状态所需的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
就架构指令集而言,核1102A至1102N可以是同质的或异构的;也就是说,核1102A至1102N中的两个或更多个核能够执行相同的指令集,而其他的核能够仅执行那个指令集的子集或执行不同的指令集。
示例性计算机架构
图12至图15是示例性计算机架构的框图。本领域已知的用于膝上型计算机、台式机,手持PC、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其他电子装置的其他系统设计和配置也是合适的。一般,能够结合本文所公开的处理器和/或其他执行逻辑的各种各样的系统或电子装置通常是合适的。
现在参照图12,示出了根据本发明的一个实施例的系统1200的框图。系统1200可以包括耦合至控制器中枢1220的一个或多个处理器1210、1215。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/输出中枢(IOH)1250)(其可以在分开的芯片上);GMCH 1290包括存储器和图形控制器,存储器1240和协处理器1245耦合至所述存储器和图形控制器;IOH 1250将输入/输出(I/O)装置1260耦合至GMCH 1290。可替代地,存储器和图形控制器中的一者或两者被集成在处理器(如本文所述)内,存储器1240和协处理器1245通过IOH 1250直接耦合至单个芯片中的处理器1210和控制器中枢1220。
图12中用虚线表示附加处理器1215的可选特性。每个处理器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。处理器1370和1380各自可以是处理器1100的某个版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210、协处理器1245。
处理器1370和1380被示出为分别包括集成存储器控制器(IMC)单元1372和1382。处理器1370还包括点对点(P-P)接口1376和1378以作为其总线控制器单元的一部分;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可以使用P-P接口电路1378、1388经由点对点(P-P)接口1350交换信息。如图13所示,IMC 1372和1382将处理器耦合至对应存储器(即,存储器1332和存储器1334)上,所述存储器可以是主存储器的本地附接至对应处理器上的部分。
处理器1370、1380可以各自使用点对点接口电路1376、1394、1386、1398经由单独的P-P接口1352、1354来与芯片组1390交换信息。可选地,芯片组1390可以经由高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功耗模式中,则任一或两个处理器的局部高速缓存信息可以被存储在所述共享高速缓存中。
芯片组1390可以经由接口1396耦合至第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(PCI)总线,或如PCI Express总线或另一种第三代I/O互连总线等总线,尽管本发明的范围不限于此。
如图13所示,不同I/O装置1314可以连同总线桥接器1318耦合到第一总线1316,所述总线桥接器可以将第一总线1316耦合到第二总线1320。在一个实施例中,一个或多个附加处理器1315(例如,协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、字段可编程门阵列、或任何其他处理器)被耦合至第一总线1316。在一个实施例中,第二总线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”)1372和1382。因此,CL 1372、1382包括集成存储器控制器单元并且包括I/O控制逻辑。图14展示了不仅存储器1332、1334被耦合至CL 1372、1382,而且I/O装置1414也被耦合至控制逻辑1372、1382。传统I/O装置1415被耦合至芯片组1390。
现在参照图15,示出了根据本发明的实施例的SoC 1500的框图。图11中的相似元件具有相同的参考数字。而且,虚线框是关于更先进的SoC的可选特征。在图15中,(多个)互连单元1502耦合到:应用处理器1510,其包括一组一个或多个核142A至142N以及(多个)共享高速缓存单元1106;系统代理单元1110;(多个)总线控制器单元1116;(多个)集成存储器控制器单元1114;一组一个或多个协处理器1520,这些协处理器可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1530;直接存储器存取(DMA)单元1532;以及显示单元1540,其用于耦合到一个或多个外部显示器。在一个实施例中,(多个)协处理器1520是专用处理器,如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
可以在硬件、软件、固件或这种实施方式的组合中实施本文公开的机制的实施例。本发明的实施例可以被实施为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、以及至少一个输出装置。
如图13所示的代码1330等程序代码可以被应用于输入指令以执行本文所述的功能并且生成输出信息。输出信息能够以已知的方式应用于一个或多个输出装置。出于本申请的目的,处理系统包括具有处理器的任何系统,所述处理器为如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以以高级程序或面向对象的编程语言来实施以便与处理系统通信。如果期望的话,程序代码还可以以汇编或机器语言来实施。事实上,本文描述的机制的范围不限于任何特定的编程语言。在任何情况下,所述语言可以是编译或解释语言。
可由机器可读介质上所存储的代表性指令实现至少一个实施例的一个或多个方面,所述指令表示处理器内的各种逻辑,所述指令当被机器读取时使所述机器制作用于执行本文描述的技术的逻辑。这种表示(被称为“IP核”)可以被存储在有形机器可读介质上并提供给各顾客或制造设施以加载到实际制作所述逻辑或处理器的制作机器中。
这种机器可读存储介质可以包括但不限于:由机器或装置制造或形成的物品的非暂态有形安排,包括如硬盘等存储介质;任何其他类型的盘,包括软盘、光盘、致密盘只读存储器(CD-ROM)、可重写致密盘(CD-RW)和磁光盘;半导体装置,比如,只读存储器(ROM);随机存取存储器(RAM),比如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM);可擦除可编程只读存储器(EPROM);闪存存储器;电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(比如,硬件描述语言(HDL))的非暂态有形机器可读介质,所述非暂态有形机器可读介质限定本文描述的结构、电路、设备、处理器和/或系统特征。这种实施例也可以被称为程序产品。
仿真(包括二进制转换、代码变形等)
在一些情况下,可以使用指令转换器将指令从源指令集转换为目标指令集。例如,指令转换器可以将指令转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、仿真、或以其他方式转换为有待由核处理的一个或多个其他指令。可以在软件、硬件、固件或其组合中实施指令转换器。指令转换器可以处于处理器上、处理器外、或者部分地处于处理器上并且部分地处于处理器外。
图16是框图,对照了根据本发明的实施例的对用于将源指令集中的二进制指令转换为目标指令集中的二进制指令的软件指令转换器的使用。在所示实施例中,指令转换器是软件指令转换器,然而可替代地,可以在软件、固件、硬件或其各种组合中实施指令转换器。图16示出了可以使用x86编译器1604来编译高级语言1602的程序以生成x86二进制代码1606,所述x86二进制代码可以由具有至少一个x86指令集核的处理器1616本机执行。具有至少一个x86指令集核的处理器1616表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的因特尔处理器基本相同功能的任何处理器:(1)因特尔x86指令集核的指令集的实质部分、或(2)目标代码版本的应用或目标是在具有至少一个x86指令集核的因特尔处理器上运行的其他软件,以便实现与具有至少一个x86指令集核的因特尔处理器基本相同的结果。x86编译器1604表示可操作用于生成x86二进制代码1606(例如,目标代码)的编译器,所述x86二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核1616的处理器上执行。类似地,图16示出了可以使用替代指令集编译器1608来编译生成替代指令集二进制代码1610的高级语言1602的程序,可以由不具有至少一个x86指令集核1614的处理器(例如,具有执行加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集的多个核的处理器)本机执行所述替代指令集二进制代码。指令转换器1612用于将x86二进制代码1606转换为可由不具有x86指令集核1614的处理器本机执行的代码。这个已转换的代码不大可能与替代性指令集二进制代码1610相同,因为难以制造具备这种能力的指令转换器;然而,已转换的代码将实现一般的操作并且由来自替代性指令集的指令构成。因此,指令转换器1612表示通过仿真、模拟或任何其他进程允许不具有x86指令集处理器或核的处理器或其他电子装置执行x86二进制代码1606的软件、固件、硬件或其组合。
对于图3至图8中任一者描述的组件、特征和细节也可以可选地应用于图1和图2中的任一者。此外,可选地,针对所述设备中的任一者描述的组件、特征和细节还可以适用于在实施例中可由和/或用这种设备执行的任何方法。本文描述的处理器中的任一者可包括在本文公开的计算机系统中的任一者。在一些实施例中,计算机系统可以包括动态随机存取存储器(DRAM)。可替代地,计算机系统可以包括某种类型的不需要刷新的易失性存储器或闪存。本文公开的指令可使用本文示出的在本文示出的系统中的任何系统上的具有本文示出的微架构中的任何微架构的处理器中的任何处理器来执行。
在说明书和权利要求书中,可能使用术语“耦合”和/或“连接”及其衍生词。这些术语并不旨在作为彼此的同义词。而是,在实施例中,“连接”可以用于指示两个或更多个元件直接物理和/或电气接触。“耦合”可以意指两个或更多个元件彼此直接物理和/或电气接触。然而,“耦合”还可以意指两个或更多个元件并非彼此直接接触,但仍彼此协作或交互。例如,执行单元可通过一个或多个介入的组件与寄存器和/或解码单元和/或存储器耦合。在附图中,箭头用于示出连接和耦合。
在描述和/或权利要求中,可已使用了术语“逻辑”、“单元”、“模块”或“组件”。在一些实施例中,这些术语中的每一者可指代潜在地与一些固件组合的硬件(例如,晶体管、门、集成电路系统、专用集成电路、模拟电路、数字电路、可编程逻辑装置、包括指令的存储器装置等)。
可能已使用术语“和/或”。如本文所使用的,术语“和/或”是指一个或另一个或两者(例如,A和/或B意指A或B或A和B两者)。
在以上描述中,已经阐述了许多特定细节以便提供对实施例的透彻理解。然而,可以在没有这些具体细节中的一些具体细节的情况下实践其他实施例。本发明的范围不是通过上面提供的具体实施例来确定。在其他情况下,已知的电路、结构、装置和操作已经以框图形式和/或没有详细地示出,以避免模糊对说明书的理解。在认为适当的情况下,参考数字或参考数字的端点部分已经在附图中重复,以指示对应的或类似的元件,所述元件可以具有相似或相同的特性,除非另有说明或清楚地显现。
某些操作可以由硬件组件执行、或者可以体现在机器可执行或电路可执行指令中,所述指令可以用于引起和/或导致机器、电路或硬件组件(例如,处理器、处理器的一部分、电路等)编程有执行这些操作的指令。可选地,还可以通过硬件和软件的组合来执行操作。可以包括特定或具体电路或其他逻辑(例如,可能与固件和/或软件组合的硬件)的处理器、机器、电路或硬件可操作用于执行和/或处理指令并且响应于指令而存储结果。
一些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。介质可以包括以机器可读的形式提供(例如,存储)信息的机制。机器可读介质可以提供或已经在其上存储有指令或指令序列,所述指令或指令序列如果和/或当被机器执行时可操作用于使所述机器执行和/或导致所述机器执行本文公开的一种或多种操作、方法或技术。
在一些实施例中,机器可读介质可以包括非暂态机器可读存储介质。例如,非暂态机器可读存储介质可以包括软盘、光存储介质、光盘、光数据存储装置、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储装置、非暂态存储器、非暂态数据存储装置等。非暂态机器可读存储介质不由暂态传播信号组成。在一些实施例中,存储介质可以包括有形介质,所述有形介质包括固体物质。
适合机器的示例包括但不限于:通用处理器、专用处理器、数字逻辑电路、集成电路等。适合机器的其他示例包括:计算机系统或包括处理器、数字逻辑电路或集成电路的其他电子装置。这种计算系统或电子装置的示例包括但不限于台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络装置(例如,路由器和交换机)、移动互联网装置(MID)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。
贯穿本说明书,对“一个实施例”、“实施例”,“一个或多个实施例”、“一些实施例”的提及例如指示特定特征可以在本发明的实践中被包括但未必是必须的。类似地,在说明书中,为了简化本公开并辅助理解各个发明性方面,各种特征有时在单个实施例、图或对其的描述中分组在一起。然而,本公开的方法并不被解释为反映本发明要求比每个权利要求中明确陈述的更多特征的意图。相反,发明性方面在于少于单个公开的实施例的全部特征。
示例实施例
以下示例涉及进一步的实施例。可在一个或多个实施例中的任何地方使用这些示例中的细节。
示例1是一种处理器,包括解码单元,所述解码单元用于对利用模糊化输入信息进行模幂运算的指令进行解码。所述利用模糊化输入信息进行模幂运算的指令用于指示将存储用于模幂运算操作的输入信息的多个源操作数。将存储在所述多个源操作数中的所述输入信息中的至少一部分输入信息将被模糊化。所述处理器还包括与所述解码单元耦合的执行单元。响应于所述利用模糊化输入信息进行模幂运算的指令,所述执行单元用于将模幂运算结果存储在目的地存储位置中,所述目的地存储位置将由所述利用模糊化输入信息进行模幂运算的指令指示。
示例2包括如示例1所述的处理器,其中所述解码单元用于对用于指示所述多个源操作数的所述指令进行解码,所述多个源操作数将存储模糊化指数、模糊化底数和模糊化模数中的至少一者。
示例3包括如示例1所述的处理器,其中所述解码单元用于对用于指示所述多个源操作数的所述指令进行解码,所述多个源操作数将存储约简常数和模糊化约简常数中的一者。所述约简常数由用于模幂运算的约简算法定义并且可从模数导出。
示例4包括如示例1所述的处理器,其中所述解码单元用于对用于指示所述多个源操作数的所述指令进行解码,所述多个源操作数将存储模糊化秘密输入参数和非模糊化公共输入参数。
示例5包括如示例1所述的处理器,其中所述解码单元用于对将具有至少一个字段的所述指令进行解码,所述至少一个字段用于指示用于所述模幂运算操作的所述输入信息的对应部分是否被模糊化。
示例6包括如示例1所述的处理器,进一步包括为软件不可读的秘密。另外,所述解码单元用于对用于指示所述模糊化输入信息的所述指令进行解码,在没有所述处理器的为所述软件不可读的所述秘密的情况下无法从所述模糊化输入信息导出所述模幂运算结果所基于的对应输入信息。
示例7包括如示例1所述的处理器,进一步包括所述处理器的为软件不可读的秘密密钥。另外,所述解码单元用于对用于指示所述模糊化输入信息的所述指令进行解码,所述模糊化输入信息将包括已加密输入信息,所述已加密输入信息将利用所述处理器的为所述软件不可读的所述秘密密钥来解密。
示例8包括如示例1所述的处理器,其中所述解码单元用于对用于指示所述模糊化输入信息的所述指令进行解码,所述模糊化输入信息将包括用于指示多组秘密非模糊化输入信息中将为以下各情况中的一种情况的一组秘密非模糊化输入信息的值:存储在所述处理器上并且为软件不可读;以及在所述处理器上生成并且为软件不可读。
示例9包括如示例8所述的处理器,其中所述值将是以下各项中的一项:将用于选择所述一组秘密非模糊化输入信息的索引;将用于选择所述一组秘密非模糊化输入信息的数字;以及所述一组秘密非模糊化输入信息的标识符。
示例10包括如示例1所述的处理器,其中所述解码单元用于对将具有至少一个字段的所述指令进行解码,所述至少一个字段将用于确定所述源操作数的尺寸为多个不同的可能尺寸中的一项。
示例11包括如示例10所述的处理器,其中所述解码单元用于对将具有以下各项的所述指令进行解码:尺寸指示字段,其将用于确定基本尺寸;以及三倍尺寸指示字段,其用于指示所述基本尺寸是否被增大为三倍以确定所述操作数的尺寸。
示例12包括如示例1至11中任一项所述的处理器,其中响应于所述利用模糊化输入信息进行模幂运算的指令的第二实例,所述执行单元用于:检测尝试对模糊化输入信息进行去模糊化的失败;并且用信号通知错误。
示例13包括如示例1至11中任一项所述的处理器,其中响应于所述利用模糊化输入信息进行模幂运算的指令的第二实例,所述执行单元用于:在中断后停止执行所述利用模糊化输入信息进行模幂运算的指令的所述第二实例;利用所述处理器的为软件不可读的秘密密钥来加密与所述利用模糊化输入信息进行模幂运算的指令的所述第二实例的被中断执行相关联的中间状态;并且将已加密中间状态存储在存储位置中。
示例14包括如示例1至11中任一项所述的处理器,其中响应于所述利用模糊化输入信息进行模幂运算的指令的第二实例,所述执行单元用于:在中断后停止执行所述利用模糊化输入信息进行模幂运算的指令的所述第二实例;并且丢弃与所述利用模糊化输入信息进行模幂运算的指令的所述第二实例的被中断执行相关联的中间状态。
示例15包括如示例1至11中任一项所述的处理器,其中所述解码单元用于对用于指示所述处理器的多个寄存器的所述指令进行解码,并且其中所述寄存器中的每一者用于将指针存储到存储器中的将存储所述多个源操作数中的对应一者的位置。
示例16包括如示例1至11中任一项所述的处理器,其中所述模幂运算结果将表示在将底数升幂到指数以生成幂运算结果并且用模数除所述幂运算结果时的余数。
示例17.一种在处理器中进行的方法,所述方法包括:接收利用模糊化输入信息进行模幂运算的指令。所述利用模糊化输入信息进行模幂运算的指令指示存储用于模幂运算操作的输入信息的多个源操作数。存储在所述多个源操作数中的所述输入信息中的至少一部分输入信息被模糊化。所述方法还包括:响应于所述利用模糊化输入信息进行模幂运算的指令,将模幂运算结果存储在由所述利用模糊化输入信息进行模幂运算的指令指示的目的地存储位置中。
示例18包括如示例17所述的方法,进一步包括:对所述输入信息中的利用对处理器可用但为软件不可读的秘密而被模糊化的所述至少一部分输入信息进行去模糊化。
示例19包括如示例17所述的方法,其中接收包括:接收指示所述源操作数的所述指令,所述源操作数存储模糊化指数、模糊化底数和模糊化模数中的至少一者。
示例20包括如示例17所述的方法,其中接收包括:接收指示所述源操作数的所述指令,所述源操作数存储约简常数和模糊化约简常数中的至少一者。所述约简常数由用于模幂运算的约简算法定义并且可从模数导出。
示例21包括如示例17所述的方法,其中接收包括:接收具有至少一个字段的所述指令,所述至少一个字段指示用于所述模幂运算操作的所述输入信息的对应部分是否被模糊化。
示例22是一种用于处理指令的系统,所述系统包括互连以及与所述互连耦合的处理器。所述处理器将接收利用模糊化输入信息进行模幂运算的指令,所述指令用于指示将存储用于模幂运算操作的输入信息的多个源操作数。将存储在所述多个源操作数中的所述输入信息中的至少一部分输入信息将被模糊化。响应于所述指令,所述处理器用于将模幂运算结果存储在将由所述利用模糊化输入信息进行模幂运算的指令指示的目的地存储位置中。动态随机存取存储器(DRAM)与互连耦合。所述DRAM存储包括所述利用模糊化输入信息进行模幂运算的指令的多个不同实例的指令,每个实例指示相应的多个源操作数,其中每组源操作数将针对所述利用模糊化输入信息进行模幂运算的指令的不同实例来存储不同类型的模糊化输入信息。
示例23包括如示例22所述的系统,其中所述处理器将接收用于指示所述多个源操作数的所述指令,所述多个源操作数将存储模糊化指数、模糊化底数和模糊化模数中的至少一者。
示例24是一种制品,包括非暂态机器可读存储介质。所述非暂态机器可读存储介质存储利用模糊化输入信息进行模幂运算的指令。所述利用模糊化输入信息进行模幂运算的指令用于指示将存储用于模幂运算操作的输入信息的多个源操作数。所述输入信息中的至少一部分输入信息将被模糊化。在由机器执行的情况下,所述利用模糊化输入信息进行模幂运算的指令将使机器执行以下操作:将模幂运算结果存储在将由所述利用模糊化输入信息进行模幂运算的指令指示的目的地存储位置中。
示例25包括如示例24所述的制品,其中所述处理器将接收将具有至少一个字段的所述指令,所述至少一个字段用于指示用于所述模幂运算操作的所述输入信息的对应部分是否被模糊化。
示例26包括如示例1至11中任一项所述的处理器,进一步包括:可选的分支预测单元,用于预测分支;以及可选的指令预取单元,与所述分支预测单元耦合,所述指令预取单元用于预取包括利用模糊化输入信息进行模幂运算的指令的指令。所述处理器还可以可选地包括:可选的1级(L1)指令高速缓存,与所述指令预取单元耦合,用于存储指令;可选的L1数据高速缓存,用于存储数据;以及可选的2级(L2)高速缓存,用于存储数据和指令。所述处理器还可以可选地包括:指令获取单元,与所述解码单元、所述L1指令高速缓存和所述L2高速缓存耦合,所述指令获取单元用于:获取所述利用模糊化输入信息进行模幂运算的指令(在一些情况下,从所述L1指令高速缓存和所述L2高速缓存中的一者获取);并且将所述利用模糊化输入信息进行模幂运算的指令提供给所述解码单元。所述处理器还可以可选地包括:寄存器重命名单元,用于重命名寄存器;可选的调度器,用于调度已经从所述利用模糊化输入信息进行模幂运算的指令解码得到的一个或多个操作以供执行;以及可选的提交单元,用于提交所述利用模糊化输入信息进行模幂运算的指令的执行结果。
示例27包括一种片上系统,其包括:至少一个互连;如示例1至11中任一项所述的处理器,与所述至少一个互连耦合;可选的图形处理单元(GPU),与所述至少一个互连耦合;可选的数字信号处理器(DSP),与所述至少一个互连耦合;可选的显示控制器,与所述至少一个互连耦合;可选的存储器控制器,与所述至少一个互连耦合;可选的无线调制解调器,与所述至少一个互连耦合;可选的图像信号处理器,与所述至少一个互连耦合;可选的兼容通用串列总线(USB)3.0的控制器,与所述至少一个互连耦合;可选的兼容蓝牙4.1的控制器,与所述至少一个互连耦合;以及可选的无线收发器控制器,与所述至少一个互连耦合。
示例28是一种处理器或其他设备,用于执行或可操作用于执行如示例17至21中任一项所述的方法。
示例29是一种处理器或其他设备,其包括用于执行如示例17至21中任一项所述的方法的装置。
示例30是一种制品,其包括可选地非暂态机器可读介质,所述非暂态机器可读介质可选地存储或以其他方式提供指令,所述指令如果和/或当由处理器、计算机系统、电子装置或其他机器执行时可操作用于使所述机器执行如示例17至21中任一项所述的方法。
示例31是一种基本如本文描述的处理器或其他设备。
示例32是一种处理器或其他设备,其可操作用于执行基本如本文描述的任何方法。
示例33是一种处理器或其他设备,其用于执行基本如本文描述的任何利用模糊化输入信息进行模幂运算的指令(例如,其具有用于执行或可操作用于执行基本如本文描述的任何利用模糊化输入信息进行模幂运算的指令的组件)。
Claims (25)
1.一种处理器,包括:
解码单元,用于对利用模糊化输入信息进行模幂运算的指令进行解码,所述利用模糊化输入信息进行模幂运算的指令用于指示用于存储用于模幂运算操作的输入信息的多个源操作数,其中将存储在所述多个源操作数中的所述输入信息中的至少一部分输入信息将被模糊化;以及
与所述解码单元耦合的执行单元,所述执行单元用于响应于所述利用模糊化输入信息进行模幂运算的指令,将模幂运算结果存储在目的地存储位置中,所述目的地存储位置将由所述利用模糊化输入信息进行模幂运算的指令指示。
2.如权利要求1所述的处理器,其特征在于,所述解码单元用于对用于指示所述多个源操作数的所述指令进行解码,所述多个源操作数用于存储模糊化指数、模糊化底数和模糊化模数中的至少一者。
3.如权利要求1所述的处理器,其特征在于,所述解码单元用于对用于指示所述多个源操作数的所述指令进行解码,所述多个源操作数用于存储约简常数和模糊化约简常数中的一者,其中所述约简常数由用于模幂运算的约简算法定义并且可从模数导出。
4.如权利要求1所述的处理器,其特征在于,所述解码单元用于对用于指示所述多个源操作数的所述指令进行解码,所述多个源操作数用于存储模糊化秘密输入参数和非模糊化公共输入参数。
5.如权利要求1所述的处理器,其特征在于,所述解码单元用于对用于具有至少一个字段的所述指令进行解码,所述至少一个字段用于指示用于所述模幂运算操作的所述输入信息的对应部分是否被模糊化。
6.如权利要求1所述的处理器,其特征在于,进一步包括为软件不可读的秘密,并且其中,所述解码单元用于对用于指示所述模糊化输入信息的所述指令进行解码,在没有所述处理器的为所述软件不可读的所述秘密的情况下无法从所述模糊化输入信息导出所述模幂运算结果所基于的对应输入信息。
7.如权利要求1所述的处理器,其特征在于,进一步包括所述处理器的为软件不可读的秘密密钥,并且其中所述解码单元用于对用于指示所述模糊化输入信息的所述指令进行解码,所述模糊化输入信息用于包括已加密输入信息,所述已加密输入信息将利用所述处理器的为所述软件不可读的所述秘密密钥来被解密。
8.如权利要求1所述的处理器,其特征在于,所述解码单元用于对用于指示所述模糊化输入信息的所述指令进行解码,所述模糊化输入信息用于包括用于指示多组秘密非模糊化输入信息中将为以下各情况中的一种情况的一组秘密非模糊化输入信息的值:存储在所述处理器上并且为软件不可读;以及在所述处理器上生成并且为软件不可读。
9.如权利要求8所述的处理器,其特征在于,所述值将是以下各项中的一项:
将用于选择所述一组秘密非模糊化输入信息的索引;
将用于选择所述一组秘密非模糊化输入信息的数字;以及
所述一组秘密非模糊化输入信息的标识符。
10.如权利要求1所述的处理器,其特征在于,所述解码单元用于对用于具有至少一个字段的所述指令进行解码,所述至少一个字段将用于确定所述源操作数的尺寸为多个不同的可能尺寸中的一项。
11.如权利要求10所述的处理器,其特征在于,所述解码单元用于对将具有以下各项的所述指令进行解码:
尺寸指示字段,其将用于确定基本尺寸;以及
三倍尺寸指示字段,其用于指示所述基本尺寸是否被增大为三倍以确定所述源操作数的所述尺寸。
12.如权利要求1至11中任一项所述的处理器,其特征在于,所述执行单元用于响应于所述利用模糊化输入信息进行模幂运算的指令的第二实例进行以下操作:
检测尝试对模糊化输入信息进行去模糊化的失败;以及
用信号通知错误。
13.如权利要求1至11中任一项所述的处理器,其特征在于,所述执行单元用于响应于所述利用模糊化输入信息进行模幂运算的指令的第二实例进行以下操作:
在中断后停止执行所述利用模糊化输入信息进行模幂运算的指令的所述第二实例;
利用所述处理器的为软件不可读的秘密密钥来加密与所述利用模糊化输入信息进行模幂运算的指令的所述第二实例的被中断执行相关联的中间状态;以及
将已加密中间状态存储在存储位置中。
14.如权利要求1至11中任一项所述的处理器,其特征在于,所述执行单元用于响应于所述利用模糊化输入信息进行模幂运算的指令的第二实例进行以下操作:
在中断后停止执行所述利用模糊化输入信息进行模幂运算的指令的所述第二实例;以及
丢弃与所述利用模糊化输入信息进行模幂运算的指令的所述第二实例的被中断执行相关联的中间状态。
15.如权利要求1至11中任一项所述的处理器,其特征在于,所述解码单元用于对用于指示所述处理器的多个寄存器的所述指令进行解码,并且其中所述寄存器中的每一者用于存储到存储器中的用于存储所述多个源操作数中的对应一者的位置的指针。
16.如权利要求1至11中任一项所述的处理器,其特征在于,所述模幂运算结果用于表示在将底数升幂到指数以生成幂运算结果并且用模数除所述幂运算结果时的余数。
17.一种在处理器中进行的方法,所述方法包括:
接收利用模糊化输入信息进行模幂运算的指令,所述利用模糊化输入信息进行模幂运算的指令指示存储用于模幂运算操作的输入信息的多个源操作数,其中存储在所述多个源操作数中的所述输入信息中的至少一部分输入信息被模糊化;以及
响应于所述利用模糊化输入信息进行模幂运算的指令,将模幂运算结果存储在由所述利用模糊化输入信息进行模幂运算的指令指示的目的地存储位置中。
18.如权利要求17所述的方法,其特征在于,进一步包括:对所述输入信息中的利用对处理器可用但为软件不可读的秘密而被模糊化的所述至少一部分信息进行去模糊化。
19.如权利要求17所述的方法,其特征在于,接收包括:接收指示所述源操作数的所述指令,所述源操作数存储模糊化指数、模糊化底数和模糊化模数中的至少一者。
20.如权利要求17所述的方法,其特征在于,接收包括:接收指示所述源操作数的所述指令,所述源操作数存储约简常数和模糊化约简常数中的至少一者,其中所述约简常数由用于模幂运算的约简算法定义并且可从模数导出。
21.一种用于处理指令的系统,所述系统包括:
互连;
与所述互连耦合的处理器,所述处理器用于接收利用模糊化输入信息进行模幂运算的指令,所述指令用于指示用于存储用于模幂运算操作的输入信息的多个源操作数,其中将存储在所述多个源操作数中的所述输入信息中的至少一部分输入信息将被模糊化,所述处理器用于响应于所述指令将模幂运算结果存储在将由所述利用模糊化输入信息进行模幂运算的指令指示的目的地存储位置中;以及
与所述互连耦合的动态随机存取存储器DRAM,所述DRAM存储包括所述利用模糊化输入信息进行模幂运算的指令的多个不同实例的指令,每个实例指示相应的多个源操作数,其中每组源操作数将针对所述利用模糊化输入信息进行模幂运算的指令的所述不同实例来存储不同类型的模糊化输入信息。
22.如权利要求21所述的系统,其特征在于,所述处理器用于接收用于指示所述多个源操作数的所述指令,所述多个源操作数用于存储模糊化指数、模糊化底数和模糊化模数中的至少一者。
23.一种用于处理指令的设备,包括用于执行如权利要求17至20中任一项所述的方法的装置。
24.一种用于处理指令的机器可读介质,所述机器可读介质存储指令,所述指令如果由机器执行则可操作用于使所述机器执行如权利要求17至20中任一项所述的方法。
25.一种处理器,包括:
解码装置,用于对利用模糊化输入信息进行模幂运算的指令进行解码,所述利用模糊化输入信息进行模幂运算的指令用于指示用于存储用于模幂运算操作的输入信息的多个源操作数,其中将存储在所述多个源操作数中的所述输入信息中的至少一部分输入信息将被模糊化;以及
执行装置,用于响应于所述利用模糊化输入信息进行模幂运算的指令,将模幂运算结果存储在目的地存储位置中,所述目的地存储位置将由所述利用模糊化输入信息进行模幂运算的指令指示。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/866,334 | 2015-09-25 | ||
US14/866,334 US10089500B2 (en) | 2015-09-25 | 2015-09-25 | Secure modular exponentiation processors, methods, systems, and instructions |
PCT/US2016/045980 WO2017052811A2 (en) | 2015-09-25 | 2016-08-08 | Secure modular exponentiation processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107924444A CN107924444A (zh) | 2018-04-17 |
CN107924444B true CN107924444B (zh) | 2022-07-19 |
Family
ID=58387094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680049318.6A Active CN107924444B (zh) | 2015-09-25 | 2016-08-08 | 安全的模幂运算处理器、方法、系统和指令 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10089500B2 (zh) |
CN (1) | CN107924444B (zh) |
DE (1) | DE112016004365T5 (zh) |
TW (1) | TWI706321B (zh) |
WO (1) | WO2017052811A2 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10089500B2 (en) | 2015-09-25 | 2018-10-02 | Intel Corporation | Secure modular exponentiation processors, methods, systems, and instructions |
US10270598B2 (en) | 2016-08-26 | 2019-04-23 | Intel Corporation | Secure elliptic curve cryptography instructions |
CN108287759B (zh) | 2017-01-10 | 2021-07-09 | 阿里巴巴集团控股有限公司 | 处理数据过程中的调度方法、装置和系统 |
CN110825436B (zh) * | 2018-08-10 | 2022-04-29 | 昆仑芯(北京)科技有限公司 | 应用于人工智能芯片的计算方法和人工智能芯片 |
US11005654B2 (en) * | 2019-05-14 | 2021-05-11 | Google Llc | Outsourcing exponentiation in a private group |
FR3096851B1 (fr) * | 2019-05-27 | 2021-05-21 | Idemia Identity & Security France | Procedes de mise en œuvre et d’obfuscation d’un algorithme cryptographique a cle secrete donnee |
CN111901110B (zh) * | 2020-08-06 | 2023-05-23 | 中电科网络安全科技股份有限公司 | 白盒化模幂结果获取方法、装置、设备及存储介质 |
CN112883408B (zh) * | 2021-04-29 | 2021-07-16 | 深圳致星科技有限公司 | 用于隐私计算的加解密系统和芯片 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101305544A (zh) * | 2005-11-08 | 2008-11-12 | 松下电器产业株式会社 | 认证系统、签名生成装置、签名验证装置 |
CN103210396A (zh) * | 2010-10-20 | 2013-07-17 | 超威半导体公司 | 包括用于保护敏感代码和数据的架构的方法和装置 |
Family Cites Families (17)
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 |
US7739521B2 (en) | 2003-09-18 | 2010-06-15 | Intel Corporation | Method of obscuring cryptographic computations |
US7760875B2 (en) | 2006-06-29 | 2010-07-20 | Intel Corporation | Accelerating Diffie-Hellman key-exchange protocol with zero-biased exponent windowing |
US7912886B2 (en) | 2006-12-14 | 2011-03-22 | Intel Corporation | Configurable exponent FIFO |
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 |
KR20110014630A (ko) | 2008-05-07 | 2011-02-11 | 이르데토 비.브이. | 지수 불명료화 |
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 |
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 |
US9135450B2 (en) | 2011-12-21 | 2015-09-15 | Intel Corporation | Systems and methods for protecting symmetric encryption keys |
US8955144B2 (en) | 2013-06-28 | 2015-02-10 | Intel Corporation | Protecting information processing system secrets from debug attacks |
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 |
-
2015
- 2015-09-25 US US14/866,334 patent/US10089500B2/en not_active Expired - Fee Related
-
2016
- 2016-08-08 CN CN201680049318.6A patent/CN107924444B/zh active Active
- 2016-08-08 DE DE112016004365.1T patent/DE112016004365T5/de active Pending
- 2016-08-08 WO PCT/US2016/045980 patent/WO2017052811A2/en active Application Filing
- 2016-08-18 TW TW105126393A patent/TWI706321B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101305544A (zh) * | 2005-11-08 | 2008-11-12 | 松下电器产业株式会社 | 认证系统、签名生成装置、签名验证装置 |
CN103210396A (zh) * | 2010-10-20 | 2013-07-17 | 超威半导体公司 | 包括用于保护敏感代码和数据的架构的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20170091488A1 (en) | 2017-03-30 |
WO2017052811A2 (en) | 2017-03-30 |
TWI706321B (zh) | 2020-10-01 |
DE112016004365T5 (de) | 2018-06-07 |
TW201723804A (zh) | 2017-07-01 |
US10089500B2 (en) | 2018-10-02 |
CN107924444A (zh) | 2018-04-17 |
WO2017052811A3 (en) | 2017-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809545B2 (en) | Flexible container attestation | |
CN107667499B (zh) | 带密钥散列消息认证码处理器、方法、系统和指令 | |
CN107924444B (zh) | 安全的模幂运算处理器、方法、系统和指令 | |
US11316661B2 (en) | Encryption interface | |
US10671740B2 (en) | Supporting configurable security levels for memory address ranges | |
CN109479003B (zh) | 用于安全椭圆曲线密码指令的处理器、系统、方法和设备 | |
US9893881B2 (en) | Efficient sharing of hardware encryption pipeline for multiple security solutions | |
EP3189617B1 (en) | Sm3 hash algorithm acceleration processors, methods, systems, and instructions | |
CN114692131A (zh) | 带有分解式存储器的密码式计算 | |
US10606765B2 (en) | Composite field scaled affine transforms-based hardware accelerator | |
US10491381B2 (en) | In-field system test security | |
US10666430B2 (en) | System and techniques for encrypting chip-to-chip communication links | |
CN110659505A (zh) | 用于对机密数据和附加认证数据进行加密或解密的加速器 | |
US20220417005A1 (en) | Methods and apparatuses to provide chiplet binding to a system on a chip platform having a disaggregated architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |