Method and apparatus for protecting encryption keys in a logically partitioned computer system environment
AssigneeInternational Business Machines Corporation
InventorsMark R. Funk, Jeffrey E. Remfert
Life of this patent
Estimating the term…
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.
Claims17
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.
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.
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.
Dependencies are inferred from the claim text.