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:
A portion of data is obfuscated by performing a bitwise XOR function between the bits of the data portion and the bits of an associated mask. A mask used to obfuscate a data portion is generated as a function of the memory address of the data portion. A bitfield representing the memory address of the data portion is split into a plurality of subset bitfields. Each subset then forms the input of a corresponding primary randomising unit. Each primary randomising unit is arranged to generate an output bitfield that appears to be randomly correlated with the input, but which may be precisely determined from the input if certain secret information is known. Each primary randomising unit is also arranged so that a distinct output is generated for each distinct input. The output of the primary randomising units form the input into a series of secondary randomising units. Each secondary randomising unit is arranged to receive as an input at least one bit of the output of every primary randomising unit. The secondary randomising units are arranged to generate an output bitfield in a similar manner to the primary randomising units. The output of the secondary randomising units are then combined by concatenation to form a data mask. In one embodiment, each randomising unit comprises a look-up table whose contents are formed by permuting a sequence of ordered integers in a random manner. In this embodiment, the secret information corresponds to the contents of the look-up table. A mask is thus generated from the memory address of a data portion such that a distinct mask is generated for each distinct memory address, and such that there is a quasi-random correlation between the memory address and the corresponding mask.
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 .
Abstract:
A monolithic semiconductor integrated circuit is provided for selectively encrypting or decrypting data transmitted between one of a plurality of devices on the circuit and an external memory. Two series of data pathways connect the devices and the external memory. The first series of data pathways passes through a cryptographic circuit causing data to be encrypted or decrypted, and the other series of data pathways provides an unhindered route. When a data access request is made by a device, the data is selectively routed along one of the two series of data pathways according to the identification of the device making the data access request. In one example, if data is transmitted from a device to the external memory, the data is selectively encrypted before being stored in the external memory if the device transmitting the data is identified as secure. Then, when that data is retrieved from the external memory by a second device, the data is selectively decrypted only if the second device is identified as secure.
Abstract:
In a first aspect, the invention comprises a method for distributing personalised circuits (1) to one or more parties. First, a generic circuit (1) is distributed to each party. Then, a unique personalisation value is transmitted from each party to an authority (3). Next, each personalisation value received from each party is encrypted using a secret encryption key associated with the authority (3). Each encrypted personalisation value is then transmitted back to the corresponding party that sent each personalisation value. Each party then stores the encrypted personalisation value in their circuit (1). The stored encrypted personalisation value allows a piece of software to be properly executed by the circuit (1). In a second aspect, the invention comprises a semiconductor integrated circuit (1) arranged to execute a piece of software. The software requires a predetermined personalisation value as an input parameter to execute properly. The circuit comprises a personalisation memory (5) arranged to store an encrypted personalisation value; a key memory (7) for storing a decryption key; a personalisation control unit (11) comprising a cryptographic circuit (13) arranged to decrypt the encrypted personalisation value using the decryption key; and a processor (10) arranged to receive the decrypted personalisation value from the cryptographic circuit (13), to execute the software and to supply the software with the decrypted personalisation value.
Abstract:
A semiconductor integrated circuit includes a processor for executing application code from a memory and a verifier processor arranged to receive the application code via the same internal bus as the processor. The verifier processor performs a verification function to check that the application code is authentic. The verifier processor runs autonomously and cannot be spoofed as it receives the application code via the same internal bus as the main processor.
Abstract:
A clock source selector for selecting either a first clock signal A or a second clock signal B in accordance with a switch request signal includes three retiming circuits each consisting of two clocked flip-flops. The switch request signal is first retimed (20,22) relative to clock A to give a signal P, is then retimed (24,26) relative to clock B to give a signal Q, and finally is retimed (28,30) relative to clock A to give a signal R. Selector circuitry (34,40,42) operates such that when signal Q is asserted, the second clock signal B is output, when neither signal P nor signal R, as combined by a NOR gate (34), are asserted, the first clock signal A is output, and at other times a zero level is output. The clock source selector can be used in an integrated circuit to form a glitch-free multiplexer.