Data security arrangements for semiconductor programmable logic devices

Abstract: A data security arrangement is provided to protect configuration data to be stored in static random access memories (38) in semiconductor programmable logic devices PLD. The configuration data, which is vulnerable to illegal duplication, is normally held in a read only memory ROM, typically an erasable programmable read only memory. A data coding means is provided to code the configuration data to be loaded to the PLD and a data decoding means is provided in the PLD to decode the coded configuration data. The coding and decoding means each incorporate maximal length shift registers (12, 25) which generate a pseudo-random sequence of bits. A key value is input to the shift register (12) in the coding means forcing it to start at a particular point in the sequence. The output (bits B28 and B31) of this register is combined in an EXCLUSIVE-OR gate (20) with configuration data and coded data is written to the read only memory ROM (24). The decoding means in the PLD has a corresponding key value held in a non-volatile memory (28) in the PLD. This is applied to the register (25) of the decoding means whose output (bits B28 and B31) are combined in an EXCLUSIVE-OR GATE (34) with coded configuration data CDIC read from the ROM (24) to produce decoded configuration data CDOD to be sotred in the memories (38).

Description: The present invention relates to data security arrangements for semiconductor programmable logic devices. The invention finds particular utility in semiconductor programmable logic devices (PLDs) of the type including an associated storage means e.g. a static random access memory (SRAM) in which circuit configuration data, necessary for the device to operate, is retained. It is well known that prior to a PLD being loaded with appropriate circuit configuration data, such data is normally held in an external storage medium e.g. an erasable programmable read only memory (EPROM). A disadvantage of the present circuit configuration data loading arrangements to the PLD is that a copy can be readily taken and as a consequence valuable and sensitive circuit information can be easily and illegally duplicated. It is extremely desirable, therefore, to protect circuit information from being copied. An aim of this invention is to overcome this disadvantage by the provision of a data security arrangement for loading configuration data which prevents illegal duplication of such circuit information. According to the present invention, there is provided a programmable logic device as claimed in Claim 1 comprising a semiconductor device having configurable circuitry, an input circuit for receiving encrypted data from an encrypted data store to determine configuration of said configurable circuitry, decrypting circuitry connected to said input circuit to decrypt said encrypted data, a non-volatile data storage device connected to said decrypting circuitry and holding a key value for use in decrypting said encrypted data, and volatile storage circuitry connected both to said decrypting circuitry for receiving decrypted data from the decrypting circuitry and to said configurable circuitry whereby the configurable circuitry is configured in accordance with said decrypted data. In contrast to the present invention, EP-A-0 162 707 shows in Figure 1 a first integrated circuit 12 (comprising a CPU 5 operating on decrypted data, a ROM enable circuit 4 and a decrypting circuit 3 having a pseudo-random counter for providing a decryption word for decrypting the encrypted data) that sends an address via an address bus 10 to a second integrated circuit (comprising a ROM 1 storing unencrypted data, and an encrypting circuit 2 having a pseudo-random counter for providing an encryption word similar to the decryption word for encrypting the unencrypted data), and that receives encrypted data via a bus 8, and whereby both counters count the same input signal on lead 11 that is provided by the ROM enable circuit 4 on the first integrated circuit 12. In the embodiment of Figure 4, the first integrated circuit 12 does not comprise a ROM enable circuit, and both integrated circuits do not comprise a pseudo-random counter. Instead, a logical word on the address bus is used for both the decryption and the encryption word. From this prior art it is not known to provide a decrypting circuitry and to store a key word or a start sequence code for said decrypting circuitry in a non-volatile memory located on a PLD, in order to generate configuration data for configurable circuitry. The invention also provides circuit configuration apparatus as claimed in Claim 2 comprising a programmable logic device as claimed in Claim 1 and encrypting circuitry for providing encrypted circuit configuration data, said encrypting circuitry having a first input for receiving a key value which is the same as said key value stored in the programmable logic device, a second input for receiving data representing required circuit configuration for the programmable logic device, an output for outputting said data in encrypted form, and said encrypted data store for storing said data in encrypted form, said data store having output circuitry for connection to said input circuit of said programmable logic device. The invention also provides a method of configuring a programmable logic device as claimed in Claim 14. Preferably the data coding means and the data decoding means each include a pseudo-random sequence generator constituted by a 31-bit maximal length shift register having a preload input and a DATA input, the shift register generating a pseudo-random sequence equivalent to 2,147,483,647 bits in overall length. Preferably bit 28 and bit 31 outputs of the maximal length shift register are input to an EXCLUSIVE-OR logic function whose output is connected to the DATA input of the maximal length shift register. The maximal length shift register is preferably forced to start the pseudo-random sequence at a particular point in the sequence by the application of a predetermined sequence start code constituted by a 31-bit "key value" to the preload input. The application of the sequence start code to the maximal length shift register in the data coding means may be input from a keyboard or from a secure file, whereas the application of the sequence start code to the maximal shift register in the data decoding means is preferably input from a non-volatile memory within the programmable logic device. The data employed to enable the programmable logic device to operate is preferably circuit configuration data and it is arranged in the data coding means for the circuit configuration data and the pseudo-random sequence to be input to an EXCLUSIVE-OR logic function to provide an output of coded circuit configuration data. The invention will be more readily understood from the following description of an exemplary embodiment which should be read in conjunction with the accompanying drawing. The drawing illustrates a block schematic circuit diagram of the data security arrangements in accordance with this invention. Referring to the drawing, a programmable logic device 11 is represented by the block designated PLD. To facilitate security of data loaded to the PLD, a data coding means is provided to code circuit configuration data, termed originating operating data, which is to be loaded to the PLD, and similarly a corresponding data decoding means is provided in the PLD to decode the coded circuit configuration data in the PLD. Referring to the data coding means in more detail, a particular form of shift register 12 is provided which generates a maximal length pseudo-random output string. This type of shift register is known as a "maximal length shift register" and in the present application the overall length of the pseudo-random sequence is arranged to be equivalent to 2,147,483,647 bits (see CMOS COOK BOOK by Don Lancaster pages 318-323, published by Howard W Sams Corp 1980). This is achieved by feeding back to a DATA input 13 of the register, particular outputs 14 and 15 of the register in a particular manner. In this instance both outputs 14, 15 which provide bits B28 and B31 are input to an EXCLUSIVE-OR gate 16 and the output of this gate is input to the DATA input 13. Providing the register 12 is continuously driven by a clock input signal 17, the generated pseudo-random sequence is continuously repeated. In the data coding means the register 12 is preloaded (in parallel form) with a predetermined one of different "key values", each of 31 bits, typically input to a preload input 18 by way of a keyboard 19 or alternatively from a secure file. The "key value" which may be termed a sequence start code, forces the shift register 12 to start the pseudo-random sequence at a particular point in the sequence and thereby recreate an identical sequence at any time as required. The pseudo-random sequence output from the EXCLUSIVE-OR gate 16 is input at 21 to a further EXCLUSIVE-OR gate 20. Circuit configuration data CDI (generated from circuit configuration layout software) which is to be coded is input at 22 to the gate 20. The output 23 from the EXCLUSIVE-OR gate 20 generates coded circuit configuration data CDOC. The coded circuit configuration data CDOC is output from gate 20 to a first storage means 24, typically, a read only memory, where it is held until required by the programmable logic device 11. The circuit configuration data now stored in the first storage medium 24 is coded and secure, and if copied in this form would not yield any useful circuit information to the data copier. To make use of the circuit configuration data in the programmable logic device 11 when it is read from the first storage medium 24, the data needs to be reproduced in its original form and this is achieved by data decoding means. The data decoding means is required to regenerate the same pseudo-random sequence of bits as was employed in the data coding means. Accordingly, the programmable logic device 11 incorporates a 31-bit maximal length shift register 25 of the same form as the register 12 employed in the data coding means. For decoding to be accurate and effective the shift register 25 must commence its pseudo-random sequence at the corresponding point at which the shift register 12 commenced its sequence. Accordingly the identical predetermined 31-bit "key-value" or sequence start code which was used to start register 12 must be applied, in parallel form, to a preload input 26 of the register 25 to force it to start its sequence at the same point in the sequence as register 12, and thereby genrate an identical paseudo-random sequence. The required 31-bit "key value" is input at 27 and stored in a form of non-volatile memory on the PLD 11, for example, an EPROM 28 or fusible links. The shift register 25 operates in a manner similar to shift register 12, the output bits B28 and B31 being input to an EXCLUSIVE-OR gate 29 whose output is fed to the DATA input 30 of the register. The register 25 is driven by the clock signal CLK input at 32. The pseudo-random sequence output from EXCLUSIVE-OR gate 29 forms an input 33 to a further EXCLUSIVE-OR gate 34 and coded circuit configuration data CDIC which is output from the first storage means 24 on line 35 forms a second input 36 to the gate 34. The EXCLUSIVE-OR function of the gate 34 upon its two signal-inputs produces an output 37, in serial form, of the originating operating data (the circuit configuration data). This originating operating data is now available for use within the programmable logic device PLD, for instance, loading into associated second storage means in the form of static random access memories SRAM 38.

