# US 11,115,201 B2 · Downloading of data to secure devices

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

- Number: US 11,115,201 B2
- Document ID: US11115201B2
- Status: Granted
- Kind: B2
- Application number: 14/309,291
- Filed: 2014-06-19
- Published: 2014-12-25
- Granted: 2021-09-07
- Earliest claimed: 2011-11-22
- Assignees: Combined Conditional Access Development And Support, LLC
- Applicants: Combined Conditional Access Development & Support, LLC
- Inventors: Lawrence W. Tang; Douglas M. Petty; Michael T. Habrat
- Web page: https://patentgrep.com/patent/US11115201B2

## CPC

- H04L 9/0861: {Generation of secret information including derivation or calculation of cryptographic keys or passwords}
- G06Q 20/1235: {with control of digital rights management [DRM]}
- G06Q 20/3672: {initialising or reloading thereof}
- G06Q 20/3823: {combining multiple encryption tools for a transaction}
- H04L 9/0891: {Revocation or update of secret information, e.g. encryption key update or rekeying}
- H04L 63/0435: {wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption (cryptographic mechanisms or cryptographic arrangements for symmetric key encryption H04L9/06)}
- G06F 21/1011: {to devices}
- G06F 21/109: {by using specially-adapted hardware at the client}
- H04L 9/3236: {using cryptographic hash functions}
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An encryption key may be generated based on personalized unit data associated with a software download recipient, for example, a secure processor. In some aspects, the secure processor may generate a decryption key based on its personalized unit data, and a software download may be performed between the software provider and the secure processor using the generated encryption keys. The secure processor may then decrypt and load the software for execution. The encryption and decryption key generation may also be based on a sequence number or other data indicating one or more previous software downloads at the secure processor. Using the sequence number or other data, sequences of multiple encryption and/or decryption keys may be generated to support multiple software downloads to a secure processor.

## Claims

### Claim 1

A method comprising:
retrieving, by a secure device, personalized unit data stored in a memory of the secure device;
retrieving, by the secure device, a sequence number stored in the memory of the secure device, wherein the sequence number indicates a quantity of times that software has been previously executed successfully;
generating, based on the personalized unit data and based on executing at least a portion of a key generation algorithm a quantity of times based on the sequence number, a first decryption key;
decrypting, using the first decryption key, a second decryption key;
decrypting, using the second decryption key, first software code;
executing the first software code;
determining that the execution of the first software code was successful; and
based on determining that the execution of the first software code was successful, updating the sequence number stored in the memory of the secure device to an updated sequence number.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving second software code;
based on receiving the second software code, generating, based on the personalized unit data and based on executing at least a portion of the key generation algorithm a second quantity of times based on the updated sequence number, a third decryption key, wherein the third decryption key is different from the first decryption key;
decrypting a fourth encryption key using the third decryption key; and
decrypting the second software code using the fourth decryption key.

### Claim 3 (depends on 2)

The method of claim 2, wherein generating the first decryption key comprises generating a predetermined number (N) of decryption keys using the key generation algorithm and using an Nth generated decryption key as the first decryption key, and
wherein generating the third decryption key comprises generating N-1 decryption keys using the key generation algorithm, and using an Nth-1 generated decryption key as the third decryption key.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
receiving second software code;
based on receiving the second software code, generating, based on the personalized unit data and based on executing at least a portion of the key generation algorithm a second quantity of times based on the updated sequence number, a third decryption key, wherein the third decryption key is different from the first decryption key;
determining that decryption of the second software code was not successful;
determining, based on the determination that the decryption of the second software code was not successful, that the updated sequence number in the memory of the secure device should not be changed;
receiving third software code;
decrypting a fourth decryption key using the third decryption key; and
decrypting the third software code using the fourth decryption key.

### Claim 5 (depends on 1)

The method of claim 1, wherein the personalized unit data is based on at least one of:
a serial number of the secure device; and
a type or a version of software currently loaded on the secure device.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
receiving second software code;
based on receiving the second software code, generating, based on the personalized unit data and based on executing at least a portion of the key generation algorithm a second quantity of times based on the updated sequence number, a third decryption key wherein the third decryption key is different from the first decryption key;
determining, by the secure device, that decryption of the second software code was successful; and
based on determining that the decryption of the second software code was successful, updating the updated sequence number stored in the memory of the secure device.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
responsive to the determining that the execution of the first software code was successful, sending, to a computing device, a confirmation message indicating the successful execution.

### Claim 8 (depends on 1)

The method of claim 1, further comprising determining that the updated sequence number comprises a value equal to a predetermined threshold, wherein the predetermined threshold comprises a number of permitted downloads.

### Claim 9 (depends on 8)

