US 12,493,532 B2
System and method for database recovery for encrypted indexes
Panagiotis Antonopoulos, Redmond, WA (US); Arvind Arasu, Redmond, WA (US); Nitish Gupta, Seattle, WA (US); Rajat Jain, Redmond, WA (US); Raghav Kaushik, Kirkland, WA (US); Hanumantha R. Kodavalla, Sammamish, WA (US); Nikolas Ogg, Seattle, WA (US); Ravishankar Ramamurthy, Redmond, WA (US); Kunal Deep Singh, Seattle, WA (US); Jakub Szymaszek, Issaquah, WA (US); and Jeffrey Michael Trimmer, Redmond, WA (US)
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC, Redmond, WA (US)
Filed by Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed on Nov. 22, 2019, as Appl. No. 16/692,671.
Prior Publication US 2021/0157682 A1, May 27, 2021
Int. Cl. G06F 11/14 (2006.01); G06F 16/23 (2019.01); G06F 16/245 (2019.01); G06F 21/60 (2013.01); G06F 21/62 (2013.01); G06F 9/455 (2018.01)
CPC G06F 11/1469 (2013.01) [G06F 16/2379 (2019.01); G06F 16/245 (2019.01); G06F 21/602 (2013.01); G06F 21/6227 (2013.01); G06F 9/45558 (2013.01); G06F 2009/45587 (2013.01); G06F 2201/80 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A system comprising:
a processing system that includes one or more processors; and
a memory that stores computer program instructions that are executable by the processing system, the computer program instructions including:
a query manager configured to:
receive from a first client device a first query, having a decryption key, that when performed modifies an encrypted index of a database using a secure enclave that requires the decryption key for access to the encrypted index; and
receive from a second client device a second query, subsequent to the first query, that is directed to the database and that has the decryption key;
an event monitor configured to:
determine that events requiring remedial actions for the database have occurred;
initiate a first remedial action for the database based on an event of the events that occurs subsequent to the first query and prior to the second query, the first remedial action comprising an attempt to recover the encrypted index;
determine, after completion of the first remedial action, that the first remedial action was unsuccessful in recovering the encrypted index; and
initiate, after access is enabled for the database subsequent to completion of the first remedial action, a second remedial action that utilizes the decryption key received with the second query; and
a deferment manager configured to:
defer one or more transactions of at least the first query or the second query based on a lock for the encrypted index being taken; and
queue the one or more transactions for completion based on the lock for the encrypted index being released.