# US 2019/0356529 A1 · Device programming with system generation

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

- Number: US 2019/0356529 A1
- Document ID: US20190356529A1
- Status: Published application
- Kind: A1
- Application number: 16/528,456
- Filed: 2019-07-31
- Published: 2019-11-21
- Earliest claimed: 2016-08-01
- Assignees: Data I/O Corporation
- Applicants: Data I/O Corporation
- Inventors: Rajeev Gulati
- Web page: https://patentgrep.com/patent/US20190356529A1

## CPC

- H04L 9/3273: {for mutual authentication (network architectures or network communication protocols for achieving mutual authentication in a packet data network H04L63/0869)}
- H04L 63/08: {for authentication of entities (cryptographic mechanisms or cryptographic arrangements for entity authentication H04L9/32)}
- G06F 21/10: Protecting distributed programs or content, e.g. vending or licensing of copyrighted material (protection in video systems or pay television H04N7/16) {; Digital rights management [DRM]}
- G06F 21/51: at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
- G06F 21/572: {Secure firmware programming, e.g. of basic input output system [BIOS]}
- G06F 21/73: by creating or determining hardware identification, e.g. serial numbers
- 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/0891: {Revocation or update of secret information, e.g. encryption key update or rekeying}
- H04L 9/0897: {involving additional devices, e.g. trusted platform module [TPM], smartcard or USB}
- H04L 9/3242: {involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC}
- H04L 9/3247: {involving digital signatures}
- H04L 9/3265: {using certificate chains, trees or paths; Hierarchical trust model}
- H04L 9/3268: {using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]}
- G06F 21/109: {by using specially-adapted hardware at the client}
- G06F 2221/034: Test or assess a computer or a system
- G06F 2221/2107: File encryption
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 63/0442: {wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption (cryptographic mechanisms or cryptographic arrangements for public-key encryption H04L9/30)}
- H04L 63/0823: {using certificates (cryptographic mechanisms or cryptographic arrangements for entity authentication involving certificates H04L9/3263)}
- H04L 63/126: {the source of the received data}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G09C: CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY

## Abstract

A secure programming system and method for provisioning and programming a target payload into a programmable device mounted in a programmer. The programmable device can be authenticated before programming to verify the device is a valid device produced by a silicon vendor. The authentication process can include a challenge-response validation. The target payload can be programmed into the programmable device and linked with an authorized manufacturer. The programmable device can be verified after programming the target payload by verifying the silicon vendor and the authorized manufacturer. The secure programming system can provision different content into different programmable devices simultaneously to create multiple final device types in a single pass.

## Claims

### Claim 1

A method of operation of a secure programming system comprising:
coupling programmable devices to a programming unit, the programmable devices having at least a first device;
receiving a job control package and a target payload, the job control package having a job authentication identifier, the target payload having a first content;
retrieving a first device certificate from the first device, the first device certificate having a first device identifier, a first device authentication, and a first device public key;
sending a first device challenge to the first device,
receiving a first device response from the first programmable device in response to the first device challenge, the first device response having an authentication value;
validating the first device response to generate an authentication status for the first device;
in response to a successful validation of the first device response, transferring a first provisioning package to the first device, the first provisioning package having the first content; and
sorting the first device into an output receptacle of the programing unit based on the device authentication status of the first device.

### Claim 2 (depends on 1)

The method as claimed in claim 1, wherein sending the first device challenge include generating the first response challenge at a security controller of the programming unit based on the authentication value and the first device public key.

### Claim 3 (depends on 1)

The method as claimed in claim 1, wherein receiving the first device response includes generating the first device response at the first device based on the first device challenge and a first device private key and the first device response is generated with a first device security controller of the first device.

### Claim 4 (depends on 1)

The method as claimed in claim 1, wherein validating the first device response includes:
decrypting the authentication value from the first device response at a security controller of the programming unit using the first device public key; and
generating the authentication status based on the authentication value of the first device response matching the authentication value of the first device challenge.

### Claim 5 (depends on 1)

The method as claimed in claim 1, wherein coupling the programmable devices to the programming unit includes coupling the programmable devices to the programming unit with an in-system programmer (ISP), an in-circuit programmer, an on-board programmer, or a network link.

### Claim 6 (depends on 1)

The method as claimed in claim 1, wherein transferring the first provisioning package includes:
encrypting the first content of the first provisioning packing using the first device public key;
decrypting the first content of the first provisioning package at a security controller of the first device using the first device private key; and
programming the first content into the first device.