The method of claim 8, further comprising refusing, based on the determination that the updated sequence number comprises the value equal to the predetermined threshold, to download additional software code.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
determining an encryption algorithm used to encrypt the first software code.

### Claim 11

A method comprising:
receiving, by a computing device and from a first device, a request for first software code;
retrieving, by the computing device and from a secure memory, first personalized unit data associated with the first device;
retrieving a count of previously successful executions of software codes by the first device;
generating, based on the first personalized unit data and based on executing at least a portion of a key generation algorithm a quantity of times that is based on the count of previously successful executions of the software codes by the first device, a first encryption key;
encrypting, and using the first encryption key, a second encryption key, wherein the second encryption key is used to encrypt the first software code; and
sending, to the first device, the encrypted first software code and the encrypted second encryption key.

### Claim 12 (depends on 11)

The method of claim 11, further comprising:
retrieving second personalized unit data associated with a second device;
generating, based on the second personalized unit data associated with the second device, a third encryption key, wherein the third encryption key is different from the first encryption key;
encrypting, using the third encryption key, the second encryption key; and
sending, to the second device, the encrypted first software code and the second encryption key encrypted using the third encryption key.

### Claim 13 (depends on 11)

The method claim 11, further comprising:
receiving, by the computing device and from the first device, a second request for second software code;
sending, to the first device, the second software code;
after sending the second software code to the first device, updating a count of previous software code downloads performed by the first device, resulting in an updated count; and
storing, by the computing device and in a memory, the updated count.

### Claim 14 (depends on 13)

The method of claim 13, further comprising:
generating, based on the first personalized unit data associated with the first device and based on iteratively executing at least a portion of the key generation algorithm a second quantity of times based on the count of previous software code downloads, a third encryption key, wherein the third encryption key is different than the first encryption key;
encrypting a fourth encryption key using the third encryption key, wherein the fourth encryption key is used to encrypt the second software code; and
sending, to the first device, the encrypted second software code and the encrypted fourth encryption key.

### Claim 15 (depends on 11)

The method of claim 11, further comprising:
storing, by the computing device, a plurality of unique personalized unit data and a plurality of counts of previously successful executions of software codes, wherein each unique personalized unit data corresponds to one of a plurality of devices associated with the computing device and wherein each count of previously successful executions of the software codes corresponds to one of a plurality of devices associated with the computing device.

### Claim 16 (depends on 11)

The method of claim 11, further comprising:
receiving, by the computing device and from the first device, a confirmation message indicating that the encrypted first software code was successfully decrypted by the first device; and
based on receiving the confirmation message indicating that the encrypted first software code was successfully decrypted by the first device, updating, in a memory of the computing device, the count of previously successful executions of software codes by the first device.

### Claim 17 (depends on 11)

The method of claim 11, further comprising:
receiving, by the computing device and from the first device, a confirmation message indicating that the encrypted first software code was successfully executed by the first device; and
based on receiving the confirmation message indicating that the encrypted first software code was successfully executed by the first device, updating, in a memory of the computing device, the count of previously successful executions of the software codes by the first device.

### Claim 18 (depends on 12)

The method of claim 12, wherein generating the first encryption key comprises generating a predetermined number (N) of encryption keys using the key generation algorithm, and using an Nth generated encryption key as the first encryption key; and
wherein generating the third encryption key comprises generating N-1 encryption keys using the key generation algorithm, and using an Nth-1 generated encryption key as the third encryption key.

### Claim 19 (depends on 11)

The method of claim 11, further comprising determining that the count of previously successful executions of the software codes by the first device is equivalent to a predetermined threshold value corresponding to a number of permitted downloads; and
based on determining that the count of previously successful executions of the software codes is equivalent to the predetermined threshold value, refusing to transmit, to the first device, additional software code.

### Claim 20

A method comprising:
generating, based on executing at least a portion of a key generation algorithm a quantity of times based on a first sequence number, a first encryption key, wherein the first sequence number indicates a quantity of times that software has been previously executed successfully;
encrypting, by a control server and using the first encryption key, a second encryption key for a first device, wherein the second encryption key is used to encrypt a first software code;
sending, by the control server and to the first device, the encrypted first software code and the encrypted second encryption key;
receiving a confirmation message indicating that the encrypted first software code was successfully executed by the first device; and
based on receiving the confirmation message, updating, in a secure memory of the control server, the first sequence number corresponding to the first device.

### Claim 21 (depends on 20)

The method of claim 20, wherein generating the first encryption key comprises:
generating, based at least in part on first personalized unit data, the first encryption key.

### Claim 22 (depends on 20)

The method of claim 20, wherein updating the first sequence number comprises updating the first sequence number in the secure memory of the control server, in response to receiving the confirmation message.