Claims: A programmable logic device comprising a semiconductor device having (1) configurable circuitry, (2) an input circuit (35) for receiving encrypted data from an encrypted data store (24) to determine configuration of said configurable circuitry, (3) decrypting circuitry (25,29,34) connected to said input circuit (35) to decrypt said encrypted data, (4) a non-volatile data storage device (28) connected to said decrypting circuitry and holding a key value for use in decrypting said encrypted data, and (5) volatile storage circuitry (38) connected both to said decrypting circuitry (34) for receiving decrypted data from the decrypting circuitry and to said configurable circuitry whereby the configurable circuitry is configured in accordance with said decrypted data. Circuit configuration apparatus comprising a programmable logic device as claimed in claim 1, and encrypting circuitry for providing encrypted circuit configuration data, said encrypting circuitry having a first input (18) for receiving a key value which is the same as said key value stored in the programmable logic device, a second input (13) for receiving data representing required circuit configuration for the programmable logic device, an output (23) for outputting said data in encrypted form, and said encrypted data store (24) for storing said data in encrypted form, said data store having output circuitry for connection to said input circuit (35) of said programmable logic device. Circuit configuration apparatus as claimed in claim 2, wherein the encrypting and the decrypting circuitry each include a pseudo-random sequence generator. Circuit configuration apparatus as claimed in claim 3, wherein the pseudo-random sequence generator is constituted by a 31-bit maximal length shift register (12,25) which generates a pseudo-random sequence equivalent to 2,147,483,647 bits in overall length. Circuit configuration apparatus as claimed in claim 4, wherein the maximal length shift register (12,25) has a preload input and a DATA input. Circuit configuration apparatus as claimed in claim 5, wherein bit 28 and bit 31 outputs of the maximal length shift register (12,25) are input to an EXCLUSIVE-OR logic function (16,29) whose output is connected to the DATA input of the maximal length shift register (12,25). Circuit configuration apparatus as claimed in claim 5 or claim 6, wherein the maximal length shift register (12,25) is forced to start the pseudo-random sequence at a particular point in the sequence by the application of a predetermined sequence start code constituted by a 31-bit "key-value" to the preload input (18,26). Circuit configuration apparatus as claimed in claim 7, wherein the application of the sequence start code to the maximal length shift register (12) in the data coding means is provided from a keyboard (19) or from a secure file. Circuit configuration apparatus as claimed in claim 7 or claim 8, wherein the application of the sequence start code to the maximal shift register (25) in the decryption circuitry is provided from said non-volatile memory (28) within the programmable logic device. Circuit configuration apparatus as claimed in any one of claims 4 to 9, wherein the originating operating data (22) is circuit configuration data and wherein in the encryption circuitry the circuit configuration data and the pseudo-random sequence are input to an EXCLUSIVE-OR logic function (16,20) which outputs coded circuit configuration data. Circuit configuration apparatus as claimed in claim 10, wherein the pseudo-random sequence and the coded circuit configuration data (35) are input to an EXCLUSIVE-OR logic function (29,34) in the decrypting circuitry to provide an output of decoded circuit configuration data. Circuit configuration apparatus as claimed in any one of claims 2 to 11, wherein said data store is constituted by a read only memory (24). Circuit configuration apparatus as claimed in claim 12, wherein the volatile storage means is constituted by static random access memories (38). A method of configuring a programmable logic device that includes a semiconductor device having (1) configurable circuitry, (2) an input circuitry (35) for receiving data from a data store (24), (3) decrypting circuitry (25, 29, 34) connected to said input circuitry (35), (4) a non-volatile data storage device (28) connected to said decrypting circuitry (35), and (5) volatile storage circuitry (38), which method comprises encrypting configuration data by use of an encryption key value, storing said configuration data in said data store (24) after encryption, inputting encrypted data from said data store to said programmable logic device, deriving a decryption key value from said non-volatile store (28) in said programmable logic device, said decryption key value being the same as said encryption key value, decrypting said encrypted data by use of said decrypting key value, storing said data after decryption in said volatile storage circuitry (38) in said programmable logic device and configuring said programmable logic device according to decrypted data in said volatile storage circuitry.

Inventors: AUSTIN KENNETH, AUSTIN, KENNETH
Applicants: MOTOROLA INC, MOTOROLA, INC.
Application year: 1992
Main classification: G06F12
IPC codes: G11C7, G11C16, G06F21, G06F1