CN112149148A - 计算环境中存储器隔间的密码隔离 - Google Patents

计算环境中存储器隔间的密码隔离 Download PDF

Info

Publication number
CN112149148A
CN112149148A CN202010224151.0A CN202010224151A CN112149148A CN 112149148 A CN112149148 A CN 112149148A CN 202010224151 A CN202010224151 A CN 202010224151A CN 112149148 A CN112149148 A CN 112149148A
Authority
CN
China
Prior art keywords
memory
key
encrypted
processor
instruction
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
Application number
CN202010224151.0A
Other languages
English (en)
Inventor
M.E.库纳维斯
S.戈什
S.多奇
M.莱梅
D.M.德拉姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN112149148A publication Critical patent/CN112149148A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/72Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3242Cryptographic 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 using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Databases & Information Systems (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本文公开的技术提供了密码计算。一种示例方法包括执行第一软件实体的第一指令以接收第一输入操作数,所述第一输入操作数指示与存储在第一存储器单元中的多个存储器隔间的第一存储器隔间相关联的第一密钥;以及在处理器的核中执行密码算法以至少部分基于第一密钥来计算第一加密的内容。在核中计算第一加密的内容之后,将第一加密的内容存储在第一存储器单元的第一存储器隔间中的存储器位置。更特定的实施例包括,在将第一加密的内容存储在第一存储器隔间中的存储器位置之前,并且在核中计算第一加密的内容之后,将第一加密的内容移动到核的边界外的一级(L1)高速缓存中。

Description

计算环境中存储器隔间的密码隔离
相关申请的交叉引用
本申请根据35 U.S.C.§119要求保护临时申请No.62/868,884(2019年6月29日提交,并且标题为“Cryptographic Computing”)的权益。先前申请的公开被认为是本申请的公开的一部分,并且特此通过引用以其整体而被结合于本申请的公开中。
技术领域
本公开一般涉及计算机系统的领域,更特定地,涉及计算环境中存储器隔间的密码隔离。
背景技术
保护计算机系统中的存储器免于软件缺陷和安全脆弱性是值得关注的问题。恶意行动者可能试图访问未被授权访问的数据或代码。数据和代码的加密可有助于保护未经授权的访问。即使数据或代码以加密状态存储,如果恶意行动者定位加密密钥以使能解密加密的数据或代码,则数据或代码可能仍然易受攻击。在多租户环境中,共享资源可能增加对数据和代码的未经授权访问的风险,因为安全取决于资源的逻辑分离而不是物理分离。
附图说明
为了提供对本公开及其特征和优点的更全面了解,结合附图参照以下的描述,其中相似参考标号表示相似部件,在附图中:
图1是根据至少一个实施例的示例计算装置的简化框图;
图2是示出根据至少一个实施例的、用于保护要在密码指令中使用的密钥的系统的简化框图;
图3示出根据至少一个实施例的密码隔离的数据或代码的流程;
图4是示出根据实施例的、当应用在不知晓上下文的中央处理单元(CPU)上运行时可能发生的可能操作的简化流程图;
图5是示出根据实施例的、当应用在知晓上下文的中央处理单元(CPU)上运行时可能发生的可能操作的简化流程图;
图6是示出根据实施例的、用于验证在知晓上下文的中央处理单元(CPU)上运行的应用的凭证的可能操作的简化流程图;
图7是示出根据实施例的、当应用在知晓上下文的中央处理单元(CPU)上运行时可能发生的其他可能操作的简化流程图;
图8是示出根据实施例的、当应用在知晓上下文的CPU上运行时在另一实施例中可能发生的其他可能操作的简化流程图;
图9A是示出根据实施例的、在数据结构级别的密码隔离的示例的简化框图;
图9B是示出根据实施例的、在数据结构级别的密码隔离的另一示例的简化框图;
图10A是示出根据实施例的、在应用级别的密码隔离的示例的简化框图;
图10B是示出根据实施例的、在应用级别的密码隔离的另一示例的简化框图;
图11是示出根据实施例的、在虚拟机级别的密码隔离的示例的简化框图;
图12是示出根据实施例的、用于密码存储指令的可能过程的简化流程图;
图13是示出根据实施例的、用于密码加载指令的可能过程的简化流程图;
图14是示出根据实施例的、用于支持没有重新编译的传统应用的可能操作的简化流程图;
图15是示出根据实施例的、用于加密代码流的可能操作的简化流程图;
图16A是示出根据实施例的、用于测量给定代码的完整性的可能操作的简化流程图;
图16B是示出根据至少一个实施例的、用于测量给定代码的完整性的示例架构的框图;
图17是示出根据至少一个实施例的示例密码计算环境的框图;
图18是示出根据至少一个实施例的示例处理器核和存储器的框图;以及
图19A是示出根据一些实施例的示范有序管线和示范寄存器重命名无序发出/执行管线的框图;
图19B是示出根据一些实施例的、将被包含在处理器中的示范寄存器重命名无序发出/执行架构核和有序架构核的示范实施例的框图;
图20是根据至少一个实施例的示例计算机架构的框图;以及
图21是根据本公开的实施例的、与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令形成对照的框图。
具体实施方式
以下公开提供了用于计算环境中的存储器隔间的密码隔离的各种可能实施例或示例。如本文所使用的,术语“密码隔离”旨在表示由用不同密钥和/或调整(tweak)所加密的存储器的不同区域产生的隔离。隔离的存储器隔间可由虚拟机(VM)、应用、函数、或线程的数据结构和/或代码组成。因此,隔离可以以任意粒度级别来支持,诸如例如,虚拟机之间的隔离、应用之间的隔离、函数之间的隔离、线程之间的隔离、或数据结构(例如,几个字节结构)之间的隔离。
本申请中公开的实施例包括在计算装置的处理器(例如,中央处理单元(CPU))中保存的多个密钥。每个密钥用于加密和解密处理器的核内的单个隔离存储器隔间的数据或代码。在数据或代码离开核边界并进入核外部的存储器(例如,L1高速缓存)之前,在核中对数据或代码进行加密。类似地,在将加密的数据或代码从存储器(例如,L1高速缓存)交叉读取到处理器的寄存器中之后,并且在使其对诸如虚拟机、应用、函数或线程之类的核外部的实体可访问之前,在核内对加密的数据或代码进行解密。与特定存储器隔间相关联的数据或代码的加密和解密操作可以由密码算法使用与该存储器隔间相关联的密钥来执行。
在至少一些实施例中,密码算法还可以使用调整作为输入。通常,“密钥”和“调整”两者都旨在表示由加密或解密过程所使用的秘密。密钥可以是唯一值,至少在存储器隔间之间是密码隔离的。密钥可以被保存在处理器寄存器中或者被保存在通过新指令集扩展而可访问的新处理器存储器(例如,处理器高速缓存、内容可寻址存储器(CAM)等)中。调整可以从编码的指针导出,并且在至少一些场景中,还可以包括与存储器隔间相关联的上下文信息。
本申请中公开的至少一些实施例涉及基于指针的数据加密和解密,其中用标签和/或其他元数据来编码到数据或代码的存储器位置的指针,并且所述指针可以用于导出对数据或代码密码(例如,加密和解密)算法的调整输入的至少一部分。因此,可以在密码寻址层与数据/代码加密及解密之间创建密码绑定。这隐含地施加了边界,因为偏出对象(例如,数据)的末端的指针很可能将不正确的标签值用于该相邻对象。在一个或多个实施例中,用到存储器位置和元数据的线性地址(在本文也称为“存储器地址”)来编码指针。在一些指针编码中,指针中的地址的切片或段包括多个位,并且基于秘密地址密钥和包括元数据的调整来加密(和解密)。其他指针可以用明文存储器地址(线性地址)和元数据来编码。
一个或多个实施例可以可选地包括数据或代码加密与到该数据或代码的指针之间的绑定。可以通过使用基于指针的调整和秘密数据密钥在存储器位置处加密数据或代码来实现绑定数据或代码加密和指针。用于加密(和解密)数据或代码的基于指针的调整可以从编码的指针和潜在附加上下文信息中导出。在一个实施例中,可以至少部分基于编码的指针中的地址的加密切片和编码的指针中的元数据来创建用于数据的基于指针的调整。在其他实施例中,存储器地址可以被解密和解码,并且与在指针和/或附加上下文信息中编码的元数据组合,以创建用于加密/解密数据的基于指针的调整。在进一步的实施例中,被编码在指针中的明文存储器地址(线性地址)可以被用作基于指针的数据调整,潜在地与被编码在指针中的元数据一起。在至少一些实施例中,与指针分开存储的上下文信息也可以被包括在基于指针的数据调整中。
为了说明存储器隔间的密码隔离的若干实施例,重要的是首先理解与数据保护和存储器安全性相关联的操作和活动。因此,下面的基本信息可以被视为可以适当地解释本公开的基础。
当前计算技术(例如,用于进程/内核分离的页表、虚拟机管理器、受管理的运行时间等)已经使用了架构和元数据来提供数据保护和隔离。例如,在先前的解决方案中,CPU边界外部的存储器控制器支持以较粗粒度(例如,应用)的存储器加密和解密,并且经由访问控制来实现加密数据的隔离。通常,密码引擎被放置在存储器控制器中,该存储器控制器在CPU核外部。为了被加密,数据从核行进到存储器控制器,带有对于哪些密钥应用于加密的一些标识。该标识经由物理地址中的位来传递。因此,提供附加密钥或调整的任何偏差可能导致增加的费用(例如,对于新总线)或从地址总线“窃取”的附加位,所述附加位用于允许随物理地址而携带对于密钥或调整的附加索引或标识。访问控制可要求使用元数据,并且处理器将使用查找表来编码与所有权、存储器大小、位置、类型、版本等的数据有关的策略或数据。动态地存储和加载元数据需要附加存储(存储器开销)并且影响性能,特别是对于细粒度元数据(诸如功能即服务(FaaS)工作负荷或对象边界信息)。
如本文所公开的,存储器隔间的密码隔离可解决许多上述问题(及更多问题)。密码隔离可以利用基本上新的细粒度保护模型来使进程分离的传统模式、用户空间和内核冗余。在存储器隔间的密码隔离的情况下,保护是密码的,其中处理器和加速器同样利用秘密密钥(以及可选地利用调整)和密码来以越来越细的粒度提供访问控制和分离。实际上,本文实施例支持小至一字节对象到大至整个虚拟机的数据和代码的隔离存储器隔间。因此,尽管实施例允许虚拟机隔离,但本文所公开的密码隔离可导致各个应用或函数变成边界,从而允许经由指针来共享地址空间。在至少一些实施例中,指针可以被密码编码或非密码编码。另外,由于实施例使能下至大小仅为一个或多个字节的各个数据对象的隔离和受控访问,所以本文实施例以显著更大的粒度和性能水平提供多租用支持。此外,在一个或多个实施例中,加密和解密在处理器核内部、在核边界内发生。因为加密在数据被写入核外部的存储器单元(诸如L1高速缓存或主存储器)之前发生,所以不必从物理地址“窃取”位来传达密钥或调整信息,并且可支持任意大数量的密钥和/或调整。而且,由于操作发生在核内,因此微架构管线的成本被最小化。本文的一个或多个密码隔离实施例也可以被称为“指令保护扩展(IGX)”。然而,该术语不旨在是限制性的,并且仅仅提供了可用于指代一个或多个实施例的术语的一个可能示例。
本文所公开的密码隔离实施例还可利用密码寻址层的概念,其中处理器基于隐式和显式元数据(例如上下文信息)和/或存储器地址本身的切片(例如,作为对可调整块密码的调整(例如具有密文窃取的基于XOR-加密-XOR的调整码本模式(XTS)))对软件分配存储器地址(线性/虚拟地址空间,还称作“指针”)的至少一部分进行加密。除了常见明文或密文输入及密钥之外,如本文所使用的“调整”还可表示对块密码的额外输入等等。调整包括表示值的一个或多个位。在一个或多个实施例中,调整可组成块密码的初始化矢量(IV)的全部或一部分。所得的密码编码的指针可包括存储器地址的加密部分(或切片)和编码的元数据的一些位(例如,上下文信息)。当执行地址的解密时,如果用来创建调整的信息(例如隐式和显式元数据、存储器地址的明文地址切片等)对应于通过存储器分配器(例如软件分配方法)对存储器地址的原始分配,则该过程能够对地址正确解密。否则,随机地址结果将引起错误并且被处理器所捕获。
这些密码编码的指针(或其部分)可进一步由处理器用作对于用来对它们所表示的数据(通过密码编码指针所引用的数据)进行加密/解密的数据加密密码的调整,从而创建密码寻址层与数据/代码加密之间的密码绑定。在一些实施例中,密码编码的指针可以被解密和解码以获得线性地址。线性地址(或其一部分)可以由处理器用作对数据加密密码的调整。备选地,在一些实施例中,存储器地址可以不被加密,但是指针仍然可以用表示指针中的唯一值的一些元数据来编码。在该实施例中,编码的指针(或其一部分)可以由处理器用作对数据加密密码的调整。应当注意,用作对块密码的输入以便对存储器地址进行加密/解密的调整在本文中又称作“地址调整”。类似地,用作对块密码的输入以便对数据进行加密/解密的调整在本文中又称作“数据调整”。
在密码隔离中,在数据安全基本上链接到密码存储器寻址的情况下,对数据的处理和细粒度密码访问控制是重要的。密码计算将全部计算矢量从CPU变换到GPU、从加速器变换到FPGA等。因此,在密码操作方面变得相关的能力提供对数据对象的粒度访问控制,同时在系统的每一级防止缓冲器上溢、类型混淆和时间(例如释放后使用)漏洞。密码代码可本机安全地执行,而无需解译器或管理运行时来提供存储器和类型安全。存储器可从不可访问域和容器移动到全局共享存储器模型,其中数据基于密码访问控制机制而用可配置访问性来密码隔离。因此,难以缩放分布式准许、分页及关联控制结构不复存在。甚至文件也可安全地直接存储在存储器中(例如非易失性存储器模块中,例如非易失性双列直插存储器模块(NVDIMM)),被单独加密、通过密码来确定大小以及从软件错误是不可破坏的。这可牵连功能安全、可靠性和多租户,潜在地允许更大推测性以用于改进处理性能。
密码继续变快和变轻。例如,高级加密标准(AES)数十年来是数据加密的支柱,使用128位块密码。同时,存储器寻址如今通常为64位。虽然本文的实施例可参照64计算机的64位存储器寻址来示出和解释,但是所公开实施例并不旨在限制于此,而是能够易于适合适配32位、128位或者指针的任何其他可用位大小。同样,本文的实施例可进一步适合适配块密码的各种大小(例如64位、48位、32位、16位等,使用Simon、Speck、PRINCE或者任何其他块密码)。
适合于指针加密的轻量密码近来已经出现。例如,PRINCE密码能够在3个时钟中实现,在10 nm工艺中要求少至799 μm2的面积,从而在硅面积的十分之一中提供AES的等待时间的一半。密码隔离可利用这些新密码以及其他密码,从而引入新计算机架构概念,包括但不限于:(i)密码寻址,即,在处理器使用与所引用数据(例如指针中嵌入的元数据和/或外部元数据)有关的上下文信息、地址本身的切片或者它们的任何适当组合作为调整对数据指针的加密;以及(ii)在核使用通过密码编码的指针或者其部分、非通过密码编码的指针或者其(一个或多个)部分、与参考数据有关的上下文信息或者它们的任何适当组合作为数据加密的调整对数据本身的加密。可调整的多种加密模式能够用于这个目的,包括元数据(例如计数器模式(CTR)以及具有密文窃取的基于XOR-加密-XOR(XEX)的调整码本模式(XTS))。除了提供数据保密性的加密之外,其隐式完整性还可允许处理器确定是否使用正确密钥流和调整对数据正确解密。在一些块密码加密模式中,块密码创建密钥流,该密钥流然后与输入块相组合(例如使用XOR运算),以产生加密或解密块。在一些块密码中,密钥流被馈送到下一个块密码中以执行加密或解密。
图1是根据本公开的至少一个实施例的、用于使用安全存储器访问逻辑来实现存储器隔间的密码隔离的示例计算装置100的简化框图。在所示的示例中,计算装置100包括具有核104和存储器组件的处理器102,所述存储器组件是诸如高速缓存170(例如,L1高速缓存、L2高速缓存)和补充处理器存储器180。核104包括安全存储器访问逻辑106,其包括用于基于各种密钥和/或调整来加密数据的加密存储逻辑150以及用于基于所述密钥和/或调整来解密数据的解密加载逻辑160。核104还可包括用于生成密钥的句柄的句柄生成器108。下面将更详细地描述加密存储逻辑150、解密加载逻辑160和句柄生成器190。
处理器102还包括寄存器110,其可以包括例如通用寄存器和专用寄存器(例如,控制寄存器、模型特定的寄存器(MSR)等)。寄存器110可以包含可以在一个或多个实施例中使用的各种数据,诸如编码的指针114和上下文标识符118。编码的指针可以被密码编码或非密码编码。编码的指针与一些元数据一起被编码。如果编码的指针被密码编码,则地址位的至少一部分(或切片)被加密。在一些实施例(例如,不知晓上下文的处理器)中,用于加密和解密的密钥116可被存储在寄存器110中。在其他实施例(例如,知晓上下文的处理器)中,密钥可以被存储在其他存储器中,例如补充处理器存储器180。
安全存储器访问逻辑106利用与编码的指针114有关的元数据,所述元数据被编码到编码的指针114的未使用位中(例如64位地址的非规范位或者例如由操作系统所留出的地址的范围,使得地址范围的对应高阶位可用来存储元数据),以便保护和/或提供对编码的指针114所指向的存储器位置的访问控制。例如,由安全存储器访问逻辑106所提供的元数据编码和解码能够阻止编码的指针114被操纵以引起缓冲器上溢,和/或能够阻止程序代码访问它没有被准许访问的存储器。当存储器被分配(例如由操作系统在堆中)并且根据多种不同方式(包括:通过使用诸如malloc、alloc或new之类的函数;或者经由加载器隐式地或者由编译器静态分配存储器等)的任一种来提供给执行程序时,指针可被编码。因此,采用地址元数据对指向所分配存储器的编码的指针114进行编码。
地址元数据能够包括有效范围元数据。有效范围元数据允许执行程序操纵有效范围内的编码的指针114的值,但是在使用超出有效范围的编码的指针114来访问存储器时将破坏编码的指针114。作为替代或补充,有效范围元数据能够用来识别有效代码范围,例如准许程序代码访问的存储器的范围(例如编码范围信息能够用来对寄存器设置显式范围)。能够在地址元数据中编码的其他信息包括对编码的指针114的访问(或准许)限制(例如,编码的指针114是否能够用来写入、执行或读取所引用存储器)。
在至少一些其他实施例中,其他元数据(或上下文信息)能够在编码的指针114的未使用位中编码,例如明文地址切片的大小(例如编码的指针中嵌入的存储器地址的明文切片中的位的数量)、存储器分配大小(例如通过编码的指针所引用的所分配存储器的字节)、数据或代码的类型(例如通过编程语言所定义的数据或代码的类)、准许(例如编码的指针的读、写和执行准许)、数据或代码的位置(例如存储数据或代码的位置)、将要存储指针本身的存储器位置、数据或代码的所有权、编码的指针的版本(例如每次为新分配存储器创建编码的指针、在时间上确定所引用的分配存储器的当前所有权时递增的顺序号)、随机化位的标签(例如针对与编码的指针的关联所生成)、特许等级(例如用户或管理程序)、密码上下文标识符(或密码上下文ID)(例如每个编码的指针的随机化或确定性唯一值)等。例如,在一个实施例中,地址元数据能够包括大小元数据,所述大小元数据对编码的指针中的明文地址切片的大小进行编码。大小元数据可指定编码的指针中能够通过执行程序所修改的最低阶位的数量。大小元数据取决于程序所请求的存储器量。相应地,如果请求16个字节,则大小元数据被编码为4(或者指针的五个上位中的00100),以及指针的4个最低位被指配为可修改位,以允许对存储器的所请求16个字节进行寻址。在一些实施例中,地址元数据可包括与编码的指针关联的随机化位的标签,以使标签对于对手而言是不可预测的。对手可设法猜测标签值,使得对手能够访问指针所引用的存储器,以及与用于生成版本值的确定性方式相比,随机化标签值可使得对手将成功猜测该值是更不可能的。在一些实施例中,指针可包括版本号(或另一确定性不同值),所述版本号在时间上确定所引用的分配数据的当前所有权,作为对随机化标签值的代替或补充。即使对手能够例如因为用于生成版本号的算法是可预测的而猜测存储器区的当前标签值或版本号,对手也仍然可能因对手没有对密钥的访问权而无法正确生成指针的对应加密部分,所述密钥以后将用来对指针的那个部分进行解密。
示例安全存储器访问逻辑106体现为处理器指令的组成部分(例如作为处理器指令集架构的组成部分)或者微码(例如只读存储器中存储并且由处理器102直接执行的指令)。在其他实施例中,安全存储器访问逻辑106的部分可体现为硬件、固件、软件或者其组合(例如作为由计算装置100的特许系统组件142所执行的编程代码)。在一个示例中,解密加载逻辑160和加密存储逻辑150被体现为新的加载(读取)和存储(写入)处理器指令的一部分,所述指令执行相应的解密和加密操作以隔离存储器隔间。解密加载逻辑160和加密存储逻辑150验证关于利用新处理器指令的存储器读取和写入操作(例如,其可以是诸如MOV之类的现有处理器指令的对应物)的编码的元数据,其中通用寄存器被用作存储器地址以从存储器读取值(例如,加载)或将值写入到存储器(例如,存储)、以及关于涉及存储器的“使用”的其他操作(例如,具有存储器操作数的算术指令(例如ADD)以及控制转移指令(例如CALL/JMP等))的编码的元数据。控制转移指令的存储器操作数可以指定存储器中存储控制转移的目的地地址的位置。
安全存储器访问逻辑106是计算装置100可执行的,以例如在由计算装置100对程序(例如用户空间软件应用134A或134B)的执行期间提供编码的指针“内联”的安全性。如本文所使用的术语“间接地址”和“指针”各自可表示存储其他数据或指令的存储器位置的地址(例如虚拟地址或线性地址)等等。在示例中,存储其中存储数据或代码的存储器位置的编码存储器地址的寄存器可充当指针。如此,编码的指针114可体现为例如数据指针(该数据指针表示数据的位置)、代码指针(该代码指针表示可执行代码的位置)、指令指针或栈指针。如本文所使用的,“上下文信息”包括“元数据”并可表示与编码的指针114有关或相关的信息等等,例如有效数据范围、有效代码范围、指针访问准许、明文地址切片的大小(例如编码为位中的幂)、存储器分配大小、数据或代码的类型、数据或代码的位置、数据或代码的所有权、指针的版本、随机化位的标签、版本、软件的特许等级、密码上下文标识符等。
如本文所使用的“存储器访问指令”可表示“MOV”或“LOAD”指令或者使数据在一个存储位置(例如存储器)被读取、复制或者以其他方式而被访问并且移入另一个存储位置(例如寄存器)的任何其他指令(其中“存储器”可表示主存储器或高速缓存,例如某种形式的随机存取存储器,而“寄存器”可表示例如硬件等的处理器寄存器)或者访问或操纵存储器的任何指令等等。又如本文所使用的“存储器访问指令”可表示“MOV”或“STORE”指令或者使数据在一个存储位置(例如寄存器)被读取、复制或者以其他方式而被访问并且移入另一个存储位置(例如存储器)的任何其他指令或者访问或操纵存储器的任何指令等等。在本文的一个或多个实施例中,本文将进一步描述用于使用编码的指针来加载加密的数据或代码并在核内执行解密的新指令,或用于在核内执行对数据或代码的加密并存储所加密的数据或核的新指令(例如,“IGXMOV”指令)。
但是,本文所公开的指针编码/解码技术并不局限于加载/存储指令。例如,控制转移指令(例如调用和跳转指令)能够适合根据如本文针对新加载/存储指令(例如,IGXMOV)所述的方式相似的方式来操控在核内执行加密和解密的编码的指针,其中代码在有效地址范围之内执行。同样,指令指针(例如寄存器)可以是范围限定的,给定由控制转移指令(例如JMP/CALL)所指定的编码地址使编码地址被用于指令指针,因而将有效程序执行限制到有效地址范围之内(实际上,程序计数器能够正确递增,直至它达到编码范围末端)。此外,在一些架构中,任何数量的处理器指令可具有采取编码的指针形式的存储器操作数(例如,诸如ADD、SUB、MUL、AND、OR、XOR等的算术操作可具有采取编码的指针和/或源/目的地寄存器操作数的形式的源/目的地存储器引用)。但是在其他架构中,存储器操作数的格式可改变。例如,寄存器可根据某种方式(例如通过加法)来组合,以产生有效地址。另外,其他参数可选地可被包含,例如比例因子,该比例因子将寄存器值之一(例如索引)和/或被直接相加的指令中嵌入的常数位移值相乘。此外应当注意,虽然说明性实施例提到“指令”,但是这类指令可体现为例如处理器指令、操作系统例程或者其他形式的计算机程序代码。
示例安全存储器访问逻辑106包括加密存储逻辑150和解密加载逻辑160。安全存储器访问逻辑106还可包括地址编码逻辑以对指针进行编码,这可以包括对线性地址的一部分(或切片)进行加密并且将元数据存储在指针的非标准位中。安全存储器访问逻辑106还可以包括地址解码逻辑,其用于解码指针以获得线性地址。说明性地,地址解码逻辑被体现在加密存储逻辑150和解密加载逻辑160中,但是可被体现在其他处理器指令中,或者作为独立指令或指令系列或者作为由特许系统组件(例如操作系统内核或虚拟机监测器)所执行的高级代码或者作为指令集模拟器。如下面更详细描述,地址编码逻辑和地址解码逻辑各自使用元数据(例如有效范围、准许元数据、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签值、特许等级(例如用户或管理程序)、密码上下文ID等中的一个或多个)和秘密密钥(例如密钥116)对编码的指针114进行操作,以便在存储器分配/访问级别保护编码的指针114。
加密存储逻辑150和解密加载逻辑160对要被存储在由编码的指针114引用的存储器位置处或从由编码的指针114引用的存储器位置获得的数据执行密码操作。在一个或多个实施例中,密码操作可以使用编码的指针114(或从编码的指针生成的线性地址)的至少一部分、秘密密钥(例如,密钥116),以及可选地使用调整,以便通过将数据加密绑定到编码的指针来保护由编码的指针114引用的存储器位置处的数据。
示例编码的指针114被体现为寄存器110(例如处理器102的通用寄存器)。示例秘密密钥11可由特许系统组件142的密钥创建模块148来生成,并且存储在寄存器110之一(例如专用寄存器或控制寄存器,例如机器特定寄存器(MSR))或者是处理器102可读的另一个存储器位置中。在一些实施例中,秘密密钥116被存储在仅由处理器(诸如补充处理器存储器180)可读的位置中。在至少一个实施例中,补充处理器存储器180可以被实现为新的高速缓存或内容可寻址存储器(CAM)。在一个或多个实现中,补充处理器存储器180可以专用于存储与密码隔离有关的信息,诸如密钥和潜在调整、凭证和/或上下文ID。
在其他实施例中,用来保护密码编码的指针、数据和/或代码的秘密密钥116能被存储在另一个存储器位置中,例如固件中、数据存储装置126或另一个数据存储装置的安全部分中或者适合于执行本文所述功能的另一种形式的存储器。在一些实施例中,秘密密钥116可跨安全通信信道来传送,并且由可执行(例如操作系统或虚拟机监测器,例如以下所述的特许系统组件142)来恢复。在虚拟机从一个机器迁移到另一个机器的虚拟化环境中,和/或在计算装置100上运行的虚拟机、进程或程序在使用秘密密钥来保护编码的指针和所引用数据和/或代码之后开始睡眠/冬眠模式并且以后恢复的情况下,秘密密钥可能需要复原和恢复。在这些情况下,秘密密钥能够在睡眠/冬眠模式之前被存储或者可能跨(安全)通信信道来传送,并且然后由可执行文件(例如操作系统或虚拟机监测器,例如特许系统组件142)来检索/恢复。
应注意,本文描述的实施例允许将任何数量的秘密密钥和/或调整用于与处理器相关联的存储器隔间。为了隔离特定类型的存储器隔间(例如,任何上下文的数据和代码、任何上下文的一个或多个数据结构、任何上下文的一个或多个代码段),可对每个存储器隔间使用不同的密钥。例如,为了隔离虚拟机,可以针对每个虚拟机使用不同的密钥,为了隔离较高级别上下文内的应用(例如,虚拟机),可以针对该较高级别上下文中的每个应用使用不同的密钥。为了隔离较高级别上下文内的函数(例如,应用、虚拟机),可以针对该较高级别上下文中的每个函数使用不同的密钥。为了隔离较高级别上下文(例如,应用、虚拟机、函数)内的线程,可针对该较高级别上下文中的每个线程使用不同密钥。为了隔离特定上下文内的代码段(例如,虚拟机、应用、函数、或线程),可针对该特定上下文中的每个代码段使用不同的密钥。为了隔离特定上下文内的数据结构(例如,应用、虚拟机、函数、线程),可以针对该特定上下文中的每个数据结构使用不同的密钥。备选地,相同的密钥可被用于特定类型的存储器隔间的每个隔间,但密钥可与用于该类型的存储器隔间的每个实例的不同调整进行配对以施加隔间实例的隔离。例如,计算装置中的虚拟机可以使用相同的密钥但不同的调整而被密码隔离,虚拟机中的应用可以使用相同的密钥但不同的调整而被密码隔离,应用或者虚拟机中的函数和/或线程可以使用相同的密钥但不同的调整而被密码隔离,任何上下文中的数据可以使用相同的密钥但不同的调整而被隔离。
在进一步的非限制性示例中,密钥和/或调整可被用于针对特定上下文来密码地隔离所选存储器隔间。例如,考虑分别为虚拟机的第一应用和第二应用生成的第一密钥和第二密钥。可以基于第一密钥对第一应用的数据和代码进行加密。对于第二应用,可以基于第二密钥来加密代码,但是可以基于第二密钥和调整、或者基于第二密钥和针对被加密的每个数据结构(例如,少至一个字节)的不同调整来加密数据,从而在第二应用内产生数据的多个隔离的存储器隔间。备选地,第三密钥或多个其他密钥可被用于加密第二应用的数据。对于第二应用中的函数和线程,可以使用第二密钥、使用第二密钥和调整(因此在应用内密码地隔离数据)、或者使用第二密钥和针对被加密的每个数据结构的不同调整(因此在函数内密码地隔离数据)来加密由函数(或线程)所使用的数据。函数或线程也可以通过建立其自己的凭证、获得其自己的密钥(或多个密钥)、以及使用密钥(或多个密钥)和/或调整来加密其访问的数据,以密码地隔离其使用的数据的存储器隔间。通常,可以使用密钥、调整或其任何合适组合来密码地隔离存储器隔间。
密钥也可以被生成并与密码编码的指针相关联,以用于加密/解密在指针中编码的地址部分(或切片)。这些密钥可以与关联于指针的密钥相同或不同,以对被密码编码的指针所引用的数据(或代码)执行数据(或代码)加密/解密操作。为了便于解释,本文进一步描述的实施例提到“秘密地址密钥”或“地址密钥”以表示存储器地址的加密和解密操作中的秘密密钥的使用,以及提到“秘密数据密钥”或“数据密钥”以表示对数据或代码进行加密和解密的操作中的秘密密钥的使用。
在存储器分配操作(例如“malloc”)时(或者期间),缓冲器的存储器范围被分配,返回指针连同元数据(例如范围、准许元数据、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签、特许等级、密码上下文ID等的一个或多个)。在一个示例中,存储器分配操作可对编码的指针114中的明文范围信息进行编码(例如在未使用/非规范位中,在加密之前),或者将元数据作为一个或多个独立参数来提供给指令,其中(一个或多个)参数指定范围、代码准许信息、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签、特许等级(例如用户或管理程序)、密码上下文ID或者它们的某个适当组合。说明性地,存储器分配操作逻辑可被体现在特许系统组件142中。存储器分配操作使指针114采用元数据(例如范围、准许元数据、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签值、特许等级、密码上下文ID、它们的某个适当组合等)而被编码。可在编码的指针114的未使用部分(例如64位地址的非规范位)中存储元数据。对于一些元数据或者元数据的组合,指针114可在较大地址空间(例如128位地址、256位地址)中编码,以适配元数据或者元数据组合的大小。
为了确定有效范围元数据,示例范围规则逻辑选择有效范围元数据,以指示编码的指针114所引用的缓冲器大小的上限。地址调节逻辑根据需要调节有效范围元数据,使得地址范围中的地址的上地址位(例如最高有效位)没有发生变化,只要编码的指针114表示处于范围元数据所指示的有效范围之内的存储器位置。这使编码的指针114能够被操纵(例如通过软件执行算术运算等),但是仅在操纵没有使编码的指针114超出有效范围(例如使缓冲器上溢)时。
在实施例中,使用有效范围元数据来选择将要加密的编码的指针114的一部分(或切片)。在其他实施例中,将要加密的编码的指针114的切片可以是先验已知的(例如上32位、下32位等)。使用秘密地址密钥(例如,密钥116)以及可选地使用地址调整对编码的指针114的所选切片(以及一些实施例中的调节)进行加密,如下面所述。在存储器访问操作(例如读、写或执行操作)时,对先前编码的指针114进行解码。要这样做,使用秘密密钥(例如,密钥116)和地址调整(如果在加密中使用了地址调整)对编码的指针114的加密切片(以及一些实施例中的加密调节)进行解密,如下面进一步所述的。
编码的指针114基于适当操作来返回到其原始(例如规范)形式,以便恢复编码的指针114的原始值(例如真、原始线性存储器地址)。要这样做,在至少一个可能实施例中,去除编码的指针114的未使用位中编码的地址元数据(例如使未使用位返回到其原始形式)。如果编码的指针114成功解码,则存储器访问操作成功完成。但是,如果已经操纵编码的指针114(例如由软件、无意地或者由攻击者),以使得其值下降到范围元数据所指示的有效范围之外(例如使缓冲器上溢),则编码的指针114可能因对指针中加密的地址位所执行的解密过程而被破坏。被破坏指针将引起错误(例如,在地址没有如从分页结构/页表所提供被映射时的一般保护错误或者页错误)。可导致错误被生成的一个条件是稀疏地址空间。在这种情形中,被破坏地址可能落在未映射页上,并且生成页错误。这样,安全存储器访问逻辑106使计算装置100能够提供针对缓冲器上溢攻击及类似利用的编码的指针安全性。
本文所公开的编码的指针安全技术的实施例还能够用于软件调试目的或者作为访问控制机制,以阻止软件访问软件没有针对其而被准许的存储器的区域。另外,与其他缓冲器上溢减轻技术相比,所公开的编码的指针安全技术的实施例能够在没有任何附加存储器读/写或者没有任何附加指令或者没有任何二进制修改或者没有重新编译传统代码的需要的情况下进行操作。此外,所公开技术的实施例响应能够读取存储器并且改写指针值的对手以及能够创建/选择任意指针值的对手。此外,所公开技术的实施例能够从极小存储器范围缩放到极大存储器范围,或者能够通过使用不同编码指针来级联其他存储器范围之内的存储器范围。更进一步,所公开技术的实施例对动态存储器分配是有效的(例如因可编程地创建范围编码指针内联的能力)。另外,所公开技术的实施例能够扩展成提供对数据的代码块(代码位置)访问控制。此外,通过保留包含地址的元数据的地址范围,所公开技术的实施例与x86指令集的64位版本以及ARM、MIPS、PowerPC和其他处理器架构是兼容的,包括更宽(例如大于64位)地址位架构和更小(例如32位)架构。
所公开技术的一些实施例支持传统代码兼容性,如下面所述。如本文所使用的“传统代码”可表示设计成在早期或者现在过时或者不再被支持的计算机架构上进行工作的计算机代码的版本。例如,传统代码可包括最初为32位处理器所开发但是现在运行于64位处理器的软件。“传统代码”还表示没有使用或者适合使用专用指令以用于如本文所述对间接地址进行编码和加密所设计的计算机代码的版本。本文所公开的至少一些实施例能够在没有使用新程序指令并且相应地无需重新编译传统代码的情况下实现。
现在更详细参照图1,计算装置100可体现为用于执行本文所述功能的任何类型的电子装置。例如,计算装置100非限制性地可体现为智能电话、平板计算机、可佩戴计算装置、膝上型计算机、笔记本计算机、移动计算装置、蜂窝电话、手机、消息传递装置、车辆远程信息处理装置、服务器计算机、工作站、分布式计算系统、多处理器系统、消费者电子装置和/或配置成执行本文所述功能的任何其他计算装置。如图1所示,示例计算装置100包括至少一个处理器102,所述处理器102采用安全存储器访问逻辑106所体现。
计算装置100还包括存储器122、输入/输出子系统124、数据存储装置126、显示装置128、用户接口(UI)子系统130、通信子系统132、至少一个用户空间应用134A和特许系统组件142(所述特许系统组件142说明性地包括密钥创建模块148)。在此实例中,计算装置100还包含用户空间应用134B,其将在本文中进一步参考以说明应用134A与134B之间的密码隔离。然而,密码隔离可以在存储器隔间的任何组合之间实现,其可以或可以不包括应用隔离。在其他实施例中,计算装置100可包括其他或附加组件,例如移动和/或固定计算机中常见的组件(例如各种传感器和输入/输出装置)。另外,在一些实施例中,示例组件的一个或多个可结合在另一个组件中或者以其他方式形成另一个组件的一部分。计算装置100的组件中的每个可体现为软件、固件、硬件或者软件和硬件的组合。
处理器102可体现为能够执行本文所述功能的任何类型的处理器。例如,处理器102可体现为单核或多核中央处理单元(CPU)、多CPU处理器或处理/控制电路、或者多个多样处理单元或电路(例如CPU和图形处理单元(GPU)等)。
处理器存储器可以被提供在核104内部和核边界外部。例如,寄存器110可以被包括在核104内,并且可以被用于存储编码的指针(例如114)、用于加密和解密数据或代码的秘密密钥116、以及与当前执行的应用的凭证相关联的上下文ID 118。处理器102还可以包括高速缓存170,其可以是例如L1和/或L2高速缓存,其中当预期数据被处理器102获取而从存储器122检索时,存储该数据。
处理器还可以包括在核边界外部的补充处理器存储器180。补充处理器存储器180可以是软件不可访问的专用高速缓存,并且可以在处理器是知晓上下文的时被使用。当处理器102可以认证上下文的凭证时,处理器被认为是“知晓上下文的”。如本文所使用的“上下文”旨在表示诸如虚拟机、应用、函数、或线程之类的软件实体。当处理器102是知晓上下文的时,补充处理器存储器180可以存储由处理器生成或获得的密钥116,并且因此可以对软件隐藏密钥。在一些知晓上下文的实施例中,补充处理器存储器180还可以存储调整117或将被用于生成调整的上下文信息。然而,在其他知晓上下文的实施例中,调整可由软件管理。备选地,处理器可以是不知晓上下文的。如果处理器102是不知晓上下文的,则处理器可能不能认证上下文的凭证。因此,密钥116可以由软件管理。在一些实施例中,调整117也可由软件管理。
通常,可以基于特定需要和架构实现以任何合适的方式处理密钥和调整。在第一实施例中,密钥和调整二者可以是隐式的,并且因此由处理器管理。在该实施例中,密钥和调整可以由处理器内部地生成或者由安全处理器外部地生成。在第二实施例中,密钥和调整都是显式的,并且因此由软件管理。在该实施例中,使用包括引用密钥和调整的操作数的指令在指令调用时间引用密钥和调整。密钥和调整可以存储在寄存器或存储器中,在该实施例中。在第三实施例中,密钥可由处理器管理,而调整可由软件管理。
补充处理器存储器180可另外存储上下文ID到凭证映射188。上下文ID到凭证映射188可以包括映射到每个凭证的上下文ID的各种上下文(例如,虚拟机、应用、函数、或线程)的凭证。当上下文正运行时,该映射188可以用于验证由上下文呈现给处理器的凭证。
计算装置100的存储器122可以被体现为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。易失性存储器是需要电力来维持由介质所存储的数据的状态的存储介质。易失性存储器的示例可以包括各种类型的随机存取存储器(RAM),例如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。可用于存储器中的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在特定实施例中,存储器122的DRAM符合由电子装置工程联合委员会(JEDEC)发布的标准,例如用于双倍数据速率(DDR)SDRAM的JESD79F、用于DDR2 SDRAM的JESD79-2F、用于DDR3 SDRAM的JESD79-3F、或用于DDR4SDRAM的JESD79-4A(这些标准在www.jedec.org可获得)。非易失性存储器是不需要电力来维持由介质所存储的数据的状态的存储介质。非易失性存储器的非限制性示例可以包括以下项中的任一个或组合:固态存储器(例如平面或3D NAND闪速存储器或NOR闪速存储器)、3D交叉点存储器、使用硫族化物相变材料(例如硫族化物玻璃)的存储器装置、字节可寻址非易失性存储器装置、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器(例如铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM)双向存储器、纳米线存储器、电可擦除可编程只读存储器(EEPROM)、其他各种类型的非易失性随机存取存储器(RAM)、和磁存储存储器。
在一些实施例中,存储器122包括一个或多个存储器模块,例如双列直插存储器模块(DIMM)。在一些实施例中,存储器122可以位于与包括处理器102的集成电路芯片不同的一个或多个集成电路芯片上,或者可以与处理器102位于相同的集成电路芯片上。存储器122可以包括任何适当类型的存储器,并且不限于在各种实施例中的存储器的特定速度或技术。
在操作中,存储器122可以存储在计算装置100的操作期间使用的各种数据和软件,以及操作系统、应用、程序、库、和驱动程序。存储器122可以存储由处理器102执行的指令序列和/或数据。
存储器122例如经由I/O子系统124在通信上耦合到处理器102。I/O子系统124可体现为电路和/或组件,以促进与处理器102、存储器122和计算装置100的其他组件的输入/输出操作。例如,I/O子系统124可体现为或者以其他方式包括存储器控制器集线器、输入/输出控制集线器、固件装置、通信链路(即,点对点链路、总线链路、导线、电缆、光导、印刷电路板迹线等)和/或促进输入/输出操作的其他组件和子系统。在一些实施例中,I/O子系统124可形成芯片上系统(SoC)的一部分,并且连同处理器102、存储器122和/或计算装置100的其他组件一起结合在单个集成电路芯片上。
数据存储装置126可体现为配置用于数据的短期或长期存储的任何类型的一个或多个物理装置,诸如例如存储器装置和电路、记忆卡、硬盘驱动器、固态驱动器、闪速存储器或其他只读存储器、作为只读存储器和随机存取存储器的组合的存储器装置或者其他数据存储装置。在各种实施例中,存储器122可以对存储在数据存储装置126上的数据进行高速缓存。
显示装置128可体现为能够显示数字信息的任何类型的显示器,例如液晶显示器(LCD)、发光二极管(LED)、等离子体显示器、阴极射线管(CRT)或另一种类型的显示装置。在一些实施例中,显示装置128可耦合到触摸屏或另一人机接口装置,以允许与计算装置100的用户交互。显示装置128可以是用户接口(UI)子系统130的组成部分。用户接口子系统130可包括促进与计算装置100的用户交互的多个附加装置,包括物理或虚拟控制按钮或按键、话筒、喇叭、单向或双向静物摄影机和/或摄像机等。用户接口子系统130还可包括诸如运动传感器、接近传感器和眼部跟踪装置之类的装置,所述装置可配置成检测、捕获和处理涉及计算装置100的各种其他形式的人类交互。
计算装置100进一步包括通信子系统132,该通信子系统132可体现为能够实现计算装置100与其他电子装置之间的通信的任何通信电路、装置或者其集合。通信子系统132可配置成使用任一个或多个通信技术(例如无线或有线通信)及关联协议(例如以太网、BluetoothTM、Wi-FiTM、WiMAX、3G/LTE等)来实行这种通信。通信子系统132可体现为网络适配器,包括无线网络适配器。
示例计算装置100还包括多个计算机程序组件,例如一个或多个用户空间应用(例如应用134A和134B)和特许系统组件142。用户空间应用134A和134B可体现为任何计算机应用(例如软件、固件、硬件或者其组合),所述计算机应用经由例如显示装置128或UI子系统130与最终用户直接或间接地交互。用户空间应用134A和134B的一些示例包括字处理程序、文件查看器/读取器、万维网浏览器、电子邮件程序、消息传递服务、计算机游戏、照相装置和视频应用等。特许系统组件142除此还促进计算装置100的硬件组件与用户空间应用134A和134B之间的通信。特许系统组件142的部分可体现为能够执行本文所述功能的任何操作系统,例如Microsoft Corporation的WINDOWS的某个版本、Google, Inc.的ANDROID等。作为替代或补充,特许系统组件142的一部分可体现为能够执行本文所述功能的任何类型的虚拟机监测器(例如类型I或类型II管理程序)。
示例特许系统组件142包括密钥创建模块148,其可体现为软件、固件、硬件或者软件和硬件的组合。例如,密钥创建模块148可体现为操作系统内核、虚拟机监测器或管理程序的模块。密钥创建模块148创建秘密密钥116(1)-116(N)(例如秘密地址密钥和秘密数据密钥),并且将它们写到处理器102对其具有读访问的一个或多个寄存器(例如专用寄存器)。为了创建秘密密钥,密钥创建模块148可执行例如随机数发生器或者能够生成能够执行本文所述功能的秘密密钥的另一个算法。
应当注意,大量方式可用来生成或得到本文所公开实施例的密钥。例如,虽然密钥创建模块148被示为作为计算装置100的组成部分,但是一个或多个秘密密钥可使用任何适当认证过程从任何适当外部源来得到,以便将密钥安全地传递给计算装置100,这可包括作为那些过程的组成部分来生成密钥。此外,特许系统组件142可以是置信执行环境(TEE)、虚拟机、处理器102、协处理器或者计算装置100中的任何其他适当硬件、固件或软件的组成部分或者安全地连接到计算装置100。此外,密钥可以是“秘密的”,这意在表示其值被保持为隐藏、不可访问、变模糊或者以其他方式被保护以免受未经授权行动方(例如软件、固件、机器、外来硬件组件和人类)影响。这可以包括对存储器隔间保密密钥,其中密钥用于对存储器隔间执行数据和/或代码的加密和解密。
图2示出了根据至少一个实施例的计算装置100的一些组件的附加可能细节。特别地,在图2中示出了根据一些实施例的、用于保护要在密码指令中使用的密钥的系统。处理器102可以实现句柄生成指令以生成句柄,取决于特定实现,该句柄可以被体现为句柄204A、204B或204C中的任何一个。如图2中所示,句柄204A、204B和204C分别基于明文(即,未加密的)密钥205A、205B和205C而被生成,所述密钥要在由处理器102执行的解密和加密指令中使用。例如,句柄204A包括加密的密钥206A,句柄204B包括到存储器120中存储加密的密钥206B的位置的指针207B(或引用),并且句柄204C包括到补充处理器存储器180(或软件不可直接访问的任何其他处理器存储器)中存储未加密的密钥205C的位置的指针207C(或引用)。
句柄生成指令可以调用句柄生成器108来生成句柄(在本文一般称为“句柄204”)。在各种实施例中,由处理器提供明文密钥(例如,205A、205B、205C),其可用于生成加密的密钥(例如,206A、206B)。在其他实施例中,明文密钥由执行密钥管理活动的外部安全处理器提供。在又一实施例中,明文密钥由调用应用(例如,其被置于寄存器或存储器120中的位置中)或其他合适的实体提供。在至少一个实施例中,句柄204(或密钥本身)的位置可以是对指令的隐式输入,使得处理器被配置成在每次调用句柄生成指令时将句柄存储到相同的存储器位置(例如,在补充处理器存储器180中)或寄存器。在其他实施例中,句柄204(或密钥本身)的位置可以是句柄生成指令的参数,使得处理器102被配置成在每次调用句柄生成指令时将句柄存储到相同的存储器位置(例如,在存储器120中)或寄存器。在一些实施例中,句柄204具有384位的长度,而在其他实施例中,句柄204可以具有任何其他合适的长度(例如,64位、128位、256位等),诸如例如其所包括的加密的密钥(例如,206A)或指针(例如,207B、207C)的长度。明文密钥(例如,205A、205B、205C)和加密的密钥(例如,206A、206B)也可以具有任何合适的长度。
在句柄生成指令的执行期间,明文密钥(例如,205A、205B)可基于存储在寄存器或处理器102内部的其他存储器(例如,补充处理器存储器180)内的包装密钥208来加密,使得利用句柄生成指令的软件应用不能直接访问包装密钥208(尽管在一些情形中,特许软件应用可能能够访问包装密钥)。生成的句柄204可由处理器102存储在调用软件应用可访问的寄存器(未示出)中,或者可被写入到存储器位置(例如,补充处理器存储器180)。如果句柄由处理器102输出到寄存器中,则调用软件应用可将所生成的句柄存储在存储器120(在一些实施例中,其可以是由任何数量的不同应用可访问的系统存储器)中,这可允许对为各种软件应用生成的许多句柄204的可扩展保护。
该句柄可以采用任何合适的方式被格式化。在一些实施例(例如,句柄204A)中,句柄仅包括加密的密钥206A,使得句柄是加密的密钥。在其他实施例中,例如,如果使用不同的密钥来密码地隔离应用内的不同存储器隔间,则句柄包括多个加密的密钥(例如,代码密钥和数据密钥)。在进一步的实施例中,句柄包括消息认证代码(MAC)以使能对句柄中的加密的密钥进行完整性检查。而且,句柄可基于特定需要和实现而包括任何其他合适的信息。在仍有的其他实施例(例如句柄204B)中,句柄包括到存储器120中存储加密的密钥206B的位置的指针。在仍有的进一步实施例(例如句柄204C)中,句柄包括到处理器存储器中的位置的指针,该位置不可由软件直接访问,并且在该位置处存储未加密的密钥205C。在至少一个实施例中,指针207B和/或指针207C可以用存储器地址和上下文信息(例如,标签、版本号、大小/功率元数据等)来编码。如本文先前所述,可对编码的指针的至少一部分进行加密。例如,可以对在指针中编码的存储器地址的一部分或切片(例如,64位寄存器的25位等)进行加密。
应当注意,图2中所示的一些示例(例如204A、204B)示出了其中包装(即,进一步加密)用于实现存储器隔间的密码隔离的密钥的实施例。然而,在其他实施例中,可以使用未包装的(即,未加密的)密钥来实现存储器隔间的密码隔离。相反,可以存储和访问密钥的明文版本,而无需附加加密来隐藏密钥的值。此外,尽管句柄204C包含到补充处理器存储器180中包含未加密的密钥205C的位置的指针207C,但是应当明白,可以通过加密未加密的密钥205C来应用进一步的保护层,使得指针207C引用密钥205C的加密版本,该加密版本被存储在补充处理器存储器180或软件不可直接访问的任何其他处理器存储器中。
图2还示出了这样的系统,所述系统用于允许“知晓上下文”的处理器将应用识别为唯一的并将应用标识符(本文也称为“上下文ID”)与凭证相关联,使得处理器知道哪个应用正在运行。如本文所使用的术语“上下文”旨在表示可以使用多个密钥来支持其访问的存储器区域或存储器隔间之间的密码隔离的任何软件实体。上下文的示例可以包括但不一定限于虚拟机、软件应用、函数、或线程。虚拟机是计算机系统(或软件计算机系统)的仿真。过程虚拟机可以被设计成在平台无关的环境中执行计算机程序。系统虚拟机可以被设计成提供执行整个操作系统所需的功能性,其中管理程序可以共享和管理用于多个分离环境的硬件。函数可以被定义为可执行代码块,其具有一个入口点、执行至少一个任务、并且可以或可以不向调用程序返回值。线程可以被定义为进程内的执行单元,并且多线程进程可以具有在同一地址空间中同时运行的多个线程。
在至少一个实施例中,应用将其凭证呈现给处理器。处理器生成或以其他方式获得上下文ID作为应用的唯一标识符,并将上下文ID与所呈现的凭证相关联。例如,上下文ID到凭证映射表202可以被存储在只有处理器可以访问的存储器单元中,例如补充处理器存储器180。上下文ID到凭证映射202可以使用任何合适的映射、标记或链接技术(例如,指针、索引、文件名、关系数据库、散列表等),或在“映射的”项目之间建立关系、连接或链接的任何其他技术。此外,当最初呈现凭证时,处理器可以用上下文ID设置控制寄存器,例如模型特定寄存器(MSR)。这提供了当前正在运行哪个应用的指示,使得当应用向处理器作出对应用特定密钥和其他信息和/或动作的后续请求时,应用可使用其凭证来验证处理器具有正确的标识符集合。
图3是根据至少一个实施例的通过计算装置100的各种组件的数据流300的简化流程图。数据流300假定处理器102是不知晓上下文的并且已经获得或生成密钥,或者处理器102是知晓上下文的并且应用134A已经建立其凭证并从处理器102获得密钥。图3中所示的数据流300中涉及的组件包括处理器102及其核104、高速缓存170(诸如L1高速缓存)、存储器120和应用134A。
最初,应用134A可被实例化为处理器102上的进程,并且可具有要加密的未加密的数据和/或代码302。应用134A可执行指令以加密和移动(例如,存储、写入)未加密的数据/代码302。在310,未加密的数据/代码302被传递到核104。例如,未加密的数据/代码302可以存储在寄存器中。在311,加密存储逻辑150访问未加密的数据/代码302,加密存储逻辑150至少部分基于由应用134A获得或生成的密钥而对未加密的数据/代码302执行密码算法。在一个或多个实施例中,密钥句柄(例如,包括加密的密钥、到加密的密钥的指针、或到密钥的指针)可由应用134A传递到核104作为加密和移动指令中的操作数。
在312,加密存储逻辑150生成加密的数据/代码304作为执行密码算法的结果。一旦生成了加密的数据/代码304,则在313,它被传递出核104。在图3的示例数据流300中,可以将加密的数据/代码304传递到高速缓存170(例如,处理器102中的L1高速缓存)。在314,加密的数据/代码304可以存储在存储器120(例如,计算装置100的主存储器)中。在其他实施例中,加密的数据/代码304可以绕过L1高速缓存,并且被直接存储到存储器120中。
当应用134A需要使用或执行存储在存储器120中的数据或代码时,它可以执行指令以加密和移动(例如,加载、读取)加密的数据/代码304。在315,加密的数据/代码304被传递到高速缓存170。在316,加密的数据/代码304被传递到核104。在317,解密加载逻辑160访问加密的数据/代码304,解密加载逻辑160至少部分基于由应用134A获得或生成的相同密钥而对加密的数据/代码304执行密码算法。在一个或多个实施例中,对密钥的句柄可由应用134A传递到核104作为解密和移动指令中的操作数。
在318,作为对加密的数据/代码执行密码算法的结果,解密加载逻辑160生成未加密的(或解密的)数据/代码302。一旦生成了未加密的数据/代码302,则在319,将其传递出核104。例如,未加密的数据/代码302可以通过存储在寄存器中而被使得对应用134A可用。因此,应用134A可以对未加密的数据执行操作并操纵未加密的数据,或者可以执行未加密的代码。一旦应用134A完成了对数据执行操作(或执行代码),它就可以执行另一加密和移动指令以重新加密数据或代码并将其再次存储在存储器120中。
转到图4,图4是示出根据一个或多个实施例的、用于初始化要用来密码地隔离存储器隔间的密钥的示例过程400的简化流程图。过程400包括正由不知晓上下文的处理器(例如,处理器102)执行的上下文(例如,应用134A或134B、虚拟机、函数、或线程)的一个或多个可能指令,其允许上下文对密钥进行初始化。如果处理器是不知晓上下文的,则一旦密钥被初始化,它就被后续的加密的加载或存储指令使用。上下文(例如,虚拟机、应用、函数、线程等)可以显式地引用不知晓上下文的处理器的加密的加载或存储指令中的密钥和/或调整。尽管过程400可取决于所期望的特定类型的密码隔离而由任何上下文来执行,但为了便于说明,将参考特定上下文(即应用)来描述过程400。
过程400可以在应用开始执行之后开始。在402,应用获得或生成密钥。例如,应用可执行指令以生成跨密码隔离的存储器隔间唯一的随机数。在一些实施例中,可以从熵源生成随机数。在其他实施例中,应用可执行导致访问为应用生成密钥的单独组件的指令。(一个或多个)单独组件可以在处理器102外部或在计算装置100外部(例如,在云计算环境中、在局域网中等)。
在404,可以用第一包装密钥对密钥进行加密,从而产生“包装的密钥”。加密可以通过基于第一包装密钥并且可能基于调整来执行密码算法而实现。在406,包装的密钥可以被存储在存储器(例如120)中或寄存器堆中。寄存器堆可以是处理器中的单个寄存器(例如,寄存器110之一)或一组寄存器。
可选地,在408,应用可以用第二包装密钥对指针或指针的部分(例如,线性地址的切片、在指针中编码的上下文信息等)进行加密,并且将密码编码的指针存储在存储器(例如,120)中或寄存器堆中。
图5-8示出了简化流程图,其示出了根据一个或多个实施例的、用于建立和验证应用的凭证以及用于初始化曾用于密码隔离存储器隔间的密钥的示例过程。图5-8中所示的过程包括正由知晓上下文的处理器(例如,处理器102)执行的上下文(例如,应用134A或134B、虚拟机、函数或线程)的一个或多个可能的指令。在知晓上下文的处理器中,一些处理器状态(例如,控制寄存器,诸如模型特定寄存器(MSR))保存关于当前运行的上下文(例如,虚拟机、应用、函数、线程等)的信息。另外,一旦密钥被知晓上下文的处理器初始化,上下文就可隐式地引用在密码存储器访问指令(诸如密码加载或存储指令)用于知晓上下文的处理器时使用的密钥和/或调整。例如,隐式引用密钥或调整可以通过不使加密密钥或调整呈现为用于知晓上下文的处理器的密码存储器访问指令的输入操作数来实现。尽管图5-8中的过程可以取决于所实现的特定类型的密码隔离而由任何上下文来执行,但是为了便于说明,将参考特定上下文(即应用)来描述图5-8中的过程。
图5示出用于一旦启动应用就建立应用的凭证的过程500的操作。过程500可以在应用开始执行之后开始。在502,应用将其凭证呈现给知晓上下文的处理器。在一个示例中,凭证可被呈现为新指令的立即字段以在仅执行模式中建立凭证。当在立即字段中将凭证传递到处理器(而不是从存储器检索)时,应用的凭证仅为应用所知。此外,如果包含凭证作为立即操作数的适当页被标记为仅执行,则这些页不可作为数据读取。因此,凭证仅可由应用访问和使用。然而,在其他实施例中,凭证可被存储在存储器中,并且当执行用于建立凭证的新指令时被动态检索。
基于特定需要和实现,可以使用任何合适形式的凭证。在一个可能的示例中,凭证可以包括非对称密钥,并且特定地包括公钥-私钥对。一旦建立了凭证,它们可以采用立即字段的形式由加密的存储器访问指令来携带。因此,凭证可以在进程管理时间由指令呈现,并且仅需与存储在CPU边界内(例如,在认证引擎中)的凭证进行比较,而不是被密码地验证。结果,可以避免执行相对昂贵的密码算法,因为简单的匹配操作可以相对更快并且比诸如RSA或者ECC-DSA之类的算法明显更便宜。然而,应当注意,在一个或多个实施例中可以实现任何其他合适形式的凭证。
在504,处理器选择、生成或以其他方式获得上下文(例如,虚拟机、应用、函数、线程等)的上下文ID。处理器还将上下文ID与来自应用的所呈现凭证相关联。在至少一个实施例中,上下文ID可以被映射到不能被应用访问的新高速缓存或CAM(例如,补充处理器存储器180)中的所呈现凭证。例如,上下文ID到凭证映射表或其他存储结构(例如202)可以存储在新高速缓存或CAM中,以跟踪所有上下文ID和相关联的凭证或在处理器上执行的应用。
在506,处理器提供以下指示:与所呈现凭证相关联的应用当前正在运行。例如,处理器可以用应用的上下文ID来设置控制寄存器(例如,MSR)。无论何时应用执行,上下文ID都可被设置。
用于建立凭证并为应用设置上下文ID的此新指令可以在应用开始执行之后被初始执行。然而,在其他场景中,可以执行用于建立凭证的相同(或不同)指令。此指令在本文可被称为“SetContextID”。例如,当上下文切换发生时,起源上下文可以将控制传递到另一上下文以执行特定任务。当起源上下文再次接收到控制时,它可能需要建立其凭证并重新设置上下文ID。
图6是示出用于验证知晓上下文的处理器具有针对当前执行的应用的正确上下文ID设置的示例过程600的简化流程图。过程600可以作为新指令的一部分而被执行,以由知晓上下文的处理器验证上下文ID。在602,应用将其凭证呈现给知晓上下文的处理器以验证该处理器具有正确的上下文ID设置。在仅执行模式中,凭证可作为立即字段而被包括在新指令集架构(ISA)的指令中。
在604,处理器尝试验证在处理器硬件中为所呈现的凭证设置了正确的上下文ID。特定地,在至少一个实施例中,处理器通过标识与补充处理器存储器180中的所呈现凭证相关联的上下文ID(例如,在上下文ID到凭证映射202中)并将所标识的上下文ID与控制寄存器或MSR(例如,118)中设置的上下文ID进行比较来确定是否设置了正确的上下文ID。如果上下文ID匹配,则验证了在处理器硬件中设置了正确的上下文ID,并且在610,允许应用执行由指令所请求的期望操作。
如果上下文ID不匹配,则在处理器硬件中未设置正确的上下文ID,并且在606,阻止应用执行由指令所请求的操作。在至少一个实施例中,在608,由处理器所作出的响应可以使应用执行一些校正代码以重新呈现其凭证。或者,可引发安全事件且可终止应用。
图7是示出使应用获得要用于加密数据或代码的内部密钥(例如,由处理器生成、从已存储在处理器中的密钥获得等)的示例过程700的简化流程图。过程700包括正由知晓上下文的处理器(例如,处理器102)执行的应用(例如,应用134A或134B)的一个或多个可能指令。可以在知晓上下文的处理器上(例如,通过过程500)已经建立应用的凭证之后执行过程700。
最初,在702,应用可以将其凭证呈现给知晓上下文的处理器以验证在处理器中设置了正确的上下文ID。在仅执行模式中,凭证可以作为立即字段而被包括在新指令集架构(ISA)的上下文ID验证指令中。图6的过程600是可以在执行上下文ID验证指令时执行的示例过程。
如果在702中验证了设置正确的上下文ID,则在704,可以执行用于基于特定属性和/或预期用途而请求内部密钥(例如,驻留在CPU中的密钥)的新指令。特定属性和预期用途可以指示正被请求的密钥的特定大小(例如,对于高级加密标准(AES)算法是256位、对于Simon算法是96位等)。
在706,响应于应用的请求,处理器为应用生成密钥,并将密钥(例如,205C)和/或密钥的句柄(例如,204A、204B、204C)存储在不能由应用直接访问的按应用状态高速缓存(例如,补充处理器存储器180)中。例如,密钥和/或句柄可以使用任何适当的映射或链接技术而与应用的凭证、应用的上下文ID、或应用的任何其他合适标识符相关联。在708,处理器可将密钥的句柄返回给应用。
图8是示出使应用获得要用于加密数据或代码的外部密钥(例如,通过安全外部处理器处理密钥管理而生成)的示例过程800的简化流程图。过程800包括正由知晓上下文的处理器(例如,处理器102)执行的应用(例如,应用134A或134B)的一个或多个可能指令。可以在知晓上下文的处理器上(例如,通过过程500)已经建立应用的凭证之后执行过程800。
最初,在802,应用可以将其凭证呈现给知晓上下文的处理器以验证在处理器中设置了正确的上下文ID。在仅执行模式中,凭证可以作为立即字段而被包括在新指令集架构(ISA)的上下文ID验证指令中。图6的过程600是可以在执行上下文ID验证指令时执行的示例过程。
如果在802中验证了设置正确的上下文ID,则在804,可以执行用于基于特定属性和/或预期用途而请求外部密钥(例如,驻留在CPU外的密钥)的新指令。特定属性和预期用途可以指示正被请求的密钥的特定大小(例如,对于高级加密标准(AES)算法是256位、对于Simon算法是96位等)。
在806,处理器发起为应用生成外部密钥或从外部组件获得应用的外部密钥。在一个或多个实施例中,外部组件可以执行密钥管理并向知晓上下文的处理器提供密钥。在其他实施例中,外部组件可以简单地提供由处理器所请求的随机生成的唯一值。外部安全组件的示例包括但不一定限于,相同平台或不同平台中的单独安全处理器、第三方组件的组件、本地或远程网络中的组件、或云中的组件。
可选地,在808,处理器可以用包装密钥来包装(即,加密)所提供的密钥以创建包括加密的密钥的句柄。在其他实施例中,密钥的外部供应商可以提供包装的密钥,使得处理器不需要在存储密钥或将其返回给应用之前对密钥进行加密。
在810,处理器将密钥和/或密钥的句柄关联于应用。处理器可以将密钥(例如,205C)和/或密钥的句柄(例如,204A、204B或204C)存储在不可由应用直接访问的按应用状态高速缓存(例如,补充处理器存储器180)中。例如,密钥和/或句柄可以使用任何适当的映射或链接技术而与应用的凭证、应用的上下文ID、或应用的任何其他合适标识符相关联。在812,处理器可将密钥的句柄返回给应用。
除了通常为运行在不知晓上下文的或知晓上下文的处理器上的应用创建或获得对密钥和加密秘密的访问之外,本文的一个或多个实施例还可以支持各种级别的密码隔离。图9A到11示出了基于本文公开的概念可以支持的密码隔离的各种级别中的一些级别。通常,当前架构配置有可用于将数据移入和移出存储器的指令。例如,在Intel® 64架构和Intel® IA-32架构中,各种移动指令可以用于将源操作数复制到目的地操作数,包括MOV(移动)、MOVD(移动双字)、MOVDQU(移动未对齐的双四字)、MOVDQA(移动对齐的双四字)等。然而,这些指令假设待移动的数据是未加密的,并且待存储的数据也是未加密的。
本文的一个或多个实施例提供了具有密码加载和存储指令的新指令集架构(ISA)。在密码存储指令中,在离开核边界之前和在进入L1高速缓存之前,在核中加密数据。在密码加载指令中,在退出L1之后且在对软件可用之前,加密的数据一跨越核边界,就在核处对加密的数据进行解密。在计算装置100中,例如,对于特定的输入数据或代码片段,加密存储逻辑150在核中执行密码算法(例如,块密码),以基于用于输入数据或代码的适当密钥(并且可能是调整)来计算加密的数据或代码。相反,对于加密的数据或代码,解密加载逻辑160在核中执行密码算法(例如,块密码),以基于用于加密的数据或代码的适当密钥(并且可能是调整)来计算解密的数据或代码。
在一个可能的实现中,密码移动指令可以被配置成对应于当前存在的移动指令。例如,新的密码指令可被命名为IGXMOV、IGXMOVD、IGXMOVDQU、IGXMOVD、IGXMOVDQA等。密码指令可以接受表示要用于数据的加密或解密的加密密钥或包装密钥(例如,包含以下项之一的的密钥句柄:加密的密钥、到存储在存储器中的加密的密钥的指针、或到存储在处理器中不可由软件直接访问的未加密密钥的指针)的附加操作数。在一个示例中,新的密码移动指令可以取决于特定输入数据或代码来执行加密和解密两者。在其他实施方式中,可以使用不同的密码指令来执行加密和解密。尽管这些是可能的实现,但是应当清楚,根据本文公开的实施例,可以使用许多其他合适的操作(例如,加载、读取、写入、存储等)、命名约定、和语法来实现新的密码指令,以实现各种级别的存储器隔间的密码隔离。
图9A-9B是示出根据至少一个实施例的、在数据结构级别实现的密码隔离的示例的简化框图。图9A示出了基于单独密钥的数据结构的密码隔离。参考计算装置100的应用134A、核104、加密存储逻辑150和解密加载逻辑160来说明数据结构的密码隔离。此外,示出了存储器层级910,并且其旨在表示可以存在于计算装置100中的各种形式的存储器,并且在一些时间点可以在其中存储上下文(例如,应用134A)的数据和/或代码。例如,存储器层级910可以表示计算装置100的高速缓存170和存储器120。存储器层级910还可以表示其中可以存储上下文的数据和/或代码的任何其他存储器单元(例如,L2高速缓存)。
在图9A的示例中,已经为应用134A创建了三个不同的密钥,密钥A 902A、密钥B902B和密钥C 902C。如果计算装置100具有不知晓上下文的处理器,则可以用包装密钥对密钥A、B和C进行加密,并且可以将对密钥的句柄存储在存储器(例如120)中或寄存器堆(例如110)中。在另一实现中,可以对到加密的密钥的相应指针进行加密(例如,可以对在指针中编码的存储器地址的至少一个切片进行加密),并且可以将加密的指针存储在存储器或寄存器堆中。如果计算装置100具有知晓上下文的处理器,则密钥A、B和C和/或密钥A、B和C的句柄可以存储在处理器的存储器中,诸如本文先前描述的补充处理器存储器180。例如,句柄可以存储在补充处理器存储器180中,以用于加密的密钥A、B和C(例如206A)、用于到存储在存储器120中的加密的密钥A、B和C(例如206B)的指针(例如207B)、或者用于到存储在补充处理器存储器180中的未加密的密钥A、B和C(例如205C)的指针(例如207C)。在另一实施例中,密钥A、B和C可以存储在外部组件中。在一个实施例中,当创建或请求时,可以将密钥A、B和C的句柄返回给应用134A。
新的密码指令(其在本文被称为核加密的存储器存储(例如,移动、写入、存储等)指令)可以被应用134A用来用唯一密钥来加密小的数据结构,并将加密的数据结构移动或复制到单个高速缓存行912中,从而有效地为每个加密的数据结构创建隔离的存储器隔间。数据结构可以是1字节、4字节、8字节、16字节、或允许多个数据结构存储在同一高速缓存行中的任何其他大小。数据结构以子高速缓存行粒度来加密,并且可以如此保留在存储器层级910的所有单元(例如,L1、L2、主存储器等)内。
作为示例,新的核加密的存储器存储指令可以使加密存储逻辑150基于密钥A902A而对应用134A的第一数据结构执行核104中的密码算法(例如,块密码),以计算要存储在高速缓存行912中的存储器隔间920A中的加密的数据922A。加密存储逻辑150可以基于密钥B 902B而对应用134A的第二数据结构执行核104中的密码算法,以计算要存储在高速缓存行912中的存储器隔间920B中的加密的数据922B。加密存储逻辑150基于密钥C 902C而对应用134A的第三数据执行核104中的密码算法,以计算要存储为高速缓存行912中的存储器隔间920C的加密的数据922C。
此外,新的密码指令(其是核解密的存储器加载指令(例如,移动、加载、读取等))可以被应用134A用来用唯一密钥来解密小的加密的数据结构,并且将解密的数据结构移动或复制到将由应用134A访问的寄存器或其他存储器中。例如,新的核解密的存储器加载指令可使解密加载逻辑160基于密钥A 902A而对来自存储器隔间920A的第一加密数据922A执行核104中的密码算法(例如,块密码),以计算要存储在可由应用134A访问的寄存器或其他存储器中的解密的数据。类似地,解密加载逻辑160可以执行核104中的相同密码算法以解密来自其他存储器隔间(例如,920B、920C)的其他加密的数据(例如,922B、922C)。
与图9A类似,图9B示出了数据结构的密码隔离。然而,图9B中的密码隔离基于具有不同调整的相同密钥以将数据结构彼此隔离。在图9B的示例中,已经为应用134A创建了单个密钥A 902A。另外,多个调整与密钥A相关联,包括调整A 904A、调整B 904B和调整C904C。密钥A可如本文先前描述那样基于应用134A是正在不知晓上下文的处理器上运行还是在知晓上下文的处理器上运行来体现。然而,调整A、B和C可以至少部分从到数据结构的编码的指针930导出,其中编码的指针可以被密码编码(例如,用线性地址的加密的部分和/或加密的元数据来编码)或被非密码编码(例如,在指针中编码的线性地址和元数据都不被加密)。例如,调整A 904A可以从到应用134A的第一数据结构的第一编码的指针934A导出,调整B可以从到应用134A的第二数据结构的第二编码的指针934B导出,以及调整C可以从到应用134A的第三数据结构的第三编码的指针934C导出。在一些实施例中,调整可以包括来自编码的指针的加密的地址切片、通过解码编码的指针而获得的线性地址位、或者编码的指针的一部分(或全部),其可以包括编码的元数据(例如,类型/版本元数据、大小/功率元数据等)。另外,一些调整还可以包括附加的外部上下文信息。在至少一个实施例中,当编码的指针被用于访问编码的指针指向的数据或代码时,可以生成调整。
在该示例中,新的核加密的存储器存储指令可以使加密存储逻辑150基于密钥A902A和调整A 904A而对应用134A的第一数据结构执行核104中的密码算法(例如,块密码),以计算要存储在高速缓存行912中的存储器隔间920A中的加密的数据924A。加密存储逻辑150可以基于密钥B 902B和调整B 904B而对应用134A的第二数据结构执行核104中的密码算法,以计算要存储在高速缓存行912中的存储器隔间920B中的加密的数据924B。加密存储逻辑150可以基于密钥C 902C和调整C 904C而对应用134A的第三数据执行核104中的密码算法,以计算要存储在高速缓存行912中的存储器隔间920C中的加密的数据924C。
还在此示例中,新的核解密的存储器加载指令可使解密加载逻辑160基于密钥A902A和调整A 904A而对来自存储器隔间920A的第一加密数据922A执行核104中的密码算法(例如,块密码),以计算要移动或复制到将由应用访问的寄存器或其他存储器中的解密的数据。类似地,新的核解密的存储器加载指令可使解密加载逻辑160执行核104中的相同密码算法以解密来自其他存储器隔间(例如,920B、920C)的其他加密的数据(例如,922B、922C)。
应当注意,调整也可以用于数据结构的密码隔离中,其中不同的密钥用于每个数据结构,如图9A中所示。然而,在图9A的实施例中,由于在对每个数据结构的加密中使用的单独密钥,所以可以在没有调整的情况下实现加密的数据的存储器隔间的密码隔离。
另外,尽管应用134A是图9A-9B中所示的唯一上下文,但这样做是为了便于描述,并且应当清楚,任何其他上下文(例如,虚拟机、函数、线程)也可以应用在数据结构级别的密码隔离。例如,函数可以建立凭证并请求其访问的数据结构的密钥,如图9A-9B中针对应用134A所示的那样。
图10A-10B是示出根据至少一个实施例的、在应用级别实现的密码隔离的示例的简化框图。图10A示出了基于单独密钥的应用的密码隔离。参考计算装置100的应用134A、应用134B、核104、加密存储逻辑150和解密加载逻辑160来说明应用的密码隔离。此外,示出了存储器层级1010,并且其旨在表示可以存在于计算装置100中的各种形式的存储器,并且在一些时间点可以在其中存储上下文(例如,应用134A和134B)的数据和/或代码。例如,存储器层级1010可以表示计算装置100的高速缓存170和存储器120。存储器层级1010还可以表示其中可以存储上下文的数据和/或代码的任何其他存储器单元(例如,L2高速缓存)。
在图10A的示例中,已经创建了三个不同的密钥,密钥A 1002A、密钥B 1002B和密钥C 1002C,但是每个应用只可访问一个密钥。在此示例中,应用134A可访问密钥A 1002A、并且应用134B可访问密钥B 1002B。如果计算装置100具有不知晓上下文的处理器,则可以用包装密钥对密钥A和B进行加密,并且可以将对每个密钥的单独句柄存储在存储器(例如120)中或寄存器堆(例如110)中。在另一实现中,可以对到加密的密钥的相应指针进行加密(例如,可以对在指针中编码的存储器地址的至少一个切片进行加密),并且可以将加密的指针存储在存储器或寄存器堆中。如果计算装置100具有知晓上下文的处理器,则密钥A和B和/或密钥A和B的句柄可以存储在处理器的存储器中,诸如本文先前描述的补充处理器存储器180。例如,句柄可以存储在补充处理器存储器180中,以用于加密的密钥A和B(例如206A)、用于到存储在存储器120中的加密的密钥A和B(例如206B)的指针(例如207B)、或者用于到存储在补充处理器存储器180中的未加密的密钥A和B(例如205C)的指针(例如207C)。在另一实施例中,密钥A和B可以存储在外部组件中。在一个实施例中,当创建或请求时,可以将密钥A和B的句柄返回给应用134A。
新的核加密的存储器存储(例如,移动、写入、存储等)指令可以被应用134A和134B用来用其相应的密钥A和B来加密其相应的数据和代码。特定地,应用134A可以执行新的核加密的指令,以使用密钥A 1002A加密应用134A的代码和数据,并且将加密的代码和数据移动或复制到存储器层级1010中(例如,到L1高速缓存、主存储器等中),从而有效地创建用于应用134A的加密的数据和代码的隔离的存储器隔间。类似地,应用134B可以执行新的核加密的指令,以使用密钥B 1002B加密应用134B的代码和数据,并将加密的代码和数据移动或复制到存储器层级1010中(例如,到L1高速缓存、主存储器等中),从而有效地创建用于应用134B的加密的数据和代码的隔离的存储器隔间。这样,应用通过加密使它们的状态隔离,其中加密发生在核处并且使用不同的包装的(即,加密的)密钥。每个应用的状态驻留在不同的存储器隔间中。应用级别的隔离存储器隔间也可被称为飞地(enclave),其是代码和数据的隔离存储器区域。在飞地中,从系统的物理随机存取存储器(RAM)保留可寻址存储器页,并然后对其进行加密,从而允许应用访问其数据和代码而不暴露其秘密。
作为示例,新的核加密的存储器存储指令可以使加密存储逻辑150基于密钥A1002A而对应用134A的数据和代码执行核104中的密码算法(例如,块密码),以计算要存储在存储器中的存储器隔间1020A中的应用134A的加密的数据和代码1022A。加密存储逻辑150可以基于密钥B 1002B而对第二应用134B的数据和代码执行核104中的密码算法,以计算要存储在存储器中的存储器隔间1020B中的应用134B的加密的数据和代码1022B。
此外,新的密码指令(其是核解密的存储器加载指令(例如,移动、加载、读取等))可以被应用134A和134B用来用相应密钥来解密应用134A或134B的数据,并且将解密的数据移动或复制到其相应应用134A或134B将访问的寄存器或其他存储器中。例如,新的核解密的存储器加载指令可使解密加载逻辑160基于密钥A 1002A而对存储器隔间1020A的加密的数据执行核104中的密码算法(例如,块密码),以计算要存储在可由应用134A访问的寄存器或其他存储器中的解密的数据。类似地,解密加载逻辑160可基于密钥B 1002B而对存储器隔间1020B的加密的数据执行核104中的相同密码算法,以计算要存储在可由应用134B访问的寄存器或其他存储器中的解密的数据。当获取代码以用于执行时,可以由处理器执行对存储器隔间1020A和1020B中的加密的代码的解密。
与图10A类似,图10B示出了应用的密码隔离。然而,图10B中的密码隔离基于具有不同调整的相同密钥以将一个应用的数据和代码与另一应用的数据和代码进行隔离。在图10B的示例中,已经为应用134A和用于134B创建了单个密钥A 1002A。另外,多个调整与密钥A相关联,包括调整A 1004A和调整B 1004B。密钥A可如本文先前描述那样基于应用134A是正在不知晓上下文的处理器上运行还是在知晓上下文的处理器上运行来体现。然而,调整A和B可以至少部分从到应用代码和数据的编码的指针1030导出,其中编码的指针可以被密码编码(例如,用线性地址的加密的部分和/或加密的元数据来编码)或被非密码编码(例如,在指针中编码的线性地址和元数据都不被加密)。例如,调整A 1004A可以从到含有应用134A的数据和代码的存储器区域的第一编码的指针1034A导出,并且调整B可以从到含有应用134B的数据和代码的存储器区域的第二编码的指针1034B导出。在一些实施例中,调整可以包括来自编码的指针的加密的地址切片、通过解码编码的指针而获得的线性地址位、或者编码的指针的一部分(或全部),其可以包括编码的元数据(例如,类型/版本元数据、大小/功率元数据等)。另外,一些调整还可以包括附加的外部上下文信息。在至少一个实施例中,当编码的指针被用于访问编码的指针指向的数据或代码时,可以生成调整。
在该示例中,新的核加密的存储器存储指令可以使加密存储逻辑150基于密钥A1002A和调整A 1004A而对应用134A的数据和代码执行核104中的密码算法(例如,块密码),以计算要存储在存储器隔间1020A中应用134A的加密的数据和代码1024A。加密存储逻辑150可以基于密钥A 1002B和调整B 1004B而对应用134B的数据和代码执行核104中的密码算法,以计算要存储在存储器隔间1020B中的应用134B的加密的数据和代码1024B。
还在此示例中,新的核解密的存储器加载指令可以使加密存储逻辑150基于适当的密钥和调整而对隔离的存储器隔间中的应用的加密的数据执行核104中的密码算法(例如,块密码),以计算应用的解密的数据,并且将解密的数据移动或复制到将由应用访问的寄存器或其他存储器中。例如,新的核解密的存储器加载指令可使解密加载逻辑160基于密钥A 1002A和调整A 1004A而对存储器隔间1020A中的加密数据执行核104中的密码算法(例如,块密码),以计算要存储在可由应用134A访问的寄存器或其他存储器中的解密的数据。类似地,新的核解密的存储器加载指令可使解密加载逻辑160基于密钥A 1002A和调整1004B而对存储器隔间1020B中的加密的数据执行核104中的密码算法(例如,块密码),以计算要存储在可由应用134B访问的寄存器或其他存储器中的解密的数据。当获取代码以用于执行时,可以由处理器执行对存储器隔间1020A和1020B中的加密的代码的解密。
应当注意,调整也可以用于应用的密码隔离中,其中不同的密钥用于每个应用,如图10A中所示。然而,在图10A的实施例中,由于在对每个应用的加密中使用的单独密钥,所以可以在没有调整的情况下实现应用的加密的数据和代码的存储器隔间的密码隔离。
图11是示出根据至少一个实施例的、在虚拟机级别实现的密码隔离的示例的简化框图。图11示出了基于单独密钥的虚拟机的密码隔离。参考计算装置100的虚拟机1134A、虚拟机1134B、核104、加密存储逻辑150和解密加载逻辑160来说明虚拟机的密码隔离。此外,示出了存储器层级1110,并且其旨在表示可以存在于计算装置100中的各种形式的存储器,并且在一些时间点可以在其中存储上下文(例如,虚拟机1134A和1134B)的数据和/或代码。例如,存储器层级1110可以表示计算装置100的高速缓存170和存储器120。存储器层级1110还可以表示其中可以存储上下文的数据和/或代码的任何其他存储器单元(例如,L2高速缓存)。
在图11的示例中,已经创建了三个不同的密钥,密钥A 1102A、密钥B 1102B和密钥C 1102C,但是每个虚拟机只可访问一个密钥。在此示例中,虚拟机1134A可访问密钥A1102A、并且虚拟机1134B可访问密钥B 1102B。如果计算装置100具有不知晓上下文的处理器,则可以用包装密钥对密钥A和B进行加密,并且可以将对每个密钥的单独句柄存储在存储器(例如120)中或寄存器堆(例如110)中。在另一实现中,可以对到加密的密钥的相应指针进行加密(例如,可以对在指针中编码的存储器地址的至少一个切片进行加密),并且可以将加密的指针存储在存储器或寄存器堆中。如果计算装置100具有知晓上下文的处理器,则密钥A和B和/或密钥A和B的句柄可以存储在处理器的存储器中,诸如本文先前描述的补充处理器存储器180。例如,句柄可以存储在补充处理器存储器180中,以用于加密的密钥A和B(例如206A)、用于到存储在存储器120中的加密的密钥A和B(例如206B)的指针(例如207B)、或者用于到存储在补充处理器存储器180中的未加密的密钥A和B(例如205C)的指针(例如207C)。在另一实施例中,密钥A和B可以存储在外部组件中。在一个实施例中,当创建或请求时,可以将密钥A和B的句柄返回给虚拟机1134A。
新的核加密的存储器存储(例如,移动、写入、存储等)指令可以被虚拟机1134A和1134B用来用其相应的密钥A和B来加密其相应的数据和代码。特定地,虚拟机1134A可以执行新的核加密的指令,以使用密钥A 1102A加密虚拟机1134A的代码和数据,并且将加密的代码和数据移动或复制到存储器层级1110中(例如,到L1高速缓存、主存储器等中),从而有效地创建用于虚拟机1134A的加密的数据和代码的隔离的存储器隔间。类似地,虚拟机1134B可以执行新的核加密的指令,以使用密钥B 1102B加密虚拟机1134B的代码和数据,并将加密的代码和数据移动或复制到存储器层级1110中(例如,到L1高速缓存、主存储器等中),从而有效地创建用于虚拟机1134B的加密的数据和代码的隔离的存储器隔间。这样,应用通过加密使它们的状态隔离,其中加密发生在核处并且使用不同的包装的(即,加密的)密钥。每个应用的状态驻留在不同的存储器隔间中。虚拟机级别的隔离存储器隔间也可被称为受信域,其是含有一个或多个应用的代码和数据的隔离存储器区域。
作为示例,新的核加密的存储器存储指令可以使加密存储逻辑150基于密钥A1102A而对虚拟机1134A的数据和代码执行核104中的密码算法(例如,块密码),以计算要存储在存储器中的存储器隔间1120A中的虚拟机11344A的加密的数据和代码1122A。加密存储逻辑150可以基于密钥B 1102B而对第二虚拟机1134B的数据和代码执行核104中的密码算法,以计算要存储在存储器中的存储器隔间1120B中的虚拟机1134B的加密的数据和代码1122B。
此外,新的密码指令(其是核解密的存储器加载指令(例如,移动、加载、读取等))可以被虚拟机1134A和1134B用来用其相应密钥A和B来解密其相应数据和代码。例如,新的核解密的存储器加载指令可使解密加载逻辑160基于密钥A 1102A而对存储器隔间1120A的加密的数据执行核104中的密码算法(例如,块密码),以计算要存储在可由虚拟机1134A或虚拟机1134A内的应用访问的寄存器或其他存储器中的解密的数据。类似地,解密加载逻辑160可基于密钥B 1102B而对存储器隔间1120B的加密的数据执行核104中的相同密码算法,以计算要存储在可由虚拟机1134B或虚拟机1134B内的应用访问的寄存器或其他存储器中的解密的数据。当获取代码以用于执行时,可以由处理器执行对存储器隔间1120A和1120B中的加密的代码的解密。
图12是示出根据一个或多个实施例的、与新的核加密的存储器存储指令的执行相关联的示例过程1200的简化流程图。过程1200的至少一些部分可由计算装置100的硬件、固件和/或软件执行。在图12中所示的示例中,在1202,获得到存储器或代码的编码的指针。指针引用或“指向”将存储加密的数据或加密的代码的存储器位置。在一个实施例中,编码的指针可以被提供为核加密的存储器存储指令中的寄存器操作数。指针可以被加密编码(例如,用线性地址的加密的部分和/或加密的元数据来编码)或被非加密编码(例如,在指针中编码的线性地址和元数据都不被加密)。
在1204,如果存在编码的指针的加密的部分,则使用地址密钥并可能使用地址调整来解密加密的部分。在1206,部分基于指针的解密的部分生成解码的线性地址。解码的线性地址对应于要存储加密的数据或加密的代码的存储器位置。
在1208,核加密的存储器存储指令的操作数指示要被加密和存储的数据(或代码)。在一个示例中,数据(或代码)可以由寄存器操作数所指示。另外,另一操作数可包含句柄以表示要用于加密数据(或代码)的密钥。句柄可以采用如本文先前所讨论的任何数量的方式来配置,并且可以包含包装的密钥、到存储在存储器中的包装的密钥的指针、或者到存储在处理器存储器中的未加密的密钥的指针。密钥可以被单独包装或者可以与其他信息一起被包装在句柄中。在一些实施例中,句柄可以仅包含包装的密钥或仅包含指针。在其他实施例中,句柄可以包含附加信息(例如,MAC、其他密钥等)。另外,句柄可以用于数据或代码的解密(例如,用于加载、读取)和加密(例如,用于存储、写入)两者。
可以对包装的密钥进行解密以产生用于对要存储的数据(或代码)进行加密的解密的(或未加密的)密钥。句柄可先前已由应用例如使用图5-8的一个或多个过程而获得。在1210,在核中使用解密的(或未加密的)密钥并可能使用数据调整来加密数据。调整可以通过从编码的指针、解码的线性地址位、在指针中编码的元数据、和/或外部上下文信息中导出至少一部分来生成。调整可以是隐式的,或者可以由软件管理。
在1212,获得存储器中与解码的线性地址相对应的物理地址。在1214,基于物理存储器地址将加密的数据移出核并存储。然而,在一些实施例中,一旦数据被加密,则数据在被存储在主存储器中之前可以被移出核并且首先被存储到另一存储器(诸如L1高速缓存、L2高速缓存等)。
图13是示出根据一个或多个实施例的、与新的核解密的存储器加载指令的执行相关联的示例过程1300的简化流程图。过程1300的至少一些部分可由计算装置100的硬件、固件和/或软件执行。在图13中所示的示例中,在1302,获得到存储器或代码的编码的指针。指针引用或“指向”将检索加密的数据或加密的代码的存储器位置。在一个实施例中,编码的指针可以被提供为核解密的存储器加载指令中的寄存器操作数。指针可以被加密编码(例如,用线性地址的加密的部分和/或加密的元数据来编码)或被非加密编码(例如,在指针中编码的线性地址和元数据都不被加密)。
在1304,如果存在编码的指针的加密的部分,则使用地址密钥并可能使用地址调整来解密加密的部分。在1306,部分基于指针的解密的部分生成解码的线性地址。解码的线性地址对应于要检索或获取加密的数据的存储器位置。在1308,获得存储器中对应于解码的线性地址的物理地址。在1310,物理地址用于从存储器检索或获取数据(或代码)。
除了核解密的存储器加载指令中含有编码的指针的操作数,另一操作数可包含句柄以表示要用于解密所获取的数据(或代码)的密钥。句柄可以采用如本文先前所讨论的任何数量的方式来配置,并且可以包含包装的密钥、到存储在存储器中的包装的密钥的指针、或者到存储在处理器存储器中的未加密的密钥的指针。密钥可以被单独包装或者可以与其他信息一起被包装在句柄中。在一些实施例中,句柄可以仅包含包装的密钥或仅包含指针。在其他实施例中,句柄可以包含附加信息(例如,MAC、其他密钥等)。另外,句柄可以用于数据或代码的解密(例如,用于加载、读取)和加密(例如,用于存储、写入)两者。可以对包装的密钥进行解密以产生用于对要加载的数据(或代码)进行解密的解密的(或未加密的)密钥。句柄可先前已由应用例如使用图5-8的一个或多个过程而获得。
在1312,在核中使用解密的(或未加密的)密钥并可能使用数据调整来解密数据。调整可以通过从编码的指针、解码的线性地址位、在指针中编码的元数据、和/或外部上下文信息中导出至少一部分来生成。调整可以是隐式的,或者可以由软件管理。在1314,解密的数据被加载到将对应用可访问的寄存器或其他存储器。
图14是示出根据一个或多个实施例的、与使用存储器隔间的密码隔离的系统中的传统代码的执行相关联的示例过程1400的简化流程图。过程1400包括正由知晓上下文的处理器或不知晓上下文的处理器所执行的上下文(例如,应用134A或134B、虚拟机1134A或1134B等)的一个或多个可能指令。可执行过程1400以支持传统二进制码的执行而不需要重新编译传统代码。尽管过程1400可由任何上下文执行,但为了便于说明,将参考特定上下文(即应用)来描述过程1400。
如果应用正在知晓上下文的处理器上运行,则在1402,应用可以将其凭证呈现给知晓上下文的处理器以验证在处理器中设置正确的上下文ID。凭证可以作为立即操作数而被包括在存储器的仅执行区域中的新指令集架构(ISA)的指令中以防止对手读取凭证,或者作为某一其他类型的操作数。该指令是在本说明书中也被称为“SetContextID”的指令。在一些实施例中,控制流完整性可与仅执行存储器进行组合以防止对手跳转到可能揭示凭证的非预期代码条目点。图6的过程600是可在执行SetContextID指令时执行的示例过程。如果应用正运行在不知晓上下文的处理器上,则可以从该过程中省略1402。如果在SetContextID开始执行时处理器中的上下文ID不匹配SetContextID操作数,则在一些实施例中可能生成故障。备选地,可以用操作数中的值来更新处理器中的上下文ID。
如果在1402中验证了设置了正确的上下文ID,则在1404,可以执行新ISA的指令以声明使用传统指令的后续存储器访问被加密。即,该指令设置密码操作模式,在该密码操作模式中,使用传统ISA的后续存储器访问将被执行为加密的存储器访问,使得移出处理器核进入存储器的数据被加密,并且移入处理器核的数据被解密。
在1406,新ISA的另一指令可以由应用执行以向处理器呈现至少一个句柄以用于可以由传统代码执行的密码操作(即,加密和解密)。可以取决于所实现的密码隔离的类型来呈现多个句柄(或加密的密钥/调整)。例如,数据结构、函数、或线程级别的密码隔离可能需要多个句柄或密钥/调整以用于该级别的多个隔离的(加密的)存储器隔间。在一些实施例中,单个句柄可以包含所有需要的密钥和/或调整。在其他实施例中,可以呈现多个句柄。
在1408,由处理器在1404设置的密码操作模式中执行后续传统代码指令,使得所有存储器访问用适当密钥和/或调整来加密或解密。即,当在1404设置密码操作模式时,处理器将在核中针对所调用的所有加载和存储传统指令执行加密和解密。因此,任何传统代码数据移动都在数据离开处理器核之前使数据被加密(对于数据存储操作)或者在数据进入处理器核时被解密(对于加载操作)。此外,假设传统代码加载的任何状态都被加密。因此,对传统代码可用的状态必须用用于针对传统加载操作而执行解密的相同密钥来加密。这可以由向实体发出传统代码的较高特许实体来管理。
在1410,应用可以终止密码操作模式1410。使用传统代码的所有后续存储器访问都作为未加密的而被执行,并且以常规方式执行。然而,例如,可以开启用于另一虚拟机或应用的新的密码操作模式。
图15是示出与加密的代码流的执行相关联的示例过程1500的简化流程图。过程1500包括正由知晓上下文的处理器(例如处理器102)所执行的上下文(例如,应用134A或134B、虚拟机1134A或1134B等)的一个或多个可能指令。在应用的凭证已经被建立并且上下文ID已经由处理器设置之后,可执行过程1500以支持执行加密的代码流。尽管过程1500可由任何上下文执行,但为了便于说明,将参考特定上下文(即应用)来描述过程1500。
如果应用正在知晓上下文的处理器上运行,则在1502,应用可以将其凭证呈现给知晓上下文的处理器以验证在处理器中设置正确的上下文ID。凭证可以作为立即操作数而被包括在存储器的仅执行区域中的新指令集架构(ISA)的指令中以防止对手读取凭证,或者作为某一其他类型的操作数。该指令是在本说明书中也被称为“SetContextID”的指令。在一些实施例中,控制流完整性可与仅执行存储器进行组合以防止对手跳转到可能揭示凭证的非预期代码条目点。图6的过程600是可在执行SetContextID指令时执行的示例过程。如果应用正运行在不知晓上下文的处理器上,则可以从该过程中省略1502。如果在SetContextID开始执行时处理器中的上下文ID不匹配SetContextID操作数,则在一些实施例中可能生成故障。备选地,可以用操作数中的值来更新处理器中的上下文ID。
如果在1502中验证了设置了正确的上下文ID,则在1504,可以执行新ISA的指令以声明从给定地址开始并且具有某一关联长度的代码流为加密的。用于声明代码流被加密的指令还可以包括到代码流的编码的(密码或非密码编码的)指针。
在1506,新ISA的另一指令可以由应用执行以向处理器呈现至少一个句柄以用于解密代码流。句柄可以仅包括包装的代码密钥。在其他场景中,句柄还可以包括其他包装的密钥(例如,用于解密到代码流的密码编码的指针的地址密钥、将与用于解密代码流的密钥一起使用的特征)和/或信息(例如,MAC),如本文先前所描述的。在其他实施例中,用于声明代码流为加密的指令可以接受用于加密的密钥的附加操作数或将用于解密代码流的句柄。
在1508,在获取后续指令时对其进行解密,直到获取并解密了最后的加密的指令为止。可以基于在1504被声明要加密的代码流的开始以及代码流的关联长度来标识最后的加密的指令。因此,处理器跟踪所获取的代码的量(例如字节数),直到它确定已经获取了所声明的代码的相关联长度。
一旦处理器从应用接收到句柄,它就从该句柄获得未加密的密钥。例如,如果句柄包含加密的密钥,则处理器对包装的(即,加密的)密钥进行解密,并且在获取指令时使用该密钥来对代码流进行解密。如果句柄包括到存储在存储器中的加密的密钥的指针,则处理器从存储器获取加密的密钥,对加密的密钥进行解密,并且在获取指令时使用现在未加密的密钥来对代码流进行解密。如果句柄包括到处理器存储器中的未加密的密钥的指针,则处理器从处理器存储器获取未加密的密钥,并且在获取指令时使用未加密的密钥来对代码流进行解密。在核中解密代码流中的指令。在一个或多个实施例中,到代码的编码的指针还可以用于导出将在代码流的解密中使用的调整。
图16A是示出与测量代码段的完整性相关联的示例过程1600的简化流程图。过程1600包括正由知晓上下文的处理器(例如处理器102)所执行的上下文(例如,应用134A或134B、虚拟机1134A或1134B等)的一个或多个可能指令。可执行过程1600以使用新ISA来测量所加载的代码的完整性。尽管过程1600可由任何上下文执行,但为了便于说明,将参考特定上下文(即应用)来描述过程1600。
如果应用正在知晓上下文的处理器上运行,则在1602,应用可以将其凭证呈现给知晓上下文的处理器以验证在处理器中设置正确的上下文ID。凭证可以作为立即操作数而被包括在存储器的仅执行区域中的新ISA的指令中以防止对手读取凭证,或者作为某一其他类型的操作数。该指令是在本说明书中也被称为“SetContextID”的指令。在一些实施例中,控制流完整性可与仅执行存储器进行组合以防止对手跳转到可能揭示凭证的非预期代码条目点。图6的过程600是可在执行SetContextID指令时执行的示例过程。如果应用正运行在不知晓上下文的处理器上,则可以从该过程中省略1602。如果在SetContextID开始执行时处理器中的上下文ID不匹配SetContextID操作数,则在一些实施例中可能生成故障。备选地,可以用操作数中的值来更新处理器中的上下文ID。
在1604,新ISA的另一指令(其在本文称为“MeasureCode”指令)可以由应用执行,以向处理器呈现至少一个加密的密钥或句柄以用于执行完整性测量操作,该完整性测量操作需要密钥连同用于要测量的代码段的说明符(例如代码段的起始和结束地址)。句柄或加密的密钥可能先前已由处理器(或外部安全处理器)生成,并内部存储在对应用不可访问的存储器中。每个测量操作可以是以下项之一:“初始化”操作、“更新”操作、或“最终化”操作。实现这些操作的逻辑可正根据已知密码完整性算法(诸如KMAC-SHA3、HMAC-SHA512或HMAC-SHA256)来执行测量。MeasureCode指令可接受立即操作数,其指定待执行的操作是“初始化”、“更新”还是“最终化”操作。相反地,MeasureCode指令可以是以下三个不同指令之一:“MeasureCode_Initialize”指令、“MeasureCode_Update”指令及“MeasureCode_Finalize”指令,每个指令执行来自“MeasureCode_Initialize”、“MeasureCode_Update”及“MeasureCode_Finalize”操作中的不同测量操作。测量被绑定到与待校验的所标识代码段相关联的一组密钥或调整,其由处理器(或安全外部处理器)生成并对软件隐藏。
MeasureCode指令可将测量存储在新的CurrentMeasurement控制寄存器(本文中称为“CurrentMeasurement”控制寄存器)、MSR、或可使用状态保存和恢复指令(例如XSAVE和XRSTOR)或其他管理程序或用户模式指令而可访问的任何其他寄存器中。例如,通过限制指令在用户模式中不可用,或者通过在执行代码之前针对未授权指令来扫描未授权代码,可以防止未授权代码使用指令来访问CurrentMeasurement。可以将测量与MeasureCode指令之后的另一指令(本文称为“ ExpectCode “指令)中提供的预期测量进行比较。预期测量可以被指定为例如通过将预期测量存储在不可写入的存储器中而被保护以免被对手覆写的ExpectCode指令的操作数。如果CurrentMeasurement中的值与预期测量不匹配,则可能生成故障,以阻止执行继续到ExpectCode指令之后的数据处理代码中。
在一些实施例中,为了防止对手省略或跳过ExpectCode指令直接到数据处理代码以解密数据并因此获得对明文数据的访问,数据加密可以被绑定到被授权访问明文数据的代码的测量。例如,当加密数据时,预期测量可被包括在调整中,并且当解密数据时,CurrentMeasurement的值可被包括在调整中。如果用与曾用于加密数据的测量不匹配的CurrentMeasurement值来访问数据,则数据可能被错误地解密。当数据处理已经完成并且控制正被转移到未被授权访问明文数据的代码段时,可以使用本文称为“ClearMeasurement”指令的新指令来清除CurrentMeasurement。
在1606,执行完整性测量代码操作以测量所标识的代码段的完整性。在一个示例中,用于执行测量操作的完整性测量代码可以是根据本文所公开的实施例之一而被解密为加密的代码流的函数。完整性测量代码可调用MeasureCode指令,其可以是以下项之一:“MeasureCode_Initialize”、“MeasureCode_Update”、及“MeasureCode_Finalize”指令。
参考图16B,示出了用于实现图16A的过程1600的处理器硬件1620、软件1622和处理器存储器1618(例如,寄存器堆、专用管芯上高速缓存、CAM等)的示例。在图16B中,示出了完整性测量代码1606与实现MeasureCode指令的逻辑之间的硬件-软件交互,所述MeasureCode指令可以是MeasureCode_Initialize 1608、MeasureCode_Update 1610、及MeasureCode_Finalize 1612指令和逻辑。完整性测量代码可以初始调用MeasureCode_Initialize指令。MeasureCode_Initialize逻辑可访问密钥和调整1614,其被绑定到测量或CurrentMeasurement值1616,这两者都可存储在处理器存储器1618中。类似地,完整性测量代码可调用MeasureCode_Update和MeasureCode_Finalize指令和逻辑,并且通过这些指令来访问密钥和调整1614以及CurrentMeasurement值1616。
示例架构
图17是示出根据至少一个实施例的示例密码计算环境1700的框图。在所示示例中,密码寻址层1710遍布示例计算矢量中央处理器(CPU)1702、图形处理单元(GPU)1704、人工智能(AI)1706和现场可编程门阵列(FPGA)1708。例如,CPU 1702和GPU 1704可对存储器1712中存储的数据共享相同虚拟地址转换,并且密码地址可建立于这个共享虚拟存储器。它们可对给定执行流共享相同进程密钥,以及计算相同调整以便对密码编码的地址进行解密,并且沿用相同密码算法对这类编码的地址所引用的数据进行解密。
经组合,本文所述的能力可实现密码计算。存储器1712可在存储器分级结构的每一级来加密,从高速缓存的第一级至高速缓存的最后一级并且进入系统存储器中。将密码地址编码绑定到数据加密可允许极细粒度对象边界和访问控制,从而实现一直到甚至单独功能及其功能即服务的对象的细粒度安全性容器。调用栈上的密码编码返回地址(取决于其位置)还可实现控制流完整性,而无需影子栈元数据。因此,能够仅仅根据密码寻址和相应密码数据绑定以密码方式执行数据访问控制策略和控制流中的任一个。
图18-20是可根据本文所公开实施例所使用的示范计算机架构的框图。一般来说,可使用用于处理器和计算系统的本领域已知的任何计算机架构设计。在示例中,用于膝上型、台式、手持PC、个人数字助理、平板、工程工作站、服务器、网络装置、服务器、电器、网络集线器、路由器、交换机、嵌入式处理器,数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器,智能电话、移动装置、可佩戴电子装置、便携媒体播放器、手持装置和各种其他电子装置的本领域已知的系统设计和配置也适合于本文所述计算系统的实施例。一般来说,用于本文所公开实施例的适当计算机架构能够包括但不限于图18-20所示的配置。
图18是根据实施例的处理器的示例图示。处理器1800是能够与本文所示和所述的实现结合使用的一种类型的硬件装置(例如处理器102)的示例。处理器1800可以是任何类型的处理器,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、多核处理器、单核处理器或者执行代码的另一装置。虽然图18中仅示出一个处理器1800,但是处理元件备选地可包括多于一个图18所示的处理器1800。处理器1800可以是单线程核心,或者对于至少一个实施例,处理器1800可以是多线程的,因为它可包括每核心多于一个硬件线程上下文(或者“逻辑处理器”)。
图18还示出根据实施例、耦合到处理器1800的存储器1802。存储器1802可以是大量存储器中的任一个(包括存储器分级结构的各种层),如本领域的技术人员已知或者以其他方式可得到的。这类存储器元件能够包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)的逻辑块、可擦除可编程只读存储器(EPROM)和电可擦除可编程ROM(EEPROM)。
处理器1800能够执行与本文详述的算法、过程或操作关联的任何类型的指令。一般来说,处理器1800能够将元件或产品(例如数据)从一种状态或方面变换成另一种状态或另一种事物。
可以是将要由处理器1800所执行的一个或多个指令的代码1804可存储在存储器1802中,或者可存储在软件、硬件、固件或者它们的任何适当组合中或者适当地并且基于特定需要来存储在任何其他内部或外部组件、装置、元件或对象中。在一个示例中,处理器1800能够跟随代码1804所指示的指令的程序序列。每个指令进入前端逻辑1806,并且由一个或多个解码器1808来处理。解码器可生成作为其输出的微操作(例如预定义格式的固定宽度微操作),或者可生成反映原始代码指令的其他指令、微指令或控制信号。前端逻辑1806还包括寄存器重命名逻辑1810和调度逻辑1812,它们一般分配资源并且将与指令对应的操作进行排队以供执行。
处理器1800还能够包括执行逻辑1814,所述执行逻辑1814具有一组执行单元1816a、1816b、1816n等。一些实施例可包括专用于特定功能或者功能集合的多个执行单元。其他实施例可以仅包括一个执行单元或者能够执行特定功能的一个执行单元。执行逻辑1814执行代码指令所指定的操作。
在代码指令所指定的操作的执行完成之后,后端逻辑1818能够引退代码1804的指令。在一个实施例中,处理器1800允许无序执行,但是要求指令的有序引退。引退逻辑1820可采取多种已知形式(例如重排序缓冲器等)。根据这种方式,在代码1804的执行期间,至少根据解码器所生成的输出、寄存器重命名逻辑1810所利用的硬件寄存器和表格、以及执行逻辑1814所修改的任何寄存器(未示出),来变换处理器1800。
虽然图18中未示出,但是处理元件可随处理器1800包括芯片上的其他元件。例如,处理元件可包括随同处理器1800的存储器控制逻辑。处理元件可包括I/O控制逻辑,和/或可包括与存储器控制逻辑相集成的I/O控制逻辑。处理元件还可包括一个或多个高速缓存。在一些实施例中,非易失性存储器(例如闪速存储器或熔丝)也可随处理器1800被包含在芯片上。
图19A是示出根据本公开的一个或多个实施例的示范有序管线和示范寄存器重命名、无序发出/执行管线的框图。图19B是示出根据本公开的一个或多个实施例、将要包含在处理器中的有序架构核心和示范寄存器重命名、无序发出/执行架构核心的示范实施例的框图。图19A-19B中的实线框示出有序管线和有序核心,而虚线框的可选添加示出寄存器重命名、无序发出/执行管线和核心。在给定有序方面是无序方面的子集的情况下,将描述无序方面。
图19A中,处理器管线1900包括获取级1902、长度解码级1904、解码级1906、分配级1908、重命名级1910、调度(又称作分发或发出)级1912、寄存器读/存储器读级1914、执行级1916、回写/存储器写级1918、异常处理级1922和提交级1924。
图19B示出处理器核心1990,所述处理器核心1990包括耦合到执行引擎单元1950的前端单元1930(它们两者均耦合到存储器单元1970)。处理器核心1990和存储器单元1970是能够与本文所示和所述的实现结合使用的硬件类型(例如核104、存储器120)的示例。核心1990可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心或者混合或备选核心类型。作为又一个选项,核心1990可以是专用核心(例如网络或通信核心)、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。另外,处理器核心1990及其组件表示示例架构,所述示例架构可用来实现逻辑处理器及其相应组件。
前端单元1930包括耦合到指令高速缓存单元1934的分支预测单元1932,该指令高速缓存单元1934耦合到指令转换后备缓冲器(TLB)1936,该指令TLB单元1636耦合到指令获取单元1938,该指令获取单元1938耦合到解码单元1940。解码单元1940(或解码器)可对指令进行解码,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其他指令或者从原始指令所解码或得出或者以其他方式反映原始指令的其他控制信号。解码单元1940可使用各种不同的机制来实现。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。在一个实施例中,核心1990包括存储一些宏指令的微代码(例如在解码单元1940中或者以其他方式在前端单元1930内)的微代码ROM或另一介质。解码单元1940耦合到执行引擎单元1950中的重命名/分配器单元1952。
执行引擎单元1950包括重命名/分配器单元1952,其耦合到引退单元1954和一组一个或多个调度器单元1956。(一个或多个)调度器单元1956表示任何数量的不同调度器,包括保留站、中心指令窗口等。(一个或多个)调度器单元1956耦合到(一个或多个)物理寄存器堆单元1958。物理寄存器堆单元1958的每个表示一个或多个物理寄存器堆,其中不同的寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点、状态(例如,作为将要执行的下一个指令的地址的指令指针)等。在一个实施例中,物理寄存器堆单元1958包括矢量寄存器单元、写屏蔽寄存器单元和标量寄存器单元。这些寄存器单元可提供架构矢量寄存器、矢量屏蔽寄存器和通用寄存器(GPR)。在本文所述的至少一些实施例中,寄存器单元1958是能够与本文所示和所述的实现结合使用的硬件类型(例如寄存器112)的示例。(一个或多个)物理寄存器堆单元1958被引退单元1954重叠,以示出可实现寄存器重命名和无序执行的各种方式(例如使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)将来文件、(一个或多个)历史缓冲器和(一个或多个)引退寄存器堆;使用寄存器映射和寄存器池等)。引退单元1954和(一个或多个)物理寄存器堆单元1958耦合到(一个或多个)执行集群1960。(一个或多个)执行集群1960包括一组一个或多个执行单元1962和一组一个或多个存储器访问单元1964。执行单元1962可执行各种操作(例如移位、加法、减法、乘法)并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)执行。虽然一些实施例可包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可以仅包括一个执行单元或者全部执行全部功能的多个执行单元。执行单元1962还可包括:地址生成单元(例如822),以计算供核心用来访问主存储器(例如存储器单元1970)的地址;以及页缺失处理程序(PMH)(例如826)。
(一个或多个)调度器单元1956、(一个或多个)物理寄存器堆单元1958和(一个或多个)执行集群1960示为可能是多个的,因为一些实施例创建一些类型的数据/操作的独立管线(例如标量整数管线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点管线和/或存储器访问管线,其各具有其自己的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群—以及在独立存储器访问管线的情况下,实现只有这个管线的执行集群具有(一个或多个)存储器访问单元1964的一些实施例。还应当理解,在使用独立管线的情况下,这些管线的一个或多个可以是无序发出/执行,而其余的是有序的。
存储器访问单元1964的集合耦合到存储器单元1970,其包括耦合到数据高速缓存单元1974(其耦合到第2级(L2)高速缓存单元1976)的数据TLB单元1972。在一个示范实施例中,存储器访问单元1964可包括加载单元、存储地址单元和存储数据单元,它们中的每个耦合到存储器单元1970中的数据TLB单元1972。指令高速缓存单元1934还耦合到存储器单元1970中的第2级(L2)高速缓存单元1976。L2高速缓存单元1976耦合到一个或多个其他等级的高速缓存,并且最终耦合到主存储器。另外,页缺失处理程序(例如页缺失处理程序826)还可包含在核心1990中,以便在数据TLB单元1972中没有找到匹配时查找页表中的地址映射。
作为举例,示范寄存器重命名、无序发出/执行核心架构可按如下所述实现管线1900:1) 指令获取1938执行获取和长度解码级1902和1904;2) 解码单元1940执行解码级1906;3) 重命名/分配器单元1952执行分配级1908和重命名级1910;4) (一个或多个)调度器单元1956执行调度级1912;5) (一个或多个)物理寄存器堆单元1958和存储器单元1970执行寄存器读/存储器读级1914;执行集群1960执行运行级1916;6) 存储器单元1970和(一个或多个)物理寄存器堆单元1958执行回写/存储器写级1918;7) 各种单元可包含在异常处理级1922中;以及8) 引退单元1954和(一个或多个)物理寄存器堆单元1958执行提交级1924。
核心1990可支持一个或多个指令集(例如x86指令集(其中具有随较新版本已经添加的一些扩展);MIPS Technologies(Sunnyvale,CA)的MIPS指令集;ARM Holdings(Sunnyvale,CA)的ARM指令集(其中具有可选附加扩展、例如NEON)),包括本文所述的(一个或多个)指令。在一个实施例中,核心1990包括支持打包数据指令集扩展的逻辑(例如AVX1、AVX2),由此允许供许多多媒体应用使用的操作使用打包数据而被执行。
应当理解,核心可支持多线程运行(执行操作或线程的两个或更多并行集合),并且可根据多种方式这样做,包括时间切片多线程运行、同时多线程运行(其中单个物理核心为物理核心同时多线程运行的线程中的每个提供逻辑核心)或者其组合(例如,时间切片取和解码以及此后的同时多线程运行,诸如在Intel®Hyperthreading技术中)。相应地,在至少一些实施例中,可支持多线程包体(enclave)。
虽然在无序执行的上下文中描述寄存器重命名,但是应当理解,寄存器重命名可用于有序架构中。虽然处理器的所示实施例还包括独立指令和数据高速缓存单元1934/1974和共享L2高速缓存单元1976,但是备选实施例可具有用于指令和数据的单个内部高速缓存,诸如例如第1级(L1)内部高速缓存或者多级内部高速缓存。在一些实施例中,系统可包括内部高速缓存以及核心和/或处理器外部的外部高速缓存的组合。备选地,高速缓存全部可以在核心和/或处理器外部。
图20示出根据实施例、根据点对点(PtP)配置所布置的计算系统2000。特别是,图20示出一种系统,其中处理器、存储器和输入/输出装置通过多个点对点接口来互连。一般来说,本文所述计算系统或计算装置(例如计算装置100)中的一个或多个可根据与计算系统2000相同或相似的方式来配置。
处理器2070和2080可实现为单核处理器2074a和2084a或者多核处理器2074a-2074b和2084a-2084b。处理器2070和2080各自可包括由其相应一个或多个核心所使用的高速缓存2071和2081。共享高速缓存(未示出)可包含在任一个处理器中或者两个处理器外部,但是仍然经由P-P互连与处理器连接,使得如果使处理器被置于低功率模式,则任一个或两个处理器的本地高速缓存信息可存储在共享高速缓存中。应当注意,本文所述的一个或多个实施例可在计算系统(例如计算系统2000)中实现。此外,,处理器2070和2080是能够与本文所示和所述的实现结合使用的硬件类型(例如处理器102)的示例。
处理器2070和2080各自还可包括集成存储器控制器逻辑(MC)2072和2082,以便与存储器元件2032和2034进行通信,所述存储器元件2032和2034可以是本地附连到相应处理器的主存储器的部分。在备选实施例中,存储器控制器逻辑2072和2082可以是与处理器2070和2080分开的分立逻辑。存储器元件2032和2034可存储将要由处理器2070和2080在实现本文概述的操作和功能性中使用的各种数据。
处理器2070和2080可以是例如与其他附图结合论述的处理器等的任何类型的处理器。处理器2070和2080可分别使用点对点(PtP)接口电路2078和2088、经由点对点(PtP)接口2050来交换数据。处理器2070和2080各自可使用点对点接口电路2076、2086、2094和2098、经由单独点对点接口2052和2054来与输入/输出(I/O)子系统2090交换数据。I/O子系统2090还可使用接口电路2092(该接口电路2092可能是PtP接口电路)、经由高性能图形接口2039来与高性能图形电路2038交换数据。在一个实施例中,高性能图形电路2038是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。I/O子系统2090还可与显示器2033进行通信,以用于显示由人类用户可查看的数据。在备选实施例中,图20所示的PtP链路的任一个或全部可实现为多点总线而不是PtP链路。
I/O子系统2090可经由接口电路2096与总线2020进行通信。总线2010可具有通过它进行通信的一个或多个装置,例如总线桥接器2018、I/O装置2014、以及一个或多个其他处理器2015。经由总线2020,总线桥接器2018可与诸如用户接口2022(例如密钥盘、鼠标、触摸屏或其他输入装置)、通信装置2026(例如调制解调器、网络接口装置或者可经过计算机网络2060进行通信的其他类型的通信装置)、音频I/O装置2014和/或数据存储装置2028之类的其他装置进行通信。数据存储装置2028可存储可由处理器2070和/或2080所执行的代码和数据2030。在备选实施例中,总线架构的任何部分可采用一个或多个PtP链路来实现。
程序代码(例如代码2030)可应用于输入指令,以执行本文所述的功能并且生成输出信息。输出信息可根据已知方式应用于一个或多个输出装置。出于本申请的目的,处理系统可以是计算系统2000的组成部分,并且包括具有处理器(诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或者微处理器)的任何系统。
程序代码(例如2030)可通过高级程序性或面向对象的编程语言来实现,以便与处理系统进行通信。如果期望的话,程序代码还可通过汇编或机器语言来实现。实际上,本文所述的机制的范围并不局限于任何特定编程语言。在任何情况下,语言可以是编译或解译语言。
至少一个实施例的一个或多个方面可通过机器可读介质上存储的、表示处理器内的各种逻辑的代表指令来实现,所述指令在由机器读取时使该机器制备执行本文所述技术中的一个或多个的逻辑。称作“IP核心”的这类表示可存储在有形机器可读介质上,并且提供给各种客户或制造机构,以加载到实际制作逻辑或处理器的制备机器中。
这种机器可读存储介质可以非限制性地包括通过机器或装置所制造或形成的产品的非暂时有形布置,其中包括:例如硬盘等存储介质;任何其他类型的磁盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)和磁光盘;半导体装置,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SARAM)等随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
相应地,本公开的实施例还包括非暂时有形机器可读介质,所述机器可读介质包含指令或者包含设计数据(例如硬件描述语言(HDL)),所述设计数据定义本文所述结构、电路、设备、处理器和/或系统特征。这类实施例又可称作程序产品。
图20所示的计算系统是可用来实现本文所述的各个实施例的计算系统的实施例的示意图示。将会理解,图20所示系统的各种组件可组合在芯片上系统(SoC)架构中或者以能够实现本文所提供示例和实现的功能性和特征的任何其他适当配置来组合。
在一些情况下,指令转换器可用来将指令从源指令集转换成目标指令集。例如,指令转换器可将指令转化(例如使用静态二进制转化、包括动态编译的动态二进制转化)、变形、模拟或者以其他方式变换成将要由核心来处理的一个或多个其他指令。指令转换器可通过软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、处理器外或者部分处理器上和部分处理器外。
图21是根据本公开的实施例、与软件指令转换器用来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对照的框图。在所示实施例中,指令转换器是软件指令转换器,但是备选地,指令转换器可通过软件、固件、硬件或者它们的各种组合来实现。图21示出可使用x86编译器2104来编译高级语言2102的程序,以生成x86二进制代码2106,所述x86二进制代码2106可由具有至少一个x86指令集核心的处理器2116本地地执行。具有至少一个x86指令集核心的处理器2116表示能够通过兼容地执行或者以其他方式处理下列方面来执行与具有至少一个x86指令集核心的Intel处理器基本上相同的功能的任何处理器:(1) Intel x86指令集核心的指令集的大部分;或者(2) 针对在具有至少一个x86指令集核心的Intel处理器上运行的应用或其他软件的对象代码版本,以取得与具有至少一个x86指令集核心的Intel处理器基本上相同的结果。x86编译器2104表示可操作以生成x86二进制代码2106(例如对象代码)的编译器,所述x86二进制代码2106能够在具有或没有附加链接处理的情况下在具有至少一个x86指令集核心的处理器2116上执行。类似地,图21示出可使用备选指令集编译器2108来编译高级语言2102的程序,以便生成备选指令集二进制代码2110,所述备选指令集二进制代码2110可由没有至少一个x86指令集核心的处理器2114(例如具有执行MIPS Technologies(Sunnyvale,CA)的MIPS指令集和/或执行ARM Holdings(Sunnyvale,CA)的ARM指令集的核心的处理器)本地地执行。指令转换器2112用来将x86二进制代码2106转换为可由没有x86指令集核心的处理器2114本地地执行的代码。这个转换的代码不可能与备选指令集二进制代码2110是相同的,因为能够进行这个操作的指令转换器难以制作;但是,转换的代码将实现一般操作,并且由来自备选指令集的指令来组成。因此,指令转换器2112表示软件、固件、硬件或者其组合,其经过模拟、仿真或者任何其他过程允许处理器或者没有x86指令集处理器或核心的另一电子装置执行x86二进制代码2106。
虽然根据一些实现和一般关联方法来描述本公开,但是这些实现和方法的变更和置换将对于本领域的技术人员是清楚的。例如,本文所述的动作能够根据与如所述顺序不同的顺序来执行,并且仍然实现期望结果。作为一个示例,附图所示的过程不一定要求所示的特定顺序或依次顺序来实现预期结果。在一些实现中,多任务和并行处理可以是有利的。其他变化落入以下权利要求书的范围之内。
本文所述的架构仅作为举例来提供,并且预计是非排他和非限制性的。此外,所公开的各种部分预计只是逻辑划分,而无需必然表示物理分离硬件和/或软件组件。一些计算系统可在单个物理存储器装置中提供存储器元件,而在其他情况下,存储器元件可在功能上分布在许多物理装置。在虚拟机管理器或管理程序的情况下,功能的全部或部分可采取通过虚拟化层运行的软件或固件的形式来提供,以提供所公开逻辑功能。
要注意,对于本文所提供的示例,可在单个计算系统方面来描述交互。但是,这只是为了清楚起见和举例而进行。在一些情况下,可更易于通过仅引用单个计算系统来描述流程的给定集合的功能性中的一个或多个。此外,用于深度学习和恶意软件检测的系统是容易可缩放的,并且能够跨大量组件(例如多个计算系统)以及更复杂/精密布置和配置来实现。相应地,所提供的示例不应当限制范围或者禁止如潜在地应用于大量其他架构的计算系统的广义教导。
本申请提供了以下技术方案:
1. 一种处理器,包括:
第一存储器单元,所述第一存储器单元包含多个存储器隔间;以及
耦合到所述第一存储器单元的核,所述核包括用于以下操作的电路:
执行第一软件实体的第一指令以:
接收第一输入操作数,所述第一输入操作数指示与所述多个存储器隔间中的第一存储器隔间相关联的第一密钥;
在所述核中执行密码算法以至少部分基于所述第一密钥来计算第一加密的内容;以及
在所述核中计算所述第一加密的内容之后,将所述第一加密的内容存储在所述第一存储器单元的第一存储器位置处的所述第一存储器隔间中。
2. 根据技术方案1所述的处理器,其中,所述多个存储器隔间中的存储器隔间含有所述第一软件实体的加密的数据或加密的代码。
3. 根据技术方案2所述的处理器,其中,所述密码算法将被执行以部分基于调整来计算所述第一加密的内容。
4. 根据技术方案2所述的处理器,其中,所述电路还用于:
执行所述第一软件实体的第二指令以:
接收第二输入操作数,所述第二输入操作数指示与所述多个存储器隔间中的第二存储器隔间相关联的第二密钥;
在所述核中执行所述密码算法以至少部分基于所述第二密钥来计算第二加密的内容;以及
在所述核中计算所述第二加密的内容之后,将所述第二加密的内容存储在所述第一存储器单元的所述第二存储器隔间中的第二存储器位置处。
5. 根据技术方案4所述的处理器,其中,所述第一软件实体是以下项之一:用户应用、虚拟机、由应用调用的函数、或应用的线程。
6. 根据技术方案1所述的处理器,其中,所述第一输入操作数含有句柄,所述句柄包括以下项之一:加密的密钥;第一编码的指针,所述第一编码的指针到所述第一存储器单元中的所述加密的密钥的第二存储器位置;或第二编码的指针,所述第二编码的指针到所述处理器中的第二存储器单元中的所述第一密钥的第三存储器位置,其中执行所述第一软件实体的所述第一指令还用于:
执行以下项之一:第二加密算法,以解密所述加密的密钥来计算所述第一密钥;对所述第一存储器单元的所述第二存储器位置的访问,以获得所述加密的密钥;或对所述第二存储器单元的所述第三存储器位置的不同访问,以获得所述第一密钥。
7. 根据技术方案6所述的处理器,其中,所述第二存储器单元的至少一部分是以下项之一:所述处理器的所述核内的高速缓存或内容可寻址存储器(CAM)单元。
8. 根据技术方案1所述的处理器,其中,所述处理器还包括:
在所述核的边界外的一级(L1)高速缓存,其中,执行所述第一指令还用于:
在将所述第一加密的内容存储在所述第一存储器隔间中之前,并且在所述核中计算所述第一加密的内容之后,将所述第一加密的内容移动到所述L1高速缓存中。
9. 根据技术方案1所述的处理器,其中,所述电路还用于:
在执行所述第一软件实体的所述第一指令之前,执行所述第一软件实体的第二指令以:
接收含有所述第一软件实体的凭证的第二输入操作数;
将上下文标识符与所述第一软件实体的所述凭证相关联;以及
使用所述上下文标识符作为所述第一软件实体正在执行的指示符。
10. 根据技术方案1所述的处理器,其中,所述电路还用于:
在执行所述第一软件实体的所述第一指令之前,执行所述第一软件实体的第二指令以:
接收含有所述第一软件实体的凭证的第二输入操作数;以及
基于确定指示符指示所述第一软件实体当前正在执行:
获得以下项之一:加密的密钥,所述加密的密钥通过加密所述第一密钥而生成;第一编码的指针,所述第一编码的指针到存储在所述第一存储器单元中的所述加密的密钥的第二存储器位置;或第二编码的指针,所述第二编码的指针到存储在所述处理器中的第二存储器单元中的所述第一密钥的第三存储器位置;以及
向所述第一软件实体返回以下项之一:第一句柄,所述第一句柄含有所述加密的密钥;第二句柄,所述第二句柄含有所述第一编码的指针,所述第一编码的指针到存储在所述第一存储器单元中的所述加密的密钥的所述第二存储器位置;或者第三句柄,所述第三句柄含有所述第二编码的指针,所述第二编码的指针到存储在所述处理器的所述第二存储器单元中的所述第一密钥的所述第三存储器位置。
11. 根据技术方案10所述的处理器,其中,所述第一软件实体的所述第二指令还用于:
响应于获得所述加密的密钥,将所述加密的密钥存储在所述处理器内的所述第二存储器单元中。
12. 根据技术方案1所述的处理器,其中,所述电路还用于:
在执行所述第一软件实体的所述第一指令之前,执行所述第一软件实体的第二指令以:
生成所述第一密钥;
用包装密钥加密所述第一密钥以创建包装的密钥;以及
将所述包装的密钥存储在所述第一存储器单元或寄存器堆中。
13. 根据技术方案12所述的处理器,其中,执行所述第一软件实体的所述第二指令还用于:
生成到所述包装的密钥的密码编码的指针,其中,所述密码编码的指针的一部分至少部分基于所述包装的密钥而被加密;以及
将所述密码编码的指针存储在所述第一存储器单元中或存储在所述寄存器堆中。
14. 根据技术方案1所述的处理器,其中,所述电路还用于:
执行第二软件实体的第三指令以:
接收所述第二软件实体的后续传统存储器访问指令将在密码操作模式中被执行的指示;
接收第三输入操作数,所述第三输入操作数指示将用于针对所述后续传统存储器访问指令而执行密码操作的第二密钥;
标识第一传统存储器访问指令;以及
在所述核中针对所述第一传统存储器访问指令而执行密码操作。
15. 根据技术方案1所述的处理器,其中,所述电路还用于:
执行所述第一软件实体的第二指令以:
接收一个或多个输入操作数,所述一个或多个输入操作数指示代码流的起始地址和所述代码流的长度;
接收第三输入操作数,所述第三输入操作数指示将用于解密从所述代码流获取的指令的第二密钥;以及
在所述核中至少部分基于所述第二密钥来解密从所述代码流获取的一个或多个指令。
16. 根据技术方案1所述的处理器,其中,所述电路还用于:
执行所述第一软件实体的第二指令以:
接收指示所述第一软件实体中的第一代码段的第二输入操作数;以及
接收指示第二密钥的第三输入操作数,所述第二密钥将由测量操作用来验证所述第一代码段的完整性,其中所述测量操作将与所述第一软件实体分开执行。
17. 根据技术方案1所述的处理器,其中,所述电路用于执行所述第一软件实体的第四指令以:
生成到所述第一存储器隔间的所述第一存储器位置的编码的指针,其中对应于所述第一存储器位置的线性地址被编码在所述编码的指针中。
18. 根据技术方案17所述的处理器,其中,被编码在所述编码的指针中的所述线性地址的一部分被加密,并且其中,所述密码算法将被执行以部分基于从所述编码的指针导出的调整来计算所述第一加密的内容。
19. 根据技术方案18所述的处理器,其中,所述调整将包括被编码在所述编码的指针中的所述线性地址的明文地址位、被编码在所述编码的指针中的所述线性地址的加密的部分、或者被编码在所述编码的指针中的所述线性地址的所述明文地址位和被编码在所述编码的指针中的所述线性地址的所述加密的部分两者。
20. 根据技术方案1所述的处理器,其中,所述电路还用于:
执行所述第一软件实体的第四指令以:
接收第四输入操作数,所述第四输入操作数指示与所述多个存储器隔间的所述第一存储器隔间相关联的所述第一密钥;
接收第五输入操作数,所述第五输入操作数指示到所述第一存储器隔间的所述第一存储器位置的编码的指针;
将所述第一加密的内容从所述第一存储器隔间移动到所述核;
在所述核中对所述第一加密的内容执行所述密码算法,以至少部分基于所述第一密钥来计算第一解密的内容;以及
在所述核中计算所述第一解密的内容之后,使所述第一解密的内容对所述第一软件实体可用。
21. 根据技术方案1所述的处理器,其中,所述电路包含:
解码器,所述解码器用于将所述第一指令解码成解码的格式;以及
执行单元,其中,所述第一指令的执行由所述执行单元基于所述第一指令的所述解码的格式来执行。
22. 一种包括指令的机器可读介质,所述指令在由处理器执行时使所述处理器执行操作,所述操作包括:
执行第一软件实体的第一指令以:
接收第一输入操作数,所述第一输入操作数指示与存储在第一存储器单元中的多个存储器隔间的第一存储器隔间相关联的第一密钥;
在所述处理器的核中执行密码算法以至少部分基于所述第一密钥来计算第一加密的内容;以及
在所述核中计算所述第一加密的内容之后,将所述第一加密的内容存储在所述第一存储器单元的所述第一存储器隔间中的存储器位置处。
23. 根据技术方案22所述的机器可读介质,其中,执行所述第一软件实体的所述第一指令还用于:
在将所述第一加密的内容存储在所述第一存储器隔间中的所述存储器位置处之前,并且在所述核中计算所述第一加密的内容之后,将所述第一加密的内容移动到所述核的边界外的一级(L1)高速缓存中。
24. 一种方法,包括:
响应于执行第一软件实体的第一指令,在处理器的核中接收第一输入操作数,所述第一输入操作数指示与存储在第一存储器单元中的多个存储器隔间的第一存储器隔间相关联的第一密钥;
在所述处理器的所述核中执行密码算法以至少部分基于所述第一密钥来计算第一加密的内容;以及
在所述核中计算所述第一加密的内容之后,将所述第一加密的内容存储在所述第一存储器单元的所述第一存储器隔间中的第一存储器位置处。
25. 根据技术方案24所述的方法,还包括:
响应于执行第二指令,接收第二输入操作数,所述第二输入操作数指示与所述多个存储器隔间的第二存储器隔间相关联的第二密钥;
在所述核中执行所述密码算法以至少部分基于所述第二密钥来计算第二加密的内容;以及
在所述核中计算所述第二加密的内容之后,将所述第二加密的内容存储在所述第一存储器单元的所述第二存储器隔间中的第二存储器位置处。
如本文所使用,除非另加明确相反说明,否则词语‘...中的至少一个’的使用表示所述项、元件、条件或活动的任何组合。例如,‘X、Y和Z中的至少一个’意在表示下列任一个:1)至少一个X,但不是Y并且不是Z;2)至少一个Y,但不是X并且不是Z;3)至少一个Z,但不是X并且不是Y;4)至少一个X和至少一个Y,但不是Z;5)至少一个X和至少一个Z,但不是Y;6)至少一个Y和至少一个Z,但不是X;或者7)至少一个X、至少一个Y和至少一个Z。
另外,除非另加明确相反说明,否则术语‘第一’、‘第二’、‘第三’等预计区分它们修饰的特定名词(例如元件、条件、模块、活动、操作、权利要求元素等),而不旨在指示修饰名词的任何类型的顺序、分级、重要性、时间序列或者分级结构。例如,‘第一X’和‘第二X’旨在表示不一定受两个元素的任何顺序、分级、重要性、时间序列或分级结构所限制的两个独立X元素。
说明书中提到“一个实施例”、“实施例”、“一些实施例”等指示所述的(一个或多个)实施例可包括特定特征、结构或特性,但是每一个实施例都可能或者可不必然包括那个特定特征、结构或特性。此外,这类词语不一定指同一实施例。
虽然本说明书包含许多特定实现细节,但是这些不应当被理解为对任何实施例或者可要求保护的范围的限制,而是应当被理解为对特定实施例特定的特征的描述。本说明书中在独立实施例的上下文中描述的一些特征也能够在单个实施例中组合地实现。相反,在单个实施例的上下文中描述的各种特征也能够单独在多个实施例中或者以任何适当的子组合实现。此外,虽然特征在上文中可描述为通过一些组合来起作用并且甚至最初这样要求保护,但是来自要求保护的组合的一个或多个特征在一些情况下能够脱离组合,并且要求保护的组合可针对子组合或者子组合的变化。
类似地,上述实施例中的各种系统组件和模块的分离不应当被理解为在全部实施例中都要求这种分离。应当理解,所述程序组件、模块和系统一般能够共同集成在单个软件产品中或者封装到多个软件产品中。
因而,描述了本主题的特定实施例。其他实施例落入本公开的范围之内。许多其他更改、置换、变更、改变和修改对于本领域的技术人员是可确定的,并且旨在本公开包含如落入所附权利要求书的范围之内的所有这类更改、置换、变更、改变和修改。
其他注释和示例
下列示例涉及根据本说明书的实施例。系统、设备、方法和机器可读介质实施例能够包括下列示例的一个或多个组合:
示例A1提供了一种设备、系统、处理器、机器可读介质、方法、和/或基于硬件、固件和/或软件的逻辑,其中A1的示例包含:第一存储器单元,所述第一存储器单元包含多个存储器隔间;以及耦合到所述第一存储器单元的核,所述核包括用于执行第一软件实体的第一指令以执行以下操作的电路:接收第一输入操作数,所述第一输入操作数指示与存储在第一存储器单元中的多个存储器隔间中的第一存储器隔间相关联的第一密钥;在处理器的核中执行密码算法以至少部分基于所述第一密钥来计算第一加密的内容;以及在所述核中计算所述第一加密的内容之后,将所述第一加密的内容存储在所述第一存储器单元的第一存储器位置处的所述第一存储器隔间中。
在示例A2中,示例A1的主题可以可选地包括:其中,所述多个存储器隔间中的存储器隔间含有所述第一软件实体的加密的数据或加密的代码。
在示例A3中,示例A2的主题可以可选地包括:其中,所述密码算法将被执行以部分基于调整来计算所述第一加密的内容。
在示例A4中,示例A2-A3中任一项的主题可以可选地包括:其中,所述电路还用于执行所述第一软件实体的第二指令以:接收第二输入操作数,所述第二输入操作数指示与所述多个存储器隔间中的第二存储器隔间相关联的第二密钥;在所述核中执行所述密码算法以至少部分基于所述第二密钥来计算第二加密的内容;以及在所述核中计算所述第二加密的内容之后,将所述第二加密的内容存储在所述第一存储器单元的所述第二存储器隔间中的第二存储器位置处。
在示例A5中,示例A4的主题可以可选地包括:其中,所述第一软件实体是以下项之一:用户应用、虚拟机、由应用调用的函数、或应用的线程。
在示例A6中,示例A1-A5中任一项的主题可以可选地包括:其中,所述第一输入操作数含有句柄,所述句柄包括以下项之一:加密的密钥;第一编码的指针,所述第一编码的指针到所述第一存储器单元中的所述加密的密钥的第二存储器位置;或第二编码的指针,所述第二编码的指针到所述处理器中的第二存储器单元中的所述第一密钥的第三存储器位置,其中执行所述第一软件实体的所述第一指令还用于执行以下项之一:第二加密算法,以解密所述加密的密钥来计算所述第一密钥;对所述第一存储器单元的所述第二存储器位置的访问,以获得所述加密的密钥;或对所述第二存储器单元的所述第三存储器位置的不同访问,以获得所述第一密钥。
在示例A7中,示例A6的主题可以可选地包括:其中,所述第二存储器单元的至少一部分是以下项之一:所述处理器的所述核内的高速缓存或内容可寻址存储器(CAM)单元。
在示例A8中,示例A1-A6中任一项的主题可以可选地包括:所述处理器还包括在所述核的边界外的一级(L1)高速缓存,其中,执行所述第一软件实体的所述第一指令还用于,在将所述第一加密的内容存储在所述第一存储器隔间中之前,并且在所述核中计算所述第一加密的内容之后,将所述第一加密的内容移动到所述核的边界外的一级(L1)高速缓存中。
在示例A9中,示例A1-A8中任一项的主题可以可选地包括:其中,所述电路还用于,在执行所述第一软件实体的所述第一指令之前,执行所述第一软件实体的第二指令以接收含有所述第一软件实体的凭证的第二输入操作数,将上下文标识符与所述第一软件实体的所述凭证相关联,以及使用所述上下文标识符作为所述第一软件实体正在执行的指示符。
在示例A10中,示例A1-A9中任一项的主题可以可选地包括:其中,所述电路还用于,在执行所述第一软件实体的所述第一指令之前,执行所述第一软件实体的第二指令以:接收含有所述第一软件实体的凭证的第二输入操作数;以及基于确定指示符指示所述第一软件实体当前正在执行:获得以下项之一:加密的密钥,所述加密的密钥通过加密所述第一密钥而生成;第一编码的指针,所述第一编码的指针到存储在所述第一存储器单元中的所述加密的密钥的第二存储器位置;或第二编码的指针,所述第二编码的指针到存储在所述处理器中的第二存储器单元中的所述第一密钥的第三存储器位置;以及向所述第一软件实体返回以下项之一:第一句柄,所述第一句柄含有所述加密的密钥;第二句柄,所述第二句柄含有所述第一编码的指针,所述第一编码的指针到存储在所述第一存储器单元中的所述加密的密钥的所述第二存储器位置;或者第三句柄,所述第三句柄含有所述第二编码的指针,所述第二编码的指针到存储在所述处理器的所述第二存储器单元中的所述第一密钥的所述第三存储器位置。
在示例A11中,示例A10的主题可以可选地包括:其中,所述第一软件实体的所述第二指令还用于,响应于获得所述加密的密钥,将所述加密的密钥存储在所述处理器内的所述第二存储器单元中。
在示例A12中,示例A1-A11中任一项的主题可以可选地包括:其中,所述电路还用于,在执行所述第一软件实体的所述第一指令之前,执行所述第一软件实体的第二指令以生成所述第一密钥,用包装密钥加密所述第一密钥以创建包装的密钥,以及将所述包装的密钥存储在所述第一存储器单元或寄存器堆中。
在示例A13中,示例A12的主题可以可选地包括:其中,执行所述第一软件实体的所述第二指令还用于生成到所述包装的密钥的密码编码的指针,其中,所述密码编码的指针的一部分至少部分基于所述包装的密钥而被加密;以及将所述密码编码的指针存储在所述第一存储器单元中或存储在所述寄存器堆中。
在示例A14中,示例A1-A3中任一项的主题可以可选地包括:其中,所述电路还用于执行第二软件实体的第三指令以接收所述第二软件实体的后续传统存储器访问指令将在密码操作模式中被执行的指示;接收第三输入操作数,所述第三输入操作数指示将用于针对所述后续传统存储器访问指令而执行密码操作的第二密钥;标识第一传统存储器访问指令;以及 在所述核中针对所述第一传统存储器访问指令而执行密码操作。
在示例A15中,示例A1-A14中任一项的主题可以可选地包括:其中,所述电路还用于:执行所述第一软件实体的第二指令以接收一个或多个输入操作数,所述一个或多个输入操作数指示代码流的起始地址和所述代码流的长度;接收第三输入操作数,所述第三输入操作数指示将用于解密从所述代码流获取的指令的第二密钥;以及在所述核中至少部分基于所述第二密钥来解密从所述代码流获取的一个或多个指令。
在示例A16中,示例A14-A15中任一项的主题可以可选地包括:其中,所述电路还用于执行所述第一软件实体的第二指令以接收指示所述第一软件实体中的第一代码段的第二输入操作数;以及接收指示第二密钥的第三输入操作数,所述第二密钥将由测量操作用来验证所述第一代码段的完整性,其中所述测量操作将与所述第一软件实体分开执行。
在示例A17中,示例A1-A16中任一项的主题可以可选地包括:其中,所述电路还用于执行所述第一软件实体的第四指令以生成到所述第一存储器隔间的所述第一存储器位置的编码的指针,其中对应于所述第一存储器位置的线性地址被编码在所述编码的指针中。
在示例A18中,示例A17的主题可以可选地包括:其中,被编码在所述编码的指针中的所述线性地址的一部分被加密,并且其中,所述密码算法将被执行以部分基于从所述编码的指针导出的调整来计算所述第一加密的内容。
在示例A19中,示例A18的主题可以可选地包括:其中,所述调整将包括被编码在所述编码的指针中的所述线性地址的明文地址位、被编码在所述编码的指针中的所述线性地址的加密的部分、或者被编码在所述编码的指针中的所述线性地址的所述明文地址位和被编码在所述编码的指针中的所述线性地址的所述加密的部分两者。
在示例A20中,示例A1-A19中任一项的主题可以可选地包括:其中,所述电路还用于执行所述第一软件实体的第四指令以接收第四输入操作数,所述第四输入操作数指示与所述多个存储器隔间的所述第一存储器隔间相关联的所述第一密钥;接收第五输入操作数,所述第五输入操作数指示到所述第一存储器隔间的所述存储器位置的编码的指针;将所述第一加密的内容从所述第一存储器隔间移动到所述核;在所述核中对所述第一加密的内容执行所述密码算法,以至少部分基于所述第一密钥来计算第一解密的内容;以及在所述核中计算所述第一解密的内容之后,使所述第一解密的内容对所述第一软件实体可用。
在示例A21中,示例A1-A20中任一项的主题可以可选地包括:其中,所述电路还用于由解码器单元将所述第一指令解码成解码的格式,其中,所述第一指令的执行由执行单元基于所述第一指令的所述解码的格式来执行。
示例B1提供了一种设备、系统、处理器、机器可读介质、方法、和/或基于硬件、固件和/或软件的逻辑,其中B1的示例包括
示例Y1提供了一种设备,所述设备包括用于执行上述示例A1至A20中任一项的方法的部件。
在示例Y2中,示例Y1的主题可以可选地包括:用于执行所述方法的部件包括至少一个处理器和至少一个存储器元件。
在示例Y3中,示例Y2的主题可以可选地,其中,所述至少一个存储器元件包括机器可读指令,所述机器可读指令在被执行时使所述设备执行以上示例A1至A20中任一项的方法。
在示例Y4中,示例Y1-Y3中任一项的主题可以可选地包括:所述设备是计算系统或片上系统之一。
示例X1提供了包括指令的至少一种机器可读介质,其中所述指令在被执行时实现设备、实现系统、或实现以上前述示例A1至A20中任一项中的方法。

