P
US8477946B2ActiveUtilityPatentIndex 78

Method and apparatus for protecting encryption keys in a logically partitioned computer system environment

Assignee: FUNK MARK RPriority: Feb 27, 2008Filed: Feb 27, 2008Granted: Jul 2, 2013
Est. expiryFeb 27, 2028(~1.6 yrs left)· nominal 20-yr term from priority
Inventors:FUNK MARK RREMFERT JEFFREY E
G06F 12/1408H04L 9/088
78
PatentIndex Score
11
Cited by
15
References
17
Claims

Abstract

In a logically partitioned computer system, a partition manager maintains and controls master encryption keys for the different partitions. Preferably, processes executing within a partition have no direct access to real memory, addresses in the partition's memory space being mapped to real memory by the partition manager. The partition manager maintains master keys at real memory addresses inaccessible to processes executing in the partitions. Preferably, a special hardware register stores a pointer to the current key, and is read only by a hardware crypto-engine to encrypt/decrypt data. The crypto-engine returns the encrypted/decrypted data, but does not output the key itself or its location.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A digital data processing system, comprising:
 a memory having a plurality of addressable locations for storing data; 
 at least one processor, each said at least one processor for executing instructions stored at addressable locations in said memory; 
 a logical partitioning facility which enforces logical partitioning of said computer system into a plurality of logical partitions, each logical partition for executing a respective set of tasks on behalf of respective one or more users on a respective at least one of said at least one processor, wherein tasks executing in each said logical partition generate effective addresses exclusively within a respective partition address space, said effective addresses being mapped to corresponding real addresses in said memory by said logical partitioning facility, wherein a first non-empty subset of real addresses in said memory are real addresses to which no effective address in any said partition address space correspond, said logical partitioning facility maintaining a respective encryption key for each of a plurality of said logical partitions at a respective real address in said first non-empty subset of real addresses in said memory, each said encryption key being inaccessible to tasks executing in the respective logical partition; and 
 a data transformation facility shared by multiple said logical partitions which performs data transformations on behalf of at least some said tasks executing in respective said logical partitions, each data transformation on behalf of a respective task being performed by accessing a respective encryption key for the partition in which the respective task is executing and using the encryption key to perform the data transformation, said data transformation facility performing each data transformation on respective untransformed input data stored in said memory at a respective first addressable location accessible to the respective task to produce respective transformed output data, said transformed output data being stored in said memory at a respective second addressable location accessible to the respective task, without providing said respective encryption key to the respective task. 
 
     
     
       2. The digital data processing system of  claim 1 , wherein said data transformation facility comprises a hardware data transformation engine which receives each said respective encryption key and an untransformed version of corresponding operand data as input, and generates a transformed version of said corresponding operand data as said transformed output data using the respective encryption key. 
     
     
       3. The digital data processing system of  claim 2 ,
 wherein each said processor comprises a respective master key register containing one of (a) a reference to a respective encryption key of a partition currently executing in the respective processor, and (b) a respective encryption key of a partition currently executing in the respective processor; and 
 wherein said, master key register is used to provide the respective encryption key to said hardware data transformation engine. 
 
     
     
       4. The digital data processing system of  claim 2 ,
 wherein said digital data processing system comprises a plurality of said processors, and 
 wherein said hardware data transformation engine is shared by a plurality of said processors. 
 
     
     
       5. The digital data processing system of  claim 1 ,
 wherein each said processor comprises a respective master key register containing one of (a) a reference to a respective encryption key of a partition currently executing in the respective processor, and (b) a respective encryption key of a partition currently executing in the respective processor; and 
 wherein said logical partitioning facility maintains a respective value in each said respective master key register corresponding to a partition currently executing in the respective processor. 
 
     
     
       6. The digital data processing system of  claim 5 ,
 wherein said logical partitioning facility loads a respective value in each said respective master key register using a respective single privileged executable instruction. 
 
     
     
       7. The digital data processing system of  claim 1 ,
 wherein at least a portion of said logical partitioning facility comprises instructions executable by said at least one processor and residing at real addresses in said first non-empty subset of real addresses in said memory. 
 
     
     
       8. The digital data processing system of  claim 1 , wherein each said data transformation comprises one of the set consisting of: (a) an encryption of data; (b) a decryption of data, and (c) a digital signature of data. 
     
     
       9. A method for operating a computer system having a memory and at least one processor, the memory having a plurality of addressable locations for storing data, each said at least one processor for executing instructions stored at addressable locations in said memory, the method comprising the computer-executed steps of:
 allocating resources of said computer system to a plurality of logical partitions and executing in each said logical partition a plurality of tasks on behalf of respective one or more users on a respective at least one of said at least one processor, wherein tasks executing in each said logical partition generate effective addresses exclusively within a respective partition address space, said effective addresses being mapped to corresponding real addresses in said memory, wherein a first non-empty subset of real addresses in said memory are real addresses to which no effective address in any said partition address space correspond; 
 maintaining in said computer system a respective encryption key for each said logical partition at a respective real address in said first non-empty subset of real addresses in said memory, said encryption keys being inaccessible to tasks executing in any said logical partition; 
 performing data transformations on behalf of at least some said tasks executing in respective said logical partitions, each said data transformation comprising one of the set consisting of: (a) an encryption of data; (b) a decryption of data, and (c) a digital signature of data, each data transformation on behalf of a respective task being performed using the respective encryption key for the partition in which the respective task is executing, each data transformation being performed on respective untransformed input data stored in said memory at a respective first addressable location accessible to the respective task to produce respective transformed output data; and 
 storing each respective transformed output data produced by said step of performing data transformations in said memory at a respective second addressable location accessible to the respective said task executing in the respective logical partition without providing said respective encryption key to the respective task. 
 
     
     
       10. The method of  claim 9 , wherein said step of performing data transformations on behalf of at least some tasks executing in respective logical partitions comprises invoking a hardware data transformation engine which receives each said respective encryption key and an untransformed version of corresponding operand data as input, and generates a transformed version of said corresponding operand data as said transformed output data using the respective encryption key. 
     
     
       11. The method of  claim 10 ,
 wherein each said processor of said computer system comprises a respective master key register containing one of (a) a reference to a respective encryption key of a partition currently executing in the respective processor, and (b) a respective encryption key of a partition currently executing in the respective processor; and 
 wherein said, master key register is used to provide the respective encryption key to said hardware data transformation engine. 
 
     
     
       12. The method of  claim 9 
 wherein each said processor of said computer system comprises a respective master key register containing one of (a) a reference to a respective encryption key of a partition currently executing in the respective processor, and (b) a respective encryption key of a partition currently executing in the respective processor; and 
 wherein said method further comprises maintaining a respective value in each said respective master key register corresponding to a partition currently executing in the respective processor. 
 
     
     
       13. The method of  claim 12 ,
 wherein said step of maintaining a respective value in each said respective master key register comprises loading a respective value in each said respective master key register using a respective single privileged executable instruction. 
 
     
     
       14. The method of  claim 9 ,
 wherein said steps of allocating resources of said computer system to a plurality of logical partitions and maintaining in said computer system a respective encryption key for each of said logical partitions are performed by a logical partitioning facility, at least a portion of said logical partitioning facility comprising instructions executable by said at least one processor of said computer system and residing at real addresses in said first non-empty subset of real addresses in said memory. 
 
     
     
       15. A computer program product for enforcing logical partitioning of a computer system having a memory and at least one processor, the memory having a plurality of addressable locations for storing data, each said at least one processor for executing instructions stored at addressable locations in said memory, the computer program product comprising:
 a plurality of instructions recorded on a non-transitory computer-readable media, the instructions storable at addressable locations of said memory and executable on said at least one processor, including: 
 at least one resource allocation function which allocates resources of said computer system among a plurality of logical partitions, each said logical partition containing a respective plurality of tasks executing on behalf of respective one or more respective users on a respective at least one of said at least one processor, wherein tasks executing in each said logical partition generate effective addresses exclusively within a respective partition address space, said effective addresses being mapped to corresponding real addresses in said memory, wherein a first non-empty subset of real addresses in said memory are real addresses to which no effective address in any said partition address space correspond; 
 an encryption key maintenance function which maintains a respective encryption key for each said logical partition at a respective real address in said first non-empty subset of real addresses in said memory, said encryption keys being inaccessible to tasks executing in any said logical partition, said encryption key maintenance function providing respective encryption keys for use in performing data transformations on behalf of at least some said tasks executing in respective said logical partitions, each data transformation on behalf of a respective task being performed using the respective master encryption key for the partition in which the respective task is executing, each said data transformation being performed on respective untransformed input data stored in said memory at a respective first addressable location accessible to the respective task to produce transformed output data, said transformed output data being stored in said memory as a respective second addressable location accessible to the respective task without providing the respective encryption key to the respective task. 
 
     
     
       16. The computer program product of  claim 15 ,
 wherein at least a portion of said computer program product comprises instructions executable by said at least one processor of said computer system and residing at real addresses in said first non-empty subset of real addresses in said memory. 
 
     
     
       17. The computer program product of  claim 15 ,
 wherein each processor of one or more processors of said computer system comprises a respective master key register for storing one of (a) a reference to a respective encryption key of a partition currently executing in the respective processor, and (b) a respective encryption key of a partition currently executing in the respective processor; and 
 wherein said encryption key maintenance function maintains a respective value in each said respective master key register corresponding to a partition currently executing in the respective processor.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.