CN112149188A - 支持加密计算的微处理器流水线电路 - Google Patents

支持加密计算的微处理器流水线电路 Download PDF

Info

Publication number
CN112149188A
CN112149188A CN202010211440.7A CN202010211440A CN112149188A CN 112149188 A CN112149188 A CN 112149188A CN 202010211440 A CN202010211440 A CN 202010211440A CN 112149188 A CN112149188 A CN 112149188A
Authority
CN
China
Prior art keywords
encryption
processor
data
encrypted
micro
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
CN202010211440.7A
Other languages
English (en)
Inventor
M·E·库纳维斯
S·高希
S·多伊奇
M·勒梅
D·M·德拉姆
S·施瓦茨曼
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 CN112149188A publication Critical patent/CN112149188A/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

在一个实施例中,加密计算系统的处理器包括存储加密数据的数据缓存单元和耦合到数据缓存单元的电路。该电路:访问基于密码的指令序列,以基于加密数据执行;基于第一指针值对加密数据进行解密;使用解密的数据执行基于密码的指令;基于第二指针值,对基于密码的指令的执行结果进行加密;以及将加密的结果存储在数据缓存单元中。在一些实施例中,该电路对于每条基于密码的指令,生成至少一个基于加密的微操作和至少一个基于非加密的微操作。该电路还基于所述基于加密的微操作的定时,调度至少一个基于加密的微操作和至少一个基于非加密的微操作以用于执行。

Description

