IP Library Granted Patent US 10,185,550
Granted Patent B2
US 10,185,550 · App. 15/278,936 · Granted Jan 22, 2019

Device-driven auto-recovery using multiple recovery sources

Inventors: Ned M. Smith (Beaverton, OR); Zheng Zhang (Portland, OR); Thiago J. Macieira (Portland, OR)
Assignee: McAfee, Inc.
G06F8/65H04L67/34
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 10,185,550
App. No.
15/278,936
Granted
Jan 22, 2019
Kind
B2
Abstract

Updating computer program(s) installed on a programmable device using a distributed ledger that is based on cryptography and blockchain technology is described. A distributed ledger logic/module can commit, to the distributed ledger, a first configuration of a computer program installed on a device. The logic/module can also receive requests to apply a first update and a second update to the first configuration. The logic/module can receive a second configuration of the computer program that is based on the first update and the first configuration, and also commit the second configuration to the distributed ledger. Furthermore, the logic/module can determine that the second update cannot be applied to the first configuration and receive a third configuration of the computer program that is based on the second update and the second configuration. The logic/module can also commit the third configuration to the distributed ledger. Other advantages and embodiments are described.

Claims (78)

1. A machine readable solid-state memory or optical disk or magnetic disk comprising instructions for managing updating of a programmable device that is part of a computer network including multiple interconnected programmable devices, wherein the instructions, when executed by at least one processor of the programmable device, cause the at least one processor to at least:

commit, to a distributed ledger, a first configuration of a computer program installed on the programmable device, wherein the distributed ledger exists on at least two of the multiple interconnected programmable devices, and the distributed ledger is based on a blockchain;

receive a first request to apply a first update to the first configuration of the computer program and a second request to apply a second update to the first configuration of the computer program;

generate a second configuration of the computer program, based on the first update and the first configuration of the computer program;

commit the second configuration of the computer program to the programmable device;

commit the second configuration of the computer program to the distributed ledger;

determine a latest configuration of the computer program by examining a most recent block of the distributed ledger;

verify a non-existent status of the first configuration of the computer program on the distributed ledger based on the latest configuration;

prevent the second update from being applied to the first configuration of the computer program;

in response to verifying the non-existent status of the first configuration of the computer program on the distributed ledger, generate a third configuration of the computer program based on the verification, the third configuration to be generated based on the second update and the second configuration of the computer program; commit the third configuration of the computer program to the programmable device; and commit the third configuration of the computer program to the distributed ledger.

2. The machine readable solid-state memory or optical disk or magnetic disk of claim 1 , wherein at least one of the first update or the second update is to be received from a third party updating service.

3. The machine readable solid-state memory or optical disk or magnetic disk of claim 1 , wherein the second request is to be received before the generating of the second configuration of the computer program.

4. The machine readable solid-state memory or optical disk or magnetic disk of claim 1 , wherein the first configuration, the second configuration, and the third configuration are to be stored in the distributed ledger.

5. The machine readable solid-state memory or optical disk or magnetic disk of claim 4 , wherein each of the first update and the second update includes a software bundle.

6. The machine readable solid-state memory or optical disk or magnetic disk of claim 5 , wherein the instructions, when executed, further cause the at least one processor to identify each of the first update and the second update using a bundle version string.

7. The machine readable solid-state memory or optical disk or magnetic disk of claim 1 , further comprising instructions that when executed by the machine wherein the instructions, when executed, further cause the at least one processor to:

detect that the second configuration of the computer program should be rolled back from the programmable device;

roll back the second configuration of the computer program to the first configuration of the computer program in response to detecting that the second configuration of the computer program should be rolled back;

modify the first update in response to rolling back the second configuration of the computer program;

generate a modified second configuration of the computer program based on the modified first update and the first configuration of the computer program;

commit the modified second configuration of the computer program to the distributed ledger;

generate a fourth configuration of the computer program based on the second update and the modified second configuration of the computer program; and

commit the fourth configuration of the computer program to the distributed ledger.

8. The machine readable solid-state memory or optical disk or magnetic disk storage device of claim 7 , wherein the instructions, when executed, further cause the at least one processor to: detect a flaw in the first update; and correct the flaw to generate the modified first update.

9. The machine readable solid-state memory or optical disk or magnetic disk of claim 1 , wherein the instructions, when executed, further cause the at least one processor to validate the committing of the second configuration to the distributed ledger based on a proof-of-work protocol implemented by a public consensus protocol.

10. A method of managing updating of a programmable device that is part of a computer network including comprised of multiple interconnected programmable devices, the method comprising:

committing, by executing an instruction with a processor, a first configuration of a computer program installed on the programmable device to a distributed ledger, wherein the distributed ledger exists on at least two of the multiple interconnected programmable devices and the distributed ledger is based on a blockchain;

analyzing, by executing an instruction with the processor, a first request to apply a first update to the first configuration of the computer program and a second request to apply a second update to the first configuration of the computer program;

generating, by executing an instruction with the processor, a second configuration of the computer program that is based on the first update and the first configuration of the computer program;

committing, by executing an instruction with the processor, the second configuration of the computer program to the programmable device;

committing, by executing an instruction with the processor the one or more processors of the programmable device, the second configuration of the computer program to the distributed ledger;

determining, by executing an instruction with the processor, a latest configuration of the computer program by examining a most recent block of the distributed ledger;

verifying, by executing an instruction with the processor, a non-existent status of the first configuration of the computer program on the distributed ledger based on the latest configuration;

preventing, by executing an instruction with the processor, the second update from being applied to the first configuration of the computer program;

in response to verifying the non-existent status of the first configuration of the computer program on the distributed ledger, generating, by executing an instruction with the processor, a third configuration of the computer program based on the second update and the second configuration of the computer program;

