# US 8,543,839 B2 · Electronic device and method of software or firmware updating of an electronic device

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

- Number: US 8,543,839 B2
- Document ID: US8543839B2
- Status: Granted
- Kind: B2
- Application number: 12/976,857
- Filed: 2010-12-22
- Published: 2011-08-25
- Granted: 2013-09-24
- Earliest claimed: 2008-06-23
- Assignees: ST-Ericsson SA
- Applicants: Hervé Sibert
- Inventors: Hervé Sibert
- Web page: https://patentgrep.com/patent/US8543839B2

## CPC

- G06F 21/572: {Secure firmware programming, e.g. of basic input output system [BIOS]}
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An electronic device is provided having a memory driver unit for reading partition headers including encrypted version numbers from a memory and for writing updated encrypted version numbers to the memory. The electronic device has an update agent unit for controlling a software or firmware update, a one-time programmable memory for storing a first value, and an encrypt-decrypt unit for decrypting the partition headers stored in the memory. The update agent is configured to compare the retrieved version numbers with a version number from a software or firmware update. The first value is incremented and stored in the one-time programmable memory if an update is performed. The encrypt-decrypt unit is configured to encrypt the version numbers of the software or firmware update based on the new first value. The memory driver unit is configured to write a new partition header with the updated encrypted version numbers into the memory.

## Claims

### Claim 1

An electronic device, comprising:
a memory driver unit configured to read partition headers having encrypted version numbers from a memory and configured to write an updated encrypted version numbers to the memory;
an update agent unit configured to control a software or firmware update of the electronic device;
a one-time programmable memory configured to store a first value; and
an encrypt-decrypt unit configured to decrypt the partition headers stored in the memory based on the first value stored in the one-time programmable memory, the encrypt-decrypt unit configured to retrieve version numbers from the partition headers;
wherein the update agent unit is configured to compare the retrieved version numbers with version numbers from a software or firmware update to determine whether the version numbers of the software or firmware update are larger than the retrieved version numbers,
wherein the first value is incremented and stored in the one-time programmable memory if an update is performed; wherein the encrypt-decrypt unit is configured to encrypt the version numbers of the software or firmware update based on the new first value; and
wherein the memory driver unit is configured to write new partition headers with updated encrypted version numbers into the memory.

### Claim 2 (depends on 1)

The electronic device according to claim 1, wherein the software or firmware of the electronic comprises at least two components, wherein each component can have its own version number, and wherein each component can be updated separately.

### Claim 3 (depends on 1)

The electronic device according to claim 1, wherein the update of the first value can be deactivated.

### Claim 4

A method, comprising:
updating software or firmware of an electronic device, the updating performed by the electronic device and including:
reading a partition header including an encrypted version number from a memory; controlling a software or firmware update of the electronic device;
storing a first value in a one-time programmable memory;
decrypting the partition header stored in the memory based on the first value stored in the one-time programmable memory, the decrypting to retrieve the encrypted version number of the partition header;
comparing the retrieved version number with a version number of a software or firmware update in order to determine whether the version number of the software or firmware update is larger than the retrieved version number;
incrementing and storing the first value in the one-time programmable memory if an update is performed;
encrypting the version number of the software or firmware update based on the new first value; and
writing a new partition header with the updated encrypted version number into the memory.

### Claim 5 (depends on 4)

The method according to claim 4, wherein the updating comprises:
reading a second partition header including a second encrypted version number from the memory;
decrypting the second partition header based on the first value, the decrypting to retrieve the second encrypted version number;
comparing the retrieved second version number with a second version number of the software or firmware update in order to determine whether the second version number of the software or firmware update is larger than the retrieved second version number,
encrypting the second version number of the software or firmware update based on the new first value,
writing a new second partition header with the updated encrypted second version number into the memory.

### Claim 6 (depends on 4)

The method according to claim 4, wherein the updating includes:
encrypting a second version number based on the new first value if the software or firmware update does not direct an update to a second partition;
writing a new second partition header with the encrypted second version number into the memory.

### Claim 7 (depends on 4)

The method according to claim 4, wherein the updating includes:
creating a dependency tree to map multiple software or firmware updates.

### Claim 8 (depends on 4)

The method according to claim 4, wherein the updating includes:
encrypting the incremented first value together with the version number of the software or firmware update.

### Claim 9

An electronic device, comprising:
a memory having a first partition and a second partition, the first and second partitions configured to store first and second components respectively, the first and second partitions having first and second partition headers respectively, and the first and second partition header having encrypted first and second version numbers respectively, the first and second version numbers corresponding to the first and second stored components;
a one-time programmable memory configured to store a first value;
a memory driver unit configured to read the first partition header from the memory and write an updated first partition header to the memory, the updated first partition header having an updated encrypted version number;
an encrypt-decrypt unit configured to retrieve the first version number of the first partition header by decrypting the first partition header based on the first value, the encrypt-decrypt unit configured to create an updated first partition header by encrypting an updated first version number corresponding to an updated first component based on an updated first value; and
an update agent unit configured to compare the retrieved first version number with the updated first version number to determine whether the updated first version number represents that the updated first component is a later version of the stored first component, and, if the updated first component is a later version of the stored first component, the update agent unit is configured to generate the updated first value and direct storage of the updated first value in the one-time programmable memory.

### Claim 10 (depends on 9)

The electronic device according to claim 9, wherein the memory driver unit, the encrypt-decrypt unit, and the update agent unit are configured to store an updated second component.

### Claim 11 (depends on 10)

The electronic device according to claim 10, wherein the memory driver unit, the encrypt-decrypt unit, and the update agent unit are configured to store an updated second partition header even if the stored second component is not updated.

### Claim 12 (depends on 9)

The electronic device according to claim 9, wherein the updated first value represents the first value having one additional bit asserted.

### Claim 13 (depends on 9)

The electronic device according to claim 9, wherein the updated first value represents the first value incremented by one.

### Claim 14 (depends on 9)

The electronic device according to claim 9, wherein the encrypt-decrypt unit is configured to retrieve first data when the first partition header is decrypted.

### Claim 15 (depends on 14)

The electronic device according to claim 14, wherein the first data represents a public key.

### Claim 16 (depends on 9)

The electronic device according to claim 9, wherein the encrypt-decrypt unit is configured to retrieve a copy of the first value when the first partition header is decrypted and wherein the update agent unit is configured to compare the first value with the copy of the first value.

### Claim 17 (depends on 16)

The electronic device according to claim 16, wherein the update agent unit is configured to direct a reboot of the electronic device if the first value is not the same as the copy of the first value.

### Claim 18 (depends on 9)

The electronic device according to claim 9, wherein, during boot of the electronic device, the memory driver unit is configured to retrieve an unencrypted copy of the first version number, the encrypt-decrypt unit is configured to retrieve the first version number, and the update agent unit is configured to take an action if the copy of the first version number is different than the first version number.

### Claim 19 (depends on 9)

The electronic device according to claim 9, wherein the memory driver unit, the encrypt-decrypt unit, and the update agent unit are parts of a set top box.

### Claim 20 (depends on 9)

The electronic device according to claim 9, wherein the memory driver unit, the encrypt-decrypt unit, and the update agent unit are parts of a mobile device.
