Abstract:
A memory access system comprising: a memory in which data is organised in pages, each page holding a sequence of data elements; means for receiving a requested address comprising a requested page address and a requested data element address; means for accessing a current page from the memory using a current page address; means for reading out data elements of the current page in the sequence in which they are held in memory; means for comparing the requested page address with the current page address and for issuing a memory access request with the requested page address when they are not the same; and means operable when the requested page address is the same as the current page address for comparing a requested data element address with the current address of a data element being read out and returning the data element when the requested data element address matches the current data element address.
Abstract:
A privileged data table is provided to maintain a list of those regions of a data memory which contain privileged data. When a data access operation is attempted, a privilege rule enforcer compares the address of the memory being accessed to the list of privileged regions. If the memory address falls within a privileged region then the memory access operation is blocked unless the instruction accessing the memory has been securely authorised by a code verifier. A privileged instruction table is provided to maintain a list of instructions stored in an instruction list that have been verified. When an instruction is fetched from the instruction list, an instruction privilege identifier compares the instruction being fetched with the list of verified instructions, and generates a signal indicating the privilege status of the instruction. Instructions are blocked according to the privilege signal. Only privileged instructions are allowed to modify the contents of the privileged data table and the privileged instruction table. The process of blocking unauthorised memory operations may be performed in accordance with a set of further rules as defined by a rule signal. All components of the system are contained on a single monolithic semiconductor integrated circuit.
Abstract:
Data is retrieved from a data memory by transmitting instructions containing the memory address of the data to be retrieved. A privileged data table stores a list identifying those regions of the data memory that store privileged or sensitive data. A privileged rule enforcer determines whether an instruction is attempting to access privileged data by comparing the address contained in the instruction with the regions of memory identified by the privileged data table as storing privileged data. If the instruction is attempting to access privileged data, the privileged rule enforcer blocks the instruction, and therefore the data access, unless the instruction is identified as having been verified by a code verifier and the data access satisfies one or more data access rules. To determine whether an instruction has been verified, the privilege rule enforcer receives a privilege signal which is asserted when a verified instruction is transmitted. The data access rules are defined by a rule signal received by the privileged rule enforcer.
Abstract:
In an embodiment of the invention, a memory is provided to store data in an encrypted form. A modifiable register is arranged to store a memory address, a 0 , defining a boundary separating the memory into two regions. The lower region stores data encrypted using a key B, and the upper region stores data encrypted using a different key A. Data stored on the boundary address is encrypted using key A. Accordingly, when data is read from a memory address a, key A is used to decrypt the data if a≥a 0 , and key B is used if a 0 . However, when data is written to a memory address a, then key A is used to encrypt the data if a≥a 0 +1, key B is used if a 0 +1. The value of a 0 is then incremented by one. When data is written to the boundary address, a 0 , the position of the boundary is thus caused to increase by one unit. Initially, the value of a 0 is set to zero so that all data within the memory is encrypted using key A. As data is written to the memory, particularly on the boundary address, the value of a 0 gradually increases. Eventually the value of a 0 will exceed the highest address of the memory. At this point, all data within the memory is encrypted using key B, and a new key is generated. The new key becomes key B, and key A takes the value of the old key B. The value of a 0 is then set back to zero and the process is repeated. If a particular region of the memory is never written to, the value of a 0 will not increase beyond the lowest memory address of this region. To prevent this occurrence, if the value of a 0 does not change within a predetermined period of time then a 'kicker' process is activated. During the kicker process, data is caused to be read from the memory address a 0 , and then to be written back to the same location, thereby artificially stimulating an increase of the value of a 0 .