Claims (25)

1.一种方法,包括:
由处理器执行第一软件实体的第一指令,其中,所述执行所述第一指令包括:
在所述处理器的核中接收第一输入操作数,所述第一输入操作数指示与多个存储器隔间的第一存储器隔间相关联的第一密钥;
在所述核中执行密码算法以至少部分基于所述第一密钥来计算第一加密的内容;以及
在所述核中计算所述第一加密的内容之后,将所述第一加密的内容存储在第一存储器单元的第一存储器位置处的所述第一存储器隔间中。
2.根据权利要求1所述的方法,其中,所述多个存储器隔间含有所述第一软件实体的加密的数据或加密的代码。
3.根据权利要求1所述的方法,其中,所述密码算法被执行以部分基于调整来计算所述第一加密的内容。
4.根据权利要求1所述的方法,还包括:
执行所述第一软件实体的第二指令,其中,所述执行所述第二指令包括:
接收第二输入操作数,所述第二输入操作数指示与所述多个存储器隔间的第二存储器隔间相关联的第二密钥;
在所述核中执行所述密码算法以至少部分基于所述第二密钥来计算第二加密的内容;以及
在所述核中计算所述第二加密的内容之后,将所述第二加密的内容存储在所述第一存储器单元的所述第二存储器隔间中的第二存储器位置处。
5.根据权利要求1所述的方法,其中,所述第一软件实体是以下项之一:用户应用、虚拟机、由应用调用的函数、或应用的线程。
6.根据权利要求1所述的方法,其中,所述执行所述第一软件实体的所述第一指令还包括:
在将所述第一加密的内容存储在所述第一存储器隔间中之前,并且在所述核中计算所述第一加密的内容之后,将所述第一加密的内容移动到所述核的边界外的一级(L1)高速缓存中。
7.根据权利要求1-6中任一项所述的方法,还包括:
在执行所述第一软件实体的所述第一指令之前,执行所述第一软件实体的第三指令,其中所述执行所述第三指令包括:
接收含有所述第一软件实体的凭证的第二输入操作数;
将上下文标识符与所述第一软件实体的所述凭证相关联;以及
使用所述上下文标识符作为所述第一软件实体正在执行的指示符。
8.根据权利要求1-6中任一项所述的方法,还包括:
在执行所述第一软件实体的所述第一指令之前,执行所述第一软件实体的第四指令,其中所述执行所述第四指令包括:
接收含有所述第一软件实体的凭证的第三输入操作数;
基于确定指示符指示所述第一软件实体当前正在执行:
获得以下项之一:加密的密钥,所述加密的密钥通过加密所述第一密钥而生成;第一编码的指针,所述第一编码的指针到存储在所述第一存储器单元中的所述加密的密钥的第二存储器位置;或第二编码的指针,所述第二编码的指针到存储在所述处理器中的第二存储器单元中的所述第一密钥的第三存储器位置;以及
向所述第一软件实体返回以下项之一:第一句柄,所述第一句柄含有加密的密钥;第二句柄,所述第二句柄含有所述第一编码的指针,所述第一编码的指针到存储在所述第一存储器单元中的所述加密的密钥的所述第二存储器位置;或者第三句柄,所述第三句柄含有所述第二编码的指针,所述第二编码的指针到存储在所述处理器的所述第二存储器单元中的所述第一密钥的所述第三存储器位置。
9. 根据权利要求9所述的方法,其中,执行所述第四指令还包括:
生成所述第一密钥;以及
将所述第一密钥存储在所述处理器内的所述第二存储器单元中的所述第三存储器位置。
10.根据权利要求1-6中任一项所述的方法,其中,所述第一输入操作数含有句柄,所述句柄包括以下项之一:加密的密钥;第一编码的指针,所述第一编码的指针到所述第一存储器单元中的所述加密的密钥的第二存储器位置;或第二编码的指针,所述第二编码的指针到所述处理器中的第二存储器单元中的所述第一密钥的第三存储器位置,其中所述执行所述第一软件实体的所述第一指令还包括:
执行以下项之一:第二密码算法,以解密所述加密的密钥来计算所述第一密钥;对所述第一存储器单元的所述第二存储器位置的访问,以获得所述加密的密钥;或对所述第二存储器单元的所述第三存储器位置的不同访问,以获得所述第一密钥。
11.根据权利要求10所述的方法,其中,所述第二存储器单元的至少一部分是以下项之一:所述处理器的所述核内的高速缓存或内容可寻址存储器(CAM)单元。
12.根据权利要求1-6中任一项所述的方法,还包括:
在执行所述第一软件实体的所述第一指令之前,执行所述第一软件实体的第五指令,其中所述执行所述第五指令包括:
生成所述第一密钥;
用包装密钥加密所述第一密钥以创建包装的密钥;以及
将所述包装的密钥存储在所述第一存储器单元或寄存器堆中。
13. 根据权利要求12所述的方法,其中,所述执行所述第五指令还包括:
生成到所述包装的密钥的密码编码的指针;以及
将所述密码编码的指针存储在所述第一存储器单元中或存储在所述寄存器堆中。
14.根据权利要求1-6中任一项所述的方法,还包括:
执行第二软件实体的第六指令,其中所述执行所述第六指令包括:
接收所述第二软件实体的后续传统存储器访问指令将在密码操作模式中被执行的指示;
接收第四输入操作数,所述第四输入操作数指示将用于针对所述后续传统存储器访问指令而执行密码操作的第三密钥;
标识第一传统存储器访问指令;以及
在所述核中针对所述第一传统存储器访问指令而执行密码操作。
15.根据权利要求1-6中任一项所述的方法,还包括:
执行所述第一软件实体的第六指令,其中所述执行所述第六指令包括:
接收一个或多个输入操作数,所述一个或多个输入操作数指示代码流的起始地址和所述代码流的长度;
接收第五输入操作数,所述第五输入操作数指示将用于解密从所述代码流获取的指令的第四密钥;以及
在所述核中至少部分基于所述第四密钥来解密从所述代码流获取的一个或多个指令。
16.根据权利要求1-6中任一项所述的方法,还包括:
执行所述第一软件实体的第七指令,其中所述执行所述第七指令包括:
接收指示所述第一软件实体中的第一代码段的第六输入操作数;以及
接收指示第五密钥的第七输入操作数,所述第五密钥将由测量操作用来验证所述第一代码段的完整性,其中所述测量操作将与所述第一软件实体分开执行。
17.根据权利要求1-6中任一项所述的方法,还包括:
执行所述第一软件实体的第八指令,其中所述执行所述第八指令包括:
生成到所述第一存储器隔间的所述第一存储器位置的编码的指针,其中对应于所述第一存储器位置的线性地址被编码在所述编码的指针中。
18.根据权利要求17所述的方法,其中,被编码在所述编码的指针中的所述线性地址的一部分被加密,并且其中,所述密码算法被执行以部分基于从所述编码的指针导出的调整来计算所述第一加密的内容。
19.根据权利要求18所述的方法,其中,所述调整将包括被编码在所述编码的指针中的所述线性地址的明文地址位、被编码在所述编码的指针中的所述线性地址的加密的部分、或者被编码在所述编码的指针中的所述线性地址的所述明文地址位和被编码在所述编码的指针中的所述线性地址的所述加密的部分两者。
20.根据权利要求1-6中任一项所述的方法,还包括:
执行所述第一软件实体的第九指令,其中所述执行所述第九指令包括:
接收第八输入操作数,所述第八输入操作数指示与所述多个存储器隔间的所述第一存储器隔间相关联的所述第一密钥;
接收第十输入操作数,所述第十输入操作数指示到所述第一存储器隔间的所述第一存储器位置的编码的指针;
将所述第一加密的内容从所述第一存储器隔间移动到所述核;
在所述核中对所述第一加密的内容执行所述密码算法,以至少部分基于所述第一密钥来计算第一解密的内容;以及
在所述核中计算所述第一解密的内容之后,使所述第一解密的内容对所述第一软件实体可用。
21.根据权利要求1-6中任一项所述的方法,还包括:
由解码器单元将所述第一指令解码成解码的格式,其中,所述第一指令的执行由执行单元基于所述第一指令的所述解码的格式来执行。
22.一种设备,所述设备包括用于执行权利要求1-6中任一项的方法的部件,其中用于执行所述方法的所述部件包括处理器和至少一个存储器元件。
23. 一种处理器,包括:
第一存储器单元,所述第一存储器单元包含多个存储器隔间;以及
耦合到所述第一存储器单元的核,所述核包括用于以下操作的电路:
执行第一软件实体的第一指令以:
接收第一输入操作数,所述第一输入操作数指示与所述多个存储器隔间中的第一存储器隔间相关联的第一密钥;
在所述核中执行密码算法以至少部分基于所述第一密钥来计算第一加密的内容;以及
在所述核中计算所述第一加密的内容之后,将所述第一加密的内容存储在所述第一存储器单元的第一存储器位置处的所述第一存储器隔间中。
24.根据权利要求23所述的处理器,其中所述多个存储器隔间中的所述存储器隔间含有所述第一软件实体的加密的数据或加密的代码。
25.包括指令的至少一种机器可读存储介质,其中,所述指令在被执行时实现如权利要求1-6中任一项中所要求权利的方法,或实现如权利要求23-24中任一项中所要求权利的处理器。
CN202010224151.0A 2019-06-29 2020-03-26 计算环境中存储器隔间的密码隔离 Pending CN112149148A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962868884P 2019-06-29 2019-06-29
US62/868884 2019-06-29
US16/723,977 US11354423B2 (en) 2019-06-29 2019-12-20 Cryptographic isolation of memory compartments in a computing environment
US16/723977 2019-12-20

