EP0587587A1

Storage protection utilizing public key control.

Abstract

Three levels of code memory access protection are provided: a supervisor level (code 0), an intermediate level of non-public and non-supervisor codes (codes 1-8, 10-15), and a unique public code (code 9). Subroutines operating with a supervisor level access code can access the public level and intermediate level of the memory blocks. Even if a subroutine operating with an access code of the intermediate level can not access any memory block of the supervisor level, it can have access to any block corresponding to a public level memory code, as well as than any block corresponding to the respective intermediate level code. One or more third level public memory (CMP) codes may be provided.

Term

Term ended

Projected expiry passed 29 April 2012, 14.4 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

13 claims: 13 independent, 0 dependent

  1. 1
    Claims of equivalent WO 9222032 A1 CLAIMS 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. 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. A method of providing access protection between storage blocks as defined in Claim 1 or 2, 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.
  2. 2
    4. A method of providing access protection between storage blocks as defined in one of Claims 1 to 3, 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.
  3. 3
    5. A method of providing access protection between storage blocks as defined in one of claims 1 to 4, further comprising:selecting a supervisory key and not allowing any program using any other access key to store in any block in storage assigned the supervisory key.
  4. 4
    6. A method of providing access protection between storage blocks as defined in one of Claims 1 to 5, 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 range 1-15 to store in any block in storage assigned storage key 0.
  5. 5
    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.
  6. 6
    8. 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.
  7. 7
    9. A method of providing access protection for storage blocks as defined in Claim 8, 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.
  8. 8
    10. A method of providing access protection between storage blocks as defined in Claim 8 or 9, 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.
  9. 9
    11. 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 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.
  10. 10
    12. Means for protecting against unauthorized accesses by program requests as defined in Claim 11, 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.
  11. 11
    13. Means for protecting against unauthorized accesses by program requests as defined in Claim 12, further comprising:the circuit means being a combination of AND, OR circuits with signal inversion means being provided for no-state conditions in circuits.
  12. 12
    14. Means for protecting against unauthorized accesses by program requests as defined in one of Claims 11 to 13, further comprising: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.
  13. 13
    15. Means for protecting against unauthorized accesses by program requests as defined in one of Claims 11 to 14, 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.