CN110661767A - 在微处理器架构内保护密钥和敏感数据免受攻击 - Google Patents
在微处理器架构内保护密钥和敏感数据免受攻击 Download PDFInfo
- Publication number
- CN110661767A CN110661767A CN201910455407.6A CN201910455407A CN110661767A CN 110661767 A CN110661767 A CN 110661767A CN 201910455407 A CN201910455407 A CN 201910455407A CN 110661767 A CN110661767 A CN 110661767A
- Authority
- CN
- China
- Prior art keywords
- key
- data
- cryptographic
- instruction
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 228
- 238000013475 authorization Methods 0.000 claims abstract description 124
- 238000005192 partition Methods 0.000 claims abstract description 77
- 230000004044 response Effects 0.000 claims abstract description 50
- 238000000034 method Methods 0.000 claims description 160
- 238000012545 processing Methods 0.000 claims description 132
- 238000003860 storage Methods 0.000 claims description 61
- 230000008569 process Effects 0.000 claims description 49
- 230000000977 initiatory effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 42
- 238000007667 floating Methods 0.000 description 30
- 230000002093 peripheral effect Effects 0.000 description 13
- 230000003287 optical effect Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 11
- 239000000872 buffer Substances 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 230000005291 magnetic effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000002955 isolation Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000007792 addition Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000003826 tablet Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000008093 supporting effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- 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
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- 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/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
-
- 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/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- 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/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了在微处理器架构内保护密钥和敏感数据免受攻击。包括令牌生成器电路的处理器核用于响应于初始化请求访问通过密码操作输出的受保护数据的软件程序而执行第一指令。为了执行所述第一指令,所述处理器核用于:检取所述密码操作要使用的密钥;触发所述令牌生成器电路以生成授权令牌;以密码方式将所述密钥和所述授权令牌编码在密钥句柄内;将所述密钥句柄存储在存储器中;并且将所述授权令牌嵌入用于执行所述密码操作的密码指令中。所述密码指令可以与所述软件程序的被授权访问所述受保护数据的第一逻辑分区相关联。
Description
技术领域
本公开的各方面总体上涉及信息处理领域,并且更具体地,涉及在微处理器架构内保护密钥和敏感数据免受攻击的领域。
背景技术
隐私信息(包括敏感数据)和其他秘密(密码密钥等)由许多信息处理系统使用并存储在其中。已经开发了许多试图存储和/或传送秘密以使得所述秘密无法被发现或改变的技术。这些技术通常涉及使用一个或多个密码密钥。因此,已经开发了用于保护这些密码密钥的完整性的技术,并且随着对信息处理系统的恶意攻击成为日益严重的威胁,需要更多技术。
附图说明
图1是根据各种实施方式的用于在微处理器架构内保护密码密钥和敏感数据的计算系统的框图。
图2是根据各种实施方式的图1的计算系统的处理器的框图。
图3是根据各种实施方式的图2的处理器核保护秘密密钥和敏感数据的方法的流程图。
图4是框图,展示了根据一种实施方式的用于保护用于解密RSA密钥的AES密钥的授权令牌的示例性使用。
图5是根据替代性实施方式的图2的处理器核保护秘密密钥和敏感数据的方法的流程图。
图6A是根据实施方式的在提供重放保护的同时对存储器块进行加密的方法的流程图。
图6B是根据实施方式的在提供重放保护的同时对存储器块进行解密的方法的流程图。
图7是根据实施方式的以实现对在特定处理会话期间使用的密钥句柄进行组撤销的方式加密密钥句柄的方法的流程图。
图8是根据各种实施方式中的数据类型在密码操作期间对密钥句柄的使用进行隔离的方法的流程图。
图9A是框图,展示了根据实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的处理器或集成电路的微架构。
图9B是框图,展示了根据一种实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的有序流水线和寄存器重命名级、乱序发布/执行流水线。
图10展示了根据实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的处理器或集成电路的微架构的框图。
图11是根据一种实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的计算机系统的框图。
图12是根据另一种实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的计算机系统的框图。
图13是根据一种实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的芯片上系统(SoC)的框图。
图14展示了根据一种实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的计算系统的框图的另一种实施方式。
图15是根据一种实施方式的用于执行可以在微处理器架构内实施对密钥和敏感数据的保护的指令的处理部件的框图。
图16是根据一种实施方式的待由用于执行对密钥句柄进行编码的指令的处理器执行的示例方法的流程图。
图17是框图,展示了用于本文所公开的指令的示例格式。
图18展示了根据一种实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的计算系统的框图的另一种实施方式。
具体实施方式
限制软件应用中的哪些代码可以访问最敏感的秘密提供了对在应用的一部分(例如,软件程序)中出现的可能从应用的另一部分泄漏数据的漏洞的缓解,例如,在所述应用的其他部分不经受严格的安全处理或数据保护的情况下。高效地支持这种隔离是一项挑战,并且许多应用展现了这样的漏洞。例如,Equifax攻击涉及易受攻击的库,所述易受攻击的库被利用来从应用的另一部分泄漏数据。已经证明,针对Pro文件传输协议(FTP)守护进程(ProFTPd)的数据定向编程攻击是可能的,其中易受攻击的网络请求处理代码可能从服务器的RSA密钥泄露出。即使具有完全精确的静态控制流完整性(CFI),学者们也表明,在存在漏洞的情况下,仍存在足够的粗粒度小程序来从NGINX(开源超文本传输协议(HTTP)web服务器)中转储任意存储器。因此,本文解决的一个技术问题是即使在程序的某些部分存在漏洞的情况下,也能高效地实施隔离以保护程序内的秘密。
所公开的实施方式包括多层面的方法,其中对访问秘密、密钥或其他敏感数据或信息选择性地施加各种约束。例如,约束可以隔离(compartmentalize)仅对下述指令的访问,所述指令包含匹配授权令牌,从存储器的某些代码区域执行,与特定逻辑分区相关联和/或将更详细地讨论的其他约束。逻辑分区可以是代码和特定数据的集合,其中代码被授权访问特定数据。
在各种实施方式中,处理器可以包括处理器核,所述处理器核包括令牌生成器电路或者例如执行用于随机数生成器的软件指令。处理器核可以响应于初始化请求访问通过密码操作输出的受保护数据的软件程序而执行第一指令(例如,ENCODEKEY指令)。在各个实施例中,软件程序可以在操作系统内执行或者可以是独立的应用或代码,如直接在硬件上执行的固件。为了执行第一指令,处理器核可以检取密码操作要使用的密钥,触发令牌生成器电路(或随机数生成器)以生成授权令牌,并且以密码方式将密钥和授权令牌编码在密钥句柄内。处理器核可以进一步将密钥句柄存储在存储器中,并将授权令牌嵌入用于执行密码操作的密码指令中。所述密码指令可以与所述软件程序的被授权访问所述受保护数据的第一逻辑分区相关联。在一个实施例中,密码操作是对敏感密文数据的解密。
在各种实施方式中,处理器核可以进一步响应于执行密码指令而从存储器中检取密钥句柄,解密密钥句柄以提取授权令牌和密钥,将来自密钥句柄的授权令牌与嵌入在密码指令中的授权令牌进行匹配以认证密钥句柄,并使用密钥执行密码操作以生成受保护数据。处理器核还可以响应于密码操作的完成而丢弃密钥。以这种方式,密钥在使用密钥的一段时间内受到保护,但不一定是在软件程序的执行期间。在其他实施方式中,对密钥的访问还可以根据从预定的存储器代码区域中执行或者由与特定逻辑分区相关联的代码访问的密码指令而进行,如将更详细地解释的。一旦软件程序访问密钥,软件程序就可以执行如解密等密码操作以获得对敏感数据、秘密数据或其他受保护数据的访问。
典型的解决方案可以控制程序的所有部分的所有存储器访问,以检测程序是否到达存储器的私有区域,但是这是处理密集型的。依靠加密来保护敏感数据(但不是涉及任何存储器访问的所有数据)会将性能开销限制于那些需要访问用于访问受保护数据的密钥的代码流,这些代码流可能只占整个程序的一小部分。例如,仅在会话建立期间需要访问OpenSSL私钥,所以仅对那些少量代码流施加性能开销是有利的。因此,不必出于机密性原因防止对密文的恶意访问,使得可以通过避免对完全存储器安全实施的需要来减少开销。
在以下描述中,对“一种实施方式”、“实施方式”、“示例实施方式”、“各种实施方式”等的引用指示如此描述的本公开的(多种)实施方式可以包括具体特征、结构或特性,但不止一种实施方式可以(而不是每种实施方式必定)包括这些具体特征、结构或特性。进一步地,一些实施方式可具有针对其他实施方式所描述的一些特征、全部特征或不具有任何所述特征。
如在本说明书和权利要求中所使用的,并且除非另有说明,否则使用序数形容词“第一”、“第二”、“第三”等来描述元素仅指示元素的具体实例或相同元素的不同实例被引用,并且不旨在暗示如此描述的元素必须具有特定的顺序(时间上或空间上)、排列或其他任何方式。
同样,术语“位”、“标志”、“字段”、“条目”、“指示符”等可以用于描述寄存器、表、数据库或其他数据结构中的任何类型或内容的存储位置,不论其以硬件还是软件实施,但是并不旨在将本公开的实施方式限制于任何特定类型的存储位置或特定存储位置内的任何数量的位或其他元素。术语“清除(clear)”可以用于指示存储逻辑值零或以其他方式使逻辑值零被存储在存储位置中,而术语“设置”可以用于指示存储逻辑值一或全一或一些其他指定值或者使逻辑值一或全一或一些其他指定值被存储在存储位置中;然而,这些术语并不旨在将本公开的实施方式限制于任何特定的逻辑约定,这是因为在本公开的实施方式中可以使用任何逻辑约定。
图1是根据各种实施方式的用于在微处理器架构内保护秘密密钥和敏感数据的计算系统100的框图。系统100可以表示任何类型的信息处理系统,如服务器、台式计算机、便携式计算机、机顶盒、如平板电脑或智能电话等手持式装置、或嵌入式控制系统。在各种实施方式中,系统100包括处理器110、系统存储器120、图形处理器130、外围控制代理140和存储装置150。体现本特征的系统可以包括任何数量的这些部件中的每一个以及如外围装置和输入/输出装置等任何其他部件或其他元件。除非另作指定,否则在这样的或任何的系统实施方式中的部件或其他元件中的任何一个或全部可以通过任何数量的总线、点对点、或其他有线或无线接口或连接彼此连接、耦合或其他方式进行通信。系统100的任何部件或其他部分,不论是在图1中示出还是在本公开的其他地方示出,都可以被集成或以其他方式包括在单个芯片(芯片上系统或SOC)、管芯、基板或者封装之上或之中。
系统存储器120可以是动态随机存取存储器(DRAM)或处理器110可读的任何其他类型的介质。图形处理器130可以包括处理器或用于处理显示器132的图形数据的其他部件。外围控制代理140可以表示如芯片组部件等部件,所述部件包括外围装置、输入/输出(I/O)、或如I/O装置142(例如,触摸屏、键盘、麦克风、扬声器、其他音频装置、相机、视频或其他媒体装置、网络适配器、运动或其他传感器、用于全球定位或其他信息的接收器等)和/或存储装置150等其他部件或装置,或者以上各项可以通过所述部件连接或耦合至处理器110。存储装置150可以包括一种永久或非易失性存储器或存储装置,如闪存和/或固态驱动器、磁盘驱动器、光盘驱动器或其组合。存储装置可以存储软件程序152,并且可以是软件指令和经处理数据的永久存储位置。
处理器110可以表示集成在单个基板上或封装在单个封装体内的一个或多个处理器或处理器核102A、102B、102C,所述处理器或处理器核中的每一个可以包括任何组合的多个线程和/或多个执行核。每个处理器核可以进一步包括存储器控制器118、用于特定处理器核内的本地加密的处理器密钥122和密钥管理器160。存储器控制器118可以控制和引导将数据和指令存储在高速缓存和系统存储器120中。表示为处理器110或其中的每个处理器可以是特定类型的处理器(包括来自公司(Corporation)或另一公司的 处理器族(Processor Family)或其他处理器族中的处理器)、专用处理器或微控制器、或信息处理系统中的任何其他装置或部件,本公开的实施方式可以在所述信息处理系统中实施。处理器110可以被架构和设计成根据任何指令集架构进行操作,不论受或不受微代码控制。
对根据本公开的实施方式保护秘密密钥和敏感数据的支持可以使用电路系统和/或嵌入硬件、微代码、固件和/或如下所述或根据另一种方法安排的其他结构中的逻辑的组合在如处理器110等处理器中实施并且在图1中表示为密钥管理器160。在各种实施方式中,密钥管理器160可以包括用于支持ENCODEKEY指令的ENCODEKEY硬件/逻辑162、用于生成一个或多个授权令牌的令牌生成器电路164、一组单调计数器166和其他寄存器168,下面将描述其中的每一个。授权令牌可以是整数值,如可以由随机数生成器或其他数字生成器生成的值,例如,由处理器核102A、102B或102C生成的值或者经由令牌生成器电路164执行的固件生成的值。寄存器还可以表示如位于处理器110的芯片上的闪存中的其他存储位置,并且因此在各种其他实施方式中所述寄存器不需要是硬件寄存器。
图2是根据各种实施方式的图1的计算系统100的处理器110的框图。在各种实施方式中,处理器110的处理器核202可以包括存储单元210、指令电路220、执行电路230、控制电路240和处理器密钥122。处理器核202可以是处理器110的处理器核102A、102B或102C中之一,并且图1的密钥管理器160的电路系统、结构和功能可以分布在处理器核202的每个部件之间,如下所述。处理器核202还可以包括未在图1中展示的任何其他电路系统、结构或逻辑。
存储单元210可以包括出于某种目的在处理器核202内可用的任何类型的存储装置的任何组合;例如,存储单元210可以包括使用任何存储器或存储技术实施的多个可读、可写和/或可读写寄存器、缓冲器和/或高速缓存,以用于在其中存储能力信息、配置信息、控制信息、状态信息、性能信息、指令、数据以及在处理器核202的操作中可使用的其他信息,以及存储可用于访问这种存储装置和/或引起或支持与对这种存储装置的访问相关联的各种操作和/或配置的电路系统。
存储单元210可以包括待根据本公开的实施方式使用的一个或多个存储位置,每个存储位置具有任何大小。这些存储位置中的每一个可以是通用寄存器、专用寄存器、整数寄存器、浮点寄存器、标量寄存器、向量寄存器、XMM寄存器(根据公司的处理器族的架构)或具有任何大小的任何其他类型的寄存器或存储位置中的任一种(即,它们不需要是相同类型的寄存器),但为方便起见,每一个都可以被称为寄存器,并且每一个都可以通过特定名称被提到,所述特定名称并不旨在暗示要使用特定寄存器或所述寄存器专用于特殊目的。
存储单元210可以包括:用于保存密码密钥的源寄存器211(其可以表示一组寄存器);要被用作密码密钥的值;可以从中导出密码密钥的值;这种密钥的一部分;期望根据本公开的实施方式使用加密来保护的任何其他数据;或者任何这种密钥、值或数据的指针或地址或其他直接或间接位置标识符。为方便起见,源寄存器211所保存的、要加载的、所写入的和/或所指向的数据可以被称为输入密钥(其中,在整个说明书中术语“输入密钥”被用作基于一种实施方式来提及这种数据的便利方式,但是可以意味着期望根据本公开的实施方式使用加密来保护的任何数据,并且不限于密钥或与密钥相关的值)。
源寄存器211或源寄存器指向的位置可以通过正被处理器核202执行的软件写入,但不需要可通过正被处理器核202执行的软件读取。尽管源寄存器211或其指向的位置可以由软件读取,但所述源寄存器的内容或其指向的内容可以通过一种或多种已知的安全技术来保护(例如,通过将输入密钥加载到所述源寄存器中,根据本公开的实施方式对输入密钥执行加密操作,然后通过安全引导过程、经认证的代码模块、安全或可信的处理环境等或在其中将所述寄存器或位置全部清除)。
存储单元210可以包括目的地寄存器212(其可以表示一组寄存器),以根据本公开的实施方式保存加密操作的结果或保存这种结果的指针或地址或其他直接或间接的位置标识符。为方便起见,目的地寄存器212所保存的、要从中读取或检取的和/或所指向的数据可以被称为句柄,其中每个这种句柄对应于其从中导出的特定输入密钥或者可由特定处理器核导出。因此,每个这种句柄对于输入密钥是唯一的(在密码算法以及输入密钥的长度和值提供的范围内)并且对于处理器核是唯一的(在处理器密钥的唯一性所提供的范围内,在各种实施方式中,所述处理器密钥可以由两个或更多个处理器核共享)。
在各种实施方式中,当保护要用于如解密要保护的秘密数据(例如,RSA密钥、财务数据或其他敏感数据)等密码操作的密钥时,句柄被称为“密钥句柄”。还设想了其他密码操作,如解包封和解码等。在一些实施方式中,密钥句柄可以存储到存储器120,而不存储到用于将存储器块的包含密钥句柄的存储装置卸载到存储器120的任何处理器核寄存器。
在各种实施方式中,目的地寄存器212或其指向的位置可以通过正被处理器核202执行的软件读取,但不需要可通过正被处理器核202执行的软件写入。尽管目的地寄存器212或者其指向的位置可以由软件读取,但所述目的地寄存器的内容或其指向的内容可以通过一种或多种已知的安全技术来保护(例如,通过加载输入密钥,根据本公开的实施方式对输入密钥执行加密操作,读取目的地寄存器212或其指向的位置,然后通过安全引导过程、经认证的代码模块、安全或可信的处理环境等或在其中将所述寄存器或位置全部清除)。
存储单元210可以包括用于保存输入密钥大小的大小寄存器213。例如,在源寄存器211保存指向系统存储器120中的数据缓冲器的指针的实施方式中,大小寄存器213可以用于保存要被加密的块的数量(例如,数据缓冲器中块的数量),其中每个块可以是任何位数(例如,128位或由加密算法指定的任何其他位数)。
存储单元210可以包括:用于保存初始化向量(IV)或IV的指针或地址或其他直接或间接的位置标识符的IV寄存器214(其可以表示一组寄存器),其中IV可以是IV(例如,用于高级加密标准(AES)密码块链接(CBC)模式);初始计数器值(例如,用于高级加密标准(AES)伽罗瓦计数器模式(GCM));种子;随机数;其他值(例如,如通过任何密码操作、密码或标准定义的或要在其中使用的或根据所述密码操作、密码或标准的);或可以从中导出这种值的任何数据。IV寄存器214或其指向的位置可以通过正被处理器核202执行的软件写入,但不需要可通过正被处理器核202执行的软件读取。在实施方式中,IV寄存器214或其指向的位置既不可以通过软件读取也不可以通过软件写入,但可以通过硬件(例如,硬件随机数生成器)或固件写入或加载。在IV寄存器214或其指向的位置可以通过软件读取的实施方式中,所述IV寄存器的内容或其指向的内容可以通过一种或多种已知的安全技术来保护(例如,通过将IV加载到IV寄存器214或其指向的位置中,根据本公开的实施方式使用IV执行加密操作,然后通过安全引导过程、经认证的代码模块、安全或可信的处理环境等或在其中将IV寄存器214或其指向的位置全部清除)。
存储单元210可以包括附加认证数据(AAD)寄存器215,所述AAD寄存器用于保存附加数据以提供除加密之外的认证作为保护机制。例如,在一种实施方式中,句柄包括认证标签或可以用于处理器核202的其他元数据以使用来自处理器核202的处理器密钥122来验证句柄被正确生成。
存储单元210可以包括控制寄存器216,所述控制寄存器可以表示根据现有处理器或指令集架构指定或定义的一个或多个控制寄存器、添加到现有处理器或指令集架构的一个或多个新控制寄存器、或现有寄存器或新寄存器中的一个或多个位/字段。在各种实施方式中,控制寄存器216可以包括用于实现本公开的一个或多个特征的一个或多个位。例如,控制寄存器216可以包括用于选择待与特定认证令牌相关联的特定逻辑分区或数据类型的一个或多个可编程位。
指令电路220可以包括任何电路系统、逻辑、结构和/或其他硬件,如用于取出、接收、解码、解释、调度和/或处置待由处理器核202执行的指令的指令解码器。各种指令格式可以在本公开的范围内使用;例如,指令可以包括操作码以及一个或多个操作数,其中所述操作码可以被解码成一个或多个微指令或微操作以供执行电路230执行。操作数或其他参数可以隐含地、直接地、间接地或根据任何其他方法与指令相关联。
在实施方式中,指令电路220可以包括用于接收(和/或以其他方式处理)ENCODEKEY指令的ENCODEKEY指令硬件/逻辑222(其可以包括上面列出的硬件/逻辑的任何组合)。下面描述的本公开的实施方式展示了ENCODEKEY指令的一个或多个可能的格式和/或处理器核对ENCODEKEY指令的一个或多个可能的响应。应注意的是,提供此指令的名称仅仅是为了方便,并且本公开的实施方式可以包括具有期望的任何名称的这种指令。在各种实施方式中,ENCODEKEY指令的一个或多个变体可以作为现有指令的增强、扩展、叶或其他变体(例如,字符串复制指令)添加到现有ISA。
还应注意的是,描述了本公开的各种实施方式,并且更多实施方式是可能的,包括ENCODEKEY指令的操作数/参数的各种差异以及处理器核对ENCODEKEY指令的响应。在各种实施方式中,不同指令和/或操作码可以用于每个不同种类的ENCODEKEY指令,或者所述指令和/或操作码可以是同一指令/操作码的叶或变体。还应注意的是,处理器核对ENCODEKEY指令的执行和/或响应也可以响应于或结合其他事件(例如,写入或设置(通过软件、固件或硬件)命令寄存器、模型特定寄存器或其他寄存器的位;VM进入或退出等)而执行或者代替地执行(和/或可能在下文被称为ENCODEKEY)。本公开的实施方式可以包括这些变体中的任何一个或多个。
指令电路220可以支持ISA(例如,能够正确地接收、处置和/或发送以仅执行ISA中的指令),所述ISA包括ENCODEKEY指令但不包括相应的解密指令。换言之,ISA允许软件根据本公开的实施方式来对密码密钥和/或其他信息进行加密,但是不允许软件或任何其他软件对加密结果进行解密。在实施方式中,处理器核可以在第一操作模式(例如,正常模式)下支持这种ISA(例如,包括ENCODEKEY指令但不包括相应的解密指令的ISA),但是在第二操作模式(例如,安全模式)下支持包括相应解密指令的ISA。
执行单元230可以包括任何电路系统、逻辑、结构、和/或其他硬件,如运算单元、逻辑单元、浮点单元、移位器等,用于处理数据并执行指令、微指令、和/或微操作。执行单元230可以表示任何一个或多个物理上或逻辑上有差异的执行单元。执行单元230可以包括用于执行ENCODEKEY指令的ENCODEKEY执行硬件232,如以下进一步描述的。尽管在图2中示出为单独的元件,但ENCODEKEY执行硬件232可以包括还用于执行其他指令和/或执行其他操作的电路系统。
执行电路230可以包括用于实施任何一种或多种密码算法的密码硬件234,如电子密码本(ECB)、伽罗瓦计数器模式(GCM)、和/或密码块链接(CBC)模式中的高级加密标准(AES)算法。可替代地,加密可以由执行电路230中的其他硬件(例如,共享的通用硬件)执行。对任何这种加密硬件/算法的输入可以被称为明文并且输出被称为密文。
处理器密钥122(如以下进一步描述的)可以在密码硬件234和/或执行电路230内、硬连线或以其他方式连接至所述密码硬件和/或执行电路,使得处理器密钥122可以用作由密码硬件234和/或执行电路230执行的任何一种或多种加密算法中的密码密钥,而不需要将处理器密钥122暴露给软件或发现。在许多实施方式中,只有处理器核202内的加密硬件具有对处理器密钥122的访问权。
执行电路230可以进一步包括用于实施任何一种或多种隔离技术的隔离硬件236,所述隔离技术包括强制执行与通过某些逻辑分区隔离对某些输入密钥到某些类型的软件、存储在存储器的固定部分中的软件代码的访问相关联的策略,如将更详细讨论的。
执行单元230可以进一步包括用于实施和强制执行旨在防止重放(或重用)旧的经加密存储器块的策略的重放保护硬件238,攻击者可能尝试用各种技术触发所述重放(或重用)。在一些实施方式中,重放保护硬件238可以触发(单调计数器166组中的)单调计数器以递增单调计数器的值,所述单调计数器与存储器中针对存储器块的基址相关联。重放保护硬件238可以进一步使用存储器中针对存储器块的基址和单调计数器的值应用微调以对存储器块进行加密。然后,可以使用单调计数器的值来对存储器块进行解密(例如,通过应用相同的微调)。因为攻击者不具有对单调计数器的访问权,所以重放保护硬件238可以防止重放(或使用)已经由单调计数器的单次使用值加密的旧的存储器块。这也防止了存储器块被移动并在新位置被成功解密,因为存储器中针对存储器块的基址被并入微调中。例如,这可能有利于防止堆栈分配被移动以通过使用未经授权的代码处理所述堆栈分配而导致其被滥用或泄露。
图3是根据各种实施方式的图2的处理器核保护秘密密钥和敏感数据的方法的流程图。方法300可以由处理逻辑来执行,所述处理逻辑可以包括硬件(例如电路系统、专用逻辑、可编程逻辑、微代码等)、软件(如在处理装置上运行的指令)、固件或其组合。在一种实施方式中,图1和图2中的处理器110或处理器核202可以执行方法300。尽管以特定序列或顺序示出,但除非另有说明,否则可以修改过程的顺序。因此,所展示的实施方式仅是示例,并且所展示的过程可以以不同顺序执行,并且一些过程可以并行地执行。另外,在各种实施方式中可以省略一个或多个过程。因此,并非在每一种实施方式中都需要所有过程。其他过程流程是可能的,包括与本文所描述的其他流程图中的那些过程组合的过程。
参考图3,方法300可以开始于处理逻辑判定处理器核是否已经初始化了请求访问通过密码操作输出的受保护数据的软件程序或应用(305)。例如,尽管设想了许多其他程序或例程,但是软件程序可以是访问如OpenSSL库内的库例程的库程序。方法300可以继续处理逻辑检取密码操作要使用的密钥(310)。密码操作通常是如解密或解包封等操作,所述操作将暴露被视为受保护数据的秘密或敏感数据。方法300可以继续处理逻辑触发令牌生成器电路164(或处理器核的随机数生成器)以生成授权令牌(315)。方法300可以继续处理逻辑以密码方式将密钥和授权令牌编码(例如,用处理器密钥加密或包封)在密钥句柄内(320)。
方法300可以继续处理逻辑将密钥句柄存储在存储器120中(325)。在另一实施方式中,密钥句柄存储在处理器核202的本地,如存储在存储单元210的目的地寄存器212之一中。方法300可以继续处理逻辑将授权令牌嵌入用于执行密码操作的密码指令中(330)。所述密码指令可以与所述软件程序的被授权访问所述受保护数据的第一逻辑分区相关联。在实施方式中,第一逻辑分区包括第一代码与代码被授权访问的第一数据的集合。此外,将授权令牌嵌入密码指令中可以是将授权令牌作为寄存器操作数或立即操作数之一存储或插入到密码指令中。设想了其他形式的嵌入。应注意的是,框310到330的执行可以由执行ENCODEKEY指令的处理器核202来实现。
在实施方式中,密码指令可以被适配成在软件程序的运行时间期间调用或以其他方式触发密码操作的执行。例如,密码指令可以是执行AES解密的指令。为了提供进一步的安全性,处理器核202可以进一步以存储器许可将密码指令标记为仅执行状态,所述存储器许可与存储器中存储密码指令的位置相关联。
进一步参考图3,方法300可以继续处理逻辑判定密码指令是否已经被调用以供执行(335)。如果是,则方法300可以继续处理逻辑从存储器中检取密钥句柄(360),解密密钥句柄以提取授权令牌和密钥(365),并将来自密钥句柄授权令牌与嵌入在密码指令中的授权令牌进行匹配以认证密钥句柄(370)。响应于所述匹配,方法300可以继续处理逻辑使用密钥执行密码操作以生成受保护数据(375)。在实施方式中,软件程序现在可以使用密钥将敏感的密文数据解密成明文数据以供软件程序使用,例如以明文形式生成信用卡号、其他金融数据或RSA密钥。
为了提供进一步的安全性,明文数据在被处理时将以某种方式受到保护,尤其是在框375处执行密码操作期间。寄存器的内容对于当前逻辑处理器是秘密的,但是当当前线程被用户模式线程处理抢占时,或者当寄存器由于寄存器压力溢出到堆栈时,所述寄存器的内容可以暴露于存储器中。因此,以下操作可以是有益的:在执行密码操作期间禁止使用用户模式线程处理;加密来自存储到用户模式存储器的溢出寄存器的线程状态和数据(并且还可能保护其免受损坏和重放);和/或在执行密码操作期间将对执行的抢占推迟到用户模式线程处理。
在各种实施方式中,可能被敏感数据污染的任何明文中间数据在被写入存储器之前可以被加密以防止来自同时执行的线程的未授权访问。因此,方法300可以继续处理逻辑响应于密码指令的执行,通过加密明文中间数据来执行密码操作以生成经加密数据,所述明文中间数据包含作为密码操作的执行结果的敏感数据(375)。方法300可以继续处理逻辑将经加密数据写入存储器中,以保护敏感数据不被当前由处理器核执行的至少第二线程访问(380)。可能被敏感数据污染的存储器的任何存储器区域可以存储在仅可从当前逻辑处理器访问的存储器中。然后,可以在将控制传送到所述逻辑处理器上的任何其他逻辑分区之前清除或加密这些存储器区域。
继续参考图3,方法300可以继续处理逻辑响应于处理器核在框305处(或甚至在这个点之前)初始化软件程序,将授权令牌分配给第一逻辑分区(340)并将第二授权令牌分配给第二逻辑分区(345)。在实施方式中,第二逻辑分区包括第二代码和第二代码被授权访问的第二数据,所述第二数据不同于第一数据。方法300可以继续处理逻辑阻止第二逻辑分区的第二代码对授权令牌的访问(347)。以这种方式,处理器核202可以仅通过可能需要这种访问的相应逻辑分区来隔离对某些受保护数据的访问,并因此被分配不同的授权令牌以确保经隔离的访问。
继续参考图3,密码操作可以与第一逻辑分区相关联,并且第二密码操作可以与第二逻辑分区相关联。方法300可以继续处理逻辑另外地或可替代地将授权令牌分配给可由第一逻辑分区访问但不可由第二逻辑分区访问的第一数据类型(例如,信用卡号)(350),并且将第二授权令牌分配给可由第二逻辑区间访问但不可由第一逻辑区间访问的第二数据类型(例如,RSA传输层安全(TLS)密钥)(355)。方法300可以继续处理逻辑阻止第二数据类型的逻辑分区访问授权令牌,例如,由第二逻辑分区的第二代码进行的访问(357)。
因此,可以访问信用卡号的第一代码拒绝访问RSA TLS密钥。以这种方式,对受保护数据的访问可以根据允许或授权特定逻辑分区访问的数据类型来进行,所述访问通过将授权令牌分配给数据类型来控制。例如,定义对多种数据类型使用相同授权令牌的策略是不明智的。每种数据类型可以通过单独的代码流适当地处置。例如,企业可以允许将信用卡号传输给授权的业务伙伴,但是企业不应该将其TLS私钥发送给任何其他实体。如果对两种数据类型使用单个授权令牌,则将存在攻击者将TLS私钥的授权令牌传递至信用卡代码流中的密码指令以导致TLS私钥泄露的风险。
图4是框图,展示了根据一种实施方式的用于保护用于解密RSA密钥的AES密钥的授权令牌的示例性使用。框图展示了网络应用400(例如,NGINX),所述网络应用将被执行以提供对敏感数据(在这种情况下,OpenSSL RSA密钥)的访问并且将阻止由网络应用400内的易受攻击的例程419进行的访问。为了解释的目的,网络应用400可以包括OpenSSL库404(一种类型的密码库)以及易受攻击的例程419。
在本实施方式中,OpenSSL库404可以包括密钥句柄408、密码指令410和经加密信封413(或者与其相关联)。在执行电路230(图2)(例如,ENCODEKEY执行硬件232)执行ENCODEKEY指令时,可以生成密钥句柄408以引起对AES密钥409与授权令牌411A的组合的加密,如前所讨论的。在一种实施方式中,密码指令410可以包括授权令牌411B,也如在网络应用400的程序初始化期间预先嵌入的那样,并且在正常执行中所述授权令牌将与在密钥句柄408中加密的授权令牌411A相同。经加密信封413可以使用加密(如AES加密)来保护执行多个OpenSSL RSA例程221所需的OpenSSL RSA密钥415,例如,以保护网络浏览器在线会话。
在实施方式中,处理器核202(例如,执行电路230)可以通过从存储器120中检取密钥句柄408并解密密钥句柄408来执行密码指令410,以提取AES密钥409和授权令牌411A。在继续执行密码指令时,处理器核202可以进一步将其授权令牌411B与来自密钥句柄408的授权令牌411A进行匹配。假设授权令牌411B与授权令牌411A相匹配,则密码指令可以执行密码操作,例如,在本示例中,用AES密钥409解密经加密信封413以提取OpenSSL RSA密钥415。在这种情形下,与密码指令相关联的逻辑分区可以是调用openSSL RSA例程221的(多个)OpenSSL会话创建例程。此时,OpenSSL RSA例程221可以使用OpenSSL RSA密钥415来保护网络应用400的网络浏览器的在线会话。
相反,易受攻击的例程419缺少授权令牌411A,并且因此在尝试访问OpenSSL RSA密钥415时被经加密信封413的加密阻止。由于缺少授权令牌411提供的许可,易受攻击的例程419可以访问经加密信封413的密文数据,但是不能解密经加密信封413(需要授权令牌411A)并获得对OpenSSL RSA密钥415的访问。
图5是根据替代性实施方式的图2的处理器核202保护秘密密钥和敏感数据的方法500的流程图。方法500可以由处理逻辑来执行,所述处理逻辑可以包括硬件(例如电路系统、专用逻辑、可编程逻辑、微代码等)、软件(如在处理装置上运行的指令)、固件或其组合。在一种实施方式中,图1和图2中的处理器110或处理器核202可以执行方法500。尽管以特定序列或顺序示出,但除非另有说明,否则可以修改过程的顺序。因此,所展示的实施方式仅是示例,并且所展示的过程可以以不同顺序执行,并且一些过程可以并行地执行。另外,在各种实施方式中可以省略一个或多个过程。因此,并非在每一种实施方式中都需要所有过程。其他过程流程是可能的,包括与本文所描述的其他流程图中的那些过程组合的过程。
参考图5,方法500可以开始于处理逻辑判定处理器核202是否已经初始化了包括密码操作的软件程序(510)。如果是,则方法500可以继续处理逻辑响应于初始化软件程序而检取密码操作要使用的密钥(520)。方法500可以继续处理逻辑以密码方式将密钥和固定代码位置编码(例如,加密)在密钥句柄内(525)。固定代码位置可以是存储器中的位置,密码指令(与软件程序的第一逻辑分区相关联)将从所述位置执行以触发对密码操作的执行。在实施方式中,逻辑分区是代码与代码被授权访问的数据的集合。方法500可以继续处理逻辑将密钥句柄存储在存储器120中(530)。以这种方式,不需要授权令牌,而是由逻辑分区提供授权,所述逻辑分区请求访问从一个固定位置列表执行的受保护数据,所述列表可以在一个或多个密码指令内被授权。
方法500可以继续处理逻辑判定是否已经请求处理器核202执行密码指令(540)。如果是,则方法500可以继续处理逻辑从存储器中检取密钥句柄(545)并解密密钥句柄以提取固定代码位置和密钥(550)。方法500可以继续处理逻辑判定密码指令从中执行的代码位置是否与来自密钥句柄的固定代码位置相匹配(555)。如果是,则方法500可以继续处理逻辑使用密钥执行密码操作以生成受保护数据(560)。如果否,则方法500可以继续处理逻辑拒绝第二密码指令对密钥的访问,所述第二密码指令与软件程序的第二逻辑分区相关联(570)。在一些实施方式中,密码指令嵌入一组固定代码位置的列表中,因此对访问的拒绝可以是对第二固定代码位置与所述一组固定代码位置中的任何固定代码位置不匹配的响应。在这些实施方式中,密钥句柄将进一步被适配成包括固定代码位置列表。
应注意的是,除了加密并强制执行逻辑分区特定策略之外,处理器核202可以被设计为避免被攻击者欺骗而重放(或重用)存储在存储器120中的旧的经加密存储器块。在本实施方式中,所关注的是对包含旧的密钥句柄或在执行密码操作执行期间生成的一些经加密敏感中间数据的存储器块的重放。在实施方式中,处理器核202将读取经加密存储器块的值并且仅使用它一次,因为处理器核202之后可以用更新的经加密存储器块的新值来更新那个位置。因此,处理核202将访问新值,而不是先前的(旧)值,这可能也具有安全含义,从而使得不使用陈旧的密钥句柄。为了提供重放防止,在一些实施方式中,处理器核202可以将一些改变数据与存储器块的经加密数据合并。所述改变数据可以由所述一组单调计数器166中的单调计数器生成,所述单调计数器可以递增但不递减。
图6A是根据实施方式的在提供重放保护的同时对存储器块进行加密的方法600的流程图。图6B是根据实施方式的在提供重放保护的同时对存储器块进行解密的方法650的流程图。方法600和方法650可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如电路系统、专用逻辑、可编程逻辑、微代码等)、软件(如在处理装置上运行的指令)、固件或其组合。在一种实施方式中,图1和图2中的处理器110或处理器核202可以执行方法600和方法650。尽管以特定序列或顺序示出,但除非另有说明,否则可以修改过程的顺序。因此,所展示的实施方式仅是示例,并且所展示的过程可以以不同顺序执行,并且一些过程可以并行地执行。另外,在各种实施方式中可以省略一个或多个过程。因此,并非在每一种实施方式中都需要所有过程。其他过程流程是可能的,包括与本文所描述的其他流程图中的那些过程组合的过程。
参考图6A(用于对存储器块进行加密),方法600可以开始于处理逻辑递增所述一组单调计数器166中与存储器中用于存储器块的的基址相关联(610)的单调计数器的值。方法600可以继续处理逻辑读取来自单调计数器的值(620)并使用存储器块的存储器中的基址和单调计数器的值来应用微调以对存储器块进行加密(630)。微调可以经由各种方法创建,包括基址与单调计数器的值的连结。可替代地或另外地,可以使用散列或类似散列的算法来处理这两个值,并且可以将散列的结果用作微调。应记住的是,存储器块可以包含密钥句柄或在执行密码操作期间生成的敏感中间数据。方法600可以继续处理逻辑将经加密存储器块存储在存储器120中(640)。
参考图6B(用于对存储器块进行解密),方法650可以开始于处理逻辑读取来自与正被解密的存储器块的基址相关联的单调计数器的值(660)。方法650可以继续处理逻辑使用存储器块的存储器中的基址和来自单调计数器的值作为微调来对存储器块进行解密以生成明文形式的受保护数据(670),并且递增单调计数器的值(680)。以这种方式,单调计数器值现在已经增加,并且对存储器块的进一步解密将需要新的单调计数器值。这可以具有使与可能保留在存储器120中的密码处理会话相关联的任何经加密存储块器无效的效果。
上述机制集中于针对单个存储器块强制执行单一使用策略,但可以采用的相关策略将允许多次使用某些存储器块,然后能够在程序执行的指定点高效地撤销对所述存储器块的访问。此动作可以使可以包括密钥句柄或其他敏感的中间数据的先前加密的存储器块无效。作为示例,在两个信用卡处理会话中,在第二会话期间,处理器核202将从存储器中清除与第一会话有关的数据。
因此,对先前加密的批量无效化可以通过旋转用于加密密钥句柄的CPU内部密钥来完成,从而使先前生成的密钥句柄变得不可用。例如,处理器核202可以采用处理器密钥来将密钥和授权令牌加密到密钥句柄内以供在第一处理会话期间使用,其中,密钥句柄是第一密钥句柄。响应于第一处理会话的完成,处理器核可以在完成第一处理会话时采用第二处理器密钥来将密钥和授权令牌加密到与第二处理会话相关联的第二密钥句柄内。以这种方式,使用旧密钥生成的所有密钥句柄都不再可访问或不再可用。如果软件出现并尝试使用旧密钥句柄解密AES解密指令,则密钥句柄将被拒绝。传递地,密钥句柄在存储器中保护的数据也变得不可访问。例如,这在不同时间处理多个请求的服务器应用中可能是有用的,从而使得可以撤销对与完成的请求相关联的敏感数据的访问,而不需要从存储器中清除所有这种数据。
在某个时间点撤销所有先前生成的密钥句柄可能是不期望的,因为可能只有密钥句柄的子集需要被撤销。因此,在替代性实施方式中,处理器核202可以支持多个处理器密钥122加密密钥句柄,从而使得可以选择性地撤销密钥句柄组。每个ENCODEKEY指令可以接受新参数以选择特定处理器密钥,并且密钥标识符可以存储在密钥句柄中。可替代地,为了提供附加效率,可以选择单调计数器的值而不是密钥,从而使得将单调计数器值作为微调合并,如参考图7所描述的。当使用所述计数器值时,更新计数器可以撤销先前生成的相关联密钥。
图7是根据实施方式的以实现对在特定处理会话期间(例如在完成处理会话之后)使用的密钥句柄进行组撤销的方式加密密钥句柄的方法700的流程图。方法700可以由处理逻辑来执行,所述处理逻辑可以包括硬件(例如电路系统、专用逻辑、可编程逻辑、微代码等)、软件(如在处理装置上运行的指令)、固件或其组合。在一种实施方式中,图1和图2中的处理器110或处理器核202可以执行方法700。尽管以特定序列或顺序示出,但除非另有说明,否则可以修改过程的顺序。因此,所展示的实施方式仅是示例,并且所展示的过程可以以不同顺序执行,并且一些过程可以并行地执行。另外,在各种实施方式中可以省略一个或多个过程。因此,并非在每一种实施方式中都需要所有过程。其他过程流程是可能的,包括与本文所描述的其他流程图中的那些过程组合的过程。
参考图7,方法700可以开始于处理逻辑递增所述一组单调计数器中的单调计数器的值,其中,所述值与软件程序的第一处理会话相关联(710)。方法700可以继续处理逻辑采用所述值作为微调来将密钥和授权令牌加密到密钥句柄内(720)。所述微调可以应用于在第一处理会话期间加密附加密钥句柄。方法700可以继续处理逻辑响应于对密码指令的执行而对密钥句柄进行解密,使用所述值作为微调以提取密钥和授权令牌(730)。方法700可以继续处理逻辑响应于第一处理会话的完成而递增单调计数器的值以使密钥句柄(以及附加密钥句柄)在第二处理会话期间进一步使用无效(740)。
本公开已经通过定义多个密钥句柄解释了用于确保每个分区使用适当类型的数据(例如,TLS密钥对信用卡数据)的可能的实施方式。可以更容易管理的另一种可能的实施方式是共享单个密钥句柄并将标识特定数据类型的立即操作数(例如,数据类型指定符)传递至用于执行密码操作的每个密码指令。所述立即操作数可用作微调。此方法可用于区分具有相同寿命的相同数据类型。在一个示例中,执行程序处理信用卡数据和RSA密钥数据,但不必在执行程序中途撤销信用卡数据。因此,参考图8详细描述的这种实施方式可以包括用于不同于RSA密钥数据的信用卡数据的代码流,防止攻击者将RSA密钥数据注入到用于信用卡数据的代码流中以访问RSA密钥数据。
图8是根据各种实施方式中的数据类型在密码操作期间对密钥句柄的使用进行隔离的方法800的流程图。方法800可以由处理逻辑来执行,所述处理逻辑可以包括硬件(例如电路系统、专用逻辑、可编程逻辑、微代码等)、软件(如在处理装置上运行的指令)、固件或其组合。在一种实施方式中,图1和图2中的处理器110或处理器核202可以执行方法800。尽管以特定序列或顺序示出,但除非另有说明,否则可以修改过程的顺序。因此,所展示的实施方式仅是示例,并且所展示的过程可以以不同顺序执行,并且一些过程可以并行地执行。另外,在各种实施方式中可以省略一个或多个过程。因此,并非在每一种实施方式中都需要所有过程。其他过程流程是可能的,包括与本文所描述的其他流程图中的那些过程组合的过程。
参考图8,方法800可以开始于处理逻辑确定密码操作要处理的数据类型(810)。方法700可以继续处理逻辑将与数据类型相关联的类型指定符嵌入密码指令的寄存器操作数或立即操作数之一内(820)。方法700可以继续处理逻辑判定密码指令是否已经被触发以供执行(830)。响应于对密码指令的执行,方法700可以继续处理逻辑基于类型指定符确定要处理的数据类型(840)。方法700可以继续密码操作的处理逻辑处理具有所述数据类型的第二数据(850),而不处理不具有所述数据类型的第三数据(860)。
图9A是框图,展示了根据实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的处理器900的微架构。具体地,根据本公开的至少一种实施方式,处理器900描绘了待包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发布/执行逻辑。
处理器900包括耦合至执行引擎单元950的前端单元930,且二者都耦合至存储器单元970。处理器900可以包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或可替代核类型。作为又另一选项,处理器900可以包括专用核,如例如网络或通信核、压缩引擎、图形核等。在一种实施方式中,处理器900可以是多核处理器,或可以是多处理器系统的一部分。
前端单元930包括耦合至指令高速缓存单元934的分支预测单元932,所述指令高速缓存单元耦合至指令转换后备缓冲器(TLB)936,所述指令转换后备缓冲器耦合至指令取出单元938,所述指令取出单元耦合至解码单元940。解码单元940(也称为解码器)可以对指令进行解码并且生成从原始指令中解码出的、或以其他方式反映原始指令或从原始指令衍生出的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出。解码器940可以使用各种不同的机制来实施。合适机制的示例包括但不限于:查找表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元934进一步耦合至存储器单元970。解码单元940耦合至执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括耦合至引退单元954的重命名/分配器单元952以及一组一个或多个调度器单元956。(多个)调度器单元956表示任何数量的不同调度器电路,包括保留站(RS)、中央指令窗等。(多个)调度器单元956耦合至(多个)物理寄存器堆单元958。(多个)物理寄存器堆单元958中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等,状态(例如,作为有待执行的下一指令的地址的指令指针)等。(多个)物理寄存器堆单元958与引退单元954重叠以展示可以实施寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来组、(多个)历史缓冲器、以及(多个)引退寄存器堆;使用寄存器映射和寄存器池等)。
通常,架构寄存器从处理器的外部或从程序员的角度来看是可见的。寄存器不限于任何已知具体类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储和提供如本文所描述的数据即可。合适的寄存器的示例包括,但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元954和(多个)物理寄存器堆单元958耦合至(多个)执行集群960。(多个)执行集群960包括一组一个或多个执行单元962和一组一个或多个存储器访问单元964。执行单元962可以执行各种操作(例如,移位、加法、减法、乘法)并对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)进行操作。
虽然一些实施方式可以包括专用于具体功能或功能组的多个执行单元,但是其他实施方式可以只包括一个执行单元或包括全都执行全部功能的多个执行单元。(多个)调度器单元956、(多个)物理寄存器堆单元958、以及(多个)执行集群960被示出为可能是复数的,因为某些实施方式针对某些数据/操作类型创建了单独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线,并且在流水线为单独的存储器访问流水线的情况下,实施了其中只有所述流水线的执行集群具有(多个)存储器访问单元964的某些实施方式)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行流水线,并且其余的是有序流水线。
一组存储器访问单元964耦合至存储器单元970,举几个示例,所述存储器单元可以包括数据预取器980、数据TLB单元972、数据高速缓存单元(DCU)974、以及2级(L2)高速缓存单元976。在一些实施方式中,DCU974也被称为第一级数据高速缓存(L1高速缓存)。DCU974可以处置多个未解决的高速缓存未命中并且继续为进入的存储和加载提供服务。它还支持保持高速缓存一致性。数据TLB单元972是用于通过映射虚拟和物理地址空间来提高虚拟地址转换速度的高速缓存。在一种示例性实施方式中,存储器访问单元964可以包括各自耦合至存储器单元970中的数据TLB单元972的加载单元、存储地址单元和存储数据单元。L2高速缓存单元976可以耦合至一个或多个其他级的高速缓存并且最终耦合至主存储器。
在一种实施方式中,数据预取器980通过自动预测程序将要消耗哪个数据来推测性地将数据加载/预取到DCU 974。预取可以指在处理器实际需求数据之前将存储在存储器层级(例如,较低级高速缓存或存储器)的一个存储器位置(例如,位置)中的数据传送到更靠近(例如,得出较低访问等待时间)处理器的较高级存储器位置。更具体地,预取可以指在处理器发出对正在返回的具体数据的需求之前将数据从较低级的高速缓存/存储器中的一个提前检取到数据高速缓存和/或预取缓冲器。
处理器900可以支持一个或多个指令集(例如,x86指令集(具有已经添加了较新版本的一些扩展);英国赫特福德郡金斯兰利的想象技术公司(Imagination Technologies)的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的额外扩展,比如NEON)。
应当理解的是,核可以支持多线程化(执行并行的两组或更多组操作或线程),并且可以以各种方式来完成所述多线程化,所述各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后比如超线程化技术中的同步多线程化)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。处理器的所示实施方式还包括分开的指令和数据高速缓存单元以及共享的L2高速缓存单元,而替代性实施方式可以具有用于指令和数据两者的单个内部高速缓存,如例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施方式中,系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。可替代地,所有高速缓存都可以在核和/或处理器的外部。
图9B是框图,展示了根据本公开的一些实施方式的可以按照图9A的处理器900在微处理器架构内实施对密钥和敏感数据的保护的有序流水线和寄存器重命名级、乱序发布/执行流水线。图9B中的实线框展示了有序流水线901,而虚线框展示了寄存器重命名、乱序发布/执行流水线903。在图9B中,流水线901和流水线903包括指令取出级902、长度解码级904、解码阶段级906、分配级908、重命名级910、调度(也称为分派或发布)级912、寄存器读取/存储器读取级914、执行级916、回写/存储器写入级918、异常处理级922以及提交级924。在一些实施方式中,级902至924的排序可与所展示的不同,并不局限于在图9B中示出的特定排序。
图10展示了根据本公开的实施方式用于处理器1000的包括可以在微处理器架构内实施对密钥和敏感数据的保护的处理器或集成电路的逻辑电路的微架构的框图。在一些实施方式中,可以实施根据一种实施方式的指令来对具有字节、字、双字、四字等大小的数据元素以及数据类型(如单精度和双精度的整数数据类型和浮点数据类型)进行操作。在一种实施方式中,有序前端1001是处理器1000中的取出待执行的指令并将其准备于之后在处理器流水线中使用的那一部分。页添加和内容复制的实施方式可以在处理器1000中实施。
前端1001可以包括若干个单元。在一种实施方式中,指令预取器1016从存储器中取出指令并将其馈送至指令解码器1018,所述指令解码器进而对这些指令进行解码或解释。例如,在一种实施方式中,解码器将接收到的指令解码成机器可以执行的称为“微指令(micro-instructions)”或“微操作(micro-operations)”(也称为微op或uop)的一个或多个操作。在其他实施方式中,解码器将指令解析为根据一种实施方式由微架构用于执行操作的操作码和相应的数据以及控制字段。在一种实施方式中,跟踪高速缓存1030获取经解码的uop并且将其汇编为程序有序序列或uop队列1034中的踪迹,以用于执行。当跟踪高速缓存1030遇到复杂指令时,微代码ROM(或RAM)1032提供完成操作所需的uop。
一些指令被转换为单个微op,而其他指令需要若干个微op来完成完整的操作。在一种实施方式中,如果完成指令需要多于四个微op,则解码器1018访问微代码ROM 1032以执行指令。对于一种实施方式,指令可以被解码成用于在指令解码器1018处进行处理的小数量的微ops。在另一实施方式中,如果需要多个微op来完成操作,则可以将指令储在微代码ROM 1032中。跟踪高速缓存1030引用入口点可编程逻辑阵列(PLA),以确定用于从微代码ROM 1032读取微代码序列的正确微指令指针以便根据一种实施方式完成一条或多条指令。在微代码ROM 1032完成用于指令的排序微op之后,机器的前端1001从跟踪高速缓存1030中重新取出微op。
乱序执行引擎1003是指令准备执行的地方。乱序执行逻辑具有多个缓冲器,所述多个缓冲器用于使指令流平滑并重新排序以在指令流顺着流水线进行并被调度用于执行时优化性能。分配器逻辑分配每个uop执行所需的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。在以下指令调度器前面,分配器还为两个uop队列(一个用于存储器操作,一个用于无存储器操作)之一中的每个uop分配条目:存储器调度器、快速调度器1002、慢速/通用浮点调度器1004和简单浮点调度器1006。uop调度器1002、1004、1006基于其依赖输入寄存器操作数源的准备状态以及uop完成其操作所需的执行资源的可用性来确定uop何时准备好执行。一种实施方式的快速调度器1002可以在主时钟周期的每一半上进行调度,而其他调度器可以仅每个主处理器时钟周期调度一次。调度器对分派端口进行仲裁以调度uop用于执行。
寄存器堆1008、1010位于调度器1002、1004、1006与执行块1011中的执行单元1012、1014、1016、1018、1020、1022、1024之间。存在分开的寄存器堆1008、1010,分别用于整数操作和浮点操作。一种实施方式中的每个寄存器堆1008、1010还包括旁路网络,所述旁路网络可以绕过或转发尚未被写入到寄存器堆中的已完成结果到新的依赖uop。整数寄存器堆1008和浮点寄存器堆1010还能够与其他寄存器堆进行数据通信。对于一种实施方式,整数寄存器堆1008被分成两个单独的寄存器堆,一个寄存器堆用于数据的低顺序32位,而第二寄存器堆用于数据的高顺序32位。一种实施方式中的浮点寄存器堆1010具有128位宽的条目,因为浮点指令通常具有宽度为从64位至128位的操作数。
执行块1011包含实际上执行指令的执行单元1012、1014、1016、1018、1020、1022、1024。这个部分包括寄存器堆1008、1010,所述寄存器堆存储微指令需要执行的整数和浮点数据操作数值。一种实施方式中的处理器1000包括多个执行单元:地址生成单元(AGU)1012、AGU 1014、快速ALU 1016、快速ALU 1018、慢速ALU 1020、浮点ALU 1012、浮点移动单元1014。对于一种实施方式,浮点执行块1012、1014执行浮点、MMX、SIMD和SSE、或其他操作。一种实施方式中的浮点ALU 1012包括用于执行除法、平方根和余数微op的64位乘64位浮点除法器。对于本公开的实施方式,涉及浮点值的指令可以用浮点硬件来处置。
在一种实施方式中,ALU操作前往高速ALU执行单元1016、1018。一种实施方式中的快速ALU 1016、1018能够以半个时钟周期的有效等待时间执行快速操作。对于一种实施方式,大多数复杂整数操作前往慢速ALU 1020,因为慢速ALU 1020包括用于长等待时间类型的操作的整数执行硬件,如乘法、移位、标志逻辑、以及分支处理。存储器加载/存储操作由AGU 1022、1024执行。对于一种实施方式,在对64位数据操作数执行整数操作的上下文中描述了整数ALU 1016、1018、1020。在替代性实施方式中,ALU 1016、1018、1020可以被实施为支持包括16、32、128、256等的各种数据位。类似地,浮点单元1022、1024可以被实施为支持具有各种宽度的位的操作数范围。对于一种实施方式,浮点单元1022、1024可以与SIMD和多媒体指令结合地对128位宽度的紧缩数据操作数进行操作。
在一种实施方式中,uop调度器1002、1004、1006在父加载完成执行之前分派依赖性操作。在处理器1000中推测性地调度和执行uop时,处理器1000还包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪并重新执行使用不正确数据的指令。仅仅依赖性操作需要被重放,并且允许独立操作完成。处理器的一种实施方式中的调度器和重放机制还被设计成捕获用于文本串比较操作的指令序列。
术语“寄存器”可以指代作为指令的部分被用来标识操作数的板载处理器存储位置。换言之,寄存器可以是从处理器外部(从编程者的角度来看)可用的寄存器。然而,实施方式中的寄存器的含义不应限于特定类型的电路。相反,实施方式中的寄存器能够存储和提供数据,并且执行本文所描述的功能。本文所描述的寄存器可以由处理器内的电路系统使用任何数量的不同技术来实施,如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配的物理寄存器的组合等。在一种实施方式中,整数寄存器存储32位整数数据。一种实施方式中的寄存器堆还包含用于紧缩数据的八个多媒体SIMD寄存器。
对于本文的讨论,寄存器被理解为设计成保存紧缩数据的数据寄存器,如用来自加利福尼亚州圣克拉拉的英特尔公司的MMX技术实现的微处理器中的64位宽MMXTM寄存器(在某些情况下也称为“mm”寄存器)。以整数和浮点形式可用的这些MMX寄存器可以用伴随SIMD指令和SSE指令的紧缩数据元素进行操作。类似地,与SSE2、SSE3、SSE4或更高版本(通常称为“SSEx”)技术有关的128位宽XMM寄存器也可以用于保存这样的紧缩数据操作数。在一种实施方式中,在存储紧缩数据和整数数据时,寄存器不需要对这两种数据类型进行区分。在一种实施方式中,整数和浮点包含在同一寄存器堆或不同的寄存器堆中。此外,在一种实施方式中,浮点数据和整数数据可以存储在不同的寄存器或同一寄存器中。
实施方式可以在许多不同的系统类型中实施。现在参考图11,示出了根据实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的多处理器系统1100的框图。如图11所示出的,多处理器系统1100是点对点互连系统,并且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。如图11所示,处理器1170和1180中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核1174a和1174b以及处理器核1184a和1184b),但是在处理器中潜在地存在更多核。虽然以两个处理器1170、1180来示出,但应理解本公开的范围不限于此。在其他实施方式中,在给定处理器中可以存在一个或多个附加处理器。
处理器1170和1180被示出为分别包括集成存储器控制器单元1172和1182。处理器1170还包括作为其总线控制器单元的一部分的点对点(P-P)接口1176和1188;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可以经由使用P-P接口电路1178、1188的点对点(P-P)接口1150来交换信息。如图11所示出的,IMC 1172和IMC 1182将处理器耦合至对应存储器,即存储器1132和存储器1134,所述存储器可以是本地附接到对应处理器的主存储器的部分。
处理器1170、1180可以经由使用点对点接口电路1176、1194、1186、1198的各个P-P接口1152、1154来与芯片组1190交换信息。芯片组1190还可以经由高性能图形接口1139与高性能图形电路1138交换信息。
芯片组1190可以经由接口1196耦合至第一总线1116。在一种实施方式中,第一总线1116可以是外围组件互连(PCI)总线,或诸如PCI Express总线或互连总线的总线,但是本公开的范围不限于此。
现在参考图12,示出了根据本公开的一种实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的第三系统1200的框图。图11和图12中的相同元件使用相同的参考号,并且图12的某些方面已经从图11中省略以避免使图12的其他方面模糊。
图12展示了处理器1270、1280可以分别包括集成存储器和I/O控制逻辑(“CL”)1272和1292。对于至少一个实施方式,CL 1272、1282可以包括诸如本文所描述的集成存储器控制器单元。另外,CL 1272、1292还可以包括I/O控制逻辑。图12展示了存储器1232、1234耦合至CL 1272、1292,并且I/O装置1214也耦合至控制逻辑1272、1292。传统I/O装置1215耦合至芯片组1290。
图13是可以包括可以在微处理器架构内实施对密钥和敏感数据的保护的核1302A…1302N中的一个或多个核的示例性芯片上系统(SoC)1300。本领域中已知的用于膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式装置和各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够并入如本文所公开的处理器和/或其他执行逻辑的各种各样的系统或电子装置通常是适合的。
在图13的示例性SoC 1300中,虚线框为更高先进SoC的特征。(多个)互连单元1302可以耦合至:应用处理器1317,所述应用处理器包括一组一个或多个核1302A至1302N和(多个)共享高速缓存单元1306;系统代理单元1310;(多个)总线控制器单元1316;(多个)集成存储器控制器单元1314;一个或多个媒体处理器1320的集合,其可以包括集成图形逻辑1308、用于提供静止和/或视频照相机功能的图像处理器1324、用于提供硬件音频加速的音频处理器1326以及用于提供视频编码/解码加速的视频处理器1328;静态随机存取存储器(SRAM)单元1330;直接存储器存取(DMA)单元1332;以及用于耦合至一个或多个外部显示器的显示单元1340。
接下来转到图14,描绘了根据本公开的实施方式的可以在微处理器架构内实施对密钥和敏感数据的保护的芯片上系统(SoC)设计。作为说明性示例,SoC 1400包括在用户设备(UE)中。在一种实施方式中,UE是指由最终用户用来进行通信的任何装置,如手持式电话、智能电话、平板、超薄型笔记本、具有宽带适配器的笔记本或任何其他类似的通信装置。UE可连接至基站或节点,其本质上对应于GSM网络中的移动台(MS)。页添加和内容复制的实施方式可以在SoC 1400中实施。
在此,SoC 1400包括2个核——1406和1407。类似于上面讨论的,核1406和1407可以符合指令集架构,如具有架构核TM的处理器、超微半导体有限公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计、或其客户,以及它们的经许可方或采用方。核1406和1407被耦合至与总线接口单元1409和L2高速缓存1410相关联的高速缓存控件1408,以与系统1400的其他部分进行通信。互连1411包括诸如IOSF、AMBA的芯片上互连,或上文讨论的其他互连,其可以实施所描述的本公开的一个或多个方面。
在一种实施方式中,SDRAM控制器1440可以经由高速缓存1410连接至互连1411。互连1411向其他组件提供通信信道,如用于与SIM卡接口连接的用户身份模块(SIM)1430、用于保存引导代码以便由核1406和1407执行对SoC 1400初始化和引导的引导ROM 1435、用于与外部存储器(例如DRAM 1460)接口连接的SDRAM控制器1440、用于与非易失性存储器(例如,闪存1465)接口连接的闪存控制器1445、用于与外围装置接口连接的外围控制件1450(例如串行外围接口)、用于显示和接收输入(例如触摸使能的输入)的视频编解码器1420和视频接口1425、用于执行图形相关的计算的GPU 1415等。这些接口中的任何接口可以结合本文所描述的实施方式的各方面。
此外,系统展示了用于通信的外围装置,如模块1470、3G调制解调器1475、GPS 1480和1485。注意,如上所述,UE包括用于通信的无线电装置。因此,这些外围通信模块可以不全都被包括。然而,在UE中,应该包括用于外部通信的某种形式的无线电。
图15是用于执行可以在微处理器架构内实施对密钥和敏感数据的保护的指令的处理部件的框图。如所示出的,计算系统1500包括代码存储装置1502、取出电路1504、解码电路1506、执行电路1508、寄存器1510、存储器1512和引退或提交电路1514。在操作中,取出电路1504从代码存储装置1502中取出指令(例如,ENCODEKEY),所述代码存储装置可以包括但不限于高速缓存存储器、芯片上存储器,与处理器位于同一管芯上的存储器、指令寄存器、通用寄存器或系统存储器。在一种实施方式中,指令可以具有与图17中的指令1700的格式类似的格式。在从代码存储装置1502取出指令之后,解码电路1506可以对所取出的指令进行解码,包括通过解析指令的各个字段。在解码所取出的指令之后,执行电路1508将执行经解码指令。在进行执行所述指令的步骤时,执行电路1508可以从寄存器1510和存储器1512中读取数据并将数据写入其中。寄存器1510可以包括但不限于数据寄存器、指令寄存器、向量寄存器、掩码寄存器、通用寄存器、芯片上存储器、与处理器位于同一管芯上的存储器、或者与处理器位于同一封装体中的存储器。存储器1512可以包括但不限于片上存储器、与处理器位于同一管芯上的存储器、与处理器位于同一封装体中的存储器、高速缓存存储器、或系统存储器。在执行电路执行指令之后,引退或提交电路1514可以引退所述指令,从而确保执行结果被写入到或已经被写入到其目的地,并且空出或释放资源以供稍后使用。
图16是根据一种实施方式的待由用于执行对密钥句柄进行编码的指令的处理器执行的示例方法1600的流程图。在开始所述过程之后,在框1612处,取出电路从代码存储装置中取出ENCODEKEY指令。在可选框1614处,解码电路可以对所取出的ENCODEKEY指令进行解码。在框1616处,执行电路执行ENCODEKEY指令以将密钥和授权令牌编码或加密到密钥句柄内。
ENCODEKEY指令可以是被适配成与其他密码指令交互的密码指令。例如,ENCODEKEY指令可以检取已经由另一个密码指令加载或检取的密钥和/或生成或检取已经由另一个密码指令生成或提供的令牌。在各种实施例中,ENCODEKEY指令还可以被适配成使用由单调计数器提供的值或授权令牌的变体来对密钥句柄的加密应用微调。此外,如前所述,当由访问用编码到密钥句柄内的密钥加密的受保护数据的软件程序触发时,另一个密码指令可以处理作为ENCODEKEY指令的输出或执行结果的密钥句柄。所述另一个密码指令可以与软件程序的逻辑分区相关联,有助于对编码到密钥句柄内的密钥的授权访问进行隔离。
图17是框图,展示了用于本文所公开的指令1700的示例格式,所述指令实施对多密钥密码引擎的硬件支持。指令1700可以是ENCODEKEY。对于ENCODEKEY,采用指令1700的格式的参数可以是不同的。因此,参数中的一些参数用虚线描绘为可选的。如所示出的,指令1400包括页地址1702、可选操作码1704、可选属性1706、可选安全状态位1708和可选有效状态位1710。设想了其他或附加操作码和状态位。
图18展示了采用计算系统1800的示例形式的机器的图解表示,其中一组指令用于使机器根据本文所讨论的方法中的任何一种或多种方法来在微处理器架构内实施对密钥和敏感数据的保护。在替代性实施方式中,机器可以连接(例如,联网)至LAN、内联网、外联网、或互联网中的其他机器。机器可以在客户端-服务器网络环境中以服务器或客户端装置的身份操作,或在点对点(或分布式)网络环境中作为对等机操作。所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络电器、服务器、网络路由器、交换机或桥接器、或能够执行指定要由那个机器采取的动作的指令集(相继或以其他方式)的任何机器。进一步地,虽然仅展示了单个机器,但术语“机器”还应被视为包括单独或联合执行一个(或多个)指令集以执行本文所讨论的方法中的任何一种或多种方法的机器的任何集合。页添加和内容复制的实施方式可以在计算系统1800中实施。
计算系统1800包括处理装置1802、主存储器1804(例如,闪存、动态随机存取存储器(DRAM)(如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1806(例如,闪存、静态随机存取存储器(SRAM)等)以及数据存储装置1816,它们经由总线1808彼此通信。
处理装置1802表示一个或多个通用处理装置,如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实施其他指令集的处理器、或实施指令集组合的处理器。处理装置1802还可以是一个或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一种实施方式中,处理装置1802可以包括一个或多个处理器核。处理装置1802被配置成执行用于执行本文所讨论的操作的处理逻辑1826。
在一种实施方式中,处理装置1802可以是包括所公开的LLC高速缓存架构的处理器或集成电路的一部分。可替代地,计算系统1800可以包括如本文所描述的其他部件。应当理解的是,核可以支持多线程化(执行并行的两组或更多组操作或线程),并且可以以各种方式来完成所述多线程化,所述各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后比如超线程化技术中的同步多线程化)。
计算系统1800可以进一步包括通信地耦合至网络1819的网络接口装置1818。计算系统1800还可以包括视频显示装置1810(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置1812(例如,键盘)、光标控制装置1814(例如,鼠标)、信号生成装置1820(例如,扬声器)或其他外围装置。此外,计算系统1800可以包括图形处理单元1822、视频处理单元1828和音频处理单元1832。在另一种实施方式中,计算系统1800可以包括芯片组(未展示),其指的是一组集成电路或芯片,它们被设计成与处理装置1802一起工作,并控制处理装置1802与外部装置之间的通信。例如,芯片组可以是将处理装置1802链接至诸如主存储器1804和图形控制器等超高速装置以及将处理装置1802链接至外围装置的诸如USB、PCI或ISA总线等较低速外围总线的母板上一组芯片。
数据存储装置1816可以包括计算机可读存储介质1824,在所述存储介质上存储了体现本文所描述的功能的方法中的任何一种或多种方法的软件1826。软件1826还可以在其由计算系统1800执行期间完全或至少部分地驻留在主存储器1804内作为指令1826,和/或驻留在处理装置1802内作为处理逻辑;主存储器1804和处理装置1802还构成计算机可读存储介质。
利用处理设备1802和/或包含调用以上应用的方法的软件库,计算机可读存储介质1824还可用于存储指令1826。虽然在示例实施方式中将计算机可读存储介质1824示出为单个介质,但术语“计算机可读存储介质”应当视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应视为包括能够存储、编码或携带用于由机器执行并且使所述机器执行所公开的实施方式的方法中的任何一种或多种方法的指令集的任何介质。术语“计算机可读存储介质”应当相应地被视为包括但不限于固态存储器、以及光学介质和磁性介质。
以下示例属于另外的实施方式。
示例1是一种处理器,包括:1)令牌生成器电路;以及2)处理器核,所述处理器核包括所述令牌生成器电路,其中,所述处理器核用于响应于请求访问通过密码操作输出的受保护数据的软件程序的初始化而执行第一指令,其中,为了执行所述第一指令,所述处理器核用于:a)检取所述密码操作要使用的密钥;b)触发所述令牌生成器电路以生成授权令牌;c)以密码方式将所述密钥和所述授权令牌编码在密钥句柄内;d)将所述密钥句柄存储在存储器中;并且e)将所述授权令牌嵌入在用于执行所述密码操作的密码指令中,所述密码指令与所述软件程序的被授权访问所述受保护数据的第一逻辑分区相关联。
在示例2中,如示例1所述的处理器,其中,所述处理器核进一步用于响应于执行所述密码指令而:a)从所述存储器检取所述密钥句柄;b)对所述密钥句柄进行解密以提取所述授权令牌和所述密钥;c)将来自所述密钥句柄的授权令牌与嵌入在所述密码指令中的授权令牌进行匹配以认证所述密钥句柄;并且d)使用所述密钥执行所述密码操作以生成所述受保护数据。
在示例3中,如示例2所述的处理器,其中,所述处理器核进一步用于执行以下各项中的至少一项:a)在执行所述密码操作期间禁止使用用户模式线程处理;b)对来自存储到用户模式存储器的溢出寄存器的线程状态和数据进行加密;或者c)在执行所述密码操作期间将对执行的抢占推迟到所述用户模式线程处理。
在示例4中,如示例1所述的处理器,其中,为了将所述授权令牌嵌入所述密码指令中,所述处理器核用于将所述授权令牌存储为所述密码指令内的寄存器操作数或立即操作数之一。
在示例5中,如示例1所述的处理器,其中,所述处理器核进一步用于以存储器许可将所述密码指令标记为仅执行状态,所述存储器许可与存储器中存储所述密码指令的位置相关联。
在示例6中,如示例1所述的处理器,其中,所述第一逻辑分区包括第一代码与所述第一代码被授权访问的第一数据的集合,并且其中,所述处理器核进一步用于:a)将所述授权令牌分配给所述第一逻辑分区;b)将第二授权令牌分配给第二逻辑分区,其中,所述第二逻辑分区包括第二代码和所述第二代码被授权访问的第二数据,所述第二数据不同于所述第一数据;并且c)阻止所述第二逻辑分区的所述第二代码访问所述授权令牌。
在示例7中,如示例1所述的处理器,其中,所述密码操作与所述第一逻辑分区相关联,第二密码操作与第二逻辑分区相关联,并且其中,所述处理器核进一步用于:a)将所述授权令牌分配给第一数据类型,所述第一数据类型可由所述第一逻辑分区访问但不可由所述第二逻辑分区访问;b)将第二授权令牌分配给第二数据类型,所述第二数据类型可由所述第二逻辑分区访问但不可由所述第一逻辑分区访问;并且c)阻止所述第二逻辑分区的第二代码访问所述授权令牌。
在示例8中,如示例7所述的处理器,其中,所述处理器核进一步用于响应于包括所述第二密码操作的所述软件程序的初始化而:a)以密码方式将所述密钥和所述第二授权令牌编码在第二密钥句柄内;b)将所述第二密钥句柄存储在所述处理器核的第二存储位置中;并且c)将所述第二授权令牌嵌入在第二密码指令中,其中,所述第二密码指令用于在所述软件程序的运行时间期间调用所述第二密码操作的执行。
各种实施方式可以具有上面描述的结构特征的不同组合。例如,上面描述的处理器和方法的所有可选特征也可以相对于本文描述的系统实施,并且示例中的具体细节可以用在一种或多种实施方式中的各处。
示例9是一种系统,包括:1)存储器;以及2)处理器核,所述处理器核耦合至所述存储器,其中,所述处理器核用于响应于请求访问通过密码操作输出的受保护数据的软件程序的初始化而执行第一指令,其中,为了执行所述第一指令,所述处理器核用于:a)检取所述密码操作要使用的密钥;b)使用随机数生成器生成授权令牌;c)将所述密钥和所述授权令牌加密在密钥句柄内;d)将所述密钥句柄存储在所述存储器中;并且e)将所述授权令牌嵌入在用于执行所述密码操作的密码指令中,所述密码指令与所述软件程序的被授权访问所述受保护数据的第一逻辑分区相关联;并且其中,所述处理器核进一步用于响应于执行第一线程内的所述密码指令而执行所述密码操作以:f)对包含敏感数据的明文中间数据进行加密以生成经加密数据;并且g)将所述经加密数据写入所述存储器,以保护所述敏感数据不被当前由处所述处理器核执行的至少第二线程访问。
在示例10中,如示例9所述的系统,其中,所述密码操作是解密,并且其中,所述处理器核进一步用于响应于执行所述密码指令而:a)从所述存储器检取所述密钥句柄;b)对所述密钥句柄进行解密以提取所述授权令牌和所述密钥;c)将来自所述密钥句柄的授权令牌与嵌入在所述密码指令中的授权令牌进行匹配以认证所述密钥句柄;并且d)使用所述密钥执行所述解密以生成所述受保护数据。
在示例11中,如示例9所述的系统,其中,所述处理器核进一步包括一组单调计数器,并且为了对包含所述密钥句柄或所述明文中间数据之一的存储器块进行加密,所述处理器核进一步用于:a)递增所述一组单调计数器中与所述存储器中用于所述存储器块的基址相关联的单调计数器的值;并且b)使用所述存储器中用于所述存储器块的基址和所述单调计数器的所述值两者来应用微调以对所述存储器块进行加密。
在示例12中,如示例11所述的系统,其中,为了对所述存储器块进行解密,所述处理器核进一步用于:a)读取来自所述单调计数器的所述值;b)将所述存储器中用于所述存储器块的的所述基址和所述单调计数器的所述值两者用作微调以对所述存储器块进行解密;并且c)递增所述单调计数器的所述值。
在示例13中,如示例9所述的系统,其中,为了将所述密钥和所述授权令牌加密在所述密钥句柄内,所述处理器核进一步用于:a)采用处理器密钥来将所述密钥和所述授权令牌加密在所述密钥句柄内以供在第一处理会话期间使用,其中,所述密钥句柄是第一密钥句柄;并且b)响应于所述第一处理会话的完成,采用第二处理器密钥以将所述密钥和所述授权令牌加密在与第二处理会话相关联的第二密钥句柄内。
在示例14中,如示例9所述的系统,其中,所述处理器核包括一组单调计数器,并且其中,为了执行所述第一指令,所述处理器核进一步用于:a)递增所述一组单调计数器中与所述软件程序的第一处理会话相关联的单调计数器的值;b)采用所述值作为微调以将所述密钥和所述授权令牌加密在所述密钥句柄内;c)响应于执行所述密码指令,将所述值用作微调来对所述密钥句柄进行解密,以提取所述密钥和所述授权令牌;并且d)响应于所述第一处理会话的完成,递增所述单调计数器的所述值以使所述密钥句柄在第二处理会话期间的进一步使用无效。
在示例15中,如示例9所述的系统,其中,为了以密码方式将所述密钥和所述授权令牌编码在密钥句柄内,所述处理器核用于:a)确定所述密码操作要处理的数据类型;b)将与所述数据类型相关联的类型指定符嵌入在所述密码指令的寄存器操作数或立即操作数之一内;并且,响应于执行所述密码指令,所述处理器核进一步用于:c)基于所述类型指定符确定要处理的所述数据类型;d)通过所述密码操作处理具有所述数据类型的第二数据;并且e)不使用所述密码操作处理不具有所述数据类型的第三数据。
各种实施方式可以具有上面描述的结构特征的不同组合。例如,上面描述的处理器和方法的所有可选特征也可以相对于本文描述的系统实施,并且示例中的具体细节可以用在一种或多种实施方式中的各处。
示例16是一种方法,包括:a)由处理器核响应于请求访问通过密码操作输出的受保护数据的软件程序的初始化而检取所述密码操作要使用的密钥;b)由所述处理器核以密码方式将所述密钥和固定代码位置编码在密钥句柄内,其中,所述固定代码位置是存储器中要从其执行密码指令以执行所述密码操作的位置,其中,所述密码指令与所述软件程序的第一逻辑分区相关联;以及c)由所述处理器核将所述密钥句柄存储在存储器中,以供在执行所述密码操作期间使用。
在示例17中,如示例16所述的方法,进一步包括响应于用于执行所述密码指令的请求而:a)从所述存储器中检取所述密钥句柄;b)对所述密钥句柄进行解密以提取所述固定代码位置和所述密钥;c)将所述密码指令从其执行的代码位置与来自所述密钥句柄的所述固定代码位置进行匹配;以及d)使用所述密钥执行所述密码操作以生成所述受保护数据。
在示例18中,如示例17所述的方法,进一步包括以下各项中的至少一项:a)在执行所述密码操作期间禁止使用用户模式线程处理;b)对来自存储到用户模式存储器中的溢出寄存器的线程状态和数据进行加密;或者c)在执行所述密码操作期间将对执行的抢占推迟到所述用户模式线程处理。
在示例19中,如示例17所述的方法,其中,所述密码操作是对敏感密文数据的解密,所述方法进一步包括由所述软件程序使用所述密钥对所述敏感密文数据进行解密以生成明文数据。
在示例20中,如示例16所述的方法,进一步包括响应于用于执行所述密码指令的请求而:a)从所述存储器中检取所述密钥句柄;b)对所述密钥句柄进行解密以提取所述固定代码位置和所述密钥;c)确定第二密码指令从其执行的代码位置与来自所述密钥句柄的所述固定代码位置不匹配;以及d)拒绝所述第二密码指令对所述密钥的访问,所述第二密码指令与所述软件程序的第二逻辑分区相关联。
各种实施方式可以具有上面描述的结构特征的不同组合。例如,上面描述的处理器和方法的所有可选特征也可以相对于本文描述的系统实施,并且示例中的具体细节可以用在一种或多种实施方式中的各处。
示例21是包括指令的非暂态计算机可读存储介质,所述指令在被执行时使处理器核执行多个操作,所述多个操作包括:a)响应于请求访问通过密码操作输出的受保护数据的软件程序的初始化而执行第一指令,其中,为了执行所述第一指令,所述处理器核用于执行包括以下各项的操作:b)检取所述密码操作要使用的密钥;b)触发所述令牌生成器电路以生成授权令牌;c)以密码方式将所述密钥和所述授权令牌编码在密钥句柄内;d)将所述密钥句柄存储在存储器中;以及e)将所述授权令牌嵌入在用于执行所述密码操作的密码指令中,所述密码指令与所述软件程序的被授权访问所述受保护数据的第一逻辑分区相关联。
在示例22中,如示例21所述的非暂态计算机可读存储介质,其中,响应于执行所述密码指令,所述多个操作包括:a)从所述存储器检取所述密钥句柄;b)对所述密钥句柄进行解密以提取所述授权令牌和所述密钥;c)将来自所述密钥句柄的授权令牌与嵌入在所述密码指令中的授权令牌进行匹配以认证所述密钥句柄;以及d)使用所述密钥执行所述密码操作以生成所述受保护数据。
在示例23中,如示例22所述的非暂态计算机可读存储介质,其中,所述多个操作包括以下各项中的至少一项:a)在执行所述密码操作期间禁止使用用户模式线程处理;b)对来自存储到用户模式存储器的溢出寄存器的线程状态和数据进行加密;或者c)在执行所述密码操作期间将对执行的抢占推迟到所述用户模式线程处理。
在示例24中,如示例21所述的非暂态计算机可读存储介质,其中,将所述授权令牌嵌入所述密码指令内包括将所述授权令牌存储为所述密码指令内的寄存器操作数或立即操作数之一。
在示例25中,如示例21所述的非暂态计算机可读存储介质,其中,所述多个操作进一步包括以存储器许可将所述密码指令标记为仅执行状态,所述存储器许可与存储器中存储所述密码指令的位置相关联。
在示例26中,如示例21所述的非暂态计算机可读存储介质,其中,所述第一逻辑分区包括第一代码与所述第一代码被授权访问的第一数据的集合,并且其中,所述多个操作进一步包括:a)将所述授权令牌分配给所述第一逻辑分区;b)将第二授权令牌分配给第二逻辑分区,其中,所述第二逻辑分区包括第二代码和所述第二代码被授权访问的第二数据,所述第二数据不同于所述第一数据;以及c)阻止所述第二逻辑分区的所述第二代码访问所述授权令牌。
在示例27中,如示例21所述的非暂态计算机可读存储介质,其中,所述密码操作与所述第一逻辑分区相关联,第二密码操作与第二逻辑分区相关联,并且其中,所述多个操作进一步包括:a)将所述授权令牌分配给第一数据类型,所述第一数据类型可由所述第一逻辑分区访问但不可由所述第二逻辑分区访问;b)将第二授权令牌分配给第二数据类型,所述第二数据类型可由所述第二逻辑分区访问但不可由所述第一逻辑分区访问;以及c)阻止所述第二逻辑分区的第二代码访问所述授权令牌。
在示例28中,如示例27所述的非暂态计算机可读存储介质,其中,响应于初始化包括所述第二密码操作的所述软件程序,所述多个操作进一步包括:a)以密码方式将所述密钥和所述第二授权令牌编码在第二密钥句柄内;b)将所述第二密钥句柄存储在所述处理器核的第二存储位置中;以及c)将所述第二授权令牌嵌入在第二密码指令中,其中,所述第二密码指令用于在所述软件程序的运行时间期间调用所述第二密码操作的执行。
各种实施方式可以具有上面描述的结构特征的不同组合。例如,上面描述的处理器和方法的所有可选特征也可以相对于本文描述的系统实施,并且示例中的具体细节可以用在一种或多种实施方式中的各处。
示例29是一种系统,包括:1)用于由处理器核响应于请求访问通过密码操作输出的受保护数据的软件程序的初始化而检取所述密码操作要使用的密钥的装置;2)用于由所述处理器核以密码方式将所述密钥和固定代码位置编码在密钥句柄内的装置,其中,所述固定代码位置是存储器中要从其执行密码指令以执行所述密码操作的位置,其中,所述密码指令与所述软件程序的第一逻辑分区相关联;以及3)由所述处理器核将所述密钥句柄存储在存储器中,以供在执行所述密码操作期间使用。
在示例30中,如示例26所述的系统,响应于用于执行所述密码指令的请求而进一步包括:1)用于从所述存储器检取所述密钥句柄的装置;2)用于对所述密钥句柄进行解密以提取所述固定代码位置和所述密钥的装置;3)用于将所述密码指令从其执行的代码位置与来自所述密钥句柄的所述固定代码位置进行匹配的装置;以及4)用于使用所述密钥执行所述密码操作以生成所述受保护数据的装置。
在示例31中,如示例30所述的系统,进一步包括以下各项中的至少一项:1)用于在执行所述密码操作期间禁止使用用户模式线程处理的装置;2)用于对来自存储到用户模式存储器中的溢出寄存器的线程状态和数据进行加密的装置;或者3)用于在执行所述密码操作期间将对执行的抢占推迟到所述用户模式线程处理的装置。
在示例32中,如示例30所述的系统,其中,所述密码操作是对敏感密文数据的解密,所述系统进一步包括1)用于由所述软件程序使用所述密钥对所述敏感密文数据进行解密以生成明文数据的装置。
在示例33中,如示例29所述的系统,响应于用于执行所述密码指令的请求而进一步包括:1)用于从所述存储器检取所述密钥句柄的装置;2)用于对所述密钥句柄进行解密以提取所述固定代码位置和所述密钥的装置;3)用于确定第二密码指令从其执行的代码位置与来自所述密钥句柄的所述固定代码位置不匹配的装置;以及4)用于拒绝所述第二密码指令对所述密钥的访问的装置,所述第二密码指令与所述软件程序的第二逻辑分区相关联。
尽管已经关于有限数量的实施方式描述了本公开,但本领域的技术人员将从其中认识到许多修改和变化。随附权利要求旨在覆盖落入本公开的真实精神和范围内的所有这样的修改和变化。
在本文的说明书中,阐述了众多特定细节,如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统部件、特定测量/高度、特定处理器流水线级和操作等示例,以便提供对本公开的透彻理解。然而,对本领域技术人员来说将显而易见的是,不需要采用这些特定细节来实践本公开。在其他实例中,没有详细描述已知的组件或方法,诸如特定和替代处理器结构、特定逻辑电路/用于描述算法的代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、代码中的算法的特定表达、特定断电和选通技术/逻辑及计算机系统的其他特定操作细节,以避免对本公开造成不必要的模糊。
实施方式参考确定特定集成电路(如计算平台或微处理器)中基于扇区高速缓存的高速缓存行中数据有效性来描述。实施方式还可应用于其他类型集成电路和可编程逻辑装置。例如,所公开的实施方式并不限于台式计算机系统或便携式计算机,如UltrabooksTM计算机。并且,还可用在其他装置中,如手持式装置、平板电脑、其他薄笔记本、芯片上系统(SoC)装置和嵌入式应用中。手持式装置的一些示例包括:蜂窝电话、互联网协议装置、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常包括:微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行以下教导的功能和操作的任何其他系统。描述了所述系统可以是任何种类的计算机或嵌入式系统。所公开的实施方式特别可用于低端装置,像可穿戴装置(例如,手表)、电子植入物、传感和控制基础设施装置、控制器、监督控制和数据获取(SCADA)系统等。此外,本文描述的设备、方法和系统不限于物理计算装置,并且还可以涉及用于节能和效率的软件优化。如在以下描述中将变得容易明白的,本文描述的方法、设备和系统的实施方式(不管是关于硬件、固件、软件还是其组合)对将来与性能考虑平衡的‘绿色技术’都是至关重要的。
尽管本文的实施方式参考处理器描述,但其他实施方式可应用于其他类型集成电路和逻辑装置。本公开的各实施方式的类似技术和教导可以应用到可以受益于较高的流水线吞吐量和改善的性能的其他类型的电路或半导体装置。本公开的各实施方式的教导适用于执行数据处理的任何处理器或机器。然而,本公开不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可以应用于在其中执行数据的处理或管理的任何处理器和机器。此外,本文描述提供了示例,并且附图为了说明目的示出了各种示例。然而,这些示例不应在限制性意义上予以解释,因为它们仅旨在提供本公开的实施方式的示例,而非提供本公开的实施方式的所有可能的实施方式的详尽列表。
尽管以上示例描述了在执行单元和逻辑电路的上下文中的指令处理和分布,但本公开的其他实施方式可以通过存储在机器可读有形介质上的数据或指令来实现,所述数据或指令当由机器执行时使机器执行与本公开的至少一种实施方式一致的功能。在一种实施方式中,与本公开的实施方式相关联的功能在机器可执行指令中体现。指令可以用于使利用这些指令编程的通用或专用处理器执行本公开中的步骤。本公开的实施方式可以作为计算机程序产品或软件而提供,所述算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,所述指令可以用于对计算机(或其他电子装置)进行编程以执行根据本公开的实施方式的一个或多个操作。可替代地,本公开的实施方式的操作可以由包含用于执行操作的固定功能逻辑的特定硬件组件,或由编程的计算机组件和固定功能硬件组件的任何组合来执行。
用于编程逻辑以执行本公开的实施方式的指令可以存储在系统中的存储器内,如DRAM、高速缓存、闪存,或其他存储装置。此外,指令可以经由网络或借助于其他计算机可读介质被分布。因此,机器可读介质可以包括用于存储或传输采用机器(例如,计算机)可读的形式的信息的任何机制,但是不限于软盘、光盘、只读光盘存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于经由电、光、声音或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形的机器可读存储装置。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计可以贯穿各个不同的阶段,从创建到模拟到制造。表示设计的数据可用多种方式来表示所述设计。首先,如在模拟中有用的,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外,可以在设计过程的一些阶段生产具有逻辑和/或晶体管门的电路级模型。此外,大部分设计在一些阶段处达到表示硬件模型中各种装置的物理布置的数据级别。在使用传统半导体制造技术的情况下,表示硬件模型的数据可以是指明用于生产集成电路的掩膜的不同掩膜层上的各种特征的存在与否的数据。在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。存储器或磁存储装置或光存储装置(如,盘)可以是用于存储经由光波或电波传输的信息的机器可读介质,所述光波或电波被调制或以其他方式生成以用于传输此类信息。当传输指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重传而言,制作了新的副本。因此,通信提供商或网络提供商可以在有形的机器可读介质上至少暂时地存储实现本公开的实施方式的技术的物品,如编码为载波的信息。
本文中所使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,如与非暂态介质相关联的用于存储代码的微控制器,所述代码被适配成由微控制器执行。因此,在一种实施方式中,对模块的提及是指硬件,所述硬件被具体配置成识别和/或执行有待保存在非暂态介质上的代码。此外,在另一种实施方式中,模块的使用指包括代码的非暂态介质,所述代码被具体适配成由微控制器执行以执行预定操作。并且如可以推断的,在又另一实施方式中,术语模块(在本示例中)可以指微控制器与非暂态介质的组合。通常,被展示为分开的模块边界通常会有所变化并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件或其组合,同时可能保留一些独立的硬件、软件或固件。在一种实施方式中,术语逻辑的使用包括硬件,诸如晶体管、寄存器,或其他硬件,如可编程逻辑装置。
在一种实施方式中,短语‘被配置成(configured to)’的使用是指安排、汇编、制造、提供销售、导入和/或设计设备、硬件、逻辑或元件以执行指定或确定的任务。在本示例中,如果设备或其元件被设计、耦合和/或互连以执行指定的任务,则未在操作中的所述设备或其元件仍被‘配置成’执行所述指定的任务。作为纯说明性示例,逻辑门可以在操作过程中提供0或1。但是‘被配置成’为时钟提供启动信号的逻辑门不包括可以提供1或0的每个潜在的逻辑门。相反,逻辑门是以使得在操作过程中,1或0输出用于启动时钟的某种方式耦合的。再次注意,术语‘被配置成’的使用不需要操作,而是聚焦于设备、硬件和/或元件的潜在状态,其中,在潜在状态中,设备、硬件和/或元件被设计成用于当设备、硬件和/或元件正在操作时执行特定的任务。
此外,在一种实施方式中,短语‘用于(to)’、‘能够/能够用于(capable of/to)’和/或‘可操作于(operable to)’的使用是指一些设备、逻辑、硬件和/或元件被设计,其方式使得能够以指定方式使用所述设备、逻辑、硬件和/或元件。注意,在一种实施方式中,如以上‘用于’、‘能够用于’或‘可操作于’的使用是指设备、逻辑、硬件和/或元件的潜在状态,其中,所述设备、逻辑、硬件和/或元件未在未在运行但是被设计,其方式使得能够以特定的方式使用设备。
如本文中使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。经常,逻辑电平、逻辑值或逻辑的值的使用也称为简单地代表二进制逻辑状态的1和0。例如,1是指高逻辑电平,并且0是指低逻辑电平。在一种实施方式中,如晶体管或闪存单元等存储单元可以能够保存单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其他表示。例如,十进制数字十也可以表示为二进制值1010和十六进制字母A。因此,值包括能够在计算机系统中保持的信息的任何表示。
此外,状态可以由值或值的部分来表示。作为示例,如逻辑一等第一值可以表示默认或初始状态,而如逻辑零等第二值可以表示非默认状态。此外,在一种实施方式中,术语重置和设置分别是指默认的和更新的值或状态。例如,默认值可能包括高逻辑值(即,重置),而更新的值可能包括低逻辑值(即,设置)。注意,可以利用值的任何组合来表示任何数量的状态。
以上阐述的方法、硬件、软件、固件或代码的实施方式可以经由存储在机器可访问介质、机器可读介质、计算机可访问介质或计算机可读介质上的可被处理元件执行的代码或指令来实施。非暂态机器可访问介质/可读介质包括提供(即,存储和/或传输)采用机器(如,计算机或电子系统)可读的形式的信息的任何机制。例如,非暂态机器可访问介质包括诸如静态RAM(SRAM)或动态RAM(DRAM)等随机存取存储器(RAM);ROM;磁或光存储介质;闪存装置;电存储装置;光存储装置;声存储装置;用于保存从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储装置;等,它们有别于可以从中接收信息的非暂态介质。
用于编程逻辑以执行本公开的实施方式的指令可以存储在系统中的存储器内,如DRAM、高速缓存、闪存或其他存储装置。此外,指令可以经由网络或借助于其他计算机可读介质被分布。因此,机器可读介质可以包括用于存储或传输采用机器(例如,计算机)可读的形式的信息的任何机制,但是不限于软盘、光盘、只读光盘存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于经由电、光、声音或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形的机器可读存储装置。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形的机器可读介质。
贯穿本说明书对“一种实施方式”或“实施方式”的引用意指结合实施方式所描述的特定特征、结构、或特性被包含在本公开的至少一种实施方式中。因此,短语“在一种实施方式中”或“在实施方式中”在贯穿本说明书中的各个地方的出现不一定全部指代同一实施方式。此外,在一种或多种实施方式中,特定特征、结构或特性可以以任何合适的方式组合。
在前述说明书中,已经参照具体示例性实施方式给出了详细说明。然而,显然在不偏离随附权利要求中阐述的本公开的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图被认为是说明性意义的,而不是限制性意义的。此外,实施方式和其他示范性语言的前述使用不一定指同一实施方式或同一示例,而是可以指不同的和有区别的实施方式,以及潜在地指同一实施方式。
具体实施方式的一些部分根据对计算机存储器内的数据位的操作的算法和符号表示来呈现。这些算法描述和表示是数据处理领域中的技术人员向所述领域的其他技术人员最有效地转达他们的工作的主要内容时所使用的手段。算法在这里并且通常被认为是用于得到期望结果的操作的自洽序列。这些操作是需要对物理量进行物理操作的那些操作。通常但并非必须地,这些物理量采用能够被存储、传送、组合、比较以及以其他方式操纵的电或磁信号的形式。已经证明有时(主要出于公共使用的原因)将这些信号称为位、值、元素、符号、字符、术语、数字等是便利的。本文所描述的块可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些术语和类似术语将与适当的物理量相关联并且仅是应用于这些量上的方便标签。除非特别声明,否则根据上面论述显然要认识到,贯穿本明书利用诸如“定义”、“接收”、“确定”、“发出”、“链接”、“关联”、“获得”、“认证”、“禁止”、“执行”、“请求”、“通信”等术语的论述是指计算系统或类似电子计算装置的动作和过程,其将计算系统的寄存器和存储器内表示为物理(即,电子)量的数据操控并变换成在计算系统存储器或寄存器或其他此类信息存储、传输或显示装置内类似地表示为物理量的其他数据。
词语“示例”或“示例性”在本文中被用于意指充当示例、实例或说明。在此被描述为“示例”或“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。而是,对词语“示例”或“示例性”的使用旨在以具体的方式呈现概念。如本申请中所使用的,术语“或者”意图意指包括性的“或者”而不是排他性的“或者”。也就是说,除非另外指定或从上下文中明显看出,否则“X包括A或B”旨在意指任何自然包括性置换。也就是说,如果X包括A;X包括B;或者X包括A和B两者,则“X包括A或B”在前述情形中的任一种下都满足。另外,本申请和所附权利要求中使用的冠词“一(a)”和“一个(an)”总体上应当被解释为指“一个或多个(one or more)”,除非另外指定或从上下文中明显看出是针对单数形式。此外,除非如此描述,否则贯穿全文的术语“实施方式”或“一种实施方式”或“实施方式”或“一种实施方式”的使用不意指同一实施方式或实施方式。而且,如本文所使用的术语“第一”、“第二”、“第三”、“第四”等意指作为标记以区分不同的元件并且可能不一定具有根据其数字名称的依次含义。
Claims (23)
1.一种处理器,包括:
令牌生成器电路;以及
处理器核,所述处理器核包括所述令牌生成器电路,其中,所述处理器核用于响应于请求访问通过密码操作输出的受保护数据的软件程序的初始化而执行第一指令,其中,为了执行所述第一指令,所述处理器核用于:
检取所述密码操作要使用的密钥;
触发所述令牌生成器电路以生成授权令牌;
以密码方式将所述密钥和所述授权令牌编码在密钥句柄内;
将所述密钥句柄存储在存储器中;以及
将所述授权令牌嵌入在用于执行所述密码操作的密码指令中,所述密码指令与所述软件程序的被授权访问所述受保护数据的第一逻辑分区相关联。
2.如权利要求1所述的处理器,其中,所述处理器核进一步用于响应于执行所述密码指令而:
从所述存储器检取所述密钥句柄;
对所述密钥句柄进行解密以提取所述授权令牌和所述密钥;
将来自所述密钥句柄的授权令牌与嵌入在所述密码指令中的授权令牌进行匹配以认证所述密钥句柄;以及
使用所述密钥执行所述密码操作以生成所述受保护数据。
3.如权利要求2所述的处理器,其中,所述处理器核进一步用于执行以下各项中的至少一项:
在执行所述密码操作期间禁止使用用户模式线程处理;
对来自存储到用户模式存储器的溢出寄存器的线程状态和数据进行加密;或者
在执行所述密码操作期间将对执行的抢占推迟到所述用户模式线程处理。
4.如权利要求1至3中任一项所述的处理器,其中,为了将所述授权令牌嵌入在所述密码指令中,所述处理器核用于将所述授权令牌存储为所述密码指令内的寄存器操作数或立即操作数之一。
5.如权利要求1至3中任一项所述的处理器,其中,所述处理器核进一步用于以存储器许可将所述密码指令标记为仅执行状态,所述存储器许可与存储器中存储所述密码指令的位置相关联。
6.如权利要求1至3中任一项所述的处理器,其中,所述第一逻辑分区包括第一代码与所述第一代码被授权访问的第一数据的集合,并且其中,所述处理器核进一步用于:
将所述授权令牌分配给所述第一逻辑分区;
将第二授权令牌分配给第二逻辑分区,其中,所述第二逻辑分区包括第二代码和所述第二代码被授权访问的第二数据,所述第二数据不同于所述第一数据;以及
阻止所述第二逻辑分区的所述第二代码访问所述授权令牌。
7.如权利要求1至3中任一项所述的处理器,其中,所述密码操作与所述第一逻辑分区相关联,第二密码操作与第二逻辑分区相关联,并且其中,所述处理器核进一步用于:
将所述授权令牌分配给第一数据类型,所述第一数据类型能够由所述第一逻辑分区访问但不能够由所述第二逻辑分区访问;
将第二授权令牌分配给第二数据类型,所述第二数据类型能够由所述第二逻辑分区访问但不能够由所述第一逻辑分区访问;以及
阻止所述第二逻辑分区的第二代码访问所述授权令牌。
8.如权利要求7所述的处理器,其中,所述处理器核进一步用于响应于包括所述第二密码操作的所述软件程序的初始化而:
以密码方式将所述密钥和所述第二授权令牌编码在第二密钥句柄内;
将所述第二密钥句柄存储在所述处理器核的第二存储位置中;以及
将所述第二授权令牌嵌入在第二密码指令中,其中,所述第二密码指令用于在所述软件程序的运行时间期间调用所述第二密码操作的执行。
9.一种系统,包括:
存储器;以及
处理器核,所述处理器核耦合至所述存储器,其中,所述处理器核用于响应于请求访问通过密码操作输出的受保护数据的软件程序的初始化而执行第一指令,其中,为了执行所述第一指令,所述处理器核用于:
检取所述密码操作要使用的密钥;
使用随机数生成器生成授权令牌;
将所述密钥和所述授权令牌加密在密钥句柄内;
将所述密钥句柄存储在所述存储器中;以及
将所述授权令牌嵌入在用于执行所述密码操作的密码指令中,所述密码指令与所述软件程序的被授权访问所述受保护数据的第一逻辑分区相关联;并且
其中,所述处理器核进一步用于响应于执行第一线程内的所述密码指令而执行所述密码操作以:
对包含敏感数据的明文中间数据进行加密以生成经加密数据;以及
将所述经加密数据写入所述存储器,以保护所述敏感数据不被当前由处所述处理器核执行的至少第二线程访问。
10.如权利要求9所述的系统,其中,所述密码操作是解密,并且其中,所述处理器核进一步用于响应于执行所述密码指令而:
从所述存储器检取所述密钥句柄;
对所述密钥句柄进行解密以提取所述授权令牌和所述密钥;
将来自所述密钥句柄的授权令牌与嵌入在所述密码指令中的授权令牌进行匹配以认证所述密钥句柄;以及
使用所述密钥执行所述解密以生成所述受保护数据。
11.如权利要求9所述的系统,其中,所述处理器核进一步包括单调计数器的集合,并且为了对包含所述密钥句柄或所述明文中间数据之一的存储器块进行加密,所述处理器核进一步用于:
递增所述单调计数器的集合中与所述存储器中用于所述存储器块的基址相关联的单调计数器的值;以及
使用所述存储器中用于所述存储器块的所述基址和所述单调计数器的所述值两者来应用微调以对所述存储器块进行加密。
12.如权利要求11所述的系统,其中,为了对所述存储器块进行解密,所述处理器核进一步用于:
读取来自所述单调计数器的所述值;
将所述存器中用于所述存储器块的所述基址和所述单调计数器的所述值两者用作微调以对所述存储器块进行解密;以及
递增所述单调计数器的所述值。
13.如权利要求9至12中任一项所述的系统,其中,为了将所述密钥和所述授权令牌加密在所述密钥句柄内,所述处理器核进一步用于:
采用处理器密钥以将所述密钥和所述授权令牌加密在所述密钥句柄内以供在第一处理会话期间使用,其中,所述密钥句柄是第一密钥句柄;以及
响应于所述第一处理会话的完成,采用第二处理器密钥以将所述密钥和所述授权令牌加密在与第二处理会话相关联的第二密钥句柄内。
14.如权利要求9至12中任一项所述的系统,其中,所述处理器核包括单调计数器的集合,并且其中,为了执行所述第一指令,所述处理器核进一步用于:
递增所述单调计数器的集合中的单调计数器的值,其中,所述值与所述软件程序的第一处理会话相关联;
采用所述值作为微调以将所述密钥和所述授权令牌加密在所述密钥句柄内;
响应于执行所述密码指令,将所述值用作微调来对所述密钥句柄进行解密,以提取所述密钥和所述授权令牌;以及
响应于所述第一处理会话的完成,递增所述单调计数器的所述值以使所述密钥句柄在第二处理会话期间的进一步使用无效。
15.如权利要求9至12中任一项所述的系统,其中,为了以密码方式将所述密钥和所述授权令牌编码在所述密钥句柄内,所述处理器核用于:
确定所述密码操作要处理的数据类型;
将与所述数据类型相关联的类型指定符嵌入在所述密码指令的寄存器操作数或立即操作数之一内;以及
响应于执行所述密码指令,所述处理器核进一步用于:
基于所述类型指定符确定要处理的所述数据类型;
通过所述密码操作处理具有所述数据类型的第二数据;以及
不使用所述密码操作处理不具有所述数据类型的第三数据。
16.一种方法,包括:
由处理器核响应于请求访问通过密码操作输出的受保护数据的软件程序的初始化而检取所述密码操作要使用的密钥;
由所述处理器核以密码方式将所述密钥和固定代码位置编码在密钥句柄内,其中,所述固定代码位置是存储器中要从其执行密码指令以执行所述密码操作的位置,其中,所述密码指令与所述软件程序的第一逻辑分区相关联;以及
由所述处理器核将所述密钥句柄存储在存储器中,以供在执行所述密码操作期间使用。
17.如权利要求16所述的方法,进一步包括:响应于用于执行所述密码指令的请求:
从所述存储器检取所述密钥句柄;
对所述密钥句柄进行解密以提取所述固定代码位置和所述密钥;
将所述密码指令从其执行的代码位置与来自所述密钥句柄的所述固定代码位置进行匹配;以及
使用所述密钥执行所述密码操作以生成所述受保护数据。
18.如权利要求17所述的方法,进一步包括以下各项中的至少一项:
在执行所述密码操作期间禁止使用用户模式线程处理;
对来自存储到用户模式存储器的溢出寄存器的线程状态和数据进行加密;或者
在执行所述密码操作期间将对执行的抢占推迟到所述用户模式线程处理。
19.如权利要求17所述的方法,其中,所述密码操作是对敏感密文数据的解密,所述方法进一步包括:由所述软件程序使用所述密钥对所述敏感密文数据进行解密以生成明文数据。
20.如权利要求16所述的方法,进一步包括:响应于用于执行所述密码指令的请求:
从所述存储器检取所述密钥句柄;
对所述密钥句柄进行解密以提取所述固定代码位置和所述密钥;
确定第二密码指令从其执行的代码位置与来自所述密钥句柄的所述固定代码位置不匹配;以及
拒绝所述第二密码指令对所述密钥的访问,所述第二密码指令与所述软件程序的第二逻辑分区相关联。
21.至少一种机器可读介质,包括多条指令,所述多条指令响应于在计算装置上被执行而使所述计算装置执行根据权利要求16至20中任一项所述的方法。
22.一种用于在处理装置中实施对密钥和敏感数据的保护的引擎的设备,所述设备被配置成执行如权利要求16至20中任一项所述的方法。
23.一种设备,包括用于执行如权利要求16至20中任一项所述的方法的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/024,259 US10785028B2 (en) | 2018-06-29 | 2018-06-29 | Protection of keys and sensitive data from attack within microprocessor architecture |
US16/024,259 | 2018-06-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110661767A true CN110661767A (zh) | 2020-01-07 |
Family
ID=68886142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910455407.6A Pending CN110661767A (zh) | 2018-06-29 | 2019-05-29 | 在微处理器架构内保护密钥和敏感数据免受攻击 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10785028B2 (zh) |
CN (1) | CN110661767A (zh) |
DE (1) | DE102019109088A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114981771A (zh) * | 2020-01-22 | 2022-08-30 | 赛普拉斯半导体公司 | 可从网络攻击和故障恢复的存储器设备 |
CN115151908A (zh) * | 2020-02-21 | 2022-10-04 | 惠普发展公司, 有限责任合伙企业 | 用于数据的加密和解密的计算设备 |
CN118214541A (zh) * | 2024-05-20 | 2024-06-18 | 南京邮电大学 | 一种基于arm平台的sm3并行数据加密方法 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11843597B2 (en) * | 2016-05-18 | 2023-12-12 | Vercrio, Inc. | Automated scalable identity-proofing and authentication process |
US10785028B2 (en) * | 2018-06-29 | 2020-09-22 | Intel Corporation | Protection of keys and sensitive data from attack within microprocessor architecture |
EP3908948A4 (en) * | 2019-04-18 | 2022-08-24 | Hewlett-Packard Development Company, L.P. | SERVICE TRUST STATE |
US11403234B2 (en) | 2019-06-29 | 2022-08-02 | Intel Corporation | Cryptographic computing using encrypted base addresses and used in multi-tenant environments |
US11575504B2 (en) | 2019-06-29 | 2023-02-07 | Intel Corporation | Cryptographic computing engine for memory load and store units of a microarchitecture pipeline |
US11250165B2 (en) | 2019-12-20 | 2022-02-15 | Intel Corporation | Binding of cryptographic operations to context or speculative execution restrictions |
US11580234B2 (en) | 2019-06-29 | 2023-02-14 | Intel Corporation | Implicit integrity for cryptographic computing |
CN114503105A (zh) * | 2019-09-25 | 2022-05-13 | 联邦科学和工业研究组织 | 用于浏览器应用的密码服务 |
US11366933B2 (en) | 2019-12-08 | 2022-06-21 | Western Digital Technologies, Inc. | Multi-device unlocking of a data storage device |
US11556665B2 (en) | 2019-12-08 | 2023-01-17 | Western Digital Technologies, Inc. | Unlocking a data storage device |
US11917067B2 (en) | 2019-12-28 | 2024-02-27 | Intel Corporation | Apparatuses, methods, and systems for instructions for usage restrictions cryptographically tied with data |
US11469885B2 (en) | 2020-01-09 | 2022-10-11 | Western Digital Technologies, Inc. | Remote grant of access to locked data storage device |
US11334677B2 (en) * | 2020-01-09 | 2022-05-17 | Western Digital Technologies, Inc. | Multi-role unlocking of a data storage device |
US11606206B2 (en) | 2020-01-09 | 2023-03-14 | Western Digital Technologies, Inc. | Recovery key for unlocking a data storage device |
US11831752B2 (en) | 2020-01-09 | 2023-11-28 | Western Digital Technologies, Inc. | Initializing a data storage device with a manager device |
US11265152B2 (en) | 2020-01-09 | 2022-03-01 | Western Digital Technologies, Inc. | Enrolment of pre-authorized device |
CN113139175A (zh) | 2020-01-19 | 2021-07-20 | 阿里巴巴集团控股有限公司 | 处理单元、电子设备以及安全控制方法 |
US11216366B2 (en) | 2020-02-13 | 2022-01-04 | Intel Corporation | Security check systems and methods for memory allocations |
US11423154B2 (en) * | 2020-10-26 | 2022-08-23 | Micron Technology, Inc. | Endpoint authentication based on boot-time binding of multiple components |
US11604740B2 (en) * | 2020-12-01 | 2023-03-14 | Capital One Services, Llc | Obfuscating cryptographic material in memory |
US11775690B2 (en) * | 2020-12-02 | 2023-10-03 | Dell Products L.P. | System and method for supporting multiple independent silicon-rooted trusts per system-on-a-chip |
US11700135B2 (en) | 2020-12-26 | 2023-07-11 | Intel Corporation | ISA accessible physical unclonable function |
US12022013B2 (en) | 2020-12-26 | 2024-06-25 | Intel Corporation | ISA accessible physical unclonable function |
US11669625B2 (en) | 2020-12-26 | 2023-06-06 | Intel Corporation | Data type based cryptographic computing |
US11706039B2 (en) | 2020-12-26 | 2023-07-18 | Intel Corporation | ISA accessible physical unclonable function |
WO2022139850A1 (en) | 2020-12-26 | 2022-06-30 | Intel Corporation | Cryptographic computing including enhanced cryptographic addresses |
US11570010B2 (en) * | 2020-12-26 | 2023-01-31 | Intel Corporation | ISA accessible physical unclonable function |
US11580035B2 (en) | 2020-12-26 | 2023-02-14 | Intel Corporation | Fine-grained stack protection using cryptographic computing |
US11972126B2 (en) | 2021-03-26 | 2024-04-30 | Intel Corporation | Data relocation for inline metadata |
US11954045B2 (en) | 2021-09-24 | 2024-04-09 | Intel Corporation | Object and cacheline granularity cryptographic memory integrity |
US20230244821A1 (en) * | 2022-01-28 | 2023-08-03 | Honeywell International Inc. | Processor core unique encryption |
US12019733B2 (en) * | 2022-03-11 | 2024-06-25 | Intel Corporation | Compartment isolation for load store forwarding |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8438392B2 (en) * | 2002-06-20 | 2013-05-07 | Krimmeni Technologies, Inc. | Method and system for control of code execution on a general purpose computing device and control of code execution in a recursive security protocol |
US7603704B2 (en) * | 2002-12-19 | 2009-10-13 | Massachusetts Institute Of Technology | Secure execution of a computer program using a code cache |
JP5114617B2 (ja) * | 2005-08-03 | 2013-01-09 | エスティー‐エリクソン、ソシエテ、アノニム | 秘密鍵を保護する、セキュア端末、プログラム、および方法 |
US8051299B2 (en) * | 2006-03-20 | 2011-11-01 | Hewlett-Packard Development Company, L.P. | Computer security method and computer system |
JP4912921B2 (ja) * | 2007-02-27 | 2012-04-11 | 富士通セミコンダクター株式会社 | セキュアプロセッサシステム、セキュアプロセッサ及びセキュアプロセッサシステムの制御方法 |
US8776258B2 (en) * | 2007-06-20 | 2014-07-08 | David J. Linsley | Providing access rights to portions of a software application |
WO2009111405A1 (en) * | 2008-03-04 | 2009-09-11 | Apple Inc. | System and method of authorizing execution of software code based on a trusted cache |
WO2011013120A1 (en) * | 2009-07-30 | 2011-02-03 | Rascalim Software Security Ltd. | System and method for limiting execution of software to authorized users |
CN104012030B (zh) | 2011-12-21 | 2018-04-13 | 英特尔公司 | 用于保护对称加密密钥的系统及方法 |
US9015824B1 (en) * | 2012-01-25 | 2015-04-21 | Google Inc. | Allowing a client computing device to securely interact with a private network |
US9165138B2 (en) * | 2012-07-11 | 2015-10-20 | Leviathan Security Group, Inc. | Mitigation of function pointer overwrite attacks |
US20140149730A1 (en) * | 2012-11-26 | 2014-05-29 | Dell Products L.P. | Systems and methods for enforcing secure boot credential isolation among multiple operating systems |
US9395993B2 (en) * | 2013-07-29 | 2016-07-19 | Intel Corporation | Execution-aware memory protection |
US10313129B2 (en) | 2015-06-26 | 2019-06-04 | Intel Corporation | Keyed-hash message authentication code processors, methods, systems, and instructions |
US10075296B2 (en) | 2015-07-02 | 2018-09-11 | Intel Corporation | Loading and virtualizing cryptographic keys |
US9390268B1 (en) * | 2015-08-04 | 2016-07-12 | Iboss, Inc. | Software program identification based on program behavior |
US10142101B2 (en) | 2015-09-29 | 2018-11-27 | Intel Corporation | Hardware enforced one-way cryptography |
US10474823B2 (en) * | 2016-02-16 | 2019-11-12 | Atmel Corporation | Controlled secure code authentication |
US20180082057A1 (en) * | 2016-09-22 | 2018-03-22 | Intel Corporation | Access control |
US10311252B2 (en) * | 2017-03-15 | 2019-06-04 | Intel Corporation | Technologies for protecting dynamically generated managed code with protection domains |
US10795679B2 (en) * | 2018-06-07 | 2020-10-06 | Red Hat, Inc. | Memory access instructions that include permission values for additional protection |
US10785028B2 (en) * | 2018-06-29 | 2020-09-22 | Intel Corporation | Protection of keys and sensitive data from attack within microprocessor architecture |
-
2018
- 2018-06-29 US US16/024,259 patent/US10785028B2/en active Active
-
2019
- 2019-04-08 DE DE102019109088.1A patent/DE102019109088A1/de active Pending
- 2019-05-29 CN CN201910455407.6A patent/CN110661767A/zh active Pending
-
2020
- 2020-08-20 US US16/998,913 patent/US11838418B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114981771A (zh) * | 2020-01-22 | 2022-08-30 | 赛普拉斯半导体公司 | 可从网络攻击和故障恢复的存储器设备 |
CN114981771B (zh) * | 2020-01-22 | 2024-01-12 | 赛普拉斯半导体公司 | 可从网络攻击和故障恢复的存储器设备 |
CN115151908A (zh) * | 2020-02-21 | 2022-10-04 | 惠普发展公司, 有限责任合伙企业 | 用于数据的加密和解密的计算设备 |
US12086076B2 (en) | 2020-02-21 | 2024-09-10 | Hewlett-Packard Development Company, L.P. | Computing devices for encryption and decryption of data |
CN118214541A (zh) * | 2024-05-20 | 2024-06-18 | 南京邮电大学 | 一种基于arm平台的sm3并行数据加密方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200382303A1 (en) | 2020-12-03 |
DE102019109088A1 (de) | 2020-01-02 |
US10785028B2 (en) | 2020-09-22 |
US11838418B2 (en) | 2023-12-05 |
US20200007332A1 (en) | 2020-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11838418B2 (en) | Protection of keys and sensitive data from attack within microprocessor architecture | |
US10671740B2 (en) | Supporting configurable security levels for memory address ranges | |
US11467981B2 (en) | Memory initialization in a protected region | |
EP3757856B1 (en) | Cryptographic isolation of memory compartments in a computing environment | |
US9893881B2 (en) | Efficient sharing of hardware encryption pipeline for multiple security solutions | |
US11250165B2 (en) | Binding of cryptographic operations to context or speculative execution restrictions | |
EP3757839B1 (en) | Scalable virtual machine operation inside trust domains within the trust domain architecture | |
EP3547200B1 (en) | Supporting memory paging in virtualized systems using trust domains | |
US11360910B2 (en) | Prevention of trust domain access using memory ownership bits in relation to cache lines |
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 |