Publications (1)

Publication Number Publication Date
CN112149148A true CN112149148A (zh) 2020-12-29

Family

ID=70159013

Family Applications (7)

Application Number Title Priority Date Filing Date
CN202010211610.1A Pending CN112149143A (zh) 2019-06-29 2020-03-24 用于存储器标记的低存储器开销堆管理
CN202010211440.7A Pending CN112149188A (zh) 2019-06-29 2020-03-24 支持加密计算的微处理器流水线电路
CN202010223442.8A Pending CN112149145A (zh) 2019-06-29 2020-03-26 基于不变指针的数据加密
CN202010223760.4A Pending CN112149147A (zh) 2019-06-29 2020-03-26 用于密码计算的隐式完整性
CN202010224151.0A Pending CN112149148A (zh) 2019-06-29 2020-03-26 计算环境中存储器隔间的密码隔离
CN202010224565.3A Pending CN112149149A (zh) 2019-06-29 2020-03-26 基于指针的数据加密
CN202010227190.6A Pending CN112149150A (zh) 2019-06-29 2020-03-27 用于密码计算的密钥管理

Family Applications Before (4)

Application Number Title Priority Date Filing Date
CN202010211610.1A Pending CN112149143A (zh) 2019-06-29 2020-03-24 用于存储器标记的低存储器开销堆管理
CN202010211440.7A Pending CN112149188A (zh) 2019-06-29 2020-03-24 支持加密计算的微处理器流水线电路
CN202010223442.8A Pending CN112149145A (zh) 2019-06-29 2020-03-26 基于不变指针的数据加密
CN202010223760.4A Pending CN112149147A (zh) 2019-06-29 2020-03-26 用于密码计算的隐式完整性

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202010224565.3A Pending CN112149149A (zh) 2019-06-29 2020-03-26 基于指针的数据加密
CN202010227190.6A Pending CN112149150A (zh) 2019-06-29 2020-03-27 用于密码计算的密钥管理

