US 11,755,747 B2
High throughput storage encryption
Sudhir Satpathy, Redmond, WA (US); Wojciech Stefan Powiertowski, Kirkland, WA (US); Nagendra Gupta Modadugu, San Francisco, CA (US); and Neeraj Upasani, Sammamish, WA (US)
Assigned to Meta Platforms Technologies, LLC, Menlo Park, CA (US)
Filed by Meta Platforms Technologies, LLC, Menlo Park, CA (US)
Filed on Feb. 11, 2021, as Appl. No. 17/248,886.
Claims priority of provisional application 63/133,080, filed on Dec. 31, 2020.
Prior Publication US 2022/0207156 A1, Jun. 30, 2022
Int. Cl. G06F 21/60 (2013.01); G06F 21/64 (2013.01); G06F 21/79 (2013.01); G06F 13/28 (2006.01); G06F 3/01 (2006.01); G06F 15/78 (2006.01)
CPC G06F 21/602 (2013.01) [G06F 3/012 (2013.01); G06F 13/28 (2013.01); G06F 15/7807 (2013.01); G06F 21/64 (2013.01); G06F 21/79 (2013.01); G06F 2221/0751 (2013.01)] 19 Claims
OG exemplary drawing
 
1. A system on a chip (SoC) comprising:
a system microcontroller comprising processing circuitry configured to orchestrate operations on the SoC;
a security processor comprising processing circuitry configured to store a plurality of key-pairs to a key vault, each of the key-pairs having a first key and a second key, each of the key-pairs associated with one of a plurality of subsystems of the SoC;
a Direct Memory Access (DMA) engine comprising circuitry configured to receive, from a subsystem of the plurality of subsystems, storage access parameters identifying source data, a data size, and a destination storage address for a storage device; and
an encryption engine coupled to the DMA engine, the encryption engine comprising processing circuitry configured to:
determine a first tweak value based on a first sector address of the storage device, the first sector address based on the destination storage address;
encrypt the first tweak value according to the second key of the key-pair associated with the subsystem;
encrypt a first portion of the source data according to the first key of the key-pair associated with the subsystem and the encrypted first tweak value;
determine a second tweak value based on a second sector address of the storage device and encrypt the second tweak value according to the second key, wherein the second tweak value is determined and encrypted during encryption of the first portion of the source data and prior to completing encryption of the first portion of the source data; and
encrypt a second portion of the source data according to the first key and the encrypted second tweak value,
wherein the encryption engine comprises a plurality of interfaces, including:
a first interface to receive, from the system microcontroller, metadata describing a DMA transfer of the source data, the metadata comprising a block length, a sector address, and a key identifier (ID), and
a one-way second interface to receive the key-pair associated with the subsystem for storage in the key vault, and
wherein the key ID identifies a location of the key-pair associated with the subsystem in the key vault.