### Claim 7 (depends on 1)

The method as claimed in claim 1, wherein receiving the job control package includes:
receiving a stocking keeping unit (SKU) configuration and a security provisioning object for the first device;
configuring the first device using the SKU configuration; and
provisioning the first device with the security provisioning object.

### Claim 8

A secure programming system comprising:
a programming unit configured to couple programmable devices to a programming unit, the programmable devices having at least a first device, the first device having a first device certificate with a first device identifier, a first device authentication, and a first device public key, the programming unit configured to send a first device challenge to the first device and receive a first device response from the first programmable device in response to the first device challenge, the first device response having an authentication value, and the programming unit configured to transfer a first provisioning package having the first content to the first device;
a secure storage unit of the programming unit to receive a job control package and a target payload, the job control package having a job authentication identifier, the target payload having a first content;
a security controller of the programming unit to validate the first device response to generate an authentication status for the first device; and
an output receptacle of the programming unit for sorting the first device based on the device authentication status of the first device.

### Claim 9 (depends on 8)

The system as claimed in claim 8, wherein the security controller is configured to generate the first response challenge based on the authentication value and the first device public key.

### Claim 10 (depends on 8)

The system as claimed in claim 8, wherein the programming unit is configured to receive the first device response generated at the first device based on the first device challenge and a first device private key and the security controller is configured to generate the first device response.

### Claim 11 (depends on 8)

The system as claimed in claim 8, wherein security controller is configured to:
decrypt the authentication value from the first device response at a security controller of the programming unit using the first device public key; and
generate the authentication status based on the authentication value of the first device response matching the authentication value of the first device challenge.

### Claim 12 (depends on 8)

The system as claimed in claim 8, wherein the programming unit is configured to couple the programmable devices to the programming unit with an in-system programmer (ISP), an in-circuit programmer, an on-board programmer, or a network link.

### Claim 13 (depends on 8)

The system as claimed in claim 8, wherein the security controller is configured to encrypt the first content of the first provisioning packing using the first device public key.

### Claim 14 (depends on 8)

The system as claimed in claim 8, wherein the programming unit is configured to receive a stocking keeping unit (SKU) configuration and a security provisioning object for the first device, configure the first device using the SKU configuration, and provision the first device with the security provisioning object.

### Claim 15

One or more non-transitory computer-readable media storing instructions that, when executed by one or more computing devices, cause:
coupling programmable devices to a programming unit, the programmable devices having at least a first device;
receiving a job control package and a target payload, the job control package having a job authentication identifier, the target payload having a first content;
retrieving a first device certificate from the first device, the first device certificate having a first device identifier, a first device authentication, and a first device public key;
sending a first device challenge to the first device,
receiving a first device response from the first programmable device in response to the first device challenge, the first device response having an authentication value;
validating the first device response to generate an authentication status for the first device;
in response to a successful validation of the first device response, transferring a first provisioning package to the first device, the first provisioning package having the first content; and
sorting the first device into an output receptacle of the programing unit based on the device authentication status of the first device.

### Claim 16 (depends on 15)

The non-transitory computer-readable media of claim 15, wherein the instruction when executed by the one or more computing devices, further cause sending the first device challenge include generating the first response challenge at a security controller of the programming unit based on the authentication value and the first device public key.

### Claim 17 (depends on 15)

The non-transitory computer-readable media of claim 15, wherein the instruction when executed by the one or more computing devices, further cause receiving the first device response includes generating the first device response at the first device based on the first device challenge and a first device private key and the first device response is generated with a first device security controller of the first device.

### Claim 18 (depends on 15)

The non-transitory computer-readable media of claim 15, wherein the instruction when executed by the one or more computing devices, further cause:
decrypting the authentication value from the first device response at a security controller of the programming unit using the first device public key; and
generating the authentication status based on the authentication value of the first device response matching the authentication value of the first device challenge.

### Claim 19 (depends on 15)

The non-transitory computer-readable media of claim 15, wherein the instruction when executed by the one or more computing devices, further cause coupling the programmable devices to the programming unit includes coupling the programmable devices to the programming unit with an in-system programmer (ISP), an in-circuit programmer, an on-board programmer, or a network link.

### Claim 20 (depends on 15)

The non-transitory computer-readable media of claim 15, wherein the instruction when executed by the one or more computing devices, further cause:
encrypting the first content of the first provisioning packing using the first device public key;
decrypting the first content of the first provisioning package at a security controller of the first device using the first device private key; and
programming the first content into the first device.
