CA2064640C

Storage protection utilizing public key control

Abstract

Provides three access levels of storage key protection,comprising a supervisory level (key 0), an intermediatelevel of non-public and non-supervisory keys (keys 1-8,10-15), and a unique public level (key 9). The programroutines operating with a supervisory-level access key canaccess both the public level and the intermediate level ofstorage blocks. Although a program routine operating withan access key in the intermediate access level cannot accessany supervisory level storage block, it can access any blockassigned a public level storage key, as well as any storageblock assigned the respective intermediate level key. Oneor more third-level public storage keys (PSKs) may beprovided. A program access key using one of the PSK valuescan only access blocks having the same PSK value, and itcannot access blocks having any other key value.

Term

Term ended

Expired 1 April 2012, 14.5 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

16 claims: 16 independent, 0 dependent

  1. 1
    -18 The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:1. A method of providing access protection for data blocks in a storage of a data processing system, in which different programs may access the blocks, comprising the steps of: selecting one or more public key(s) from all keys available to a system of which the remaining keys are non-public keys;assigning a public key from the one or more public key(s) to a particular program in the system as a public access key;and assigning the same public key as a public storage key to each block to be stored-in primarily by the particular program but the block also being storable by a program executing with a non-public access key, and any block assigned a non-public storage key not being storable by a program assigned the public access key.
  2. 2
    A method of providing access protection between storage blocks as defined in Claim 1, further comprising:allowing storing by the particular program in each block assigned a public storage key when equality is obtained between the program s access key and the public storage key, and allowing storing in the block assigned the public storage key by the other programs having non-public access keys not equal to a public key.
  3. 3
    A method of providing access protection between storage blocks as defined in Claim 1, further comprising:enabling the use of the public key as an access key and as a storage key by setting a state in the computer to a public key mode. - 19
  4. 4
    A method of providing access protection between storage blocks as defined in Claim 1, further comprising:providing a fetch protect field in association with the public storage key assigned to any block;and enabling a program assigned a public key as its public access key to allow fetching (but not storing) in a block assigned a non-public storage key if the fetch protect field is set off, but to fetching in the block if the fetch protect field is set on, and to always prevent storing by the program using the public access key in any block assigned a non-public key.
  5. 5
    A method of providing access protection for data blocks in a computer storage of a data processing system, in which different processes may access the block, comprising the steps of:assigning to a particular program a public access key from one or more keys selected as public key(s) from a range of keys 0-15 usable in the system, and assigning the same public key as a public storage key to each block in storage to have access by the particular program and by each program in the system assigned a non-public access key from the remaining keys in the range;and allowing the particular program to store in blocks assigned the public storage key only when that key is equal to the public access key of the particular program, but allowing storing in the block by each program using a non-public access key without having equality between the non-public access key of the program and the public storage key of the block.
  6. 6
    A method of providing access protection between storage blocks as defined in Claim 2, further comprising:selecting key 0 in the range 0-15 as a supervisory key, and not allowing any program using any access key in the -20range 1-15 to store in any block in storage assigned storage key 0.
  7. 7
    A method of providing access protection between storage blocks as defined in Claim 6, further comprising:selecting key 9 as a public key from the range 0-15, and assigning keys 1-8 and 10-15 as non-public non-supervisory intermediate keys which can be used to access any block assigned public key 9 as a storage key.
  8. 8
    A method of providing unidirectional isolation among blocks in a storage in a computer system using protect keys for protecting blocks from being stored into by programs not having a required storing authority, comprising:assigning at least one of the protect keys as a supervisory key in a supervisory key class (1st class) for use by supervisory programs, assigning at least one other of the protect keys as a public key in a public key class (3rd class) for use by programs restricted to storing in blocks assigned a storage protect key equal to the public key, and assigning one or more of the protect keys to an intermediate key class (2nd class);and allowing programs assigned an access key equal to any key in the supervisory key class or equal to any key in the intermediate key class to have store and fetch access to blocks assigned the public key as a storage key, but not allowing any program using the public key as an access key to store into any block not assigned the same public key as a storage key.
  9. 9
    A method of providing access protection between storage blocks as defined in Claim 8, further comprising:setting a public key mode field in a control register to specify either a public key state or a no public key state, the public key state enabling the use of the public key as an access key for any program and as a storage key - 21 for any block, the no public key state disabling use of the public key and controlling the same key to be used as a non-public key.
  10. 10
    A method of providing access protection to blocks of storage in a system having concurrent execution of multiple programs, comprising:providing a set of keys for preventing store and fetch accesses by unauthorized programs to assigned blocks in storage;selecting a plurality of keys in the set as public keys (3rd class), selecting another key in the set as a supervisory key (1st class), and selecting the remaining keys in the set as intermediate keys, the supervisory and intermediate keys being non-public keys;and allowing any program assigned an access key equal to any non-public key in the set to have read and write access to any block assigned a storage key equal to any public key, but allowing a program assigned an access key equal to any public key to have read and write access to a block assigned a storage key equal to the same public key, and not allowing the latter program to have write access to any block having a storage key equal to a non-public key or a storage key equal to a public key different from the access key.
  11. 11
    A method of providing access protection for storage blocks as defined in Claim 10, further comprising:allowing any program assigned a non-public access key to access any storage block assigned a public key without equality and not requiring any program instructions to change the non-public access key for allowing the program to access storage blocks assigned the non-public key and storage blocks assigned any public key to enable any non-public access key to access storage blocks using different keys. -2212. A method of providing access protection between storage blocks as defined in Claim 10, further comprising: providing a fetch protect mode having on and off states for an associated storage key to allow fetching in an associated block when the off state exists and not to allow fetching in the associated block when the on state exists;and allowing any program with a public access key to have fetch access (but not store access) in any block having any non-public key as its storage key when its fetch protect mode is in an off state, but not allowing fetch access or store access in the block having the non-public key when its storage key has its fetch protect mode in an on state.
  12. 12
    13. Means for protecting against unauthorized accesses by program requests for accessing data units in blocks in a storage of a computer system, comprising:processor means for providing an address of a data unit to be accessed in a block in storage and providing an access key associated with a program requesting the access in the block and providing a fetch/store signal identifying the manner of access;means for fetching a storage key associated with an addressed block in storage;means for testing if an access key equals a supervisory key for providing a supervisory key signal;means for comparing an access key with the storage key to provide an equal key signal;means for determining if the storage key equals a public key to provide a public storage key signal;means for finding if an access key equals the public key to provide a public access key signal;and - 23 circuit means for enabling the addressed data unit to be accessed and sent to the requesting processor means if (1) the supervisory key signal is provided, or (2) if the equal signal is provided, or (3) if the public storage key signal and no public access key signal and no equal signal and no supervisory key signal are provided, or (4) if the fetch request signal and the public access key signal and no equal signal and no supervisory key signal are provided whenever the use of the public key is enabled, or (5) if the fetch request signal and the public access key signal and no equal signal or no supervisory key signal are provided whenever use of the public key is disabled.
  13. 13
    14. Means for protecting against unauthorized accesses by program requests as defined in Claim 13, further comprising:circuit means for generating an exception signal for the processor and preventing the addressed data unit from being sent to the requesting processor means (1) if the store request signal and no public storage key signal and no public access key signal and no equal signal and no supervisory key signal are provided whenever use of the public key is enabled, (2) if the store request signal and the public access key signal and no equal signal and no supervisory key signal are provided whenever use of the public key is enabled, or (3) if the store request signal and the public access key signal and no equal signal are provided whenever use of the public key is disabled.
  14. 14
    15. Means for protecting against unauthorized accesses by program requests as defined in Claim 14, further comprising:the circuit means being a combination of AND, OR circuits with signal inversion means being provided for no-state conditions in circuits.
  15. 15
    16. Means for protecting against unauthorized accesses by program requests as defined in Claim 15, further comprising:- 24 means for indicating the state of a public key mode field in a control register in the processor means for indicating when the use of the public key is enabled or disabled.
  16. 16
    17. Means for protecting against unauthorized accesses by program requests as defined in Claim 15, further comprising:the processor means being any of plural processors in the computer system, including any central processor or any input/output (I/O) processor.
Independent claims16