committing, by executing an instruction with the processor, the third configuration of the computer program to the programmable device; and

committing, by executing an instruction with the processor the one or more processors of the programmable device, the third configuration of the computer program to the distributed ledger.

11. The method of claim 10 , further including receiving at least one of the first update or the second update from a third party updating service.

12. The method of claim 10 , further including receiving the second request before receiving the second configuration of the computer program.

13. The method of claim 10 , wherein the first configuration, the second configuration, and the third configuration are to be stored in the distributed ledger in a separate block.

14. The method of claim 13 , wherein each of the first update and the second update includes a software bundle.

15. The method of claim 14 , further including identifying each of the first update and the second update using a bundle version string.

16. The method of claim 10 , further including: detecting that the second configuration of the computer program should be rolled back from the programmable device;

rolling back the second configuration of the computer program to the first configuration of the computer program in response to detecting that the second configuration of the computer program should be rolled back;

modifying the first update in response to rolling back the second configuration of the computer program;

generating a modified second configuration of the computer program based on the modified first update and the first configuration of the computer program;

committing the modified second configuration of the computer program to the distributed ledger;

generating a fourth configuration of the computer program based on the second update and the modified second configuration of the computer program; and

committing the fourth configuration of the computer program to the distributed ledger.

17. The method of claim 16 , further including: detecting a flaw in the first update; and correcting the flaw to generate the modified first update.

18. A system for managing updating of a programmable device that is part of a computer network including multiple interconnected programmable devices, the system comprising: at least one processor; and a memory communicatively coupled to the at least one processor and including instructions, which, when executed, cause the at least one processor to at least:

commit, to a distributed ledger, a first configuration of a computer program installed on the programmable device, wherein the distributed ledger exists on at least two of the multiple interconnected programmable devices and the distributed ledger is based on a blockchain;

analyze a first request to apply a first update to the first configuration of the computer program and a second request to apply a second update to the first configuration of the computer program;

generate a second configuration of the computer program, based on the first update and the first configuration of the computer program;

commit the second configuration of the computer program to the programmable device;

commit the second configuration of the computer program to the distributed ledger;

determine a latest configuration of the computer program by examining a most recent block of the distributed ledger;

verify a non-existent status of the first configuration of the computer program on the distributed ledger based on the latest configuration;

prevent the second update from being applied to the first configuration of the computer program;

in response to verifying the non-existent status of the first configuration of the computer program on the distributed ledger, generate a third configuration of the computer program based on the verification, the third configuration to be generated based on the second update and the second configuration of the computer program;

commit the third configuration of the computer program to the programmable device;

commit the third configuration of the computer program to the distributed ledger; and

synchronize the distributed ledger with the second programmable device based on the committing of the third configuration to the distributed ledger.

19. The system of claim 18 , wherein at least one of the first update or the second update is to be received from a third party updating service.

20. The system of claim 18 , wherein the second request is to be received before the generating of the second configuration of the computer program.

21. The system of claim 18 , wherein the first configuration, the second configuration, and the third configuration are to be stored in the distributed ledger in a separate block.

22. The system of claim 21 , wherein each of the first update and the second update includes a software bundle.

23. The system of claim 22 , wherein the instructions, when executed, further cause the at least one processor to identify each of the first update and the second update using a bundle version string.

24. The system of claim 18 , wherein the instructions, when executed, further cause the at least one processor to:

detect that the second configuration of the computer program should be rolled back from the programmable device;

roll back the second configuration of the computer program to the first configuration of the computer program in response to detecting that the second configuration of the computer program should be rolled back;

modify the first update in response to rolling back the second configuration of the computer program;

generate a modified second configuration of the computer program based on the modified first update and the first configuration of the computer program;

commit the modified second configuration of the computer program to the distributed ledger;

generate a fourth configuration of the computer program based on the second update and the modified second configuration of the computer program; and

commit the fourth configuration of the computer program to the distributed ledger.

25. The system of claim 24 , wherein the instructions, when executed, further cause the at least one processor to: detect a flaw in the first update; and correct the flaw to generate the modified first update.

26. The system of claim 18 , wherein the at least one processor is a cryptoprocessor.

Assignments (10)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE PATENT TITLES AND REMOVE DUPLICATES IN THE SCHEDULE PREVIOUSLY RECORDED AT REEL: 059354 FRAME: 0335. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jun 23, 2022
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 060792/0307 →
SECURITY INTEREST Recorded Mar 3, 2022
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 059354/0335 →
RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 045056/0676 Recorded Mar 2, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MCAFEE, LLC
Reel/Frame 059354/0213 →
RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 045055/0786 Recorded Oct 26, 2020
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MCAFEE, LLC
Reel/Frame 054238/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENT 6336186 PREVIOUSLY RECORDED ON REEL 045055 FRAME 786. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Oct 22, 2020
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 055854/0047 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENT 6336186 PREVIOUSLY RECORDED ON REEL 045056 FRAME 0676. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Oct 22, 2020
From: MCAFEE, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 054206/0593 →
SECURITY INTEREST Recorded Jan 12, 2018
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 045055/0786 →
SECURITY INTEREST Recorded Jan 12, 2018
From: MCAFEE, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 045056/0676 →
CHANGE OF NAME AND ENTITY CONVERSION Recorded Sep 15, 2017
From: MCAFEE, INC.
To: MCAFEE, LLC
Reel/Frame 043969/0057 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2016
From: SMITH, NED M.; ZHANG, ZHENG; MACIEIRA, THIAGO J.
To: MCAFEE, INC.
Reel/Frame 039880/0032 →
Continuity (1)
Related Publication 20180088928A1 · Mar 29, 2018
Cited By (5)
US 12,218,795 US 12,316,744 US 12,504,969 US 12,578,955 US 12,720,289