Country Status (3)

Country Link
US (11) US11580234B2 (zh)
EP (7) EP3757833B1 (zh)
CN (7) CN112149143A (zh)

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US11212097B2 (en) * 2015-05-17 2021-12-28 Gideon Samid Mixed unary cryptography
US11843597B2 (en) * 2016-05-18 2023-12-12 Vercrio, Inc. Automated scalable identity-proofing and authentication process
WO2019120038A1 (zh) * 2017-12-18 2019-06-27 北京三快在线科技有限公司 数据加密存储
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
EP3788488A1 (en) 2018-04-30 2021-03-10 Dover Microsystems, Inc. Systems and methods for checking safety properties
US10860709B2 (en) 2018-06-29 2020-12-08 Intel Corporation Encoded inline capabilities
US11106441B2 (en) * 2018-09-14 2021-08-31 Microsoft Technology Licensing, Llc Secure device-bound edge workload delivery
WO2020097179A1 (en) 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
WO2020132012A1 (en) 2018-12-18 2020-06-25 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11212085B2 (en) * 2019-03-29 2021-12-28 Intel Corporation Technologies for accelerated hierarchical key caching in edge systems
KR102266342B1 (ko) * 2019-05-27 2021-06-16 고려대학교 산학협력단 소프트웨어 보안을 위한 메모리 데이터의 암호화 및 복호화 방법, 이를 수행하기 위한 기록매체 및 장치
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
WO2021025490A1 (ko) * 2019-08-06 2021-02-11 주식회사 아이씨티케이 홀딩스 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치
US11386101B2 (en) 2019-08-08 2022-07-12 Cisco Technology, Inc. Systems and methods for fuzzy search without full text
US20210042165A1 (en) * 2019-08-09 2021-02-11 Oracle International Corporation System and method for supporting a quota policy language in a cloud infrastructure environment
US11546271B2 (en) 2019-08-09 2023-01-03 Oracle International Corporation System and method for tag based request context in a cloud infrastructure environment
US20210049036A1 (en) * 2019-08-13 2021-02-18 Facebook Technologies, Llc Capability Space
WO2021034753A2 (en) * 2019-08-16 2021-02-25 The Regents Of The University Of Michigan Thwarting control plane attacks with displaced and dilated address spaces
US11271734B2 (en) * 2019-08-19 2022-03-08 Red Hat, Inc. Proof-of-work key wrapping for verifying device capabilities
US11411728B2 (en) 2019-08-19 2022-08-09 Red Hat, Inc. Proof-of-work key wrapping with individual key fragments
US11411938B2 (en) 2019-08-19 2022-08-09 Red Hat, Inc. Proof-of-work key wrapping with integrated key fragments
US11316839B2 (en) 2019-08-19 2022-04-26 Red Hat, Inc. Proof-of-work key wrapping for temporally restricting data access
US11303437B2 (en) 2019-08-19 2022-04-12 Red Hat, Inc. Proof-of-work key wrapping with key thresholding
US11424920B2 (en) 2019-08-19 2022-08-23 Red Hat, Inc. Proof-of-work key wrapping for cryptographically controlling data access
US11436352B2 (en) 2019-08-19 2022-09-06 Red Hat, Inc. Proof-of-work key wrapping for restricting data execution based on device capabilities
US11294715B2 (en) 2019-08-28 2022-04-05 Marvell Asia Pte, Ltd. System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries
US11681806B2 (en) * 2019-10-15 2023-06-20 International Business Machines Corporation Protecting against out-of-bounds buffer references
US11520878B2 (en) * 2019-11-26 2022-12-06 Red Hat, Inc. Using a trusted execution environment for a proof-of-work key wrapping scheme that restricts execution based on device capabilities
US11263310B2 (en) * 2019-11-26 2022-03-01 Red Hat, Inc. Using a trusted execution environment for a proof-of-work key wrapping scheme that verifies remote device capabilities
US11176058B2 (en) * 2020-01-22 2021-11-16 Arm Limited Address decryption for memory storage
US11216366B2 (en) 2020-02-13 2022-01-04 Intel Corporation Security check systems and methods for memory allocations
WO2021162439A1 (en) * 2020-02-14 2021-08-19 Samsung Electronics Co., Ltd. Electronic device performing restoration on basis of comparison of constant value and control method thereof
US11249976B1 (en) 2020-02-18 2022-02-15 Wells Fargo Bank, N.A. Data structures for computationally efficient data promulgation among devices in decentralized networks
US11500981B2 (en) * 2020-03-24 2022-11-15 Microsoft Technology Licensing, Llc Shadow stack enforcement range for dynamic code
US11379579B2 (en) * 2020-03-24 2022-07-05 Microsoft Technology Licensing, Llc Shadow stack violation enforcement at module granularity
US11861364B2 (en) * 2020-03-24 2024-01-02 Microsoft Technology Licensing, Llc Circular shadow stack in audit mode
US11429580B2 (en) 2020-06-25 2022-08-30 Intel Corporation Collision-free hashing for accessing cryptographic computing metadata and for cache expansion
US11070621B1 (en) 2020-07-21 2021-07-20 Cisco Technology, Inc. Reuse of execution environments while guaranteeing isolation in serverless computing
US20230269076A1 (en) * 2020-09-01 2023-08-24 Intel Corporation Creating, using, and managing protected cryptography keys
US11494356B2 (en) 2020-09-23 2022-11-08 Salesforce.Com, Inc. Key permission distribution
US11816228B2 (en) * 2020-09-25 2023-11-14 Advanced Micro Devices, Inc. Metadata tweak for channel encryption differentiation
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
US11886332B2 (en) 2020-10-30 2024-01-30 Universitat Politecnica De Valencia Dynamic memory allocation methods and systems
CN112492580B (zh) * 2020-11-25 2023-08-18 北京小米移动软件有限公司 信息处理方法及装置、通信设备及存储介质
US11604740B2 (en) * 2020-12-01 2023-03-14 Capital One Services, Llc Obfuscating cryptographic material in memory
US11797713B2 (en) 2020-12-16 2023-10-24 International Business Machines Corporation Systems and methods for dynamic control of a secure mode of operation in a processor
US12008149B2 (en) 2020-12-16 2024-06-11 International Business Machines Corporation Method and system for on demand control of hardware support for software pointer authentification in a computing system
EP4020237B1 (en) * 2020-12-23 2024-01-17 INTEL Corporation 64-bit virtual addresses having metadata bit(s) and canonicality check that does not fail due to non-canonical values of metadata bit(s)
WO2022133860A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Key management for crypto processors attached to other processing units
WO2022139850A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Cryptographic computing including enhanced cryptographic addresses
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US20210117341A1 (en) * 2020-12-26 2021-04-22 Intel Corporation Cache line slot level encryption based on context information
US11755500B2 (en) * 2020-12-26 2023-09-12 Intel Corporation Cryptographic computing with disaggregated memory
US20210120077A1 (en) * 2020-12-26 2021-04-22 Intel Corporation Multi-tenant isolated data regions for collaborative platform architectures
US11580035B2 (en) * 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11625337B2 (en) * 2020-12-26 2023-04-11 Intel Corporation Encoded pointer based data encryption
CN112738219B (zh) * 2020-12-28 2022-06-10 中国第一汽车股份有限公司 程序运行方法、装置、车辆及存储介质
EP4248323A1 (en) * 2021-02-12 2023-09-27 Huawei Technologies Co., Ltd. Low overhead active mitigation of security vulnerabilities by memory tagging
US20220261509A1 (en) * 2021-02-13 2022-08-18 Intel Corporation Region-based deterministic memory safety
US11223489B1 (en) 2021-02-23 2022-01-11 Garantir LLC Advanced security control implementation of proxied cryptographic keys
EP4060537A1 (en) * 2021-03-17 2022-09-21 Secure Thingz Limited A method and system for securely provisioning electronic devices
US11972126B2 (en) 2021-03-26 2024-04-30 Intel Corporation Data relocation for inline metadata
US11418329B1 (en) 2021-05-28 2022-08-16 Garantir LLC Shared secret implementation of proxied cryptographic keys
US11218317B1 (en) 2021-05-28 2022-01-04 Garantir LLC Secure enclave implementation of proxied cryptographic keys
US11868275B2 (en) 2021-06-24 2024-01-09 International Business Machines Corporation Encrypted data processing design including local buffers
US12008150B2 (en) 2021-06-24 2024-06-11 International Business Machines Corporation Encrypted data processing design including cleartext register files
US20230029331A1 (en) * 2021-07-26 2023-01-26 Microsoft Technology Licensing, Llc Dynamically allocatable physically addressed metadata storage
WO2023025370A1 (en) * 2021-08-24 2023-03-02 Huawei Technologies Co., Ltd. Control flow integrity
WO2023034586A1 (en) * 2021-09-03 2023-03-09 Dover Microsystems, Inc. Systems and methods for on-demand loading of metadata
US11502827B1 (en) 2021-09-03 2022-11-15 Garantir LLC Exporting remote cryptographic keys
JP2023039697A (ja) 2021-09-09 2023-03-22 キオクシア株式会社 メモリシステム
US11372969B1 (en) * 2021-09-17 2022-06-28 Polyverse Corporation Randomized canary and shadow stack for JIT-ROP defense
US11954045B2 (en) 2021-09-24 2024-04-09 Intel Corporation Object and cacheline granularity cryptographic memory integrity
US20220100911A1 (en) * 2021-12-10 2022-03-31 Intel Corporation Cryptographic computing with legacy peripheral devices
US20220114285A1 (en) * 2021-12-22 2022-04-14 Intel Corporation Data oblivious cryptographic computing
EP4207679A1 (en) * 2021-12-31 2023-07-05 G-Innovations Viet Nam Joint Stock Company Method, mobile equipment, and system for keystream protection
CN114357488B (zh) * 2022-01-04 2022-09-16 深圳市智百威科技发展有限公司 一种数据加密系统及方法
US20230251782A1 (en) * 2022-02-10 2023-08-10 Macronix International Co., Ltd. Memory device and associated control method
WO2023164167A2 (en) * 2022-02-25 2023-08-31 Cryptography Research, Inc. Techniques and devices for configurable memory encryption and authentication
US20220179949A1 (en) * 2022-02-28 2022-06-09 Intel Corporation Compiler-directed selection of objects for capability protection
US20220214881A1 (en) * 2022-03-16 2022-07-07 Intel Corporation Ratchet pointers to enforce byte-granular bounds checks on multiple views of an object
US12008374B2 (en) 2022-03-16 2024-06-11 Intel Corporation Cryptographic enforcement of borrow checking
EP4246316A1 (en) 2022-03-16 2023-09-20 INTEL Corporation Cryptographic enforcement of borrow checking across groups of pointers
US11836094B2 (en) * 2022-03-21 2023-12-05 Intel Corporation Cryptographic data objects page conversion
US11789737B2 (en) 2022-03-24 2023-10-17 Intel Corporation Capability-based stack protection for software fault isolation
US20220222183A1 (en) * 2022-03-25 2022-07-14 Intel Corporation Tagless implicit integrity with multi-perspective pattern search
CN114968088B (zh) * 2022-04-08 2023-09-05 中移互联网有限公司 文件存储方法、文件读取方法及装置
WO2023212149A1 (en) * 2022-04-28 2023-11-02 Dover Microsystems, Inc. Systems and methods for enforcing encoded policies
US11949593B2 (en) * 2022-05-10 2024-04-02 Cisco Technology, Inc. Stateless address translation at an autonomous system (AS) boundary for host privacy
TWI816456B (zh) * 2022-06-30 2023-09-21 新唐科技股份有限公司 密碼裝置及其密碼方法
EP4325387A1 (de) 2022-08-19 2024-02-21 Steen Harbach AG Verfahren zum bereitstellen eines digitalen schlüssels
US20240104013A1 (en) * 2022-09-28 2024-03-28 Intel Corporation Deterministic adjacent overflow detection for slotted memory pointers
US20240129264A1 (en) * 2022-10-14 2024-04-18 Oracle International Corporation Managing digital message transmission via a proxy digital mailbox
CN117667423A (zh) * 2023-12-21 2024-03-08 摩尔线程智能科技(北京)有限责任公司 编解码器访问存储设备的方法、系统、装置、设备和介质

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6570989B1 (en) 1998-04-27 2003-05-27 Matsushita Electric Industrial Co., Ltd. Cryptographic processing apparatus, cryptographic processing method, and storage medium storing cryptographic processing program for realizing high-speed cryptographic processing without impairing security
AU2001269086A1 (en) 2000-07-04 2002-01-14 Koninklijke Philips Electronics N.V. Substitution-box for symmetric-key ciphers
US7684565B2 (en) 2001-01-16 2010-03-23 General Instrument Corporation System for securely communicating information packets
JP4199937B2 (ja) 2001-03-06 2008-12-24 株式会社日立製作所 耐タンパー暗号処理方法
US7043017B2 (en) 2001-09-13 2006-05-09 Freescale Semiconductor, Inc. Key stream cipher device
US6792551B2 (en) * 2001-11-26 2004-09-14 Intel Corporation Method and apparatus for enabling a self suspend mode for a processor
US6694401B2 (en) * 2001-12-28 2004-02-17 Intel Corporation Method and apparatus for executing real-mode interrupts from within extended SMRAM handler
US20030149869A1 (en) 2002-02-01 2003-08-07 Paul Gleichauf Method and system for securely storing and trasmitting data by applying a one-time pad
US7793286B2 (en) * 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US8024526B2 (en) 2003-04-11 2011-09-20 Oracle America, Inc. Multi-node system with global access states
US7225298B2 (en) 2003-04-11 2007-05-29 Sun Microsystems, Inc. Multi-node computer system in which networks in different nodes implement different conveyance modes
US20070152854A1 (en) * 2005-12-29 2007-07-05 Drew Copley Forgery detection using entropy modeling
JP2007235323A (ja) 2006-02-28 2007-09-13 Toshiba Corp 高度機密情報の保存/記録方法、高度機密情報を利用する再生装置および高度機密情報を格納するメモリ
EP1870829B1 (en) 2006-06-23 2014-12-03 Microsoft Corporation Securing software by enforcing data flow integrity
US20080080708A1 (en) 2006-09-29 2008-04-03 Mcalister Donald Kent Key wrapping system and method using encryption
US8155308B1 (en) 2006-10-10 2012-04-10 Marvell International Ltd. Advanced encryption system hardware architecture
US7907723B2 (en) 2006-10-11 2011-03-15 Frank Rubin Device, system and method for fast secure message encryption without key distribution
WO2008085579A2 (en) 2006-10-25 2008-07-17 Spyrus, Inc. Method and system for deploying advanced cryptographic algorithms
US7761676B2 (en) 2006-12-12 2010-07-20 Intel Corporation Protecting memory by containing pointer accesses
US20080263117A1 (en) * 2007-04-23 2008-10-23 Gregory Gordon Rose Initial seed management for pseudorandom number generator
US8085934B1 (en) 2007-07-11 2011-12-27 Marvell International Ltd. Reverse cryptographic key expansion
US9424315B2 (en) 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
JP5044848B2 (ja) 2007-12-04 2012-10-10 剣 竜沢 Pi++ストリーム暗号の暗号方法および復号方法、並びにパイ・データに基づく暗号算法及び復号化算法
EP2073430B1 (en) 2007-12-21 2013-07-24 Research In Motion Limited Methods and systems for secure channel initialization transaction security based on a low entropy shared secret
US20090172393A1 (en) 2007-12-31 2009-07-02 Haluk Kent Tanik Method And System For Transferring Data And Instructions Through A Host File System
US8879725B2 (en) 2008-02-29 2014-11-04 Intel Corporation Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation
US8675868B1 (en) 2008-07-01 2014-03-18 Maxim Integrated Products, Inc. Encrypting an address-dependent value along with code to prevent execution or use of moved code
US8621183B2 (en) * 2008-07-28 2013-12-31 Advanced Micro Devices, Inc. Processor with support for nested speculative sections with different transactional modes
US8156385B2 (en) 2009-10-28 2012-04-10 International Business Machines Corporation Systems and methods for backward-compatible constant-time exception-protection memory
US8762343B2 (en) 2009-12-29 2014-06-24 Cleversafe, Inc. Dispersed storage of software
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US8639945B2 (en) 2010-05-25 2014-01-28 Via Technologies, Inc. Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US10244239B2 (en) * 2010-12-28 2019-03-26 Dolby Laboratories Licensing Corporation Parameter set for picture segmentation
EP2506487B1 (en) 2011-03-30 2013-10-23 Nagravision S.A. Method of encryption with bidirectional difference propagation
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
EP2653992A1 (en) 2012-04-17 2013-10-23 Itron, Inc. Microcontroller configured for external memory decryption
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US9037872B2 (en) 2012-12-17 2015-05-19 Advanced Micro Devices, Inc. Hardware based return pointer encryption
KR101795771B1 (ko) 2013-03-18 2017-11-09 한국전자통신연구원 정수 기반 준동형 암호 기법에서 압축 암복호화를 제공하는 시스템 및 방법
US9053216B1 (en) * 2013-08-09 2015-06-09 Datto, Inc. CPU register assisted virtual machine screenshot capture timing apparatuses, methods and systems
US10700856B2 (en) 2013-11-19 2020-06-30 Network-1 Technologies, Inc. Key derivation for a module using an embedded universal integrated circuit card
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
KR101516574B1 (ko) 2014-02-21 2015-05-04 한국전자통신연구원 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법
US9703733B2 (en) 2014-06-27 2017-07-11 Intel Corporation Instructions and logic to interrupt and resume paging in a secure enclave page cache
KR101593169B1 (ko) 2014-08-20 2016-02-15 한국전자통신연구원 페이스텔 구조의 가변길이 블록암호 장치 및 방법
US9436847B2 (en) 2014-09-26 2016-09-06 Intel Corporation Cryptographic pointer address encoding
US9514285B2 (en) 2014-09-26 2016-12-06 Intel Corporation Creating stack position dependent cryptographic return address to mitigate return oriented programming attacks
US9830162B2 (en) 2014-12-15 2017-11-28 Intel Corporation Technologies for indirect branch target security
US9852301B2 (en) 2014-12-24 2017-12-26 Intel Corporation Creating secure channels between a protected execution environment and fixed-function endpoints
US9792229B2 (en) 2015-03-27 2017-10-17 Intel Corporation Protecting a memory
IN2015DE01753A (zh) 2015-06-11 2015-08-28 Pradeep Varma
US9893881B2 (en) 2015-06-29 2018-02-13 Intel Corporation Efficient sharing of hardware encryption pipeline for multiple security solutions
US10181946B2 (en) 2015-07-20 2019-01-15 Intel Corporation Cryptographic protection of I/O data for DMA capable I/O controllers
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US9990249B2 (en) 2015-12-24 2018-06-05 Intel Corporation Memory integrity with error detection and correction
GB2547249B (en) 2016-02-12 2019-09-11 Advanced Risc Mach Ltd An apparatus and method for generating signed bounded pointers
US10585809B2 (en) 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
RU2634173C1 (ru) 2016-06-24 2017-10-24 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения приложения удалённого администрирования
US11989332B2 (en) 2016-08-11 2024-05-21 Intel Corporation Secure public cloud with protected guest-verified host control
US20180082057A1 (en) 2016-09-22 2018-03-22 Intel Corporation Access control
US10261854B2 (en) 2016-09-30 2019-04-16 Intel Corporation Memory integrity violation analysis method and apparatus
US20180095906A1 (en) 2016-09-30 2018-04-05 Intel Corporation Hardware-based shared data coherency
US10235304B2 (en) 2016-10-01 2019-03-19 Intel Corporation Multi-crypto-color-group VM/enclave memory integrity method and apparatus
US11005650B2 (en) 2016-10-19 2021-05-11 Stripe, Inc. Systems and methods for data management and the use of salts and keys in data encryption/decryption
US10387305B2 (en) 2016-12-23 2019-08-20 Intel Corporation Techniques for compression memory coloring
US10469254B2 (en) 2017-03-29 2019-11-05 Intuit Inc. Method and system for hierarchical cryptographic key management
US10536266B2 (en) * 2017-05-02 2020-01-14 Seagate Technology Llc Cryptographically securing entropy for later use
US10877806B2 (en) 2017-06-14 2020-12-29 Intel Corporation Method and apparatus for securely binding a first processor to a second processor
US10657071B2 (en) 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption
US10706164B2 (en) 2017-09-29 2020-07-07 Intel Corporation Crypto-enforced capabilities for isolation
US10769272B2 (en) 2017-09-29 2020-09-08 Intel Corporation Technology to protect virtual machines from malicious virtual machine managers
US10776525B2 (en) 2017-09-29 2020-09-15 Intel Corporation Multi-tenant cryptographic memory isolation
DE102018125786A1 (de) * 2017-11-17 2019-05-23 Intel Corporation Verschlüsselte Systemspeicherverwaltung
US11082432B2 (en) 2017-12-05 2021-08-03 Intel Corporation Methods and apparatus to support reliable digital communications without integrity metadata
US10929527B2 (en) 2017-12-20 2021-02-23 Intel Corporation Methods and arrangements for implicit integrity
CN110490008B (zh) 2018-05-14 2021-08-10 英韧科技(上海)有限公司 安全装置及安全芯片
IT201800005506A1 (it) 2018-05-18 2019-11-18 Sistema di elaborazione, relativo circuito integrato e procedimento
CN111919214A (zh) 2018-05-21 2020-11-10 谷歌有限责任公司 针对安全性违反的补丁的自动生成
US10871983B2 (en) 2018-05-31 2020-12-22 Intel Corporation Process-based multi-key total memory encryption
US10922439B2 (en) 2018-06-29 2021-02-16 Intel Corporation Technologies for verifying memory integrity across multiple memory regions
US10785028B2 (en) 2018-06-29 2020-09-22 Intel Corporation Protection of keys and sensitive data from attack within microprocessor architecture
US11258861B2 (en) * 2018-06-29 2022-02-22 Intel Corporation Secure reporting of platform state information to a remote server
US11630920B2 (en) 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
US10860709B2 (en) 2018-06-29 2020-12-08 Intel Corporation Encoded inline capabilities
US11188639B2 (en) 2018-07-19 2021-11-30 Intel Corporation System, method and apparatus for automatic program compartmentalization
US11126733B2 (en) 2018-08-27 2021-09-21 Intel Corporation System, apparatus and method for configurable trusted input/output access from authorized software
US11991273B2 (en) 2018-09-04 2024-05-21 International Business Machines Corporation Storage device key management for encrypted host data
US10802910B2 (en) * 2018-09-17 2020-10-13 Intel Corporation System for identifying and correcting data errors
US11288213B2 (en) 2019-03-29 2022-03-29 Intel Corporation Memory protection with hidden inline metadata
US11398899B2 (en) 2019-05-28 2022-07-26 Shanghai Zhaoxin Semiconductor Co., Ltd. Data processing device and data processing method
US11295025B2 (en) 2019-05-31 2022-04-05 Nxp B.V Probabilistic memory safety using cryptography
US20190319781A1 (en) 2019-06-27 2019-10-17 Intel Corporation Deterministic Encryption Key Rotation
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US20220382885A1 (en) 2019-06-29 2022-12-01 David M. Durham Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US20200145187A1 (en) 2019-12-20 2020-05-07 Intel Corporation Bit-length parameterizable cipher
US20200257827A1 (en) 2019-06-29 2020-08-13 Intel Corporation Memory write for ownership access in a core
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11250165B2 (en) 2019-12-20 2022-02-15 Intel Corporation Binding of cryptographic operations to context or speculative execution restrictions
US11411938B2 (en) 2019-08-19 2022-08-09 Red Hat, Inc. Proof-of-work key wrapping with integrated key fragments
US11784786B2 (en) 2020-08-14 2023-10-10 Intel Corporation Mitigating security vulnerabilities with memory allocation markers in cryptographic computing systems
US11625337B2 (en) 2020-12-26 2023-04-11 Intel Corporation Encoded pointer based data encryption
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11755500B2 (en) 2020-12-26 2023-09-12 Intel Corporation Cryptographic computing with disaggregated memory

