IP Library › Granted Patent US 12,670,260
Granted Patent B2
US 12,670,260 · App. 18/586,996 · Granted Jun 30, 2026

Rollback resistant security

Inventor: Paul Dermot Crowley (Sunnyvale, CA)
Assignee: Google LLC
G06F21/575G06F21/57H04L9/0861H04L9/0866H04L9/14H04L9/3247
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 12,670,260
App. No.
18/586,996
Filed
Feb 26, 2024
Granted
Jun 30, 2026
Kind
B2
Art Unit
2175
USPC
713/2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for rollback resistant security are disclosed. In one aspect, a method, during a boot process of a computing device, includes the actions of obtaining a secret key derived from device-specific information for the computing device. The method further includes verifying that a signature for a software module is valid. The method further includes obtaining information indicating a current version of the software module. The method further includes using the secret key to generate a first encryption key corresponding to the current version of the software module and a second encryption key corresponding to a prior version of the software module. The method further includes preventing future access to the secret key until the computing device is rebooted. The method further includes providing the software module access to the first encryption key and the second encryption key.

Claims (54)

1 . A computing-implemented method comprising:

in response to upgrading a prior version of a software module, determining a current version number for a current version of the software module, wherein previous version numbers for previous versions of the software module are derivable from the current version number;

storing an indication of the current version number; and

during a boot process of a computing device:

extracting a software version number from a digital signature for the software module to be loaded, and

upon a determination that the software version number matches a previous version number of the software module, preventing access to encrypted user information associated with the current version of the software module.

2 . The method of claim 1 , further comprising:

upon a determination that the software version number associated with the software module to be loaded matches the previous version number, generating a prior encryption key corresponding to the previous version of the software module.

3 . The method of claim 2 , further comprising:

providing the software module access to the previous version of the software module and to the prior encryption key to enable decryption of information associated with the previous version.

4 . The method of claim 1 , further comprising:

generating, based on a device-specific key, a first encryption key corresponding to the current version of the software module and a second encryption key corresponding to the prior version of the software module; and

after generating the first encryption key and the second encryption key, preventing future access to the device-specific key until a next reboot of the computing device.

5 . The method of claim 4 , wherein the device-specific key is stored on a system on a chip (SoC), and wherein the preventing of the future access to the device-specific key is performed by the SoC.

6 . The method of claim 4 , wherein the device-specific key is stored in hardware, is immutable, and is not accessible to the software module.

7 . The method of claim 4 , wherein the preventing of the future access to the device-specific key comprises overwriting the device-specific key.

8 . The method of claim 4 , wherein the preventing of the future access to the device-specific key comprises an adjustment of permissions for the software module to access the device-specific key.

9 . The method of claim 4 , wherein the generating of the first encryption key and the second encryption key comprises:

obtaining information indicating the current version of the software module installed on the computing device; and

using the device-specific key to generate a first value corresponding to the current version and a second value corresponding to the prior version, wherein the first encryption key is based on the first value, and the second encryption key is based on the second value.

10 . The method of claim 9 , wherein the generating of the first encryption key comprises hashing the first value, and wherein the generating of the second encryption key comprises hashing the second value.

11 . The method of claim 10 , wherein the hashing of the first value and of the second value is based on a same hashing algorithm.

12 . The method of claim 10 , wherein the hashing of the first value is based on a first hashing algorithm, and wherein the hashing of the second value is based on a second hashing algorithm.

13 . The method of claim 9 , wherein a respective first or second value comprises a combination of the device-specific key with a respective version number of a respective current or prior version of the software module.

14 . The method of claim 8 , wherein a respective first or second value comprises a combination of the device-specific key with a public key associated with the software module and a respective version number of a respective current or prior version of the software module.

15 . The method of claim 8 , wherein a respective first or second value comprises a concatenation of a software identifier associated with the software module with a public key associated with the software module, a respective version number of a respective current or prior version of the software module, and the device-specific key.

16 . The method of claim 1 , wherein the software module is an operating system or a kernel.

17 . The method of claim 10 , further comprising:

determining that the prior version of the software module has been updated to the current version of the software module; and

in response to determining that the prior version of the software module has been updated to the current version of the software module:

decrypting user information using a second encryption key corresponding to the prior version of the software module, and

encrypting the decrypted user information using a first encryption key corresponding to the current version of the software module.

18 . A computing device comprising:

one or more processors; and

data storage, wherein the data storage has stored thereon computer-executable instructions that, when executed by the one or more processors, cause the computing device to perform operations comprising:

in response to upgrading a prior version of a software module, determining a current version number for a current version of the software module, wherein previous version numbers for previous versions of the software module are derivable from the current version number;

storing an indication of the current version number; and

during a boot process of a computing device;

extracting a software version number from a digital signature for the software module to be loaded, and

upon a determination that the software version number matches a previous version of the software module, preventing access to encrypted user information associated with the current version of the software module.

19 . A non-transitory computer-readable medium storing software comprising instructions executable by a computing device that, upon execution, cause the computing device to perform operations comprising:

in response to upgrading a prior version of a software module, determining a current version number for a current version of the software module, wherein previous version numbers for previous versions of the software module are derivable from the current version number;

