WO2016018354A1 - Protecting memory storage content - Google Patents

Protecting memory storage content Download PDF

Info

Publication number
WO2016018354A1
WO2016018354A1 PCT/US2014/049105 US2014049105W WO2016018354A1 WO 2016018354 A1 WO2016018354 A1 WO 2016018354A1 US 2014049105 W US2014049105 W US 2014049105W WO 2016018354 A1 WO2016018354 A1 WO 2016018354A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory storage
key
data
memory
application
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.)
Ceased
Application number
PCT/US2014/049105
Other languages
French (fr)
Inventor
Fred A. SPRAGUE
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Priority to PCT/US2014/049105 priority Critical patent/WO2016018354A1/en
Priority to US15/315,999 priority patent/US10176342B2/en
Publication of WO2016018354A1 publication Critical patent/WO2016018354A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/6281Protecting 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 at program execution time, where the protection is within the operating system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Definitions

  • a computer system has traditionally contained both volatile and non-volatile storage devices.
  • volatile memory devices such as dynamic random access memory (DRAM) devices, have traditionally been used to form the working memory for the computer system.
  • DRAM dynamic random access memory
  • non-volatile mass storage devices associated with slower access times, such as magnetic media-based or optical media-based mass storage devices.
  • FIG. 1 is a schematic diagram of a computer system according to an example implementation.
  • FIG. 2 is a flow diagram depicting a technique to decrypt data retrieved from a memory storage system according to an example implementation.
  • FIG. 3A is an illustration of a process to decrypt data retrieved from a memory storage system according to an example implementation.
  • FIG. 3B is an illustration of a process to encrypt data stored in a memory storage system according to an example implementation.
  • FIG. 4 is a flow diagram depicting a cryptography-based technique to store data in and retrieve data from a memory storage system according to an example implementation.
  • FIG. 5 is a more detailed schematic diagram of a physical machine of Fig. 1 according to an example implementation.
  • the persistent memory may be the memory of a portable computer system; potentially removable media from an electronic device, such as a non-volatile, subscriber information module (SIM) card of a cellular phone or smartphone; a persistent memory storing sensitive information for an enterprise; a persistent memory storing data for a datacenter; and so forth.
  • SIM subscriber information module
  • the content of a memory storage system is protected using a cryptology-based protection system that use both an operating system kernel-held cryptography key and a process-held cryptography key for purposes of encrypting data to be stored in a protected memory storage system and decrypting data retrieved from the memory storage system.
  • This protection inhibits man-in-the middle attacks, as sniffers in-line between the memory storage system and the core/process using the memory content are unable to examine the actual memory content. Also, content acquired from accidental and intentional unauthorized accesses are not easily decoded.
  • a relatively inexpensive cipher from the standpoint of processing power and/or processing time) may be used.
  • Fig. 1 depicts an example computer system 100 that includes at least one physical machine 1 10 (example physical machines 1 10-1 to 1 10-N, being depicted in Fig. 1 ) and a memory storage system 190 (a persistent memory storage system, for example) that is accessed by the physical machine(s) 1 10 for purposes of storing data in the system 190 and retrieving data from the system 190.
  • the computer system 100 may be any of a number of different systems, such as a desktop computer, a tablet, a portable computer, a cellular telephone, a local area network, a wide area network, a datacenter, a client, a server, and so forth.
  • the computer system 100 may be located in a single box or rack or may be distributed across several boxes or racks. Moreover, the
  • components of the computer system 100 may be disposed at a single geographic location or may be distributed over multiple locations. Thus, many implementations of the computer system 100 are contemplated and are within the scope of the appended claims.
  • the physical machine 1 10 in general, is an actual machine that is made up of actual hardware 120 and is configured to operate in the example implementations that are disclosed herein by executing actual machine executable instructions 160, or "software.”
  • the physical machine 1 10 may be a microprocessor board, an embedded microcontroller board, a server blade, a CPU, a standalone computer; a portable computer, a tablet, a server, a client and so forth.
  • the physical machine(s) 1 10 of the computer system 100 access the memory storage system 190 using communication fabric 180.
  • the communication fabric 180 may be single bus, multiple buses, a hierarchically-arranged bus architecture, or may be network fabric, as examples.
  • the communication fabric 180 may be single bus, multiple buses, a hierarchically-arranged bus architecture, or may be network fabric, as examples.
  • the communication fabric 180 is a network fabric, the network fabric may include one or more buses or fast interconnects.
  • the network 40 may include wide area network (WAN) connections, local area network (LAN) connections, wireless connections, Internet connections, and so forth, depending on the particular implementation.
  • the memory storage system 190 in accordance with example
  • implementations may be a persistent memory storage system that has non-volatile memory 192 that stores data 194, i.e., the memory content that is protected using the systems and techniques that are disclosed herein.
  • the non-volatile memory 192 may be formed from an of a number of non-volatile devices, such as memristor memory devices, phase change memory devices, flash memory devices, and so forth.
  • the memory content protection system includes at least the following components of the physical machine 1 10: a process-held key, an operating system kernel-held key and a cryptography function on data stored in and referenced from memory storage based at least in part on the process-held and kernel-held keys.
  • the data 194 stored in the memory storage system 190 is encrypted using three levels of encryption.
  • a first key 196 that is held by an application 164 (for example) that requests retrieval or storage of the data 194; a second key 124 that is held by an operating system kernel 163; and a third 174 key that is held by a process that forms an instance of the application 164.
  • cryptography engine 198 of the memory storage system 190 decrypts and encrypts content retrieved from and stored in the memory storage system 190 using the application-held key 196.
  • a cryptographic engine 166 (a software or hardware cryptography engine, depending on the example
  • the physical machine 1 10 further decrypts content retrieved from the memory storage system 190 using the kernel-held 124 and process-held 174 keys; and conversely, the cryptographic engine 166 encrypts content to be stored in the memory storage system 190 using the kernel-held 124 and process-held keys 174.
  • the data 194 may contain a file that is to be requested by a given application 164 that is executing on the physical machine 1 10-1 .
  • the application 164 In requesting the file from the memory storage system 190, the application 164 provides a key 196 to the system 190.
  • the application 164 may generate a write request, which includes the key 196 as a parameter of the request.
  • the key 196 may be uniquely associated with the file, with the application, or with the entire memory storage system (as
  • the cryptography engine 198 of the memory storage system 190 first applies the key 196 to the data 194 (based on a predetermined cipher, as described herein) to produce data, which is decrypted at a first level.
  • the memory storage system 190 then communicates this first level, decrypted data via the communication fabric 180 to the physical machine 1 10-1 on which the application 164 executes.
  • a network interface 128 of the physical machine 1 10-1 may receive the first level, decrypted data and store the data in a buffer in a memory 126 of the physical machine 1 10-1 .
  • the data at this point, however, is still encrypted by a kernel-held key 124 and by a process-held key 174.
  • the kernel 163 of operating system 162 which is the core of the operating system 162, selects the appropriate key 124 (from a larger pool of candidate keys 124) to be used in further decrypting the data based on the processor that is executing the application 164 that requested the data.
  • the kernel 163 selects the key 124.
  • the kernel-held keys 124 are associated with different processor core identities, such that the kernel 163 selects a given key 124 for a given application 164 based the specific processor core 122 that is executing the given application 164.
  • the process 170 which is the instance of the application 164 requesting the data, selects the appropriate key 174 (which is also used in further decrypting the data) from a larger pool of candidate keys 174. In this manner, in accordance with example
  • the process 170 selects the key 174 based on the memory region that is currently being accessed by the process 170, as a certain memory region is commensurate with a certain function or subroutine of the application 164, which is processing the requested data. More specifically, in accordance with example implementations, the keys 174 are associated with different translation lookaside buffers (TLBs), which define sets of cached virtual-to-physical address conversions for different memory regions. Although the TLBs may not be accessible (or even known) to the process 170, the process 170 is the entity that sets up the TLBs (TLBs), which define sets of cached virtual-to-physical address conversions for different memory regions. Although the TLBs may not be accessible (or even known) to the process 170, the process 170 is the entity that sets up the TLBs (TLBs), which define sets of cached virtual-to-physical address conversions for different memory regions. Although the TLBs may not be accessible (or even known) to the process 170, the process 170 is the entity that
  • the process 170 selects the appropriate key 174 and sets the key 174 in place based on the connection being made. It is noted that when moving a process from one processing core 122 to another (or possibly to a different processing package altogether), the TLB entries may be moved as well, so that the move may be made relatively seamlessly.
  • the cryptography engine 166 of the physical machine 1 10-1 receives the selected kernel-held 124 and process-held 174 keys and applies these keys to the first level, decrypted data received from the memory subsystem 190 to further decrypt the data to generate the final, decrypted data that may then be used by the requesting application 164.
  • the cryptography engine 166 may be formed by a central processing unit, or processor (such as one of the processor cores 122 or another processor), which executes a set of machine executable instructions.
  • the cryptography engine 166 may be formed by an application specific integrated circuit (ASIC).
  • ASIC application specific integrated circuit
  • the cryptography engine 166 may be formed from two decryption engine layers, with each layer decrypting data based on a different one of the keys 124 and 174.
  • the cryptography engine 166 may be formed from two decryption engine layers, with each layer decrypting data based on a different one of the keys 124 and 174.
  • a technique 200 to protect memory content includes providing (block 204) a first key to a memory storage system to retrieve data from the memory storage system, which is decrypted using the first key.
  • the technique 200 includes retrieving (block 208) a second key that is held by a kernel based on the processor that is executing the application and retrieving (block 210) a third key that is held by a process based on a memory region that is being accessed by the process.
  • the second and third keys are used to further decrypt the data retrieved from the memory storage system, pursuant to block 208.
  • the processing cores 122 which may be CPU packages, processing cores on one or multiple CPU packages, and so forth (depending on the implementation) are examples of the hardware 120.
  • the hardware 120 may include additional components, such as the memory 126 (memory used by the processing cores 122, for example) and the network interface 128.
  • the memory 126 may store machine executable instructions (such as instructions 160, for example), data and so forth.
  • the memory 126 is a non-transitory storage medium and may include one or more of the following: semiconductor storage devices, memristor-based storage devices; magnetic storage devices; phase charge memory-based devices, optical storage devices, flash memory devices, optical storage devices, volatile memory devices, non-volatile memory device, and so forth.
  • the machine executable instructions 160 contain sets of instructions associated with the applications 164, processes 170, operating system 162, cryptography engine 166 and so forth.
  • the computer system 100 may be formed from one or multiple physical machines 1 10. If the computer system 100 includes multiple physical machines 1 10, the other physical machine(s) 1 10 may or may not have an architecture and/or components similar to what is illustrated for the physical machine 1 10-1 , depending on the particular implementation.
  • Fig. 3A depicts a decryption process 300, in accordance with example implementations.
  • the encryption process 300 begins by processing data 194 that is stored in the memory storage system 190. This data is decrypted 310 by the memory storage system using the application-held key 196 to produce data 314 that is received by the physical machine 1 10. The data 314 is then decrypted 320 by the cryptography engine 166 using a kernel-held key 124 and a process held key 174 to produce decrypted data 332.
  • an application 164 may desire to store data originating with the application 164 and as such, may initiate a sequence of actions to store data in the memory storage system 190.
  • the data may be encrypted in a sequence, similar to an example encryption process 340 that is depicted in Fig. 3B.
  • data 342 that is to be stored, or written, to the memory storage system 190 is encrypted 344 by the cryptography engine 166 using the process-held 174 and kernel-held 124 keys to generate encrypted data 346 that leaves the physical machine 1 10 and is communicated over the communication fabric 180 to the memory storage system 190.
  • the system 190 further encrypts 348 the data (via the
  • a technique 400 to protect memory storage content includes executing (block 404) an application to cause the communication of data with a memory storage system.
  • an application to cause the communication of data with a memory storage system.
  • cryptography that is associated with at least process and kernel held keys is used (block 408) to store and/or retrieve the data in the memory storage system.
  • a given physical machine 1 10 may include multiple CPU packages 500 (M CPU
  • each CPU package 500 is a physical semiconductor package that may contain multiple processor cores 122 (P processor cores 122-1 , 122-2. . .122-P, being depicted in Fig. 5).
  • the processor cores 122 may be arranged in a non-uniform memory access (NUMA) architecture, in which the processor cores 122 on a given CPU package 500 share a local memory 520.
  • NUMA non-uniform memory access
  • access to the local memory 520 may be controlled by a memory controller 510 of the CPU package 500.
  • the memory controller 510 may decrypt and encrypt the data provided to and from a given processor core 122 via a key 124 that is associated with the core 122.
  • the processor cores 122 may access memory outside of the CPU package 500, such as the remotely-disposed memory storage system, using an I/O controller 514.
  • the physical machine 1 10 may have an architecture other than a NUMA architecture or, in a general, may have an architecture that is different from the architecture that is depicted in Fig. 5, in accordance with further implementations.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Bioethics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

An apparatus includes memory storage and a protection system to protect content of the memory storage. The protection system includes a first key that is held by a process and is associated with application data to be stored in the memory storage; and a second key that is held by an operating system kernel. The protection system also includes a cryptography engine to perform a cryptography function on the data based at least in part on the first and second keys.

Description

PROTECTING MEMORY STORAGE CONTENT
Background
[0001 ] A computer system has traditionally contained both volatile and non-volatile storage devices. In this manner, due to their relatively faster access times, volatile memory devices, such as dynamic random access memory (DRAM) devices, have traditionally been used to form the working memory for the computer system. To preserve computer system data when the system is powered off, data has
traditionally been stored in non-volatile mass storage devices associated with slower access times, such as magnetic media-based or optical media-based mass storage devices.
[0002] The development of relatively high density, solid state non-volatile memory technologies with relatively fast access times is closing the gap between the two technologies; and as a result, non-volatile memory devices are becoming
increasingly used to form a working, persistent memory for both traditional "memory" and "storage" functions.
Brief Description of the Drawings
[0003] Fig. 1 is a schematic diagram of a computer system according to an example implementation.
[0004] Fig. 2 is a flow diagram depicting a technique to decrypt data retrieved from a memory storage system according to an example implementation.
[0005] Fig. 3A is an illustration of a process to decrypt data retrieved from a memory storage system according to an example implementation.
[0006] Fig. 3B is an illustration of a process to encrypt data stored in a memory storage system according to an example implementation.
[0007] Fig. 4 is a flow diagram depicting a cryptography-based technique to store data in and retrieve data from a memory storage system according to an example implementation.
[0008] Fig. 5 is a more detailed schematic diagram of a physical machine of Fig. 1 according to an example implementation.
Detailed Description
[0009] Data stored in a persistent memory is "permanent" in nature, and as such, the content of a persistent memory is particularly susceptible to accidental and intentional accesses. The persistent memory may be the memory of a portable computer system; potentially removable media from an electronic device, such as a non-volatile, subscriber information module (SIM) card of a cellular phone or smartphone; a persistent memory storing sensitive information for an enterprise; a persistent memory storing data for a datacenter; and so forth.
[0010] In accordance with systems and techniques that are disclosed herein, the content of a memory storage system is protected using a cryptology-based protection system that use both an operating system kernel-held cryptography key and a process-held cryptography key for purposes of encrypting data to be stored in a protected memory storage system and decrypting data retrieved from the memory storage system. This protection inhibits man-in-the middle attacks, as sniffers in-line between the memory storage system and the core/process using the memory content are unable to examine the actual memory content. Also, content acquired from accidental and intentional unauthorized accesses are not easily decoded. Moreover, in accordance with example implementations, a relatively inexpensive cipher (from the standpoint of processing power and/or processing time) may be used.
[001 1 ] As a more specific example, Fig. 1 depicts an example computer system 100 that includes at least one physical machine 1 10 (example physical machines 1 10-1 to 1 10-N, being depicted in Fig. 1 ) and a memory storage system 190 (a persistent memory storage system, for example) that is accessed by the physical machine(s) 1 10 for purposes of storing data in the system 190 and retrieving data from the system 190. The computer system 100 may be any of a number of different systems, such as a desktop computer, a tablet, a portable computer, a cellular telephone, a local area network, a wide area network, a datacenter, a client, a server, and so forth. The computer system 100 may be located in a single box or rack or may be distributed across several boxes or racks. Moreover, the
components of the computer system 100 may be disposed at a single geographic location or may be distributed over multiple locations. Thus, many implementations of the computer system 100 are contemplated and are within the scope of the appended claims.
[0012] The physical machine 1 10, in general, is an actual machine that is made up of actual hardware 120 and is configured to operate in the example implementations that are disclosed herein by executing actual machine executable instructions 160, or "software." As examples, the physical machine 1 10 may be a microprocessor board, an embedded microcontroller board, a server blade, a CPU, a standalone computer; a portable computer, a tablet, a server, a client and so forth.
[0013] The physical machine(s) 1 10 of the computer system 100 access the memory storage system 190 using communication fabric 180. Depending on the particular implementation of the computer system 100, the communication fabric 180 may be single bus, multiple buses, a hierarchically-arranged bus architecture, or may be network fabric, as examples. For example implementations in which the
communication fabric 180 is a network fabric, the network fabric may include one or more buses or fast interconnects. The network 40 may include wide area network (WAN) connections, local area network (LAN) connections, wireless connections, Internet connections, and so forth, depending on the particular implementation.
[0014] The memory storage system 190, in accordance with example
implementations, may be a persistent memory storage system that has non-volatile memory 192 that stores data 194, i.e., the memory content that is protected using the systems and techniques that are disclosed herein. The non-volatile memory 192 may be formed from an of a number of non-volatile devices, such as memristor memory devices, phase change memory devices, flash memory devices, and so forth.
[0015] In accordance with example implementations, the memory content protection system includes at least the following components of the physical machine 1 10: a process-held key, an operating system kernel-held key and a cryptography function on data stored in and referenced from memory storage based at least in part on the process-held and kernel-held keys. [0016] More specifically, in accordance with example implementations, the data 194 stored in the memory storage system 190 is encrypted using three levels of encryption. In this manner, for purposes of providing the three levels of encryption, three different cryptography keys are used: a first key 196 that is held by an application 164 (for example) that requests retrieval or storage of the data 194; a second key 124 that is held by an operating system kernel 163; and a third 174 key that is held by a process that forms an instance of the application 164. A
cryptography engine 198 of the memory storage system 190 (an engine built into a memory controller, or memory manager 197, of the storage system 190, for example) decrypts and encrypts content retrieved from and stored in the memory storage system 190 using the application-held key 196. A cryptographic engine 166 (a software or hardware cryptography engine, depending on the example
implementation) of the physical machine 1 10 further decrypts content retrieved from the memory storage system 190 using the kernel-held 124 and process-held 174 keys; and conversely, the cryptographic engine 166 encrypts content to be stored in the memory storage system 190 using the kernel-held 124 and process-held keys 174.
[0017] As a more specific example, in accordance with example implementations, the data 194 may contain a file that is to be requested by a given application 164 that is executing on the physical machine 1 10-1 . In requesting the file from the memory storage system 190, the application 164 provides a key 196 to the system 190. For example, the application 164 may generate a write request, which includes the key 196 as a parameter of the request. The key 196 may be uniquely associated with the file, with the application, or with the entire memory storage system (as
examples), depending on the particular implementation.
[0018] Continuing the example, before the memory storage system 190 provides data to the communication fabric 180 in response to the request, the cryptography engine 198 of the memory storage system 190 first applies the key 196 to the data 194 (based on a predetermined cipher, as described herein) to produce data, which is decrypted at a first level. The memory storage system 190 then communicates this first level, decrypted data via the communication fabric 180 to the physical machine 1 10-1 on which the application 164 executes. For example, a network interface 128 of the physical machine 1 10-1 may receive the first level, decrypted data and store the data in a buffer in a memory 126 of the physical machine 1 10-1 . The data at this point, however, is still encrypted by a kernel-held key 124 and by a process-held key 174.
[0019] The kernel 163 of operating system 162, which is the core of the operating system 162, selects the appropriate key 124 (from a larger pool of candidate keys 124) to be used in further decrypting the data based on the processor that is executing the application 164 that requested the data. In accordance with example implementations, the kernel 163 selects the key 124. For example, in accordance with example implementations, the kernel-held keys 124 are associated with different processor core identities, such that the kernel 163 selects a given key 124 for a given application 164 based the specific processor core 122 that is executing the given application 164.
[0020] Moreover, in accordance with example implementations, the process 170, which is the instance of the application 164 requesting the data, selects the appropriate key 174 (which is also used in further decrypting the data) from a larger pool of candidate keys 174. In this manner, in accordance with example
implementations, the process 170 selects the key 174 based on the memory region that is currently being accessed by the process 170, as a certain memory region is commensurate with a certain function or subroutine of the application 164, which is processing the requested data. More specifically, in accordance with example implementations, the keys 174 are associated with different translation lookaside buffers (TLBs), which define sets of cached virtual-to-physical address conversions for different memory regions. Although the TLBs may not be accessible (or even known) to the process 170, the process 170 is the entity that sets up the
connections (for files, input/output (I/O), and so forth); and as such, the process 170 selects the appropriate key 174 and sets the key 174 in place based on the connection being made. It is noted that when moving a process from one processing core 122 to another (or possibly to a different processing package altogether), the TLB entries may be moved as well, so that the move may be made relatively seamlessly.
[0021 ] The cryptography engine 166 of the physical machine 1 10-1 , for this example, receives the selected kernel-held 124 and process-held 174 keys and applies these keys to the first level, decrypted data received from the memory subsystem 190 to further decrypt the data to generate the final, decrypted data that may then be used by the requesting application 164.
[0022] In accordance with example implementations, the cryptography engine 166 may be formed by a central processing unit, or processor (such as one of the processor cores 122 or another processor), which executes a set of machine executable instructions. In further example implementations, the cryptography engine 166 may be formed by an application specific integrated circuit (ASIC).
Moreover, for example implementations in which the cryptography engine 166 is formed from the execution of machine executable instructions, the engine 166 may be formed from two decryption engine layers, with each layer decrypting data based on a different one of the keys 124 and 174. Thus, many implementations are contemplated, which are within the scope of the claims.
[0023] Thus, referring to Fig. 2 in conjunction with Fig. 1 , in accordance with example implementations, a technique 200 to protect memory content includes providing (block 204) a first key to a memory storage system to retrieve data from the memory storage system, which is decrypted using the first key. The technique 200 includes retrieving (block 208) a second key that is held by a kernel based on the processor that is executing the application and retrieving (block 210) a third key that is held by a process based on a memory region that is being accessed by the process. The second and third keys are used to further decrypt the data retrieved from the memory storage system, pursuant to block 208.
[0024] Referring back to Fig. 1 , in accordance with example implementations, the processing cores 122, which may be CPU packages, processing cores on one or multiple CPU packages, and so forth (depending on the implementation) are examples of the hardware 120. Moreover, the hardware 120 may include additional components, such as the memory 126 (memory used by the processing cores 122, for example) and the network interface 128. The memory 126 may store machine executable instructions (such as instructions 160, for example), data and so forth.
[0025] The memory 126 is a non-transitory storage medium and may include one or more of the following: semiconductor storage devices, memristor-based storage devices; magnetic storage devices; phase charge memory-based devices, optical storage devices, flash memory devices, optical storage devices, volatile memory devices, non-volatile memory device, and so forth. The machine executable instructions 160 contain sets of instructions associated with the applications 164, processes 170, operating system 162, cryptography engine 166 and so forth.
[0026] As noted above, the computer system 100 may be formed from one or multiple physical machines 1 10. If the computer system 100 includes multiple physical machines 1 10, the other physical machine(s) 1 10 may or may not have an architecture and/or components similar to what is illustrated for the physical machine 1 10-1 , depending on the particular implementation.
[0027] Fig. 3A depicts a decryption process 300, in accordance with example implementations. Referring to Fig. 3A in conjunction with Fig. 1 , the encryption process 300 begins by processing data 194 that is stored in the memory storage system 190. This data is decrypted 310 by the memory storage system using the application-held key 196 to produce data 314 that is received by the physical machine 1 10. The data 314 is then decrypted 320 by the cryptography engine 166 using a kernel-held key 124 and a process held key 174 to produce decrypted data 332.
[0028] Referring back to Fig. 1 , in addition to retrieving data from the memory storage system 190, an application 164 may desire to store data originating with the application 164 and as such, may initiate a sequence of actions to store data in the memory storage system 190. For this to occur, the data may be encrypted in a sequence, similar to an example encryption process 340 that is depicted in Fig. 3B. Referring to Fig. 3B in conjunction with Fig. 1 , data 342 that is to be stored, or written, to the memory storage system 190 is encrypted 344 by the cryptography engine 166 using the process-held 174 and kernel-held 124 keys to generate encrypted data 346 that leaves the physical machine 1 10 and is communicated over the communication fabric 180 to the memory storage system 190. In the memory storage system 190, the system 190 further encrypts 348 the data (via the
cryptography engine 198) to produce data 194 stored in the memory storage system 190.
[0029] Referring to Fig. 4, to summarize, in accordance with example
implementations, a technique 400 to protect memory storage content includes executing (block 404) an application to cause the communication of data with a memory storage system. Pursuant to the technique 400, cryptography that is associated with at least process and kernel held keys is used (block 408) to store and/or retrieve the data in the memory storage system.
[0030] Referring to Fig. 5, as a more specific example of the physical machine 1 10, in accordance with some implementations, a given physical machine 1 10 (such as depicted machine 1 10-1 ) may include multiple CPU packages 500 (M CPU
packages 500-1 . . .500-M, being depicted in Fig. 5). In this regard, each CPU package 500 is a physical semiconductor package that may contain multiple processor cores 122 (P processor cores 122-1 , 122-2. . .122-P, being depicted in Fig. 5). In accordance with an example implementation, the processor cores 122 may be arranged in a non-uniform memory access (NUMA) architecture, in which the processor cores 122 on a given CPU package 500 share a local memory 520. In this regard, access to the local memory 520 may be controlled by a memory controller 510 of the CPU package 500. Moreover, in accordance with example implementations, the memory controller 510 may decrypt and encrypt the data provided to and from a given processor core 122 via a key 124 that is associated with the core 122. The processor cores 122 may access memory outside of the CPU package 500, such as the remotely-disposed memory storage system, using an I/O controller 514.
[0031 ] The physical machine 1 10 may have an architecture other than a NUMA architecture or, in a general, may have an architecture that is different from the architecture that is depicted in Fig. 5, in accordance with further implementations.
[0032] While the present invention has been described with respect to a limited number of embodiments, those skilled in the art, having the benefit of this disclosure, will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present invention.

Claims

What is claimed is: 1 . A method comprising:
protecting content of a memory storage subsystem, comprising:
accessing first data being stored by the memory storage system and being protected through encryption, the accessing comprising using the memory storage system to decrypt the first data based at least in part on a first key to provide second data;
providing a second key held by a process associated with an application;
providing a third key held by an operating system kernel; and decrypting the second data based at least in part on the second and third keys to provide data for use by the application.
2. The method of claim 1 , wherein providing the third key comprises selecting the third key from a plurality of candidate keys based at least in part on a processor on which the application executes.
3. The method of claim 1 , wherein providing the first key comprises providing a key associated with at least one of a file, the application and the memory subsystem.
4. The method of claim 1 , wherein providing the second key comprises selecting the second key from a plurality of candidate keys based at least in part on a memory region being accessed due to execution of the application.
5. The method of claim 4, wherein providing the second key comprises: selecting the second key based at least in part on a translation lookaside buffer (TLB) being used in the access.
6. The method of claim 1 , further comprising:
using the memory storage system to encrypt data to be stored in the memory storage system.
7. The method of claim 1 , wherein the memory storage system comprises persistent memory storage.
8. An article comprising a non-transitory computer readable storage medium to store instructions that when executed by a computer cause the computer to:
through execution of an application, cause data to be communicated with a memory storage system; and
protect access to content of the memory storage subsystem, comprising using cryptology associated with at least a process-held key and an operating system kernel-held key to be applied to perform at least one of encrypting the data for storage in the memory storage system and decrypting the data for retrieval from the memory storage system.
9. The article of claim 8, the storage medium storing instructions that when executed by the computer cause the computer to cause a process associated with the application to provide the process-held key based at least in part on a memory region being accessed by the process.
10. The article of claim 8, the storage medium storing instructions that when executed by the computer cause the computer to cause an operating system kernel to provide the kernel-held key based at least in part on a processor associated with execution of the application.
1 1 . The article of claim 8, wherein the memory storage system comprises persistent memory storage.
12. An apparatus comprising:
memory storage; and
a protection system to protect content of the memory storage, the protection system comprising:
a first key held by a process and associated with application data to be stored in the memory storage;
a second key held by an operating system kernel; and
a cryptography engine to perform a cryptography function on the data based at least in part on the first and second keys.
13. The apparatus of claim 12, wherein the first key is associated with at least one of a file, the application and the memory storage.
14. The apparatus of claim 12, wherein the data, when stored in the memory storage system, is further encrypted by a key used by the memory storage to decrypt the data before communicating the decrypted data outside of the memory storage.
15. The apparatus of claim 14, further comprising communication fabric over which the data is communicated to and from the memory storage, and the cryptographic engine further selectively encrypts and decrypts the communicated data based on the first and second keys.
PCT/US2014/049105 2014-07-31 2014-07-31 Protecting memory storage content Ceased WO2016018354A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/US2014/049105 WO2016018354A1 (en) 2014-07-31 2014-07-31 Protecting memory storage content
US15/315,999 US10176342B2 (en) 2014-07-31 2014-07-31 Protecting memory storage content

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/049105 WO2016018354A1 (en) 2014-07-31 2014-07-31 Protecting memory storage content

Publications (1)

Publication Number Publication Date
WO2016018354A1 true WO2016018354A1 (en) 2016-02-04

Family

ID=55218069

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2014/049105 Ceased WO2016018354A1 (en) 2014-07-31 2014-07-31 Protecting memory storage content

Country Status (2)

Country Link
US (1) US10176342B2 (en)
WO (1) WO2016018354A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009278491A (en) * 2008-05-16 2009-11-26 Casio Comput Co Ltd Microprocessor and microprocessor application device
US20100153749A1 (en) * 2007-10-03 2010-06-17 Fujitsu Limited Device-access control program, device-access control process, and information processing apparatus for controlling access to device
US20100299534A1 (en) * 2009-05-22 2010-11-25 Samsung Electronics Co., Ltd. Data storage device and data storage system
US20120093319A1 (en) * 1998-10-15 2012-04-19 Intarsia Software Llc Method and apparatus for protecting digital data by double re-encryption
JP2012234580A (en) * 2012-09-05 2012-11-29 Ricoh Co Ltd Information processing apparatus, validity verification method and validity verification program

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212610B1 (en) 1998-01-07 2001-04-03 Fujitsu Limited Memory protection mechanism for a distributed shared memory multiprocessor with integrated message passing support
US7272832B2 (en) 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US9582676B2 (en) 2005-01-31 2017-02-28 Unisys Corporation Adding or replacing disks with re-key processing
US20080015995A1 (en) 2006-07-17 2008-01-17 Yeacheiung Eric Chen Standalone content protection storage device
US8006055B2 (en) 2008-03-04 2011-08-23 Microsoft Corporation Fine granularity hierarchiacal memory protection
US20100217977A1 (en) 2009-02-23 2010-08-26 William Preston Goodwill Systems and methods of security for an object based storage device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120093319A1 (en) * 1998-10-15 2012-04-19 Intarsia Software Llc Method and apparatus for protecting digital data by double re-encryption
US20100153749A1 (en) * 2007-10-03 2010-06-17 Fujitsu Limited Device-access control program, device-access control process, and information processing apparatus for controlling access to device
JP2009278491A (en) * 2008-05-16 2009-11-26 Casio Comput Co Ltd Microprocessor and microprocessor application device
US20100299534A1 (en) * 2009-05-22 2010-11-25 Samsung Electronics Co., Ltd. Data storage device and data storage system
JP2012234580A (en) * 2012-09-05 2012-11-29 Ricoh Co Ltd Information processing apparatus, validity verification method and validity verification program

Also Published As

Publication number Publication date
US10176342B2 (en) 2019-01-08
US20180144157A1 (en) 2018-05-24

Similar Documents

Publication Publication Date Title
US9779264B2 (en) Method, server and computer program for security management in database
KR101880075B1 (en) Deduplication-based data security
US10896267B2 (en) Input/output data encryption
US8516271B2 (en) Securing non-volatile memory regions
US9646176B2 (en) Method for encrypting database
TWI679554B (en) Data storage device and operating method therefor
US9418220B1 (en) Controlling access to memory using a controller that performs cryptographic functions
US10671546B2 (en) Cryptographic-based initialization of memory content
US11216592B2 (en) Dynamic cryptographic key expansion
US20190215160A1 (en) Managing a set of cryptographic keys in an encrypted system
KR102365263B1 (en) Efficient Encryption Method and Apparatus for Hardware-based Secure GPU Memory
US11146397B2 (en) Encoding abelian variety-based ciphertext with metadata
US9218296B2 (en) Low-latency, low-overhead hybrid encryption scheme
US12019759B2 (en) Data processing system and method for protecting data in the data processing system
CN107533516B (en) Apparatus for managing multiple accesses to a security module of a system-on-a-chip in a device
US10176342B2 (en) Protecting memory storage content
CN112585607A (en) Method, apparatus and system for storing memory encryption domain key ID
WO2016072999A1 (en) Data conversion using an address space identifier
US20180285575A1 (en) Data cryptography engine
CN120255787A (en) Method for improving security of multi-tenant storage module
JP2011053786A (en) Information processing device

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14899061

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15315999

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14899061

Country of ref document: EP

Kind code of ref document: A1