# US 9,438,418 B1 · Systems and methods for generating a key difficult to clone

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,438,418 B1
- Document ID: US9438418B1
- Status: Granted
- Kind: B1
- Application number: 13/102,673
- Filed: 2011-05-06
- Granted: 2016-09-06
- Earliest claimed: 2011-05-06
- Assignees: Altera Corporation
- Applicants: Bruce B. Pedersen; Ninh D. Ngo
- Inventors: Bruce B. Pedersen; Ninh D. Ngo
- Web page: https://patentgrep.com/patent/US9438418B1

## CPC

- H04L 9/0861: {Generation of secret information including derivation or calculation of cryptographic keys or passwords}
- G09C 1/00: Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system (cryptographic typewriters G09C3/00)
- H04L 9/14: using a plurality of keys or algorithms
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- H04L 63/0478: {applying multiple layers of encryption, e.g. nested tunnels or encrypting the content with a first key and then with at least a second key (cryptographic mechanisms or cryptographic arrangements using a plurality of keys or algorithms H04L9/14)}
- H04L 63/06: {for supporting key management in a packet data network (cryptographic mechanisms or cryptographic arrangements for key management H04L9/08)}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G09C: CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY

## Abstract

Systems and methods relating to generating a key that is difficult to clone are described. The methods include receiving a programmable logic device (PLD) with a first key and applying a one-way hash function to a second key or the first key and the second key to create a third key. The application of the one-way hash function is performed using one or more components hardwired into the PLD. The methods further include storing the third key in the PLD only after using the one or more components to apply the one-way hash function.

## Claims

### Claim 1

A method comprising:
receiving, at a programmable logic device (PLD) that includes a first key hardwired in the PLD, a fourth key from a customer external to the PLD;
initiating a third key at the PLD to an initial value;
storing the initial value in a key register of the PLD;
applying a logic function to the initial value of the third key and the fourth key to generate a second key;
applying a first one-way hash function to the first key and the second key to generate an updated value of the third key;
replacing, in the key register, the initial value of the third key with the updated value of the third key;
setting the updated value of the third key as an encryption/decryption key of the PLD
receiving encrypted configuration information at the PLD;
generating decrypted configuration information by decrypting the encrypted configuration information with the encryption/decryption key of the PLD; and
configuring the PLD with the decrypted configuration information; wherein:
applying the first one-way hash function to the first key and the second key to generate the updated value of the third key includes one or more of:
concatenating the first key with the second key to generate a concatenated input, and applying the hash function on the concatenated input;
concatenating the second key with the first key to generate a concatenated input, and applying the hash function on the concatenated input;
hashing the first key to obtain a first output and concatenating the first output with the second key; and
hashing the second key to obtain a second output and concatenating the second output with the first key.

### Claim 2 (depends on 1)

The method of claim 1 further comprising storing the third key in the one or more components hardwired in the PLD.

### Claim 3 (depends on 1)

The method of claim 1, wherein the first key comprises a constant or a series of constants.

### Claim 4 (depends on 1)

The method of claim 1, wherein a plurality of PLDs within a same family use the first key.

### Claim 5 (depends on 4)

The method of claim 4 wherein the first key is unique to each PLD.

### Claim 6 (depends on 1)

The method of claim 1, wherein the PLD comprises a field programmable gate array (FPGA) or an Application Specific PLD (ASIC).

### Claim 7 (depends on 1)

The method of claim 1 further comprising receiving the fourth key via a hardwired path of the PLD prior to said creating the third key.

### Claim 8 (depends on 1)

The method of claim 1, wherein the PLD comprises one or more integrated circuits.

### Claim 9 (depends on 1)

The method of claim 1, wherein a control block of the PLD includes the one or more components.

### Claim 10

A method comprising:
receiving encrypted configuration information;
communicating the encrypted configuration information via a hardwired path to one or more components of a programmable logic device (PLD);
retrieving a decryption key from a control block of the PLD;
decrypting the encrypted configuration information using the decryption key to generate decrypted configuration information; and
configuring the PLD with the decrypted configuration information, wherein
the decryption key includes a third key or a modified version of the third key, the third key having been created by using one or more components hardwired in the PLD to:
initiate the third key to an initial value;
store the initial value in a key register of the PLD;
apply a logic function to the initial value of the third key and a fourth key to generate a second key, the fourth key having been received from a customer external to the PLD;
apply a first one-way hash function to a first key and the second key to generate an updated value of the third key;
replace, in the key register, the initial value of the third key with the updated value of the third key; wherein using one or more components hardwired in the PLD to apply a first one-way hash function to the first key and the second key includes one or more of:
concatenating the first key with the second key to generate a concatenated input, and applying the hash function on the concatenated input;
concatenating the second key with the first key to generate a concatenated input, and applying the hash function on the concatenated input;
hashing the first key to obtain a first output and concatenating the first output with the second key; and
hashing the second key to obtain a second output and concatenating the second output with the first key.

### Claim 11 (depends on 10)

The method of claim 10, wherein the PLD comprises one or more integrated circuits.