storing an indication of the current version number; and

during a boot process of a computing device:

extracting a software version number from a digital signature for the software module to be loaded, and

upon a determination that the software version number matches a previous version of the software module, preventing access to encrypted user information associated with the current version of the software module.

20 . The method of claim 1 , further comprising:

upon a determination that the software version number matches the current version number of the software module:

generating a current encryption key corresponding to the current version, and

decrypting user information that is stored on the computing device using a prior encryption key that corresponds to the prior version of the software module, and re-encrypting the user information with the current encryption key.

21 . The method of claim 1 , further comprising:

during the boot process of the computing device:

verifying, by a bootloader, that the digital signature for the software module to be loaded is valid.

22 . The method of claim 1 , wherein preventing access to encrypted user information associated with the current version of the software module comprises preventing generation of an encryption key corresponding to the current version of the software module.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2025
From: CROWLEY, PAUL DERMOT
To: GOOGLE INC.
Reel/Frame 072897/0406 →
CHANGE OF NAME Recorded Nov 13, 2025
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 073551/0189 →
Continuity (5)
Continuation 18163469 · Feb 2, 2023
Continuation 17024589 · Sep 17, 2020
Continuation 16054020 · Aug 3, 2018
Continuation 15371427 · Dec 7, 2016
Related Publication 20240330470A1 · Oct 3, 2024
References Cited (42)
US 5960445A · Tamori · 1999 [cited by examiner]
US 6681329B1 · Fetkovich et al. · 2004 [cited by applicant]
US 6684326B1 · Cromer et al. · 2004 [cited by applicant]
US 7328341B1 · Eun et al. · 2008 [cited by applicant]
US 7409546B2 · Platt · 2008 [cited by applicant]
US 7853780B2 · Rotondo et al. · 2010 [cited by applicant]
US 8151249B2 · Ohta et al. · 2012 [cited by applicant]
US 8566594B2 · Soliman et al. · 2013 [cited by applicant]
US 9122864B2 · Dayka et al. · 2015 [cited by applicant]
US 9515832B2 · Agarwal et al. · 2016 [cited by applicant]
US 10049218B2 · Crowley · 2018 [cited by applicant]
US 10394570B2 · Baik et al. · 2019 [cited by applicant]
US 10810312B2 · Crowley · 2020 [cited by applicant]
US 11159497B2 · Smelov · 2021 [cited by applicant]
US 20030221092A1 · Ballard · 2003 [cited by examiner]
US 20040003235A1 · Musa · 2004 [cited by applicant]
US 20050165760A1 · Seo · 2005 [cited by examiner]
US 20100146301A1 · Shevchenko et al. · 2010 [cited by applicant]
US 20110087872A1 · Shah et al. · 2011 [cited by applicant]
US 20120230236A1 · Kert et al. · 2012 [cited by applicant]
US 20140149748A1 · Ang et al. · 2014 [cited by applicant]
US 20150012738A1 · Shah et al. · 2015 [cited by applicant]
US 20150193224A1 · Ziat et al. · 2015 [cited by applicant]
US 20150312271A1 · Glover et al. · 2015 [cited by applicant]
US 20150379270A1 · Chen et al. · 2015 [cited by applicant]
US 20160364297A1 · Lo et al. · 2016 [cited by applicant]
US 20170262328A1 · Hirose · 2017 [cited by applicant]
US 20180024942A1 · Canepa et al. · 2018 [cited by applicant]
US 20180157840A1 · Crowley · 2018 [cited by applicant]
US 20180246552A1 · Thompson et al. · 2018 [cited by applicant]
US 20190026471A1 · Crowley · 2019 [cited by applicant]
US 20190028266A1 · Darmon et al. · 2019 [cited by applicant]
US 20190097798A1 · Hunt et al. · 2019 [cited by applicant]
US 20190174319A1 · Backholm et al. · 2019 [cited by applicant]
US 20210117176A1 · Watt · 2021 [cited by examiner]
WO 2011130554 · 2011 [cited by applicant]
Antenucci, et al., “A Declarative Query Processing System for Nowcasting”, Proceedings of the VLDB Endowment, Nov. 2016, pp. 145-156, vol. 10, No. 3. [cited by applicant]
Sekhavat, “Nowcasting Mobile Games Ranking Using Web Search Query Data”, International Journal of Computer Sames Technology, Jan. 2016, 10 pages. [cited by applicant]
Shenoy, “Utilizing Web Data to Detect Harmful Application Software”, Technical Disclosure Commons, https://www.dcommons.org/dpubs_series/4469, Jul. 22, 2021, 12 pages. [cited by applicant]
United States Patent and Trademark Office, Non-Final Office Action, Application Number mailed on Apr. 29, 2020, 9 Pages. [cited by applicant]
United States Patent and Trademark Office, Notice of Allowance mailed on Apr. 11, 2018, issued in connection with U.S. Appl. No. 15/371,427, 8 pages. [cited by applicant]
United States Patent and Trademark Office, Notice of Allowance mailed on Jun. 25, 2020, issued in connection with U.S. Appl. No. 16/054,020, 7 pages. [cited by applicant]