IP Library Granted Patent US 11,977,637
Granted Patent B2
US 11,977,637 · App. 16/515,918 · Granted May 7, 2024

Technique for authentication and prerequisite checks for software updates

Inventors: Eric Thierry Jean Peeters (Frisco, TX); Barak Cherches (Ramat Ha'Kovesh, IL)
Assignee: TEXAS INSTRUMENTS INCORPORATED
G06F21/572G06F8/65H04L9/30H04L9/3242H04L9/3247G06F2221/033
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,977,637
App. No.
16/515,918
Granted
May 7, 2024
Kind
B2
Abstract

Techniques related to a technique comprising dividing an update into a number of portions, generating, for the first portion, a first portion hash value, generating, for the second portion, a second portion hash value, generating a first branch hash value comprising a hash of a concatenation of the first portion hash value and the second portion hash value, generating a root hash value by concatenating the first branch hash value and a second branch hash value, generating a signature based on the root hash value and a private key, generating an update header comprising the signature, the root hash value, and a hash tree comprising first and second portion hash values, the first branch hash value, and the root hash value, transmitting the update header to a client device for authentication, and transmitting one or more of the number of portions to the client device.

Claims (85)

1. A method, comprising:

dividing an update into a plurality of portions, wherein the plurality of portions comprises at least a first portion and a second portion;

generating, for the first portion, a first portion hash value;

generating, for the second portion, a second portion hash value;

generating a first branch hash value, the first branch hash value comprising a hash based on the first portion hash value and the second portion hash value;

generating a root hash value, the root hash value comprising a hash based on the first branch hash value and a second branch hash value;

generating a root signature based on the root hash value and a private key;

transmitting the root signature, the root hash value, and a hash tree, as part of an update header, without transmitting an additional signature, wherein the hash tree comprises the first and second portion hash values, the first branch hash value, and the root hash value;

transmitting the update header to a client device for authentication; and

transmitting the first portion to the client device.

2. The method of claim 1 ,

wherein a number of portions of the plurality of portions is based on a target portion size, and

wherein the update comprises one or more binary files and wherein the target portion size comprises a fixed size.

3. The method of claim 1 , further comprising:

receiving a request to retransmit the first portion from the client device; and

retransmitting the first portion without retransmitting any other unrequested portions to the client device.

4. The method of claim 1 , wherein the root signature is generated based on the root hash value, versioning information, and metadata, and wherein the private key is associated with a published public key.

5. The method of claim 1 , wherein transmitting the first portion to the client device comprises:

receiving a request to transmit the first portion from the client device; and

transmitting the first portion without transmitting any other unrequested portions to the client device.

6. The method of claim 5 , wherein less than all of the plurality of portions are requested by the client device.

7. The method of claim 5 , further comprising transmitting the second branch hash value to the client device.

8. A non-transitory program storage device comprising instructions stored thereon to cause one or more processors to:

receive, by a client device and from another device, a root signature, a root hash value, and a hash tree, as part of an update header, without receiving an additional signature from the another device, the hash tree containing portion hash values for each portion of a plurality of portions of an update, wherein the root signature is generated based on the root hash value;

authenticate the update header based on the root signature and a public key;

receive a first portion of the plurality of portions of the update;

authenticate the first portion based on a comparison of a hash value of the first portion and the portion hash values in the hash tree without using an additional signature;

save the first portion to a memory location;

repeat the steps of receiving a respective portion, authenticating the respective portion, and saving the respective portion until a determination that the update has been received; and

update software on the client device based on the received portions of the update.

9. The non-transitory program storage device of claim 8 , wherein the instructions to authenticate the first portion further cause the one or more processors to:

generate a first branch hash value, the first branch hash value comprising a hash of a concatenation of a first portion hash value and a second portion hash value;

generate a reconstructed root hash value by concatenating the first branch hash value and a second branch hash value;

determine that the reconstructed root hash value is equal to the root hash value; and

determine that the hash value of the first portion matches a portion hash value of the hash tree.

10. The non-transitory program storage device of claim 9 , wherein the update header further comprises the second branch hash value.

11. The non-transitory program storage device of claim 8 , wherein a portion size of each portion of the plurality of portions is based on a fixed target portion size.

12. The non-transitory program storage device of claim 8 , wherein the instructions further cause the one or more processors to:

obtain current portion hash values for each portion of software on the client device;

determine, based on a comparison between a first current portion hash value and a second portion hash values of a second portion for the update, that the second portion is the same as the first current portion hash value;

determine, based on a comparison between a second current portion hash value and a third portion hash values of a third portion for the update, that the third portion is different from the second current portion hash value;

send a request, to a server, for the third portion; and

determine that the update has been received without receiving the second portion.

13. The non-transitory program storage device of claim 8 , wherein the instructions further cause the one or more processors to:

obtain a current second portion hash value for a current second portion of software on the client device; and

determine, based on a comparison between the current second portion hash value and hash values in the hash tree, that the current second portion does not need to be updated;

wherein updating software comprises updating the first portion without updating the current second portion based on the determination that the current second portion does not need to be updated.

14. The non-transitory program storage device of claim 8 wherein portions of the update are received in any order.

15. The non-transitory program storage device of claim 8 , wherein the instructions further cause the one or more processors to:

obtain a current second portion hash value for a current second portion of software on the client device, the current second portion corresponding to a reference portion of the software on the client device;

determine, based on a comparison between the current second portion hash value and hash values in the hash tree, that the current second portion does not need to be updated; and

determine to update software on the client device based on the determination that the current second portion does not need to be updated.

16. An electronic device comprising:

a memory;

a network interface;

one or more processors operatively coupled to the memory, wherein the one or more processors are configured to execute non-transitory instructions causing the one or more processors to:

receive, from another device, a root signature, a root hash value, and a hash tree as part of an update header, without receiving an additional signature from the another device, the hash tree containing portion hash values for each portion of a plurality of portions of an update, wherein the root signature is generated based on the root hash value;

authenticate the update header based on the root signature and a public key;

receive a first portion of the plurality of portions of the update;

authenticate the first portion based on a comparison of a hash value of the first portion and the portion hash values in the hash tree, without using an additional signature; save the first portion to a memory location;

repeat the steps of receiving a respective portion, authenticating the respective portion, and saving the respective portion until a determination that the update has been received; and

update software on the electronic device based on the received portions of the update.

17. The electronic device of claim 16 , wherein the instructions further cause the one or more processors to authenticate the first portion by:

generating a first branch hash value, the first branch hash value comprising a hash of a concatenation of a first portion hash value and a second portion hash value;

generating a reconstructed root hash value by concatenating the first branch hash value and a second branch hash value;

determining that the reconstructed root hash value is equal to the root hash value; and

determining that the hash value of the first portion matches a portion hash value of the portion hash values.

18. The electronic device of claim 17 , wherein the update header further comprises the second branch hash value.

19. The electronic device of claim 16 , wherein a portion size of each portion of the plurality of portions is based on a fixed target portion size.

20. The electronic device of claim 16 , wherein the instructions further cause the one or more processors to:

obtain current portion hash values for each portion of software on the electronic device;

determine, based on a comparison between a first current portion hash value and a second portion hash values of a second portion for the update, that the second portion is the same as the first current portion hash value;

determine, based on a comparison between a second current portion hash value and a third portion hash values of a third portion for the update, that the third portion is different from the second current portion hash value;

send a request, to a server, for the third portion; and

determine that the update has been received without receiving the second portion.

21. The method of claim 1 , wherein the first branch hash value comprises a hash of a concatenation of the first portion hash value and the second portion hash value, and wherein the root hash value comprises a hash of a concatenation of the first branch hash value and the second branch hash value.

22. The method of claim 1 , wherein generating the root signature comprises generating the root signature using an elliptic curve digital signature algorithm.

23. The method of claim 1 , further comprising:

receiving the update header, by the client device; and

receiving the first portion, by the client device, wherein the client device authenticates the received first portion based on a hash of the received first portion, the hash tree, the root signature, and the root hash value, without using an additional signature.

24. The method of claim 23 , further comprising:

transmitting the second portion; and

receiving the second portion, by the client device, wherein the client device authenticates the received second portion based on a hash of the received second portion, the hash tree, the root signature, and the root hash value, without using an additional signature.

25. The non-transitory program storage device of claim 8 , wherein authenticating the update header based on the root signature and the public key comprises authenticating the update header based on the root signature and the public key using an elliptic curve digital signature algorithm.

26. The electronic device of claim 16 , wherein authenticating the update header based on the root signature and the public key comprises authenticating the update header based on the root signature and a public key using an elliptic curve digital signature algorithm.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2019
From: PEETERS, ERIC THIERRY JEAN; CHERCHES, BARAK
To: TEXAS INSTRUMENTS INCORPORATED
Reel/Frame 049794/0876 →
Continuity (1)
Related Publication 20210019418A1 · Jan 21, 2021