支持加密计算的微处理器流水线电路
技术领域
本公开总体上涉及计算机系统领域,并且更具体地,涉及支持加密计算的微处理器流水线电路。
背景技术
加密计算可以指代用于计算机系统安全的解决方案,其在处理器组件内部采用加密机制。一些加密计算系统可能涉及使用新的加密存储器访问指令对处理器核中的指针、密钥和数据进行加密和解密。
附图说明
为了提供对本公开及其特征和优点的更完整的理解,结合附图参考以下描述,其中相同的附图标记表示相同的部分,其中:
图1是调度微操作的示例过程的流程图。
图2是根据基于密码的指令调度微操作的示例过程的图。
图3是根据基于密码的指令调度微操作的另一示例过程的图。
图4A-4B是加密计算系统中的示例数据解密过程的图。
图5A-5C是加密计算系统中的另一示例数据解密过程的图。
图6A-6B是加密计算系统中的示例数据加密过程的图。
图7A-7B是加密计算系统中的示例指针解密过程的图。
图8A-8B是加密计算系统中的示例基址切片解密过程的图。
图9是在加密计算系统中执行基于密码的指令的示例过程的流程图。
图10是示出根据至少一个实施例的示例处理器核和存储器的框图。
图11A是根据本公开的一个或多个实施例的示例有序流水线和示例寄存器重命名、乱序发射/执行流水线的框图。
图11B是根据本公开的一个或多个实施例的要包括在处理器中的示例有序架构核和寄存器重命名、乱序发射/执行架构核的框图;和
图12是根据至少一个实施例的示例计算机架构的框图。
具体实施方式
以下公开提供了用于实现加密计算的各种可能的实施例或示例。加密计算可以指代在处理器组件内部采用加密机制的计算机系统安全解决方案。一些加密计算系统可能涉及使用新的加密存储器访问指令对处理器核中的指针、密钥和数据进行加密和解密。因此,可以以支持这种加密和解密操作的方式来配置处理器核的微架构流水线。
一些当前的系统可以通过在微控制器中布置存储器加密单元来解决安全问题。然而,由于在微控制器中布置加密功能,这种系统可能增加时延。其他系统可以提供指针认证解决方案。然而,这些解决方案无法支持多租户,并且在与本文所述的加密计算实现方式相比时可能受到限制。
在本公开的一些实施例中,处理器核的执行流水线首先将加密计算指令映射到至少一个基于分组加密的微操作(μop)和至少一个常规的基于非加密的加载/存储μop。由加载μop执行的加载操作可以进到加载缓冲区(例如,在处理器的存储器子系统中),而由存储μop执行的存储操作可以进到存储缓冲区(例如,在同一存储器子系统中)。有序或乱序执行调度器知道与加密计算指令关联的定时和依赖性。在一些实施例中,加载和存储μop被认为依赖于分组加密μop。在使用计数器模式的实施例中,加载和存储μop可以与计数器的加密并行执行。在这些实现方式中,多个加载/存储μop共同的计数器可以仅被加密一次。在某些实施例中,来自加密计算指令的分组加密被调度为与独立的μop并行执行,该独立的μop可以包括非来自加密计算指令的μop。
此外,在一些实施例中,功能单元包括分组加密或计数器加密操作。例如,可以由耦合到加载缓冲区或在加载缓冲区中实现的解密单元来执行数据解密(例如,对从数据缓存单元加载的数据),并且可以由耦合到存储缓冲区或在存储缓冲区中实现的加密单元来执行数据加密(例如,对从执行单元输出的数据)。作为另一示例,指针解密可以由地址生成单元来执行。可以实现任何合适的分组密码加密算法。例如,可以使用小分组密码(例如,32位块大小的SIMON或SPECK密码,或其他可变位大小的分组密码)或其可改动版本。可以以多种方式实现高级加密标准(AES),以实现数据块的加密/解密。例如,带密文窃取的基于AESxor-encrypt-xor(XEX)的改动码本模式(AES-XTS)可以是合适的。在其他实施例中,可以实现AES计数器(CTR)操作模式。
在某些实施例中,加密计算可能要求将用于每个存储器访问的线性地址接到(plumb)与数据缓存的接口,以使得能够在该接口处进行改动的加密和解密。对于加载请求,这可以通过在加载缓冲区上添加新的读取端口来实现。在利用流密码(例如,使用计数器模式的流密码)的实施例中,一旦创建了加载缓冲区条目,就可以预先计算密钥流。数据可以在它被存储到存储缓冲区中时被加密,或者可以在它离开存储缓冲区之后在它去往一级(L1)缓存的途中被加密。在一些情况下,可以有利的是,一旦它的地址变得可用(例如,虽然它可能仍然在存储缓冲区中),就开始对数据进行加密,以最小化用于存储数据的总延迟。如果数据在存储缓冲区之外被加密,则可以在存储缓冲区上利用读取端口,使得密码执行单元能够读取地址。
与当前系统相比,本公开的各方面可以提供良好的成本/性能折衷,因为数据和指针加密和解密时延可以被隐藏在其他μop的执行之后。根据本公开,其他优点将是显而易见的。
图1是调度微操作的示例过程100的流程图。示例过程100可以由执行调度器来实现,例如在某些情况下是乱序执行调度器。在102,执行调度器访问指令序列。指令可以在固定大小的窗口内(例如,25条指令或50条指令)。在104,将指令序列映射到一序列的微操作(μop)。在典型的流水线中,每条指令可以被映射到该序列中的一个或多个μop。在106,调度器检测μop之间的依赖性,并以有向无环图的形式表达那些依赖性。这可以由调度器的依赖性逻辑来执行。作为示例,两个独立的μop,XOR μop和加载μop,可以被表示为图中的分开的并行分支中的节点。相反,从属的μop,例如ADD μop和随后存储μop,可以被表示为图的同一分支中的顺序节点。在某些情况下,无环图可以包括推测执行分支。
在108,调度器可以用与μop的执行关联的延迟和吞吐量值来注释图,并且在110,调度器对处理器核的功能单元进行的独立的μop的至少一个子集执行最大调度。108的注释可以通过调度器的定时逻辑来执行,而110的调度可以通过调度器的调度逻辑来执行。最大调度可以指代根据一些特定目标,将独立的μop分派给局部最优的核功能单元。例如,调度器可以执行分派,使得同时占用最大可能数量的独立功能单元以执行独立的μop任务。在某些实施例中,在110处执行的调度可以重复若干次。
图2是根据基于密码的指令调度微操作的示例过程200的图。示例过程200可以由执行调度器来实现,例如加密计算系统中的乱序执行调度器。在202,访问基于密码的指令序列。该操作可以对应于过程100的操作102。基于密码的指令可以指代要在加密计算系统或环境中执行的指令,其中,数据以加密形式存储在存储器中并且在处理器核内被解密/加密。示例的基于密码的指令包括加密的加载和存储操作。指令序列可以在固定大小的特定窗口内,如过程100中那样。
在204,为在202处访问的每条指令生成至少一个基于加密的μop和至少一个基于非加密的μop。该操作可以对应于过程100的操作104。在一些实施例中,基于加密的μop是基于分组加密方案。该至少一个基于加密的μop可以包括数据块加密μop,并且该至少一个基于非加密的μop可以包括常规的未加密的加载或存储μop。作为另一示例,该至少一个基于加密的μop可以包括数据块解密μop,并且该至少一个基于非加密的μop可以包括常规的未加密的加载或存储μop。作为又一示例,该至少一个基于加密的μop可以包括数据指针加密μop,并且该至少一个基于非加密的μop可以包括常规的未加密的加载或存储μop。作为又一个示例,该至少一个基于加密的μop可以包括数据指针解密μop,并且该基于非加密的μop可以包括常规的未加密的加载或存储μop。
在206,基于非加密的μop被表示为依赖于(块)基于加密的μop。该操作可以对应于过程100的操作106,并且因此可以在生成无环图期间由调度器的依赖性逻辑来执行。作为示例,在一些实施例中,调度器可以通过以下步骤来计算μop之间的依赖性:将已经从基于密码的指令到μop的映射得到的常规的未加密的加载或存储μop,识别为依赖于数据块加密μop、数据块解密μop、指针加密μop或指针解密μop中的至少一个。
在208,将加密或解密定时添加到表达μop依赖性的无环图。该操作可以对应于过程100的操作108,其中,无环图由调度器的定时逻辑注释。在一些实施例中,调度器另行隐式地考虑定时。在210,基于加密的μop被调度为与独立的μop(例如,不是源自在202处访问的基于密码的指令)并行执行。该操作可以对应于过程100的操作110,其中,通过调度器的调度逻辑来执行最大调度。例如,将μop分派给功能单元的调度逻辑可以确保将数据块和指针加密/解密任务调度为与其他独立的μop并行执行。
图3是根据基于密码的指令调度微操作的另一示例过程300的图。特别地,在所示的示例中,利用了分组密码加密方案,并且用于数据块和指针加密的模式是计数器模式。在计数器模式下,数据通过与几乎随机的值(称为密钥流)进行XOR来加密。可以通过使用秘密密钥对计数器块进行加密来产生密钥流。可以用相同的密钥对包括改动位(以及逐块递增计数器的位)的计数器块进行加密,并将得到的加密块与数据进行XOR。使用计数器模式,可以将密钥流生成微操作与从存储器中读取数据的微操作并行化。
在302,访问基于密码的指令序列。基于密码的指令可以指代要在加密计算系统或环境中执行的指令,其中,数据以加密形式存储在存储器中并在处理器核内被解密/加密。示例的基于密码的指令包括加密的加载和存储操作。指令序列可以在固定大小的特定窗口内,如过程100、200中那样。
在304,以与上面关于过程200的204描述的类似的方式,为在302处访问的每条指令生成至少一个计数器模式的基于加密的μop和至少一个基于非加密的μop。
在306,识别能够以与计数器的加密并行执行的基于非加密的μop,并且对识别出的μop共同的计数器加密一次(而不是多次)。该操作可以对应于过程100的操作106,并且因此可以在生成无环图期间由调度器的依赖性逻辑来执行。作为示例,计算μop依赖性的调度器逻辑可以确保来自基于密码的指令的常规的未加密的加载μop不被表示为依赖于它们的关联的计数器加密μop。在计数器模式下,计数器块的加密可以独立于数据的加载而进行。因此,这两个步骤的对应μop可以由依赖性图中的两个分开的并行分支的节点来表示。根据计数器模式规范,这些分支将汇合到呈现XOR操作的节点,XOR操作将加密的计数器与加载的数据相加。在一些实现方式中,调度器的依赖性逻辑还可以识别来自基于密码的指令的多个加载和存储μop,这些μop的关联数据需要用相同的计数器值和密钥流来加密或解密。对于这些μop,依赖关系逻辑可以仅调度一次密钥流的计算,并将它表示为依赖性图中的单个节点。
在308,将加密或解密定时添加到表达μop依赖性的无环图。该操作可以对应于过程100的操作108,其中,无环图由调度器的时序逻辑注释。在一些实施例中,调度器另行隐式地考虑定时。在310,基于加密的μop被调度为与独立的μop(例如,不是源自于在302处访问的基于密码的指令)并行执行。该操作可以对应于过程100的操作110,其中,通过调度器的调度逻辑来执行最大调度。例如,将μop分派给功能单元的调度逻辑可以确保将数据块和指针加密/解密任务调度为与其他独立的μop并行执行。
上面的描述已经描述了乱序执行调度器可以如何支持加密计算实现中的基于密码的指令的执行。以下示例描述了某些实施例,其中,核的功能单元支持如上所述的微操作的执行。在下面描述的一些示例实施例中,数据的加密和解密分别在处理器核微架构的加载缓冲区和存储缓冲区中完成。
图4A-4B是加密计算系统中的示例数据解密过程的图。特别地,图4A示出了用于实现图4B的示例过程450的示例系统400。在某些实施例中,系统400完全在处理器内实现,作为加密计算系统的一部分。在某些实施例中,系统400可以响应于由实现图2的过程200的乱序调度器发射的多个μop而执行。
参照图4A的示例系统400,加载缓冲区402包括一个或多个加载缓冲区条目404。加载缓冲区402可以实现在处理器的存储器子系统中,例如在处理器核的存储器子系统中。每个加载缓冲区条目404包括物理地址字段406和指针字段408。在所示的示例中,服务于加载请求的状态机从数据缓存单元412(在某些实现方式中可以是存储缓冲区)获得数据,然后在经由解密单元414对加密数据执行的解密操作中使用(经由读取端口410获得的)指针字段408作为改动(tweak)。然后,将解密的数据传送到处理器核微架构的执行单元416。尽管解密单元414被示为实现在加载缓冲区402外部(并且耦合到加载缓冲区402),但是在一些实施例中,解密单元414可以实现在加载缓冲区402内部。
现在参照图4B的示例过程450,数据缓存单元(或存储缓冲区)存储如上所述的要由解密单元414解密的加密数据(密文)。在452,解密单元414访问密文以开始履行加载操作。然后,解密单元414使用从寄存器获得的活动密钥以及改动值,在454对密文进行解密,在所示的示例中,该改动值是指针字段408的值(即,数据的线性地址)。在456,解密单元414将解密的明文提供给执行单元416,以履行加载操作。最后,在458,解密单元414将唤醒信号发送到处理器的预留站(其可以跟踪寄存器内容的状态并支持寄存器重命名)。
图5A-5C是加密计算系统中的另一示例数据解密过程的图。特别地,图5A示出了用于实现图5B的示例过程550和图5C的示例过程560的示例系统500。在某些实施例中,系统500完全在处理器内实现,作为加密计算系统的一部分。在图5A-5B所示的示例中,计数器模式分组密码用于数据的加密/解密。在某些实施例中,系统500可以响应于由实现图3的过程300的乱序调度器发射的多个μop而执行。
参照图5A的示例系统500,加载缓冲区502包括一个或多个加载缓冲区条目504。加载缓冲区502可以实现在处理器的存储器子系统中,例如在处理器核的存储器子系统中。每个加载缓冲区条目504包括物理地址字段506、指针字段508和密钥流510。在所示的示例中,由于使用了计数器模式,因此密钥流生成器512通过对从寄存器522加载的计数器值进行加密来产生密钥流510。加载缓冲区条目504的指针字段508改动由密钥流生成器512执行的加密操作。密钥流生成器512执行的加密可以由其他字段来改动,例如,其他加密上下文值。然后,由XOR单元518(其经由读取端口514读取密钥流510)对来自数据缓存单元516(在一些实施例中可以是存储缓冲区)的加密数据和密钥流510执行XOR操作。然后,将解密的数据传送到处理器核微架构的执行单元520。尽管密钥流生成器512被示为实现在加载缓冲区502内部,但是在一些实施例中,密钥流生成器512可以实现在加载缓冲区502外部。此外,尽管XOR单元518被示为实现在加载缓冲区502外部(并且耦合到加载缓冲区502),但是在一些实施例中,XOR单元518可以实现在加载缓冲区502内部。
现在参照图5B的示例过程550,在552,创建加载缓冲区条目504。在554,调用密钥流生成器512。密钥流生成器512使用从寄存器获得的密钥以及改动值(在所示示例中为指针值508)来生成密钥流510,在556,密钥流510被存储在加载缓冲区条目504中。
现在参照图5C的示例过程560(其可以独立于图5B的过程550执行),与加载操作关联的密文可以从数据缓存单元(或存储缓冲区)获得。在562,访问密文,并且在564,将密文与密钥流510进行XOR。在564,将XOR操作的结果提供给处理器核微架构的执行单元520,以履行加载操作。最后,在568,将唤醒信号发送到处理器的预留站。
图6A-6B是加密计算系统中的示例数据加密过程的图。特别地,图6A示出了用于实现图6B的示例过程650的示例系统600。在某些实施例中,系统600完全在处理器内实现,作为加密计算系统的一部分。在某些实施例中,系统600可以响应于由实现图2的过程200的乱序调度器发射的多个μop而执行。
参照图6A所示的示例系统600,存储缓冲区602包括一个或多个存储缓冲区条目604。存储缓冲区602可以实现在处理器的存储器子系统中,例如在处理器核的存储器子系统中。每个存储缓冲区条目604包括物理地址字段606、指针字段608和(要被存储的)存储数据610。在所示的示例中,服务于存储请求的状态机从寄存器堆620(或执行单元)获得数据,并且在对从寄存器堆620获得的数据执行加密操作期间,加密单元612指针字段608作为改动。然而,将加密数据传递到数据缓存单元630(或CPU核微架构的其他执行单元)。尽管加密单元612被示为实现在存储缓冲区602内部,但是在一些实施例中,加密单元612可以实现在存储缓冲区602外部。
现在参照图6B的示例过程650,要加密的明文数据可获自寄存器堆620。在652,用指针值608填充存储缓冲区条目604。在654,从寄存器堆620访问明文数据,并且在656,加密单元612使用从寄存器640获得的活动密钥以及改动(在所示示例中为指针字段408的值(即,数据的线性地址))对明文数据进行加密,并作为存储数据610存储在存储缓冲区条目604中。在658,将加密的存储数据610提供给数据缓存单元630(或在一些实现方式中,提供给另一等待执行单元)。
在一些实现方式中,出于安全目的,可以对在加密和解密操作中使用的指针值本身进行加密。指针值可以被全部或部分加密(即,可以对指针值的仅一部分位进行加密)。在这些情况下,可以先将加密的指针值进行解密,然后再用于上述加密/解密操作。图7A-7B和图8A-8B描述了用于在加密/解密操作中使用之前对指针值进行解密的示例实施例。
图7A-7B是加密计算系统中的示例指针解密过程的图。特别地,图7A示出了用于实现图7B的示例过程750的示例系统700。在某些实施例中,系统700完全在处理器内实现,作为加密计算系统的一部分。在某些实施例中,系统700可以响应于由实现图2的过程200或图3的过程300的乱序调度器发射的多个μop而执行。
参照图7A所示的示例系统700,地址生成单元702被配置为对线性地址的出于安全而被加密了的部分进行解密。地址生成单元702中的解密单元704接受表示第一编码线性地址的加密指针710连同从寄存器获得的密钥和上下文值改动输入(例如,改动输入可以来自单独的寄存器,或者可以由同一线性地址的未加密位组成)作为输入。解密单元704输出加密指针710的位的解密子集,然后将它连同其他地址生成输入一起传递到地址生成单元702内的地址生成电路706。地址生成电路706基于输入生成第二有效线性地址,以在存储器读取或写入操作中使用。
现在参照图7B所示的示例过程750,改动值(在图7B中也被描述为“上下文值”)可以是静态可用的或动态可用的——如果它不是静态可用的,则从存储器动态地加载它。在752,地址生成单元702接收从加密指针710生成有效地址的请求。地址生成单元702在754确定上下文值是否静态可用的。如果它是静态可用的,则在756处使用该值;如果不是,则在755处从存储器中的表动态地加载上下文值。然后,过程前进到756,在此,使用从寄存器获得的活动解密密钥以及所获得的上下文值来对加密指针710进行解密。在758,将解密的地址输出到地址生成电路706,然后在760,地址生成电路706基于解密的地址(和任何其他地址生成输入)生成用在读取/写入操作中的有效地址。
图8A-8B是加密计算系统中的示例基址切片解密过程的图。特别地,图8A示出了用于实现图8B的示例过程850的示例系统800。在某些实施例中,系统800完全在处理器内实现,作为加密计算系统的一部分。在某些实施例中,系统800可以响应于由实现图2的过程200或图3的过程300的乱序调度器发射的多个μop而执行。
参照图8A所示的示例系统800,生成单元802被配置为对线性地址的部分解密,如上面关于图7A-7B所述的那样。然而,在所示的示例中,被加密了的位集(即,切片824)占用了编码线性地址820的中间切片,而不是如以上关于图7A-7B所描述的示例中那样,整个地址被加密。编码线性地址820的高位822可以表示与编码线性地址820关联的数据对象大小、类型、格式或其他安全信息。编码线性地址820还包括偏移826。
在所示的示例中,地址生成单元802中的解密单元804接受加密的基址切片824连同从寄存器获得的密钥和上下文值改动输入(例如,改动输入可以来自单独的寄存器,或者可以由同一线性地址的未加密位组成)作为输入。解密单元804输出解密的基址。然后,将解密的基址切片提供给串接器/加法器单元806,串接器/加法器单元806将解密的基址与来自寄存器或上下文表条目的一组补充高位和偏移826进行级联,以产生中间基址。在某些实施例中,该组补充位与高位822不同,该组补充位不携带元数据信息(例如,数据对象大小、类型、格式等),而是改为包括所构建的有效线性地址的丢失位,表示线性地址空间中的位置。
然后,OR单元808将中间基址与高位822组合,以产生标记的基址。在其他实施例中,可以使用XOR单元、ADD单元或逻辑AND单元来组合高位822。在又其他实施例中,高位822可以用作改动值,并且改动对地址的中间切片的解密。然后,将标记的基址连同其他地址生成输入一起提供给地址生成单元802中的地址生成电路810。然后,地址生成电路810基于输入生成有效地址,以在存储器读取或写入操作中使用。在一个实施例中,高位822可以用于确定将用作对加密的基址824的改动的中间低地址位的数量(例如,从偏移826开始)。
对于带加密基址的实施例,可以使用转译后备缓冲区(TLB),TLB将线性地址(其也可以称为虚拟地址)映射到物理地址。在分页结构的页面遍历确定正确的线性到物理存储器映射,从而缓存线性到物理映射以用于快速查找的情况下,在页面未命中之后填充TLB条目。作为优化,TLB(例如,数据TLB或dTLB)可以改为缓存编码地址820到物理地址映射,从而使用内容可寻址存储器(CAM)电路将加密/编码地址820匹配到正确的物理地址转译。以此方式,在完成解密单元804揭示解密的线性地址之前,TLB可以确定物理存储器映射,并且可以立即根据该缓存的存储器映射来继续处理指令。其他实施例可以改为使用地址820的偏移826和高位822之一或两者作为至TLB的部分线性地址映射(即,仅针对地址820的明文子集执行TLB查找),并且继续使用物理存储器转译(如果找到),从而在解密804完成之后,验证解密的基址的其余部分(824),以确定完整的线性地址是否匹配(TLB命中)。这样的实施例可以推测地进行处理,并且如果发现最终解密的线性地址匹配在TLB中是误报命中,则杀光(nuke)处理器流水线,从而阻止执行从属指令,或者通过将处理器寄存器状态和/或存储器返回到在TLB误预测(错误的存储器映射)前的先前状态,来清除从属指令的执行。
在一些实施例中,高位822的子集指示地址调整,这可以涉及:将偏移值(其为2的幂)与由地址生成单元产生的有效线性地址相加。偏移值可以包括其中仅单个位等于1而所有其他位等于零的位串。在一些其他实施例中,地址调整可以涉及:从有效线性地址中减去偏移值(其为2的幂)。在一些实现方式中可以包括调整,因为一些存储器对象分配跨越二幂(power of two)边界。在一些实施例中,包含存储器对象分配的最小二幂盒(power-of-twobox)也是分配的唯一属性,并且可以用于以加密方式改动对与分配关联的基址824的加密。如果不支持地址调整,则跨越二幂边界的分配可能与过大的二幂盒关联。这种大的盒可能会被其他分配的数据(即使采用加密隔离,这些数据仍然可能被软件访问(例如,由于软件bug))污染。该调整可以与基址位824的解密并行进行。在某些实施例中,执行调整涉及:(i)使高位822通过解码器电路;(ii)获得解码器电路的输出;(iii)使用那些解码器输出和第一偏移值826一起形成第二偏移值,以加到未加密的线性地址的位;(iv)从该加法中获得进位值;(v)一旦生成了解密的地址位824,就将进位值与它们相加。在其他实施例中,一旦调整过程已经产生了由部分TLB查找过程使用的线性地址位,就可以开始部分TLB查找过程。
现在参照图8B中所示的示例过程850,如图7B中那样,改动值(在图8B中也被描述为“上下文值”)可以是静态可用的或动态可用的——如果它不是静态可用的,则从存储器动态地加载它。特别地,在852,地址生成单元802接收从加密的基址切片824生成有效地址的请求。地址生成单元802在854处确定上下文值是否是静态可用的。如果它是静态可用的,则在856处使用该值;如果不是,则在855处从存储器中的表动态地加载上下文值。在856,使用从寄存器获得的活动解密密钥连同上下文值来对加密的基址切片824进行解密。
在858,地址生成单元802确定以下两个条件:(1)是否正在用静态上下文值执行存储器访问,以及(2)输入上下文值的动态标志位是否已经被清除。动态标志位可以是指针中指示上下文信息是静态可用还是动态可用的标志位。例如,如果指针表示的对象不完全在静态可寻址存储区域的边界内,则可以在指针中设定动态标志位。动态标志位可以指示上下文信息是动态获得的(例如,经由指针上下文表)。换句话说,可能存在一存储器区域,在其中,可以从控制寄存器静态地提供基址的高位,并且该区域之外的分配可能需要从存储器中的表条目动态地取得其基址的高位。
如果两个条件在858都为真,则过程850前进到860;如果一个或二者不为真,则在前进到860之前,在859,从存储器中的表条目动态地加载高基址位。在一些情况下,858的操作可以与854的操作一起执行,或者这些操作可以被合并。同样,在一些情况下,859的操作可以与855的操作一起执行,或者这些操作可以被合并。
在860,地址生成单元802的串接器/加法器单元806将高基址位与解密的基址切片串接,并且在862,将偏移826添加到串接。在864,地址生成单元802经由OR单元808将来自高位822的标记信息与860和862的串接/相加的结果重新组合。将级联、相加和OR的结果连同其他地址生成输入一起提供给地址生成单元802中的地址生成电路810。在866,地址生成电路810基于输入生成有效地址,以用在存储器读取或写入操作中。
图9是在加密计算系统中执行基于密码的指令的示例过程900的流程图。示例过程900可以响应于访问一组基于密码的指令,通过处理器的微处理器流水线的电路(例如,上述一个或多个组件,其可以实现在配置成类似于图10的处理器1000的处理器中)来执行。在一些实施例中,微处理器流水线的电路执行所描述的每个操作,而在其他实施例中,微处理器流水线的电路仅执行所描述的操作的子集。
在902,访问存储在处理器的数据缓存单元(例如,图4A的数据缓存单元412、图5A的数据缓存单元516或图10的数据缓存单元1024)中的加密数据。
在904,基于指针值对加密数据进行解密。可以以与上面关于图4A-4B,图5A-5B所描述的类似的方式,或者以另一方式来执行解密。在一些情况下,指针值或其一部分本身可以被加密。在这些情况下,可以首先例如以与上面关于图7A-7B或图8A-8B所描述的类似的方式对指针值进行解密/解码。
在906,基于从在904处执行的解密获得的数据来执行基于密码的指令。该指令可以在处理器的执行单元(例如,图4A的执行单元416、图5A的执行单元520或图10的执行单元1016)上执行。
在908,基于另一指针值对在906处执行的执行的结果进行加密。可以以与上面关于图6A-6B所描述的类似的方式来执行加密。
在910,将加密的结果存储在处理器的数据缓存单元或另一执行单元中。
上面描述的示例过程可以包括附加的或不同的操作,并且这些操作可以以所示的顺序或以另一顺序执行。在一些情况下,流程图中所示的一个或多个操作被实现为包含多个操作、子过程或其他类型的例程的过程。在一些情况下,操作可以被组合,以另一顺序执行,并行执行,迭代,或者以另一方式重复或执行。此外,尽管本文中将某些功能描述为由加载缓冲区或存储缓冲区、地址生成单元或处理器的其他某些方面来执行,但是应理解,在其他示例中,本公开的教导可以通过处理器中的其他类型的执行单元来实现,包括但不限于分开的数据块加密单元、分开的密钥流生成单元或分开的数据指针解密单元。
图10-图12是可以根据本文公开的实施例使用的示例计算机架构的框图。通常,可以使用本领域已知的用于处理器和计算系统的任何计算机架构设计。在示例中,本领域已知的用于以下设备的系统设计和配置也适合于本文描述的计算系统的实施例:膝上型计算机、台式计算机、手持式PC、个人数字助理、平板电脑、工程工作站、服务器、网络设备、电器、网络集线器、路由器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、智能电话、移动设备、可穿戴电子设备、便携式媒体播放器、手持设备以及各种其他电子设备。通常,适合于本文公开的实施例的计算机架构可以包括但不限于图10-12所示的配置。
图10是根据实施例的处理器的示例说明。处理器1000是可以结合上述实现方式使用的一种类型的硬件设备的示例。处理器1000可以是任何类型的处理器,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、多核处理器、单核处理器或执行代码的其他设备。虽然在图10中仅示出了一个处理器1000,但是处理元件可以替换地包括多于一个图10中所示的处理器1000。处理器1000可以是单线程核,或者对于至少一个实施例,处理器1000可以是多线程的,因为它可以包括每核多于一个硬件线程上下文(或“逻辑处理器”)。
图10还示出了根据实施例的耦合到处理器1000的存储器1002。存储器1002可以是本领域技术人员已知的或可获得的多种存储器(包括存储器层级结构的各个层)中的任一个。这种存储器元件可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)的逻辑块、可擦除可编程只读存储器(EPROM)和电可擦除可编程ROM(EEPROM)。
处理器1000可以执行与本文详述的算法、处理或操作关联的任何类型的指令。通常,处理器1000可以将元素或物品(例如,数据)从一个状态或事物转换为另一状态或事物。
代码1004(其可以是要由处理器1000执行的一个或多个指令)可以存储在存储器1002中,或者可以存储在软件、硬件、固件或其任何合适的组合中,或者存储在任何其他内部或外部组件、设备、元件或对象(视情况且基于特定需求)。在一个示例中,处理器1000可以遵循由代码1004指示的指令的程序序列。每个指令进入前端逻辑1006,并由一个或多个解码器1008进行处理。解码器可以生成微操作(例如,预定义格式的固定宽度微操作)作为其输出,或者可以生成反映原始代码指令的其他指令、微指令或控制信号。前端逻辑1006还包括寄存器重命名逻辑1010和调度逻辑1012(其包括预留站1013),它们通常分配资源并将与指令对应的操作进行排队,以便执行。在一些实施例中,调度逻辑1012包括有序或乱序执行调度器。
处理器1000还可以包括具有一组执行单元1016a、…、1016n和地址生成单元1017等的执行逻辑1014。一些实施例可以包括专用于特定功能或功能集的多个执行单元。其他实施例可以包括仅一个执行单元或可以执行特定功能的一个执行单元。执行逻辑1014执行由代码指令指定的操作。
在完成由代码指令指定的操作的执行之后,后端逻辑1018可以回退代码1004的指令。在一个实施例中,处理器1000允许乱序执行,但是要求顺序回退指令。回退逻辑1020可以采用多种已知的形式(例如,重排序缓冲区等)。以此方式,在代码1004的执行期间,至少依据解码器生成的输出、寄存器重命名逻辑1010所利用的硬件寄存器和表、以及执行逻辑1014所修改的任何寄存器(未示出),对处理器1000进行变换。
处理器1000还可以包括存储器子系统1022,存储器子系统1022包括加载缓冲区1024、解密单元1025、存储缓冲区1026、加密单元1027、转译后备缓冲区(TLB)1028、数据缓存单元(DCU)1030和二级(L2)缓存单元1032。加载缓冲区1024处理用于存储器/缓存加载操作的微操作,而存储缓冲区1026处理用于存储器/缓存存储操作的微操作。在加密计算系统中,存储在数据缓存单元1030、L2缓存单元1032和/或存储器1002中的数据可以被加密,并且可以完全在处理器1000内被加密(在存储之前)和解密(在由一个或多个执行单元1016处理之前),如本文所描述的那样。因此,解密单元1025可以例如在如上所述的由加载缓冲区1024处理的加载操作期间对存储在DCU 1030中的加密数据进行解密,并且加密单元1027可以例如在如上所述的由存储缓冲区1026处理的存储操作期间对要存储在DCU1030中的数据进行加密。在一些实施例中,解密单元1025可以实现在加载缓冲区1024内部,和/或加密单元1027可以实现在存储缓冲区1026内部。转译后备缓冲区(TLB)1028将线性地址映射到物理地址并执行其他功能,如本文所描述的那样。
虽然在图10中未示出,但是处理元件可以包括与处理器1000一起在芯片上的其他元件。例如,处理元件可以包括存储器控制逻辑与处理器1000。处理元件可以包括I/O控制逻辑和/或可以包括与存储器控制逻辑集成的I/O控制逻辑。处理元件还可以包括一个或多个缓存。在一些实施例中,非易失性存储器(例如,闪存或熔丝)也可以与处理器1000一起被包括在芯片上。
图11A是根据本公开的一个或多个实施例的示出示例有序流水线和示例寄存器重命名、乱序发射/执行流水线的框图。图11B是根据本公开的一个或多个实施例的示出要包括在处理器中的有序架构核的示例实施例和示例寄存器重命名、乱序发射/执行架构核二者的框图。图11A-图11B中的实线框示出有序流水线和有序核,而虚线框的可选添加示出寄存器重命名、乱序发射/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图11A中,处理器流水线1100包括预取级1102、长度解码级1104、解码级1106、分配级1108、重命名级1110、调度(也称为分派或发射)级1112、寄存器读取/存储器读取级1114、执行级1116、回写/存储器写入级1118、异常处理级1122和提交级1124。
图11B示出处理器核1190,其包括耦合到执行引擎单元1150的前端单元1130,并且二者耦合到存储器单元1170。处理器核1190和存储器单元1170是可以结合本文所示和描述的实现方式使用的硬件类型的示例。核1190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或替选核类型。作为又一选项,核1190可以是专用核(例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等)。此外,处理器核1190及其组件表示可以用于实现逻辑处理器及其相应组件的示例架构。
前端单元1130包括分支预测单元1132,分支预测单元1132耦合到指令缓存单元1134,指令缓存单元1134耦合到指令转译后备缓冲区(TLB)单元1136,TLB单元1136耦合到指令预取单元1138,指令预取单元1138耦合到解码单元1140。解码单元1140(或解码器)可以对指令进行解码,并生成从原始指令解码的、或反映原始指令的、或从原始指令导出的一个或多个微操作、微码入口点、微指令、其他指令或其他控制信号作为输出。可以使用各种不同的机制实现解码单元1140。合适的机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。在一个实施例中,核1190包括微码ROM或存储用于某些宏指令的微码的其他介质(例如,在解码单元1140中或在前端单元1130内)。解码单元1140耦合到执行引擎单元1150中的重命名/分配器单元1152。
执行引擎单元1150包括重命名/分配器单元1152,其耦合到回退单元1154和一组一个或多个调度器单元1156。调度器单元1156表示任何数量的不同调度器,包括预留站、中央指令窗口等。调度器单元1156耦合到物理寄存器堆单元1158。每一个物理寄存器堆单元1158表示一个或多个物理寄存器堆,其中的不同的物理寄存器堆单元存储一个或多个不同的数据类型(例如,标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等)。在一个实施例中,物理寄存器堆单元1158包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器(GPR)。在本文描述的至少一些实施例中,寄存器单元1158是可以结合本文所示和描述的实现方式使用的硬件类型(例如,寄存器112)的示例。物理寄存器堆单元1158与回退单元1154重叠,以示出可以实现寄存器重命名和乱序执行的各种方式(例如,使用重排序缓冲区和回退寄存器堆;使用将来文件、历史缓冲区和回退寄存器堆;使用寄存器映射和寄存器的池;等)。回退单元1154和物理寄存器堆单元1158耦合到执行集群1160。执行集群1160包括一组一个或多个执行单元1162和一组一个或多个存储器访问单元1164。执行单元1162可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集的多个执行单元,但是其他实施例可以包括仅一个执行单元或均执行所有功能的多个执行单元。执行单元1162还可以包括用于计算核访问主存储器所使用的地址的地址生成单元(AGU)和页面未命中处置器(PMH)。
调度器单元1156、物理寄存器堆单元1158和执行集群1160被示为可能是多个,因为某些实施例对于某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器访问流水线,它们各自具有它们自己的调度器单元、物理寄存器堆单元和/或执行集群——并且在单独的存储器访问流水线的情况下,实现仅该流水线的执行集群具有存储器访问单元1164的某些实施例)。还应理解,在使用了分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发射/执行,而其余是有序的。
该组存储器访问单元1164耦合到存储器单元1170,存储器单元1170包括数据TLB单元1172,数据TLB单元1172耦合到数据缓存单元1174,数据缓存单元1174耦合到2级(L2)缓存单元1176。在一个示例实施例中,存储器访问单元1164可以包括加载单元、存储地址单元和存储数据单元,其中的每一个耦合到存储器单元1170中的数据TLB单元1172。指令缓存单元1134还耦合到存储器单元1170中的2级(L2)缓存单元1176。L2缓存单元1176耦合到一个或多个其他层级的缓存并且最终耦合到主存储器。此外,在核1190中还可以包括页面未命中处置器,用于:如果在数据TLB单元1172中没有找到匹配,则在页表中查找地址映射。
通过示例的方式,示例寄存器重命名、乱序发射/执行核架构可以如下实现流水线1100:1)指令预取单元1138执行预取级1102和长度解码级1104;2)解码单元1140执行解码级1106;3)重命名/分配器单元1152执行分配级1108和重命名级1110;4)调度器单元1156执行调度级1112;5)物理寄存器堆单元1158和存储器单元1170执行寄存器读取/存储器读取级1114;执行集群1160执行执行级1116;6)存储器单元1170和物理寄存器堆单元1158执行回写/存储器写入级1118;7)异常处置级1122中可能涉及各种单元;以及8)回退单元1154和物理寄存器堆单元1158执行提交级1124。
核1190可以支持包括本文所描述的指令在内的一个或多个指令集(例如,x86指令集(较新版本已经添加了一些扩展);Sunnyvale,CA的MIPS Technologies的MIPS指令集;Sunnyvale,CA的ARM Holdings的ARM指令集(具有可选的附加扩展(例如,NEON))。在一个实施例中,核1190包括用于支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用打包数据执行许多多媒体应用所使用的操作。
应理解,核可以支持多线程(执行两个或更多个并行的操作或线程集),并且可以通过多种方式进行该操作,包括:时间分片多线程、同时多线程(其中,单个物理核提供用于该物理核正在同时多线程化的每一个线程的逻辑核)或其组合(例如,在例如
Figure BDA0002422964940000191
Hyperthreading技术中的时间分片预取和解码以及之后的同时多线程)。
虽然在乱序执行的上下文中描述了寄存器重命名,但是应理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示实施例还包括分开的指令和数据缓存单元1134/1174以及共享的L2缓存单元1176,但是替选实施例可以具有用于指令和数据二者的单个内部缓存(例如,1级(L1)内部缓存或多级内部缓存)。在一些实施例中,系统可以包括内部缓存和在核和/或处理器外部的外部缓存的组合。替代地,所有缓存可以在核和/或处理器的外部。
图12示出了根据一个实施例的以点对点(PtP)配置布置的计算系统1200。特别地,图12示出了在其中处理器、存储器和输入/输出设备通过多个点对点接口互连的系统。通常,可以以与计算系统1200相同或相似的方式来配置本文描述的一个或多个计算系统或计算设备。
处理器1270和1280可以被实现为单核处理器1274a和1284a或多核处理器1274a-1274b和1284a-1284b。处理器1270和1280可以各自包括由它们各自的一个或多个核使用的缓存1271和1281。共享缓存(未示出)可以包括在任一处理器中,或者在两个处理器外部(但是仍然经由P-P互连与处理器连接),使得如果处理器被置于低功率模式,则任一或两个处理器的本地缓存信息可以被存储在共享缓存中。
处理器1270和1280还可以各自包括集成存储器控制器逻辑(MC)1272和1282,用于与存储器元件1232和1234通信,存储器元件1232和1234可以是本地附连到相应处理器的主存储器的一部分。在替代实施例中,存储器控制器逻辑1272和1282可以是与处理器1270和1280分离的分立逻辑。存储器元件1232和/或1234可以存储处理器1270和1280在实现本文概述的操作和功能时要使用的各种数据。
处理器1270和1280可以是任何类型的处理器,例如结合其他附图讨论的那些处理器。处理器1270和1280可以分别使用点对点接口电路1278和1288,经由点对点(PtP)接口1250交换数据。处理器1270和1280可以各自使用点对点接口电路1276、1286、1294和1298,经由各点对点接口1252和1254与输入/输出(I/O)子系统1290交换数据。I/O子系统1290还可以使用接口电路1292(其可以是PtP接口电路),经由高性能图形接口1239与高性能图形电路1238交换数据。在一个实施例中,高性能图形电路1238是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。I/O子系统1290还可以与显示器1233通信,以用于显示人类用户可见的数据。在替代实施例中,图12所示的任何或所有PtP链路可以被实现为多点总线而不是PtP链路。
I/O子系统1290可以经由接口电路1296与总线1210通信。总线1220可以具有通过它进行通信的一个或多个设备,例如总线桥1218和I/O设备1216。经由总线1210,总线桥1218可以与其他设备通信,例如用户接口1212(例如,键盘、鼠标、触摸屏或其他输入设备)、通信设备1226(例如,调制解调器、网络接口设备、或可以通过计算机网络1260进行通信的其他类型的通信设备)、音频I/O设备1214和/或数据存储设备1228。数据存储设备1228可以存储代码和数据1230,代码和数据1230可以由处理器1270和/或1280执行。在替代实施例中,可以用一个或多个PtP链路来实现总线架构的任何部分。
图12中描绘的计算系统是可以用于实现本文讨论的各种实施例的计算系统的实施例的示意图。应理解,图12中描绘的系统的各种组件可以组合在片上系统(SoC)架构上,或者以能够实现本文提供的示例和实现方式的功能和特征的任何其他合适的配置来组合。
虽然已经根据某些实现方式和通常关联的方法描述了本公开,但是这些实现方式和方法的变更和置换对于本领域技术人员将是显而易见的。例如,本文描述的动作可以以与所描述的不同的顺序执行,并且仍然实现期望的结果。作为一个示例,附图中所描绘的过程不一定需要所示的特定顺序或时序顺序来实现期望的结果。在某些实现方式中,多任务和并行处理可以是有利的。其他变型在所附权利要求的范围内。
本文提出的架构仅以示例的方式提供,并且旨在是非排他性的和非限制性的。此外,所公开的各个部分仅意图是逻辑划分,不一定需要表示物理上分开的硬件和/或软件组件。某些计算系统可以在单个物理存储器设备中提供存储器元件,并且在其他情况下,存储器元件在功能上可以分布在许多物理设备上。在虚拟机管理器或管理程序的情况下,可以以在虚拟化层上运行的软件或固件的形式来提供全部或部分功能,以提供所公开的逻辑功能。
注意到,对于本文提供的示例,可能关于单个计算系统描述了交互。然而,这样做仅是出于清楚和示例的目的。在某些情况下,通过仅参考单个计算系统来描述给定的一组流程中的一个或多个功能可以是更容易的。此外,用于深度学习和恶意软件检测的系统易于扩展,并且可以跨大量组件(例如,多个计算系统)以及用更复杂/高深的布置和配置来实现。因此,所提供的示例不应限制潜在地应用于无数其他架构的计算系统的范围或抑制其广泛教导。
如本文所使用的,除非明确相反地指出,否则短语“至少一个”的使用指代所提及的要素、条件或活动的任何组合。例如,“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元素,它们不一定受两个元素的任何顺序、等级、重要性、时间顺序或层级结构所限制。
说明书中对“一个实施例”、“实施例”、“一些实施例”等的引用指示,所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以或可以不一定包括该特定特征、结构或特性。此外,这些短语不一定指代同一实施例。
虽然本说明书包含许多特定的实现细节,但是这些不应当被解释为对任何实施例或要求保护的范围的限制,而是解释为对专用于特定实施例的特征的描述。在本说明书中在分开的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分开实现,或者以任何合适的子组合来实现。此外,虽然以上可能将特征描述为以某些组合起作用,甚至最初如此声明,但是在一些情况下,可以从该组合中删除所要求的组合中的一个或多个特征,并且所要求的组合可以涉及子组合或子组合的变型。
类似地,上述实施例中的各种系统组件和模块的分离不应理解为在所有实施例中都需要这种分离。应理解,所描述的程序组件、模块和系统通常可以被集成在一起,在单个软件产品中,或者被封装成多个软件产品。
因此,已经描述了本主题的特定实施例。其他实施例在本公开的范围内。本领域技术人员可以查明许多其他改变、替换、变型、变更和修改,并且意图是本公开涵盖落入所附权利要求范围内的所有这样的改变、替换、变型、变更和修改。
以下示例属于根据本说明书的实施例。将理解的是,以下描述的某些示例的一个或多个方面可以与某些其他示例(包括未明确指出的示例)组合或在其中实现。
示例1包括一种处理器,包括:数据缓存单元,存储加密数据;和耦合到数据缓存单元的微处理器流水线。微处理器流水线包括用于访问基于密码的指令序列并基于加密数据执行的电路。执行基于密码的指令序列包括以下至少一项:基于第一指针值,对所述加密数据进行解密;基于从对所述加密数据的解密获得的数据,执行基于密码的指令;对基于密码的指令的执行结果进行加密,其中,该加密基于第二指针值;以及将加密数据存储在数据缓存单元中,其中,存储在数据缓存单元中的加密数据是基于加密的基于密码的指令的执行结果。
示例2包括示例1的主题,并且可选地,其中,所述电路还用于:对于每条基于密码的指令,生成至少一个基于加密的微操作和至少一个基于非加密的微操作;以及基于所述基于加密的微操作的定时,调度所述至少一个基于加密的微操作和所述至少一个基于非加密的微操作以用于执行。
示例3包括示例2的主题,并且可选地,其中,所述基于加密的微操作基于分组密码,并且所述基于非加密的微操作被调度为依赖于所述基于加密的微操作。
示例4包括示例2的主题,并且可选地,其中,所述基于加密的微操作是基于计数器模式分组密码,并且所述基于非加密的微操作被调度为与计数器的加密并行执行。
示例5包括示例2的主题,并且可选地,其中,所述基于加密的微操作是加密操作和解密操作之一。
示例6包括示例2的主题,并且可选地,其中,所述基于非加密的微操作是加载操作和存储操作之一。
示例7包括示例1-6中任何一个的主题,并且可选地,其中,所述电路用于:通过使用所述第一指针值作为解密函数的改动输入,对所述加密数据进行解密。
示例8包括示例7的主题,并且可选地,其中,用于对所述加密数据进行解密的电路在处理器的加载缓冲区中。
示例9包括示例7的主题,并且可选地,其中,所述电路用于:还通过以下步骤对所述加密数据进行解密:基于所述第一指针值和计数器值生成密钥流;以及对所述密钥流和所述加密数据执行XOR操作,以产生解密的数据。
示例10包括示例1-6中任何一个的主题,其中,所述电路用于:通过使用所述第二指针值作为加密函数的改动输入,对基于密码的指令的执行结果进行加密。
示例11包括示例10的主题,并且可选地,其中,用于对基于密码的指令的执行结果进行加密的电路在所述处理器的存储缓冲区中。
示例12包括示例1-6中任何一个的主题,并且可选地,其中,所述第一指针值和所述第二指针值中的至少一个是基于至少部分加密的编码线性地址的有效地址,并且所述电路还用于:访问所述编码线性地址;基于从所述处理器的寄存器获得的密钥,对所述编码线性地址的加密部分进行解密;以及基于对所述编码线性地址的加密部分的解密的结果,生成所述有效地址。
示例13包括示例12的主题,并且可选地,其中,对所述编码线性地址的全部进行加密。
示例14包括示例12的主题,并且可选地,其中,用于对所述编码线性地址进行解密的电路在所述处理器的地址生成单元中。
示例15包括一种方法,包括:访问基于密码的指令序列,以基于存储在处理器的数据缓存单元中的加密数据执行;以及由处理器的核执行所述基于密码的指令序列,其中,执行包括以下中的一项或多项:基于第一指针值对所述加密数据进行解密;基于从对所述加密数据的解密获得的数据执行基于密码的指令;对基于密码的指令的执行结果进行加密,其中,该加密基于第二指针值;以及将加密数据存储在所述数据缓存单元中,其中,存储在所述数据缓存单元中的加密数据基于加密的基于密码的指令的执行结果。
示例16包括示例15的主题,并且可选地,其中,执行所述基于密码的指令序列包括:对于每条基于密码的指令,生成至少一个基于加密的微操作和至少一个基于非加密的微操作;以及基于所述基于加密的微操作的定时,调度所述至少一个基于加密的微操作和所述至少一个基于非加密的微操作以用于执行;以及执行所调度的微操作。
示例17包括示例16的主题,并且可选地,其中,所述基于加密的微操作基于分组密码,并且所述基于非加密的微操作被调度为依赖于所述基于加密的微操作。
示例18包括示例16的主题,并且可选地,其中,所述基于加密的微操作基于计数器模式分组密码,并且所述基于非加密的微操作被调度为与计数器的加密并行执行。
示例19包括示例16的主题,并且可选地,其中,所述基于加密的微操作是加密操作和解密操作之一,并且所述基于非加密的微操作是加载操作和存储操作之一
示例20包括示例19的主题,并且可选地,其中,所述加密操作和所述解密操作均利用指针值作为改动输入。
示例21包括示例16-20中任何一个的主题,并且可选地,其中,解密是通过耦合到所述处理器的加载缓冲区或在所述处理器的加载缓冲区中实现的电路来执行的。
示例22包括示例16-20中任何一个的主题,并且可选地,其中,加密是通过耦合到所述处理器的存储缓冲区或在所述处理器的存储缓冲区中实现的电路来执行的。
示例23包括示例16-20中任何一个的主题,并且可选地,其中,对所述加密数据进行解密包括:基于第一指针值和计数器值生成密钥流;以及对密钥流和加密数据执行XOR操作,以产生解密的数据。
示例24包括示例16-20中任何一个的主题,并且可选地,其中,第一指针值和第二指针值中的至少一个是基于至少部分地被加密的编码线性地址的有效地址,并且该方法还包括:访问编码线性地址;基于从处理器的寄存器获得的密钥,对编码线性地址的加密部分进行解密;以及基于编码线性地址的加密部分的解密结果,生成有效地址。
示例25包括示例24的主题,并且可选地,其中,对编码线性地址的全部进行加密。
示例26包括示例24的主题,并且可选地,其中,编码线性地址的解密是通过处理器的地址生成单元进行的。
示例27包括一种系统,包括:存储器,存储基于密码的指令;和处理器,耦合到存储器。该处理器包括:数据缓存单元,存储加密数据;用于访问所述基于密码的指令的模块,所述基于密码的指令基于所述加密数据执行;用于基于第一指针值对所述加密数据进行解密的模块;用于使用解密的数据执行所述基于密码的指令的模块;用于基于第二指针值对基于密码的指令的执行结果进行加密的模块;和用于将加密结果存储在数据缓存单元中的模块。
示例28包括示例27的主题,并且可选地,其中,用于对所述加密数据进行解密的模块包括所述处理器的加载缓冲区。
示例29包括示例27的主题,并且可选地,其中,用于对基于密码的指令的执行结果进行加密的模块包括所述处理器的存储缓冲区。
示例30包括示例27-29中任何一个的主题,并且可选地,其中,所述第一指针值和所述第二指针值中的至少一个是基于至少部分加密的编码线性地址的有效地址,并且所述处理器还包括用于以下步骤的附加模块:访问所述编码线性地址;基于从所述处理器的寄存器获得的密钥,对所述编码线性地址的加密部分进行解密;以及基于对所述编码线性地址的加密部分的解密的结果,生成所述有效地址。
示例31包括示例30的主题,并且可选地,其中,所述附加模块包括所述处理器的地址生成单元。
示例32包括一种处理器核,支持指针密钥以及该核中的数据的加密和解密,并且其中,这种加密和解密操作由作为处理器微架构流水线的一部分的逻辑和电路来执行。
示例33包括示例32的主题,并且可选地,其中,将执行加密的存储器加载和存储的指令映射到至少一个块加密μop和至少一个常规加载/存储μop。
示例34包括示例32的主题,并且可选地,其中,有序或乱序执行调度器调度加密、解密和加载/存储μop的执行,并且其中,加载和存储μop被视为依赖于块加密和块解密μop之一。
示例35包括示例34的主题,并且可选地,乱序执行调度器可以加载和存储μop,它们可以与计数器的加密并行执行。
示例36包括示例32的主题,并且可选地,其中,数据的解密通过指针进行改动,并且解密在加载缓冲区中进行。
示例37包括示例32的主题,并且可选地,其中,数据的加密通过指针进行改动,并且加密在存储缓冲区中进行。
示例38包括示例32的主题,并且可选地,其中,指针的解密在地址生成单元中进行。
示例39包括示例32的主题,并且可选地,其中,对基址的切片的解密在地址生成单元中进行。
示例40可以包括一种设备,包括用于执行在以上任何示例中描述的或与之相关的方法,或者本文描述的任何其他方法或过程的一个或多个要素的逻辑、模块、电路或其他模块。

Claims (25)

1.一种处理器,包括:
数据缓存单元,存储加密数据;和
耦合到所述数据缓存单元的微处理器流水线,所述微处理器流水线包括用于访问基于密码的指令序列并基于所述加密数据来执行的电路,其中,执行所述基于密码的指令序列包括以下至少一项:
基于第一指针值,对所述加密数据进行解密;
基于从对所述加密数据的解密获得的数据,执行基于密码的指令;
对基于密码的指令的执行结果进行加密,其中,该加密基于第二指针值;以及
将加密数据存储在所述数据缓存单元中,其中,存储在所述数据缓存单元中的所述加密数据基于加密的基于密码的指令的执行结果。
2.根据权利要求1所述的处理器,其中,所述电路还用于:
对于每条基于密码的指令,生成至少一个基于加密的微操作和至少一个基于非加密的微操作;以及
基于所述基于加密的微操作的定时,调度所述至少一个基于加密的微操作和所述至少一个基于非加密的微操作以用于执行。
3.根据权利要求2所述的处理器,其中,所述基于加密的微操作基于分组密码,并且所述基于非加密的微操作被调度为依赖于所述基于加密的微操作。
4.根据权利要求2所述的处理器,其中,所述基于加密的微操作基于计数器模式分组密码,并且所述基于非加密的微操作被调度为与计数器的加密并行执行。
5.根据权利要求2所述的处理器,其中,所述基于加密的微操作是加密操作和解密操作之一。
6.根据权利要求2所述的处理器,其中,所述基于非加密的微操作是加载操作和存储操作之一。
7.根据权利要求1-6中任一项所述的处理器,其中,所述电路用于:
通过使用所述第一指针值作为解密函数的改动输入,对所述加密数据进行解密。
8.根据权利要求7所述的处理器,其中,用于对所述加密数据进行解密的电路在所述处理器的加载缓冲区中。
9.根据权利要求7所述的处理器,其中,所述电路用于:
还通过以下步骤对所述加密数据进行解密:
基于所述第一指针值和计数器值,生成密钥流;以及
对所述密钥流和所述加密数据执行XOR操作,以产生解密的数据。
10.根据权利要求1-6中任一项所述的处理器,其中,所述电路用于:
通过使用所述第二指针值作为加密函数的改动输入,对基于密码的指令的执行的结果进行加密。
11.根据权利要求10所述的处理器,其中,用于对基于密码的指令的执行的结果进行加密的电路在所述处理器的存储缓冲区中。
12.根据权利要求1-6中任一项所述的处理器,其中,所述第一指针值和所述第二指针值中的至少一个是基于至少部分加密的编码线性地址的有效地址,并且所述电路还用于:
访问所述编码线性地址;
基于从所述处理器的寄存器获得的密钥,对所述编码线性地址的加密部分进行解密;以及
基于对所述编码线性地址的加密部分的解密的结果,生成所述有效地址。
13.根据权利要求12所述的处理器,其中,对所述编码线性地址的全部进行加密。
14.根据权利要求12所述的处理器,其中,用于对编码线性地址进行解密的电路在所述处理器的地址生成单元中。
15.一种方法,包括:
访问基于密码的指令序列,以对存储在处理器的数据缓存单元中的加密数据执行;以及
由处理器的核执行所述基于密码的指令序列,其中,执行包括以下中的一项或多项:
基于第一指针值,对所述加密数据进行解密;
基于从对所述加密数据的解密获得的数据,执行基于密码的指令;
对基于密码的指令的执行结果进行加密,其中,该加密基于第二指针值;以及
将加密数据存储在所述数据缓存单元中,其中,存储在所述数据缓存单元中的所述加密数据基于加密的基于密码的指令的执行结果。
16.根据权利要求15所述的方法,其中,执行基于密码的指令序列包括:
对于每条基于密码的指令,生成至少一个基于加密的微操作和至少一个基于非加密的微操作;以及
基于所述基于加密的微操作的定时,调度所述至少一个基于加密的微操作和所述至少一个基于非加密的微操作以用于执行;以及
执行所调度的微操作。
17.根据权利要求16所述的方法,其中,所述基于加密的微操作基于分组密码,并且所述基于非加密的微操作被调度为依赖于所述基于加密的微操作。
18.根据权利要求16所述的方法,其中,所述基于加密的微操作基于计数器模式分组密码,并且所述基于非加密的微操作被调度为与计数器的加密并行执行。
19.根据权利要求16所述的方法,其中,所述基于加密的微操作是加密操作和解密操作之一;并且所述基于非加密的微操作是加载操作和存储操作之一。
20.根据权利要求19所述的方法,其中,所述加密操作和所述解密操作均利用指针值作为改动输入。
21.一种系统,包括:
存储器,存储基于密码的指令;和
耦合到所述存储器的处理器,所述处理器包括:
数据缓存单元,存储加密数据;
用于访问所述基于密码的指令的模块,所述基于密码的指令基于所述加密数据执行;
用于基于第一指针值对所述加密数据进行解密的模块;
用于使用解密的数据执行所述基于密码的指令的模块;
用于基于第二指针值对基于密码的指令的执行结果进行加密的模块;和
用于将加密的结果存储在所述数据缓存单元中的模块。
22.根据权利要求21所述的系统,其中,用于对所述加密数据进行解密的模块包括所述处理器的加载缓冲区。
23.根据权利要求21所述的系统,其中,用于对基于密码的指令的执行结果进行加密的模块包括所述处理器的存储缓冲区。
24.根据权利要求21-23中任一项所述的系统,其中,所述第一指针值和所述第二指针值中的至少一个是基于至少部分加密的编码线性地址的有效地址,并且所述处理器还包括用于以下操作的附加装置:
访问所述编码线性地址;
基于从所述处理器的寄存器获得的密钥,对所述编码线性地址的加密部分进行解密;以及
基于对所述编码线性地址的加密部分的解密的结果,生成所述有效地址。
25.根据权利要求24所述的系统,其中,所述附加装置包括所述处理器的地址生成单元。
CN202010211440.7A 2019-06-29 2020-03-24 支持加密计算的微处理器流水线电路 Pending CN112149188A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962868884P 2019-06-29 2019-06-29
US62/868,884 2019-06-29
US16/724,105 US11321469B2 (en) 2019-06-29 2019-12-20 Microprocessor pipeline circuitry to support cryptographic computing
US16/724,105 2019-12-20

Publications (1)

Publication Number Publication Date
CN112149188A true CN112149188A (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 (1)

Application Number Title Priority Date Filing Date
CN202010211610.1A Pending CN112149143A (zh) 2019-06-29 2020-03-24 用于存储器标记的低存储器开销堆管理

Family Applications After (5)

Application Number Title Priority Date Filing Date
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 用于密码计算的密钥管理

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
US20200145199A1 (en) 2020-05-07
US11829488B2 (en) 2023-11-28
CN112149147A (zh) 2020-12-29
US20200125502A1 (en) 2020-04-23
CN112149148A (zh) 2020-12-29
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
US11321469B2 (en) Microprocessor pipeline circuitry to support cryptographic computing
US11575504B2 (en) Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
CN107851170B (zh) 支持用于存储器地址范围的可配置安全级别
US11531772B2 (en) Support for increased number of concurrent keys within multi-key cryptographic engine
US8819455B2 (en) Parallelized counter tree walk for low overhead memory replay protection
US20210117342A1 (en) Encoded pointer based data encryption
CN110661767A (zh) 在微处理器架构内保护密钥和敏感数据免受攻击
US11250165B2 (en) Binding of cryptographic operations to context or speculative execution restrictions
US20220121447A1 (en) Hardening cpu predictors with cryptographic computing context information
CN111353156A (zh) 可缩放多密钥总存储器加密引擎
US11995446B2 (en) Branch predictor storing encrypted information
CN117546168A (zh) 用于瞬态侧信道安全的使用上下文信息的密码计算
EP4020114A1 (en) Time and frequency domain side-channel leakage suppression using integrated voltage regulator cascaded with runtime crypto arithmetic transformations
US12032486B2 (en) Transient side-channel aware architecture for cryptographic computing
US20220121578A1 (en) Transient side-channel aware architecture for cryptographic computing
US20240104027A1 (en) Temporal information leakage protection mechanism for cryptographic computing
US20210117341A1 (en) Cache line slot level encryption based on context information

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