Also Published As

Publication number Publication date
US20200125742A1 (en) 2020-04-23
EP3757851B1 (en) 2023-05-24
CN112149143A (zh) 2020-12-29
EP3757850B1 (en) 2023-05-03
EP3757833B1 (en) 2022-12-07
US20220138329A1 (en) 2022-05-05
US20200125769A1 (en) 2020-04-23
CN112149149A (zh) 2020-12-29
US20200159676A1 (en) 2020-05-21
CN112149188A (zh) 2020-12-29
US20200145199A1 (en) 2020-05-07
US11829488B2 (en) 2023-11-28
CN112149147A (zh) 2020-12-29
US20200125502A1 (en) 2020-04-23
US11354423B2 (en) 2022-06-07
US11416624B2 (en) 2022-08-16
US11321469B2 (en) 2022-05-03
US11580234B2 (en) 2023-02-14
EP3757856B1 (en) 2023-06-14
EP3757854B1 (en) 2023-07-12
EP3757852A1 (en) 2020-12-30
US20200125770A1 (en) 2020-04-23
EP3757852B1 (en) 2022-11-02
CN112149145A (zh) 2020-12-29
EP3757856A1 (en) 2020-12-30
EP3757851A1 (en) 2020-12-30
US20240061943A1 (en) 2024-02-22
US20200125501A1 (en) 2020-04-23
EP3757855A1 (en) 2020-12-30
US11308225B2 (en) 2022-04-19
US20220300626A1 (en) 2022-09-22
CN112149150A (zh) 2020-12-29
EP3757854A1 (en) 2020-12-30
EP3757850A1 (en) 2020-12-30
EP3757833A1 (en) 2020-12-30
US20200117810A1 (en) 2020-04-16
US11768946B2 (en) 2023-09-26
US11620391B2 (en) 2023-04-04

Similar Documents

Publication Publication Date Title
EP3757856B1 (en) Cryptographic isolation of memory compartments in a computing environment
US11575504B2 (en) Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11711201B2 (en) Encoded stack pointers
US20200257827A1 (en) Memory write for ownership access in a core
US11625337B2 (en) Encoded pointer based data encryption
US11755500B2 (en) Cryptographic computing with disaggregated memory
KR102269010B1 (ko) 보호 영역에서의 메모리 초기화
US20220121447A1 (en) Hardening cpu predictors with cryptographic computing context information
CN114692130A (zh) 使用密码式计算的精细粒度式栈保护
JP2023047278A (ja) トランスフォーマ鍵識別子を使用する仮想機械マネージャによる信頼されたドメイン保護メモリへのシームレスなアクセス
US20220100907A1 (en) Cryptographic computing with context information for transient side channel security
US20240104027A1 (en) Temporal information leakage protection mechanism for cryptographic computing
US12032486B2 (en) Transient side-channel aware architecture for cryptographic computing
US20210117341A1 (en) Cache line slot level encryption based on context information
US20220121578A1 (en) Transient side-channel aware architecture for cryptographic computing

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