Untitled record
Claim Score by NHIP
Abstract
Techniques are described for efficient and secure key rotation for backup storage. An example method comprises generating, by a data platform implemented by a computing system, a first encrypted key and a second encrypted key, wherein the data platform stores one or more encrypted chunks encrypted using a first encryption key of the first encrypted key and a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key encrypted with a first system key, replacing the first system key by determining a second system key, and encrypting, with the second system key, the first encryption key to generate a replacement first encrypted key and the second encryption key to generate a replacement second encrypted key.

Term
17.8 yearsto projected expiry
Projected expiry 29 July 2044, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
20 claims: 3 independent, 17 dependent
- 1A method comprising:generating, by a data platform implemented by a computing system, a first encrypted key and a second encrypted key, wherein the data platform stores one or more encrypted chunks, each encrypted chunk of the one or more encrypted chunks encrypted with a data encryption key derived from a first encryption key of the first encrypted key and key data of encrypted key data, the first encrypted key data encrypted with a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key encrypted with a first system key;replacing, by the data platform, the first system key by determining a second system key;encrypting, by the data platform and with the second system key, the first encryption key to generate a replacement first encrypted key and the second encryption key to generate a replacement second encrypted key;decrypting, by the data platform, the replacement first encrypted key to obtain the first encryption key and the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used derive the data encryption key when decrypting the one or more encrypted chunks;and outputting, by the data platform, data from the one or more encrypted chunks by decrypting the one or more encrypted chunks with the data encryption key.
- 9Broadest claimClaim Score 39, average(NHIP)A computing system comprising:a memory storing instructions;and processing circuitry that executes the instructions to: generate a first encrypted key and a second encrypted key, wherein the data platform stores one or more encrypted chunks, each encrypted chunk of the one or more encrypted chunks encrypted with a data encryption key derived from a first encryption key of the first encrypted key and key data of encrypted key data, the first encrypted key data encrypted with a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key encrypted with a first system key;replace the first system key by determining a second system key;encrypt, with the second system key, the first encryption key to generate a replacement first encrypted key and the second encryption key to generate a replacement second encrypted key;decrypt the replacement first encrypted key to obtain the first encryption key and the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used derive the data encryption key when decrypting the one or more encrypted chunks;and output data from the one or more encrypted chunks by decrypting the one or more encrypted chunks with the data encryption key.
- 17A computer-readable storage medium comprising instructions that, when executed, cause processing circuitry of a computing system to:generate a first encrypted key and a second encrypted key, wherein the data platform stores one or more encrypted chunks, each encrypted chunk of the one or more encrypted chunks encrypted with a data encryption key derived from a first encryption key of the first encrypted key and key data of encrypted key data, the first encrypted key data encrypted with a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key encrypted with a first system key;replace the first system key by determining a second system key;encrypt, with the second system key, the first encryption key to generate a replacement first encrypted key and the second encryption key to generate a replacement second encrypted key;decrypt the replacement first encrypted key to obtain the first encryption key and the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used derive the data encryption key when decrypting the one or more encrypted chunks;and output data from the one or more encrypted chunks by decrypting the one or more encrypted chunks with the data encryption key.
Independent claims3
149 paragraphs in 5 sections, as filed
TECHNICAL FIELD
0001This disclosure relates to data platforms for computing systems.
BACKGROUND
0002Data platforms that support computing applications rely on primary storage systems to support latency sensitive applications. However, because primary storage is often more difficult or expensive to scale, a secondary storage system is often relied upon to support secondary use cases such as backup and archive.
SUMMARY
0003Aspects of this disclosure describe techniques for efficient and secure key rotation for backup storage. Envelope encryption has been widely used to encrypt data at rest. In general, a system may perform envelope encryption by encrypting data with a data encryption key (DEK) and then encrypting the DEK with a key encryption key (KEK). For security and/or compliance purposes, organizations (e.g., enterprises) may require key rotation policies from data protection vendors. Key rotation policies typically involve rotating (e.g., changing) the KEK every three to six months. Whenever the KEK is rotated, the DEK may be re-encrypted using the new KEK, which depreciates the old KEK.
0004Encryption may not guarantee complete data protection in cases where unauthorized parties gain access to a data platform such as by system intrusion or other unauthorized access. For example, in the event of a successful system intrusion, an unauthorized party may access DEKs and, with the DEKs, the unauthorized party may decrypt and exfiltrate data. Similarly, privilege misuse may cause DEKs to become accessible thereby allowing encrypted data to be decrypted and exfiltrated by the unauthorized parties.
0005Some systems deploy a key rotation job which iterates through each encrypted DEK (EDEK) encrypted with the previous KEK and replaces the EDEK with a new EDEK encrypted with the new KEK. As such, these key rotation jobs may perform O(n) re-encryptions, where n is the number of DEKs created during the encryption process. In systems with very large volumes of data (e.g., multiple gigabytes, terabytes, or more), O(n) re-encryptions may be computationally expensive and may take considerable amounts of time (e.g., one or more days). In systems where EDEKs are stored along with the encrypted data, re-encryption may not be feasible to perform.
0006The techniques described herein provide efficient and secure key rotation for backup storage, including for backups where EDEKs are stored along with the encrypted backup data. Various aspects of the techniques may provide improved efficiency during key rotation. For example, in accordance with the described techniques, a data platform may perform O(<b>1</b>) rather than O(n) re-encryptions in connection with key rotation, a data platform may avoid modifying previously stored backups in connection with key rotation, or both.
0007The described techniques may provide one or more technical advantages that realize a practical application. For example, the described techniques may improve data security by permitting key rotation to be performed more efficiently (e.g., O(<b>1</b>) versus O(n) re-encryptions) and without high consumption of computing resources even when there is a very large amount of encrypted backup data (e.g., multiple gigabytes, terabytes, or more). Key rotation may be performed to mitigate and/or prevent security issues relating to unintended or unauthorized use of DEKs or KEKs (e.g., unauthorized data access/exfiltration, privilege misuse). The efficiency of the described techniques may reduce system load and/or system downtime and may permit key rotation to be performed more frequently to further mitigate and/or prevent security issues relating to unintended or undesired leaks of DEKs or KEK. The security improvements result in reduced use of computing resources by preventing exfiltration of large amounts of data (e.g., gigabytes or terabytes of data) which present a security risk and consume significant computing resources.
0008Although the techniques described in this disclosure are primarily described with respect to a backup function of a data platform (e.g., key rotation for backups), similar techniques may be applied for an archive function (e.g., key rotation for archives or other write once, read many (WORM) storage) or other similar function of the data platform.
0009In one example, this disclosure describes a method comprising generating, by a data platform implemented by a computing system, a first encrypted key and a second encrypted key, wherein the data platform stores one or more encrypted chunks, each encrypted chunk of the one or more encrypted chunks encrypted with a data encryption key derived from a first encryption key of the first encrypted key and key data of encrypted key data, the first encrypted key data encrypted with a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key encrypted with a first system key, replacing, by the data platform, the first system key by determining a second system key, encrypting, by the data platform and with the second system key, the first encryption key to generate a replacement first encrypted key and the second encryption key to generate a replacement second encrypted key, decrypting, by the data platform, the replacement first encrypted key to obtain the first encryption key and the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used derive the data encryption key when decrypting the one or more encrypted chunks, and outputting, by the data platform, data from the one or more encrypted chunks by decrypting the one or more encrypted chunks with the data encryption key.
0010In another example, this disclosure describes a computing system comprising a memory storing instructions, and processing circuitry that executes the instructions to: generate a first encrypted key and a second encrypted key, wherein the data platform stores one or more encrypted chunks, each encrypted chunk of the one or more encrypted chunks encrypted with a data encryption key derived from a first encryption key of the first encrypted key and key data of encrypted key data, the first encrypted key data encrypted with a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key encrypted with a first system key, replace the first system key by determining a second system key, encrypt, with the second system key, the first encryption key to generate a replacement first encrypted key and the second encryption key to generate a replacement second encrypted key, decrypt the replacement first encrypted key to obtain the first encryption key and the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used derive the data encryption key when decrypting the one or more encrypted chunks, and output data from the one or more encrypted chunks by decrypting the one or more encrypted chunks with the data encryption key.
0011In another example, this disclosure describes a computer-readable storage medium comprising instructions that, when executed, cause processing circuitry of a computing system to: generate a first encrypted key and a second encrypted key, wherein the data platform stores one or more encrypted chunks, each encrypted chunk of the one or more encrypted chunks encrypted with a data encryption key derived from a first encryption key of the first encrypted key and key data of encrypted key data, the first encrypted key data encrypted with a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key encrypted with a first system key, replace the first system key by determining a second system key, encrypt, with the second system key, the first encryption key to generate a replacement first encrypted key and the second encryption key to generate a replacement second encrypted key, decrypt the replacement first encrypted key to obtain the first encryption key and the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used derive the data encryption key when decrypting the one or more encrypted chunks, and output data from the one or more encrypted chunks by decrypting the one or more encrypted chunks with the data encryption key.
0012The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
0013<figref idref="DRAWINGS">FIGS. <b>1</b>A-<b>1</b>B</figref> are block diagrams illustrating example systems that perform efficient and secure key rotation for backup storage, in accordance with techniques of this disclosure.
0014<figref idref="DRAWINGS">FIG. <b>2</b></figref> is a block diagram illustrating example system that performs efficient and secure key rotation for backup storage, in accordance with techniques of this disclosure.
0015<figref idref="DRAWINGS">FIGS. <b>3</b>A-<b>3</b>B</figref> are block diagrams illustrating example systems performing efficient and secure key rotation for backup storage, in accordance with the techniques of this disclosure.
0016<figref idref="DRAWINGS">FIG. <b>4</b></figref> is a flowchart illustrating an example mode of operation for a data platform to perform efficient and secure key rotation for backup storage, in accordance with techniques of this disclosure.
0017Like reference characters denote like elements throughout the text and figures.
DETAILED DESCRIPTION
0018<figref idref="DRAWINGS">FIGS. <b>1</b>A-<b>1</b>B</figref> are block diagrams illustrating example systems that perform efficient and secure key rotation for backup storage, in accordance with one or more aspects of the present disclosure. In the example of <figref idref="DRAWINGS">FIG. <b>1</b>A</figref>, system <b>100</b> includes application system <b>102</b>. Application system <b>102</b> represents a collection of hardware devices, software components, and/or data stores that can be used to implement one or more applications or services provided to one or more mobile devices <b>108</b> and one or more client devices <b>109</b> via a network <b>113</b>. Application system <b>102</b> may include one or more physical or virtual computing devices that execute workloads <b>174</b> for the applications or services. Workloads <b>174</b> may include one or more virtual machines, containers, Kubernetes® pods each including one or more containers, bare metal processes, and/or other types of workloads.
0019In the example of <figref idref="DRAWINGS">FIG. <b>1</b>A</figref>, application system <b>102</b> includes application servers <b>170</b>A-<b>170</b>M (collectively, “application servers <b>170</b>”) connected via a network with database server <b>172</b> implementing a database. Other examples of application system <b>102</b> may include one or more load balancers, web servers, network devices such as switches or gateways, or other devices for implementing and delivering one or more applications or services to mobile devices <b>108</b> and client devices <b>109</b>. Application system <b>102</b> may include one or more file servers. The one or more file servers may implement a primary file system for application system <b>102</b>. (In such instances, file system <b>153</b> may be a secondary file system that provides backup, archive, and/or other services for the primary file system. Reference herein to a file system may include a primary file system or secondary file system, e.g., a primary file system for application system <b>102</b> or file system <b>153</b> operating as either a primary file system or a secondary file system.)
0020Application system <b>102</b> may be located on premises and/or in one or more data centers, with each data center a part of a public, private, or hybrid cloud. The applications or services may be distributed applications. The applications or services may support enterprise software, financial software, office or other productivity software, data analysis software, customer relationship management, web services, educational software, database software, multimedia software, information technology, health care software, or other type of applications or services. The applications or services may be provided as a service (-aaS) for Software-aaS (SaaS), Platform-aaS (PaaS), Infrastructure-aaS (IaaS), Data Storage-aas (dSaaS), or other type of service.
0021In some examples, application system <b>102</b> may represent an enterprise system that includes one or more workstations in the form of desktop computers, laptop computers, mobile devices, enterprise servers, network devices, and other hardware to support enterprise applications. Enterprise applications may include enterprise software, financial software, office or other productivity software, data analysis software, customer relationship management, web services, educational software, database software, multimedia software, information technology, health care software, or other type of applications. Enterprise applications may be delivered as a service from external cloud service providers or other providers, executed natively on application system <b>102</b>, or both.
0022In the example of <figref idref="DRAWINGS">FIG. <b>1</b>A</figref>, system <b>100</b> includes a data platform <b>150</b> that provides a file system <b>153</b> and archival functions to an application system <b>102</b>, such as through storage system <b>105</b> and separate storage system <b>115</b>. Data platform <b>150</b> may implement a distributed file system <b>153</b> and a storage architecture to facilitate access by application system <b>102</b> to file system data and to facilitate the transfer of data between storage system <b>105</b> and application system <b>102</b> via network <b>111</b>. With the distributed file system, data platform <b>150</b> enables devices of application system <b>102</b> to access file system data, via network <b>111</b>, <b>113</b> using a communication protocol, as if such file system data was stored locally (e.g., to a hard disk of a device of application system <b>102</b>). Example communication protocols for accessing files and objects include Server Message Block (SMB), Network File System (NFS), or Amazon® Simple Storage Service (S3®). File system <b>153</b> may be a primary file system or secondary file system for application system <b>102</b>.
0023File system manager <b>152</b> represents a collection of hardware devices and software components that implements file system <b>153</b> for data platform <b>150</b>. Examples of file system functions provided by the file system manager <b>152</b> include storage space management including deduplication, file naming, directory management, metadata management, partitioning, and access control. File system manager <b>152</b> executes a communication protocol to facilitate access via network <b>111</b> by application system <b>102</b> to files and objects stored to storage system <b>105</b>.
0024Data platform <b>150</b> includes storage system <b>105</b> having one or more storage devices <b>180</b>A-<b>180</b>N (collectively, “storage devices <b>180</b>”). Storage devices <b>180</b> may represent one or more physical or virtual compute and/or storage devices that include or otherwise have access to storage media. Such storage media may include one or more of Flash drives, solid state drives (SSDs), hard disk drives (HDDs), forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories, and/or other types of storage media used to support data platform <b>150</b>. Different storage devices of storage devices <b>180</b> may have a different mix of types of storage media. Each of storage devices <b>180</b> may include system memory. Each of storage devices <b>180</b> may be a storage server, a network-attached storage (NAS) device, or may represent disk storage for a compute device. Storage system <b>105</b> may be a redundant array of independent disks (RAID) system. In some examples, one or more of storage devices <b>180</b> are both compute and storage devices that execute software for data platform <b>150</b>, such as file system manager <b>152</b> and data protection manager <b>154</b> in the example of system <b>100</b>, and store objects and metadata for data platform <b>150</b> to storage media. In some examples, separate compute devices (not shown) execute software for data platform <b>150</b>, such as file system manager <b>152</b> and data protection manager <b>154</b> in the example of system <b>100</b>. Each of storage devices <b>180</b> may be considered and referred to as a “storage node” or simply as a “node”. Storage devices <b>180</b> may represent virtual machines running on a supported hypervisor, a cloud virtual machine, a physical rack server, or a compute model installed in a converged platform.
0025In various examples, data platform <b>150</b> runs on physical systems, virtually, or natively in the cloud. For instance, data platform <b>150</b> may be deployed as one or more physical clusters, virtual clusters, or a cloud-based clusters running in a private, hybrid private/public, or public cloud deployed by a cloud service provider. In some examples of system <b>100</b>, multiple instances of data platform <b>150</b> may be deployed, and file system <b>153</b> may be replicated among the various instances. In some cases, data platform <b>150</b> is a compute cluster that represents a single management domain. The number of storage devices <b>180</b> may be scaled to meet performance needs.
0026Data platform <b>150</b> may implement and offer multiple storage domains to one or more tenants or to segregate workloads <b>174</b> that require different data policies. A storage domain is a data policy domain that determines policies for deduplication, compression, encryption, tiering, and other operations performed with respect to objects stored using the storage domain. In this way, data platform <b>150</b> may offer users the flexibility to choose global data policies or workload specific data policies. Data platform <b>150</b> may support partitioning.
0027A view is a protocol export that resides within a storage domain. A view inherits data policies from its storage domain, though additional data policies may be specified for the view. Views can be exported via SMB, NFS, S3, and/or another communication protocol. Policies that determine data processing and storage by data platform <b>150</b> may be assigned at the view level. A protection policy may specify a backup frequency and a retention policy, which may include a data lock period. Backups <b>142</b> created in accordance with a protection policy inherit the data lock period and retention period specified by the protection policy.
0028Each of network <b>113</b> and network <b>111</b> may be the internet or may include or represent any public or private communications network or other network. For instance, network <b>113</b> may be a cellular, Wi-Fi®, ZigBee®, Bluetooth®, Near-Field Communication (NFC), satellite, enterprise, service provider, and/or other type of network enabling transfer of data between computing systems, servers, computing devices, and/or storage devices. One or more of such devices may transmit and receive data, commands, control signals, and/or other information across network <b>113</b> or network <b>111</b> using any suitable communication techniques. Each of network <b>113</b> or network <b>111</b> may include one or more network hubs, network switches, network routers, satellite dishes, or any other network equipment. Such network devices or components may be operatively inter-coupled, thereby providing for the exchange of information between computers, devices, or other components (e.g., between one or more client devices or systems and one or more computer/server/storage devices or systems). Each of the devices or systems illustrated in <figref idref="DRAWINGS">FIGS. <b>1</b>A-<b>1</b>B</figref> may be operatively coupled to network <b>113</b> and/or network <b>111</b> using one or more network links. The links coupling such devices or systems to network <b>113</b> and/or network <b>111</b> may be Ethernet, Asynchronous Transfer Mode (ATM) or other types of network connections, and such connections may be wireless and/or wired connections. One or more of the devices or systems illustrated in <figref idref="DRAWINGS">FIGS. <b>1</b>A-<b>1</b>B</figref> or otherwise on network <b>113</b> and/or network <b>111</b> may be in a remote location relative to one or more other illustrated devices or systems.
0029Application system <b>102</b>, using file system <b>153</b> provided by data platform <b>150</b>, generates objects and other data that file system manager <b>152</b> creates, manages, and causes to be stored to storage system <b>105</b>. For this reason, application system <b>102</b> may alternatively be referred to as a “source system,” file system <b>153</b> for application system <b>102</b> may alternatively be referred to as a “source file system,” and storage system <b>105</b> may alternatively be referred to as a “source storage system.” Application system <b>102</b> may for some purposes communicate directly with storage system <b>105</b> via network <b>111</b>, <b>113</b> to transfer objects, and for some purposes communicate with file system manager <b>152</b> via network <b>111</b>, <b>113</b> to obtain objects or metadata indirectly from storage system <b>105</b>. File system manager <b>152</b> generates and stores metadata to storage system <b>105</b>. The collection of data stored to storage system <b>105</b> and used to implement file system <b>153</b> is referred to herein as file system data. File system data may include the aforementioned metadata and objects. Metadata may include file system objects, tables, trees, or other data structures; metadata generated to support deduplication; or metadata to support snapshots. Objects that are stored may include files, virtual machines, databases, applications, pods, container, any of workloads <b>174</b>, system images, directory information, or other types of objects used by application system <b>102</b>. Objects of different types and objects of a same type may be deduplicated with respect to one another.
0030Data platform <b>150</b> includes data protection manager <b>154</b> that may provide backups of file system data for file system <b>153</b>. In the example of system <b>100</b>, data protection manager <b>154</b> may store one or more backups <b>142</b> of file system data, stored by storage system <b>105</b>, to one or more storage systems <b>115</b> via network <b>111</b>.
0031Storage system <b>115</b> includes one or more storage devices <b>140</b>A-<b>140</b>X (collectively, “storage devices <b>140</b>”). Storage devices <b>140</b> may represent one or more physical or virtual compute and/or storage devices that include or otherwise have access to storage media. Such storage media may include one or more of Flash drives, solid state drives (SSDs), hard disk drives (HDDs), optical discs, forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories, and/or other types of storage media. Different storage devices of storage devices <b>140</b> may have a different mix of types of storage media. Each of storage devices <b>140</b> may include system memory. Each of storage devices <b>140</b> may be a storage server, a network-attached storage (NAS) device, or may represent disk storage for a compute device. Storage system <b>115</b> may include redundant array of independent disks (RAID) system. Storage system <b>115</b> may be capable of storing much larger amounts of data than storage system <b>105</b>. Storage devices <b>140</b> may further be configured for long-term storage of information more suitable for archival purposes.
0032In some examples, storage system <b>105</b> and/or <b>115</b> may be a storage system deployed at and managed by a cloud storage provider and referred to as a “cloud storage system.” Example cloud storage providers include, e.g., AMAZON WEB SERVICES (AWS®) by AMAZON, INC., AZURE® by MICROSOFT, INC., DROPBOX® by DROPBOX, INC., ORACLE CLOUD® by ORACLE, INC., and GOOGLE® CLOUD PLATFORM (GCP) by GOOGLE, INC. In some examples, storage system <b>115</b> is co-located with storage system <b>105</b> in a data center, on-prem, or in a private, public, or hybrid private/public cloud. Storage system <b>115</b> may be referred to as an “external target” for backups <b>142</b>. Where deployed and managed by a cloud storage provider, storage system <b>115</b> may be referred to as “cloud storage.” Storage system <b>115</b> may include one or more interfaces for managing transfer of data between storage system <b>105</b> and storage system <b>115</b> and/or between application system <b>102</b> and storage system <b>115</b>. Data platform <b>150</b> that supports application system <b>102</b> relies on storage system <b>105</b> to support latency sensitive applications. However, because storage system <b>105</b> is often more difficult or expensive to scale, data platform <b>150</b> may use storage system <b>115</b> to support use cases such as backup and archive. A file system backup may be a copy of file system <b>153</b> to support protecting file system <b>153</b> for quick recovery, often due to some data loss in file system <b>153</b>, and a file system archive (“archive”) may be a copy of file system <b>153</b> to support longer term retention and review. The “copy” of file system <b>153</b> may include such data as is needed to restore or view file system <b>153</b> in its state at the time of the backup or archive.
0033Data protection manager <b>154</b> may backup file system data for file system <b>153</b> at any time in accordance with backup policies <b>158</b> that specify, for example, backup periodicity and timing (daily, weekly, etc.), which file system data is to be stored, a backup retention period, storage location, access control, and so forth. An initial backup <b>142</b> of file system data corresponds to a state of the file system data at an initial backup time (the backup creation time of the initial backup). The initial backup may include a full backup of the file system data or may include less than a full backup of the file system data, in accordance with backup policies. For example, the initial backup may include all objects of file system <b>153</b> or one or more selected objects of file system <b>153</b>.
0034One or more subsequent incremental backups <b>142</b> of the file system <b>153</b> may correspond to respective states of the file system <b>153</b> at respective subsequent backup creation times, i.e., after the backup creation time corresponding to the initial backup. A subsequent backup <b>142</b> may include an incremental backup of file system <b>153</b>. A subsequent backup may correspond to an incremental backup of one or more objects of file system <b>153</b>. Some of the file system data for file system <b>153</b> stored on storage system <b>105</b> at the initial backup creation time may also be stored on storage system <b>105</b> at the subsequent backup creation times. A subsequent incremental backup may include data that was not previously stored to storage system <b>115</b>. File system data that is included in a subsequent backup may be deduplicated by data protection manager <b>154</b> against file system data that is included in one or more previous backups, including the initial backup, to reduce the amount of storage used. (Reference to a “time” in this disclosure may refer to dates and/or times. Times may be associated with dates. Multiple backups may occur at different times on the same date, for instance.)
0035In system <b>100</b>, data protection manager <b>154</b> stores file system data to storage system <b>115</b> as backups <b>142</b>, using chunkfiles <b>162</b>. Data protection manager <b>154</b> may use any of backups <b>142</b> to subsequently restore the file system (or portion thereof) to its state at the backup creation time, or backup <b>142</b> may be used to create or present a new file system (or “view”) based on backup <b>142</b>, for instance. As noted above, data protection manager <b>154</b> may deduplicate file system data included in a subsequent backup <b>142</b> against file system data that is included in one or more previous backups. For example, a second object of file system <b>153</b> and included in a second backup <b>142</b> may be deduplicated against a first object of file system <b>153</b> and included in a first, earlier backup. Data protection manager <b>154</b> may remove a chunk of the second object and generate metadata with a reference (e.g., a pointer) to a stored chunk of chunks <b>164</b> in one of chunkfiles <b>162</b>. The stored chunk in this example is an instance of a chunk stored for the first object.
0036Data protection manager <b>154</b> may apply deduplication as part of a write process of writing (i.e., storing) an object of file system <b>153</b> to one of backups <b>142</b> in storage system <b>115</b>. Deduplication may be implemented in various ways. For example, the approach may be fixed length or variable length, the block size for the file system may be fixed or variable, and deduplication domains may be applied globally or by workload. Fixed length deduplication involves delimiting data streams at fixed intervals. Variable length deduplication involves delimiting data streams at variable intervals to improve the ability to match data, regardless of the file system block size approach being used. This algorithm is more complex than a fixed length deduplication algorithm but can be more effective for most situations and generally produces less metadata. Variable length deduplication may include variable length, sliding window deduplication. The length of any deduplication operation (whether fixed length or variable length) determines the size of the chunk being deduplicated.
0037In some examples, the chunk size can be within a fixed range for variable length deduplication. For instance, data protection manager <b>154</b> can compute chunks having chunk sizes within the range of 16-48 kB. Data protection manager <b>154</b> may eschew deduplication for objects that that are less than 16 kB. In some example implementations, when data of an object is being considered for deduplication, data protection manager <b>154</b> compares a chunk identifier (ID) (e.g., a hash value of the entire chunk) of the data to existing chunk IDs for already stored chunks. If a match is found, data protection manager <b>154</b> updates metadata for the object to point to the matching, already stored chunk. If no matching chunk is found, data protection manager <b>154</b> writes the data of the object to storage as one of chunks <b>164</b> for one of chunkfiles <b>162</b>. Data protection manager <b>154</b> additionally stores the chunk ID in chunk metadata, in association with the new stored chunk, to allow for future deduplication against the new stored chunk. In general, chunk metadata is usable for generating, viewing, retrieving, or restoring objects stored as chunks <b>164</b> (and references thereto) within chunkfiles <b>162</b>, for any of backups <b>142</b>, and is described in further detail below.
0038Each of chunkfiles <b>162</b> includes multiple chunks <b>164</b>. Chunkfiles <b>162</b> may be fixed size (e.g., 8 MB) or variable size. Chunkfiles <b>162</b> may be stored using a data structure offered by a cloud storage provider for storage system <b>115</b>. For example, each of chunkfiles <b>162</b> may be one of an S3 object within an AWS cloud bucket, an object within AZURE Blob Storage, an object in Object Storage for ORACLE CLOUD, or other similar data structure used within another cloud storage provider storage system. Any of chunkfiles <b>162</b> may be subject to a write once, ready many (WORM) lock having a WORM lock expiration time. A WORM lock for an S3 object is known as an “object lock” and a WORM lock for an object within AZURE Blob Storage is known as “blob immutability.”
0039The process of deduplication for multiple objects over multiple backups results in chunkfiles <b>162</b> that each have multiple chunks <b>164</b> for multiple different objects associated with the multiple backups. In some examples, different backups <b>142</b> may have objects that are effectively copies of the same data, e.g., for an object of the file system that has not been modified. An object of a backup may be represented or “stored” as metadata having references to chunks that enable the object to be accessed. Accordingly, description herein to a backup “storing,” “having,” or “including” an object includes instances in which the backup does not store the data for the object in its native form.
0040The initial backup and the one or more subsequent incremental backups may each be associated with a corresponding retention period and, in some cases, a data lock period for the backup. As described above, a data management policy (not shown) may specify a retention period for a backup and a data lock period for a backup. A retention period for a backup is the amount of time for which the backup and the chunks that objects of the backup reference are to be stored before the backup and the chunks are eligible to be removed from storage. The retention period for the backup begins when the backup is stored (the backup creation time). A chunkfile containing chunks that objects of a backup reference and that are subject to a retention period of the backup, but not subject to a data lock period for the backup, may be modified at any time prior to expiration of the retention period. The nature of such a modification must be such to preserve the data referenced by objects of the backup.
0041A user or application associated with application system <b>102</b> may have access (e.g., read or write) to a backup that is stored in storage system <b>115</b>. The user or application may delete some of the data due to a malicious attack (e.g., virus, ransomware, etc.), a rogue or malicious administrator, and/or human error. The user's credentials may be compromised and as a result, the backup that is stored in storage system <b>115</b> may be subject to ransomware. To reduce the likelihood of accidental or malicious data deletion or corruption, in addition to the protections described herein, a data lock having a data lock period may be applied to a backup <b>142</b>.
0042As described above, chunkfiles <b>162</b> may represent an object in a backup storage system (shown as “storage system <b>115</b>,” which may also be referred to as “backup storage system <b>115</b>”) that conform to an underlying architecture of backup storage system <b>115</b>. Data platform <b>150</b> includes data protection manager <b>154</b> that supports storing backups <b>142</b> in the form of chunkfiles <b>162</b>, which interface with backup storage system <b>115</b> to store chunkfiles <b>162</b> after forming chunkfiles <b>162</b> from one or more chunks <b>164</b> of data. Data protection manager <b>154</b> may apply a process referred to as “deduplication” with respect to chunks <b>164</b> to remove redundant chunks and generate metadata linking redundant chunks to previously stored chunks <b>164</b> and thereby reduce storage consumed (and thereby reduce storage costs in terms of storage required to store the chunks).
0043Data protection manager <b>154</b> may protect backups <b>142</b>, archives, or other copies of file system data by controlling access to backups <b>142</b>. For example, data protection manager <b>154</b> may encrypt chunks <b>164</b> of backup <b>142</b> prior to storage on storage system <b>115</b> and require user authentication prior to decryption of encrypted chunks <b>164</b>. As will be described further herein, data protection manager <b>154</b> may utilize key encryption keys, encryption keys, key data, and data encryption keys to encrypt and/or decrypt chunks <b>164</b> of backup <b>142</b> and rotate keys for the purpose of protecting (e.g., preventing unauthorized decryption/exfiltration) backups <b>142</b>. Though described primarily with respect to chunks <b>164</b> and backups <b>142</b>, the encryption, decryption and key rotation techniques described herein may be applied to backups, archives, or other write once, read many (WORM) storage as well as to other similar copies of data.
0044Data protection manager <b>154</b> may perform one or more management functions (e.g., creation, deletion, revision, storage, authentication, validation, access control) for encryption information (e.g., key data, encryption keys, including data encryption keys, certificates), authentication information (e.g., usernames or user identifiers and passwords) related to encryption and/or decryption of chunks <b>164</b>. In some examples, data protection manager <b>154</b> may perform at least some management functions through use of confidential computing. Some examples of confidential computing platforms include INTEL® SGX/TDX by INTEL Corporation, AMD® SEV by ADVANCED MICRO DEVICES, INC., AWS NITRO SYSTEM® by AMAZON, Inc., NVIDIA® H100 by NVIDIA Corporation, AZURE® CONFIDENTIAL COMPUTE by MICROSOFT Corporation, and GOOGLE® CLOUD by ALPHABET Inc.
0045In some examples, data protection manager <b>154</b> may utilize an enclave <b>132</b> that provides encryption, decryption, data storage, or other functionality within a trusted execution environment of a confidential computing platform or system of data platform <b>150</b>. The trusted execution environment may comprise isolated hardware, such as isolated processing circuitry of one or more processors, one or more protected memory regions, or both. The trusted execution environment may be considered secure or “trusted” in that trusted execution environment is isolated such that operating system, application, or other software, regardless of privilege level, cannot directly access or modify instructions within the hardware regions.
0046A trusted execution environment may be verified, such as through an external attestation system, to ensure the integrity of trusted execution environment (e.g., that software and/or hardware of trusted execution environment are genuine and unadulterated). The attestation system may be a third party trust authority for example, such as an INTEL® Trust Authority by INTEL Corporation, that can evaluate an attestation and verify whether the trusted execution environment of enclave <b>132</b> is genuine or legitimate. The attestation may include an indication that, if verified by the attestation system, establishes the integrity of the trusted execution environment (e.g., the trusted execution environment is genuine or, in other words, not security compromised). Data platform <b>150</b> may receive an indication of the validity or invalidity of the attestation from the attestation system after the attestation system validates, or is unable to validate, the attestation. Data platform <b>150</b> may disable one or more functions of enclave <b>132</b> in response to receiving an indication that the attestation is invalid. For example, data platform <b>150</b> may disable enclave <b>132</b> to prevent use of enclave <b>132</b>. Data platform <b>150</b> may enable or refrain from disabling enclave <b>132</b> in response to receiving an indication that the attestation is valid.
0047Enclave <b>132</b> may provide access to functions of enclave <b>132</b> to elements outside of the trusted execution environment of enclave <b>132</b>. For example, enclave <b>132</b> may establish one or more secure sessions (e.g., secured communication) between enclave <b>132</b> and data protection manager <b>154</b>, as shown in the example of <figref idref="DRAWINGS">FIG. <b>1</b>A</figref>, or other devices or systems outside of the trusted execution environment, such as storage systems <b>105</b>, storage system <b>115</b>, and application system <b>102</b> to securely communicate with such devices or systems. In some examples, enclave <b>132</b> may implement an API or remote procedure call framework (e.g., gRPC) to provide access to functions or data of enclave <b>132</b>.
0048Data protection manager <b>154</b> may include key management system (KMS) <b>157</b> to initialize or establish (e.g., generate and store) various encryption information for encryption purposes (e.g., encrypting and decrypting data, such as chunks <b>164</b> of backups <b>142</b>). For example, key management system <b>157</b> may generate one or more encryption keys, one or more key encryption keys (KEKs) for encrypting/decrypting encryption keys, one or more data encryption keys (DEKs) for encrypting/decrypting data (e.g., chunks <b>164</b>), or various subsets thereof that data protection manager <b>154</b> may use for encryption purposes. Key management system <b>157</b> may generate an encryption key by generating a sequence of bits that, when applied to encrypted data, decrypts the encrypted data, to obtain (e.g., reveal) the original data from the encrypted data. Data protection manager <b>154</b> may apply an encryption key comprising such a sequence of bits generated by key management system <b>157</b> to original data to encrypt the original data and thereby generate encrypted data.
0049Key management system <b>157</b> may generate and use various types of encryption keys, including symmetric keys and asymmetric keys (e.g., public/private key pairs of a public key infrastructure (PKI)). For example, key management system <b>157</b> may generate a symmetric key to encrypt original data to generate encrypted data and to decrypt the encrypted data to obtain the original data. As another example, key management system <b>157</b> may generate an asymmetric key including multiple keys (e.g., a public key and a private key). In such case, key management system <b>157</b> may encrypt original data with a first key of the keys (e.g., public key) to generate encrypted data and may decrypt the encrypted data with a second key of the keys (e.g., private key) to obtain the original data.
0050Key encryption keys may represent encryption keys that key management system <b>157</b> may use to encrypt other encryption keys. Key management system <b>157</b> may encrypt encryption keys using key encryption keys to generate encrypted keys. In some examples, key management system <b>157</b> may encrypt a portion or the entirety of an encryption key. For instance, key management system <b>157</b> may use a key encryption key to encrypt the private key, public key, or both of a public/private key pair of an asymmetric key.
0051In operation, data platform <b>150</b>, or elements thereof (e.g., data protection manager <b>154</b>, key rotation manager <b>156</b>), may invoke encryption functions of key management system <b>157</b>. For example, data protection manager <b>154</b> and/or key rotation manager <b>156</b> may invoke key management system <b>157</b> to generate encryption keys, key encryption keys, key data (e.g., random salts), and/or data encryption keys.
0052Data protection manager <b>154</b> may include key rotation manager <b>156</b> for rotating (e.g., replacing) key encryption keys that data protection manager <b>154</b> utilizes to encrypt data (e.g., chunks <b>164</b>). For example, key rotation manager <b>156</b> may replace an existing key encryption key with another key encryption key. Once a key encryption key is replaced, data protection manager <b>154</b> may cease utilization of the replaced key encryption key and, instead, use the replacement key encryption key for encryption purposes.
0053Key management system <b>157</b> may use encryption keys and key data to derive (e.g., generate) data encryption keys and data protection manager <b>154</b> may use data encryption keys to encrypt and decrypt data, such as chunks <b>164</b> of backups <b>142</b>. For instance, key management system <b>157</b> may generate a data encryption key using an encryption key and key data (e.g., a random salt) as input. Key management system <b>157</b> may generate a random number or random data to generate a unit of key data. As will be described further below, each individual unit of distinct key data must be obtained to decrypt chunks <b>164</b> and restore backup <b>142</b>. In some examples, data protection manager <b>154</b> may protect backups <b>142</b> by encrypting each chunk <b>164</b> of backup <b>142</b> using the encryption key along with respective key data to generate a respective data encryption key used to encrypt each individual chunk <b>164</b>. Each individual unit of key data may contain distinct data relative to other units of key data. For example, key management system <b>157</b>, may generate first key data (e.g., a first random number) used to derive a first data encryption key and second key data (e.g., a second distinct random number) used to derive a second data encryption key. The first data encryption key may be used to encrypt and/or decrypt a first chunk of chunks <b>164</b> and the second data encryption key may be used to encrypt and/or decrypt a second chunk of chunks <b>164</b>. In this manner, unauthorized access to key data for a particular chunk <b>164</b> does not allow decryption of other chunks <b>164</b>.
0054Key management system <b>157</b> may generate or derive a data encryption key in various ways, such as by executing various key derivation functions. For example, key management system <b>157</b> may execute a hash-based key derivation function (“HKDF”) to generate the data encryption key. For example, key management system <b>157</b> may execute the HKDF with the encryption key and key data as input to generate the data encryption key. Data protection manager <b>154</b> may encrypt data with the data encryption key to generate encrypted data. For example, data protection manager <b>154</b> may encrypt a chunk with the data encryption key to generate encrypted chunk <b>164</b>.
0055Key management system <b>157</b> may protect (e.g., encrypt) encryption keys with a key encryption key. For example, key management system <b>157</b> may generate a first key encryption key, which may be referred to as a KMS key encryption key (“KMS KEK”), also referred to herein as a “system key,” for encrypting encryption keys. Key management system <b>157</b> may encrypt an encryption key with the KMS KEK to generate an encrypted key. Continuing the above example for instance, key management system <b>157</b> may encrypt the encryption key used to derive the data encryption key. The encrypted key resulting from encrypting the encryption key must then be decrypted to obtain the encryption key thereby protecting the encryption key. Because the data encryption key is derived using the encryption key, the encrypted key prevents the data encryption key from being derived without first decrypting the encrypted key. Key management system <b>157</b> may store key encryption keys, including the KMS KEK, encrypted keys, or both in a storage device, such as enclave <b>132</b> and/or storage system <b>105</b> in some examples.
0056As described above, key rotation manager <b>156</b> may rotate key encryption keys. With regard to the above example for instance, key rotation manager <b>156</b> may rotate the KMS KEK by replacing the KMS KEK with another KMS KEK. For example, key rotation manager <b>156</b>, such as through key management system <b>157</b>, may generate a replacement KMS KEK and key rotation manager <b>156</b> may replace the existing KMS KEK with the replacement KMS KEK. The replaced key encryption key (e.g., the replaced KMS KEK) may be deprecated, deleted, or otherwise invalidated. Once replaced, data protection manager <b>154</b> may cease use of the replaced KMS KEK for encryption purposes and use the replacement KMS KEK to encrypt encryption keys.
0057For example, key rotation manager <b>156</b>, such as through key management system <b>157</b> may encrypt the encryption key used to derive the data encryption key with the replacement KMS KEK rather than with the replaced KMS KEK. As part of replacing the existing KMS KEK, key rotation manager <b>156</b> may decrypt the encrypted key to obtain the encryption key and encrypt (e.g., re-encrypt) the encryption key with the replacement KMS KEK (rather than the replaced KMS KEK). In some examples, key rotation manager <b>156</b> may use the replaced KMS KEK to decrypt the encrypted key prior to encrypting the encryption key with the replacement KMS KEK.
0058Some systems may utilize a single data encryption key for data belonging to a particular tenant, partition, or workload. Such systems may encrypt the data encryption key such as using a key encryption key. The key encryption key may be replaced with a replacement key encryption key and the data encryption key may be re-encrypted with the replacement key encryption key by such systems. However, exposure of the data encryption key in these systems allows unauthorized parties to decrypt and exfiltrate all of the data encrypted with the data encryption key. Some systems may use an intermediary encryption key may be used to encrypt and protect the data encryption key in some cases. Such intermediary encryption key may be encrypted using the key encryption key as well. As such, when the key encryption key is replaced with the replacement key encryption key, the intermediary encryption key may be re-encrypted with the replacement key encryption key. However, similar to the foregoing system, exposure of an encryption key, in this case the intermediary encryption key, allows unauthorized parties to decrypt and exfiltrate all of the data encrypted using the intermediary encryption key.
0059In accordance with the techniques described herein, data protection manager <b>154</b> may utilize multiple encryption keys to enhance data security. For example, each of multiple encryption keys may be associated with different parties, compute/storage devices, or both to enhance security for encrypted data (e.g., chunks <b>164</b>). For instance, a first encryption key may be assigned to a first party while a second encryption key may be assigned to a second party. Examples of such parties, include data owners, which may be enterprises or other users of application system <b>102</b>, and data platform providers (e.g., a service provider providing data platform <b>150</b>). By utilizing multiple encryption keys, a successful attack against parties, devices, or systems with one of the encryption keys does not allow data to be decrypted or exfiltrated.
0060For example, key management system <b>157</b> may generate a first encryption key and a second encryption key. Key management system <b>157</b> may encrypt the first encryption key and the second encryption key using the KMS KEK. To encrypt data, such as a chunk of backup <b>142</b>, key management system <b>157</b> may derive a data encryption key. For example, key management system <b>157</b> may execute a key derivation function (e.g., HKDF) using the first encryption key and key data (e.g., a random salt) as input to generate the data encryption key. Data protection manager <b>154</b> may encrypt the data with the data encryption key. Data protection manager <b>154</b> may store the encrypted data, which may be in the form of encrypted chunk <b>164</b> of backup <b>142</b>, such as to storage system <b>115</b>.
0061Rather than using the same encryption key (e.g., the first encryption key), key management system <b>157</b> may encrypt the key data using the second encryption key to generate encrypted key data <b>166</b>. As such, both the first encryption key and the key data, which together may be used to derive the data encryption key, are protected with encryption based on different encryption keys (e.g., the first encryption key and the second encryption key, respectively). In this manner, a successful attack against one encryption key (e.g., the first encryption key or the second encryption key) is insufficient to allow an unauthorized party to decrypt and/or exfiltrate encrypted chunk <b>164</b>. In some examples, data protection manager <b>154</b> may store encrypted chunk <b>164</b> along with its respective encrypted key data <b>166</b> (e.g., the encrypted key data including the key data used to derive the data encryption key for encrypted chunk <b>164</b>). As shown in the example of <figref idref="DRAWINGS">FIG. <b>1</b>A</figref> for instance, data protection manager <b>154</b> stores encrypted chunk <b>164</b> along with corresponding encrypted key data <b>166</b>, such as to storage system <b>115</b>.
0062Key management system <b>157</b> may protect the first encryption key and the second encryption key with encryption. For example, key management system <b>157</b> may encrypt the first encryption key with the KMS KEK to generate a first encrypted key and encrypt the second encryption key with the KMS KEK to generate a second encrypted key. Key management system <b>157</b> may utilize the KMS KEK to encrypt and decrypt encryption keys. For example, key management system <b>157</b> may decrypt the first encrypted key with the KMS KEK to obtain the first encryption key and decrypt the second encrypted key with the KMS KEK to obtain the second encryption key.
0063In some examples, rather than storing encryption keys in unencrypted form, key management system <b>157</b> may only store encryption keys in the form of encrypted keys (e.g., the first encrypted key and the second encrypted key), such as to enclave <b>132</b>, storage system <b>105</b>, and/or storage system <b>115</b>. For example, data protection manager <b>154</b> may store the first encrypted key to storage system <b>105</b> or storage system <b>115</b> and may store the second encrypted key in other storage, such as to enclave <b>132</b>. Since enclave <b>132</b> is within the trusted execution environment of a confidential computing platform, enclave <b>132</b> may protect the second encrypted key, or other encrypted keys or encryption information using the trusted execution environment of enclave <b>132</b>. For example, enclave <b>132</b> may seal encrypted keys, as well as other encryption information stored in enclave <b>132</b> using a sealing process of enclave's trusted execution environment. Enclave <b>132</b> may store and seal encrypted keys, such as the second encrypted key, by “wrapping” and/or assigning particular platform measurements or characteristics to the encrypted keys, such as by encrypting encryption keys using the platform measurements or characteristics. Continuing this example, encrypted keys (e.g., the second encrypted key) may only be unsealed (e.g., “unwrapped”) when the platform measurements or characteristics match those used to seal the key encryption keys. In this manner, sealed encrypted keys or other sealed encryption information (e.g., the KMS KEK) may not be decrypted for use when platform measurements or characteristics differ from those used to seal the key encryption keys.
0064To encrypt a chunk, data protection manager <b>154</b>, such as through key management system <b>157</b>, may generate or derive a data encryption key using the first encryption key and key data. For example, data protection manager <b>154</b> may execute a HKDF with the first encryption key and the key data as input to generate a data encryption key. In some examples, key management system <b>157</b> may generate distinct key data (e.g., a random salt) for each unit of data (e.g., chunk) to be encrypted. Data protection manager <b>154</b> may encrypt a chunk with the data encryption key to generate encrypted chunk <b>164</b>.
0065As described above, the first encryption key may be protected by data protection manager <b>154</b> encrypting the first encryption key with the KMS KEK to generate the first encrypted key. Data protection manager <b>154</b> may obtain the first encryption key from the first encrypted key by decrypting the first encrypted key, such as with the KMS KEK. Data protection manager <b>154</b> may, in addition to protecting the first encryption key with encryption, protect the key data with encryption. For example, data protection manager <b>154</b> may encrypt the key data to generate encrypted key data <b>166</b>. Data protection manager <b>154</b>, such as through key management system <b>157</b>, may encrypt the key data with the second encryption key to generate encrypted key data <b>166</b>.
0066In some examples, data protection manager <b>154</b> may retrieve encrypted keys, encrypted chunks, and/or encrypted key data from various storage devices to which they are stored, including storage system <b>105</b>, storage system <b>115</b>, and/or enclave <b>132</b>. For example, data protection manager <b>154</b> may retrieve the first encrypted key from storage system <b>105</b> or storage system <b>115</b> and retrieve the second encryption key from enclave <b>132</b>. Data protection manager <b>154</b> may make retrieve data from enclave <b>132</b> by executing a function call to the trusted execution environment of enclave <b>132</b>.
0067To decrypt encrypted chunk <b>164</b> stored in storage system <b>115</b>, the key data used to encrypt chunk <b>164</b> is required. Continuing the above example for instance, the key data contained in encrypted key data <b>166</b> is required to generate the data encryption key for decrypting encrypted chunk <b>164</b>. Data protection manager <b>154</b> may retrieve encrypted chunk <b>164</b> from storage system <b>115</b> along with encrypted key data <b>166</b> for the encrypted chunk <b>164</b>. Data protection manager <b>154</b> may obtain the key data from encrypted key data <b>166</b> by decrypting, such as through key management system <b>157</b>, encrypted key data <b>166</b>.
0068In some examples, data protection manager <b>154</b> may obtain the key data from encrypted key data <b>166</b> through enclave <b>132</b>. For example, data protection manager <b>154</b> may make a request to enclave <b>132</b> and enclave <b>132</b> may, in response, decrypt encrypted key data <b>166</b> to obtain the key data encoded in encrypted key data <b>166</b>. Enclave <b>132</b> may retrieve encryption keys from storage within enclave itself or enclave's trusted execution environment and use the encryption keys to decrypt encrypted key data <b>166</b>. For example, enclave <b>132</b> may retrieve the second encryption key from storage within enclave itself or enclave's trusted execution environment and decrypt encrypted key data <b>166</b> with the second encryption key to obtain the key data.
0069The second encryption key may be an asymmetric key in some examples. For example, the second encryption key may include a private key and a public key, such as a public/private key pair of a PKI. In such case, to encrypt the key data with the second encryption key, such as when encrypting chunk <b>164</b>, data protection manager <b>154</b> may encrypt the key data with a public key of the second encryption key to generate encrypted key data <b>166</b>. To decrypt encrypted key data <b>166</b> encrypted with the public key of the second encryption key, data protection manager <b>154</b> may decrypt encrypted key data <b>166</b> with the private key of the second encryption key. Where the second encryption key is an asymmetric key, key rotation manager <b>156</b> may encrypt the second encryption key by encrypting at least the private key (e.g., the private key or the private key and the public key) of the second encryption key with the KMS KEK to generate the second encrypted key.
0070Data protection manager <b>154</b> may derive the data encryption key to decrypt encrypted chunk <b>164</b> using the key data obtained from encrypted key data <b>166</b> and the first encryption key. For example, data protection manager <b>154</b> may generate the data encryption key by executing a key derivation function (e.g., HKDF) using the first encryption key and the key data from encrypted key data <b>166</b> as input. Data protection manager <b>154</b> may decrypt encrypted chunk <b>164</b> with the derived data encryption key. Data protection manager <b>154</b> may obtain the first encryption key from the first encrypted key by decrypting the first encrypted key, such as by using the KMS KEK.
0071As can be seen, the first encryption key and the second encryption key are both used during encryption and decryption of chunks <b>164</b> of backups <b>142</b>. Key management system <b>157</b> protects the first encryption key and the second encryption key by encrypting the first encryption key and the second encryption key with the KMS KEK. As described above, key management system <b>157</b> may encrypt the first encryption key with the KMS KEK to generate a first encrypted key and may encrypt the second encryption key with the KMS KEK to generate a second encrypted key.
0072Key rotation manager <b>156</b> may mitigate or prevent security issues that arise from unauthorized access to the KMS KEK by rotating the KMS KEK. For example, a KMS KEK may be inadvertently leaked (e.g., accessed) without authorization, such as through system intrusion, misconfiguration, or privilege misuse. Key rotation manager <b>156</b> may replace the compromised KMS KEK with a replacement KMS KEK to prevent further use of the compromised KMS KEK. Key rotation manager <b>157</b> may, such as through key management system <b>157</b>, encrypt encryption keys (e.g., the first encryption key and the second encryption key) with the replacement KMS KEK to prevent access to the encryption keys using the compromised KMS KEK. As can be seen, rather than performing O(n) re-encryptions, such as to re-encrypt data encryption keys for n chunks <b>164</b>, key rotation manager <b>156</b> may re-encrypt the first encryption key and the second encryption key when replacing the KMS KEK, which may be performed in O(<b>1</b>) or constant time.
0073As such, key rotation manager <b>156</b> may protect data (e.g., chunks <b>164</b> of backups <b>142</b>) by efficiently and securely rotating key encryption keys used to encrypt the encryption keys used to encrypt the data. As described herein, key rotation manager <b>156</b> may provide efficient and secure key rotation for various data, including encrypted chunks <b>164</b> where respective EDEKs (e.g., encrypted key data) are stored along with each encrypted chunk. In accordance with the described techniques, key rotation manager <b>156</b> may perform in constant time (e.g., O(<b>1</b>)) rather than perform O(n) re-encryptions in connection with key rotation. Through use of multiple encrypted keys and the encryption thereof based on rotated KMS KEKs, data protection manager <b>154</b> avoids re-encrypting previously stored backup data (e.g., previously stored encrypted chunks <b>164</b>) in connection with key rotation.
0074By performing key rotation more efficiently (e.g., O(<b>1</b>) versus O(n) re-encryptions) and without high consumption of computing resources even when there is a very large amount of encrypted backup data, key rotation manager <b>156</b> improves data security. Key rotation manager <b>156</b> may perform key rotation to mitigate and/or prevent security issues relating to unintended or unauthorized use of encryption information such as encryption keys, key encryption keys, data encryption keys, and key data (e.g., unauthorized data access/exfiltration, privilege misuse). The constant time efficiency of the key rotation performed by key rotation manager <b>156</b> reduces system load and/or system downtime and permits key rotation to be performed more frequently to further mitigate and/or prevent security issues relating to unintended or undesired leaks of such encryption information. The security improvements result in reduced use of computing resources by preventing exfiltration of large amounts of data (e.g., gigabytes or terabytes of data) which, in itself, presents a security risk and consumes significant computing resources.
0075System <b>190</b> of <figref idref="DRAWINGS">FIG. <b>1</b>B</figref> is a variation of system <b>100</b> of <figref idref="DRAWINGS">FIG. <b>1</b>A</figref> in that data platform <b>150</b> may store backups <b>142</b> using chunkfiles <b>162</b> stored on backup storage system <b>115</b> that is on premises or local to data platform <b>150</b>. In some examples of system <b>190</b>, storage system <b>115</b> enables users or applications to create, modify, or delete chunkfiles <b>162</b> via file system manager <b>152</b>. In system <b>190</b>, storage system <b>105</b> of <figref idref="DRAWINGS">FIG. <b>1</b>B</figref> may be a primary storage system <b>105</b> used by system <b>190</b> or data platform <b>150</b> for initially storing and accumulating chunks <b>164</b> prior to backup to storage system <b>115</b>. Though not shown, in some examples, storage system <b>105</b> may be on premises or local to data platform <b>150</b>, regardless of whether or not storage system <b>115</b> is remote or local to data platform <b>150</b>.
0076<figref idref="DRAWINGS">FIG. <b>2</b></figref> is a block diagram illustrating example system <b>200</b>, in accordance with techniques of this disclosure. System <b>200</b> of <figref idref="DRAWINGS">FIG. <b>2</b></figref> may be described as an example or alternate implementation of system <b>100</b> of <figref idref="DRAWINGS">FIG. <b>1</b>A</figref> or system <b>190</b> of <figref idref="DRAWINGS">FIG. <b>1</b>B</figref> (where chunkfiles <b>162</b> are written to a local storage system <b>115</b>). One or more aspects of <figref idref="DRAWINGS">FIG. <b>2</b></figref> may be described herein within the context of <figref idref="DRAWINGS">FIG. <b>1</b>A</figref> and <figref idref="DRAWINGS">FIG. <b>1</b>B</figref>.
0077In the example of <figref idref="DRAWINGS">FIG. <b>2</b></figref>, system <b>200</b> includes network <b>111</b>, data platform <b>150</b> implemented by computing system <b>202</b>, and storage system <b>115</b>. In <figref idref="DRAWINGS">FIG. <b>2</b></figref>, network <b>111</b>, data platform <b>150</b>, and storage system <b>115</b> may correspond to network <b>111</b>, data platform <b>150</b>, and storage system <b>115</b> of <figref idref="DRAWINGS">FIG. <b>1</b>A</figref>. Although only one storage system <b>115</b> is depicted, data platform <b>150</b> may apply techniques in accordance with this disclosure using multiple instances of storage system <b>115</b>. The different instances of storage system <b>115</b> may be deployed by different cloud storage providers, the same cloud storage provider, by an enterprise, or by other entities.
0078Computing system <b>202</b> may be implemented as any suitable computing system, such as one or more server computers, workstations, mainframes, appliances, cloud computing systems, and/or other computing systems that may be capable of performing operations and/or functions described in accordance with one or more aspects of the present disclosure. In some examples, computing system <b>202</b> represents a cloud computing system, server farm, and/or server cluster (or portion thereof) that provides services to other devices or systems. In other examples, computing system <b>202</b> may represent or be implemented through one or more virtualized compute instances (e.g., virtual machines, containers) of a cloud computing system, server farm, data center, and/or server cluster.
0079In the example of <figref idref="DRAWINGS">FIG. <b>2</b></figref>, computing system <b>202</b> may include one or more communication units <b>215</b>, one or more input devices <b>217</b>, one or more output devices <b>218</b>, and one or more storage devices of a local storage system <b>105</b>. Local storage system <b>105</b> may include various elements. For example, local storage system <b>105</b> may include interface module <b>226</b>, file system manager <b>152</b>, and policies <b>158</b> as well as data protection manager <b>154</b>, key rotation manager <b>156</b>, and key management system <b>157</b>. One or more of the devices, modules, storage areas, or other components of computing system <b>202</b> may be interconnected to enable inter-component communications (physically, communicatively, and/or operatively). In some examples, such connectivity may be provided through communication channels (e.g., communication channels <b>212</b>), which may represent one or more of a system bus, a network connection, an inter-process communication data structure, or any other method for communicating data.
0080One or more processors <b>213</b> of computing system <b>202</b> may implement functionality and/or execute instructions associated with computing system <b>202</b> or associated with one or more modules illustrated in <figref idref="DRAWINGS">FIG. <b>2</b></figref> and described below. One or more processors <b>213</b> may be, may be part of, and/or may include processing circuitry that performs operations in accordance with one or more aspects of the present disclosure. Examples of processors <b>213</b> include microprocessors, application processors, display controllers, auxiliary processors, one or more sensor hubs, and any other hardware configured to function as a processor, a processing unit, or a processing device. Computing system <b>202</b> may use one or more processors <b>213</b> to perform operations in accordance with one or more aspects of the present disclosure using software, hardware, firmware, or a mixture of hardware, software, and firmware residing in and/or executing at computing system <b>202</b>.
0081One or more processors <b>213</b> may include one or more enclaves <b>132</b>. In some examples, enclave <b>132</b> may comprise processing circuitry, memory, or both that is isolated from the remaining hardware of processor <b>213</b>. For instance, enclave <b>132</b> may comprise physically isolated processing circuitry, memory or both with processor <b>213</b> that constitutes a trusted execution environment of a confidential computing platform.
0082One or more communication units <b>215</b> of computing system <b>202</b> may communicate with devices external to computing system <b>202</b> by transmitting and/or receiving data, and may operate, in some respects, as both an input device and an output device. In some examples, communication units <b>215</b> may communicate with other devices over a network. In other examples, communication units <b>215</b> may send and/or receive radio signals on a radio network such as a cellular radio network. In other examples, communication units <b>215</b> of computing system <b>202</b> may transmit and/or receive satellite signals on a satellite network. Examples of communication units <b>215</b> include a network interface card (e.g., such as an Ethernet card), an optical transceiver, a radio frequency transceiver, a GPS receiver, or any other type of device that can send and/or receive information. Other examples of communication units <b>215</b> may include devices capable of communicating over Bluetooth®, GPS, NFC, ZigBee®, and cellular networks (e.g., 3G, 4G, 5G), and Wi-Fi® radios found in mobile devices as well as Universal Serial Bus (USB) controllers and the like. Such communications may adhere to, implement, or abide by appropriate protocols, including Transmission Control Protocol/Internet Protocol (TCP/IP), Ethernet, Bluetooth®, NFC, or other technologies or protocols.
0083One or more input devices <b>217</b> may represent any input devices of computing system <b>202</b> not otherwise separately described herein. Input devices <b>217</b> may generate, receive, and/or process input. For example, one or more input devices <b>217</b> may generate or receive input from a network, a user input device, or any other type of device for detecting input from a human or machine.
0084One or more output devices <b>218</b> may represent any output devices of computing system <b>202</b> not otherwise separately described herein. Output devices <b>218</b> may generate, present, and/or process output. For example, one or more output devices <b>218</b> may generate, present, and/or process output in any form. Output devices <b>218</b> may include one or more USB interfaces, video and/or audio output interfaces, or any other type of device capable of generating tactile, audio, visual, video, electrical, or other output. Some devices may serve as both input and output devices. For example, a communication device may both send and receive data to and from other systems or devices over a network.
0085One or more storage devices of local storage system <b>105</b> within computing system <b>202</b> may store information for processing during operation of computing system <b>202</b>, such as random access memory (RAM), Flash memory, solid-state disks (SSDs), hard disk drives (HDDs), etc. Storage devices may store program instructions and/or data associated with one or more of the modules described in accordance with one or more aspects of this disclosure. One or more processors <b>213</b> and one or more storage devices may provide an operating environment or platform for such modules, which may be implemented as software, but may in some examples include any combination of hardware, firmware, and software. One or more processors <b>213</b> may execute instructions and one or more storage devices of storage system <b>105</b> may store instructions and/or data of one or more modules. The combination of processors <b>213</b> and local storage system <b>105</b> may retrieve, store, and/or execute the instructions and/or data of one or more applications, modules, or software. Processors <b>213</b> and/or storage devices of local storage system <b>105</b> may also be operably coupled to one or more other software and/or hardware components, including, but not limited to, one or more of the components of computing system <b>202</b> and/or one or more devices or systems illustrated as being connected to computing system <b>202</b>.
0086File system manager <b>152</b> may perform functions relating to providing file system <b>153</b>, as described above with respect to <figref idref="DRAWINGS">FIG. <b>1</b>A</figref>. File system manager <b>152</b> may generate and manage file system metadata <b>232</b> for structuring file system data <b>230</b> for file system <b>153</b>, and store file system metadata <b>232</b> and file system data <b>230</b> to local storage system <b>105</b>. File system metadata <b>232</b> may include one or more trees that describe objects within file system <b>153</b> and the file system <b>153</b> hierarchy, and can be used to write or retrieve objects within file system <b>153</b>. File system manager <b>152</b> may interact with and/or operate in conjunction with one or more modules of computing system <b>202</b>, including interface module <b>226</b> and data protection manager <b>154</b>.
0087Data protection manager <b>154</b>, key rotation manager <b>156</b>, and key management system <b>157</b> may perform backup functions relating to storing and protecting backups <b>142</b> of file system <b>153</b>, as described above with respect to <figref idref="DRAWINGS">FIG. <b>1</b>A</figref>, including the operations described above with respect to rotating key encryption keys and encrypting and decrypting chunks <b>164</b>. Data protection manager <b>154</b> may generate one or more backups <b>142</b> and cause file system data <b>230</b> to be stored as chunks <b>164</b> within chunkfiles <b>162</b> in backup storage system <b>115</b>. Data protection manager <b>154</b> may apply an adaptive deduplication process to selectively deduplicate chunks of objects within file system data <b>230</b>, in accordance with one or more policies <b>158</b>. Data protection manager <b>154</b> may generate and manage chunk metadata <b>224</b> for generating, viewing, retrieving, or restoring any of backups <b>142</b>. Backup metadata <b>222</b> may include respective original data lock periods for backups <b>142</b>. Data protection manager <b>154</b> may generate and manage chunk metadata <b>224</b> for generating, viewing, retrieving, or restoring objects stored as chunks <b>164</b> (and references thereto) within chunkfiles <b>162</b>, for any of backups <b>142</b>. Stored objects may be represented and manipulated using logical files for identifying chunks for the objects.
0088Local storage system <b>105</b> may store chunk metadata <b>224</b> including a chunk table that describes chunks <b>164</b>. The chunk table may include respective chunk IDs for chunks <b>164</b> and may contain pointers to chunkfiles <b>162</b> and offsets within chunkfiles <b>162</b> for retrieving chunks <b>164</b> from one or more storage systems <b>115</b> of one or more cloud environments <b>130</b>. Chunks <b>164</b> are written into chunkfiles <b>162</b> at different offsets. By comparing new chunk IDs to the chunk table, data protection manager <b>154</b> can determine if the data already exists on the system. Data protection manager <b>154</b> may use the chunk table to look up the chunkfile identifier for the chunkfile that contains a chunk.
0089Local storage system <b>105</b> may include a chunkfile table that describes respective physical or virtual locations of chunkfiles <b>162</b> on storage system <b>115</b>, along with other metadata about the chunkfile, such as a checksum, encryption data, compression data, etc. For example, in <figref idref="DRAWINGS">FIG. <b>2</b></figref>, data protection manager <b>154</b> may cause chunk metadata <b>224</b> including a chunkfile table to be stored to local storage system <b>105</b>. Data protection manager <b>154</b>, optionally or in conjunction with file system manager <b>152</b>, may use chunk metadata <b>224</b> to restore any of backups <b>142</b> to a file system implemented by data platform <b>150</b>, which may be presented by file system manager <b>152</b> to other systems.
0090Interface module <b>226</b> may execute an interface by which other systems or devices may determine operations of file system manager <b>152</b> or data protection manager <b>154</b>. Another system or device may communicate via an interface of interface module <b>226</b> to specify one or more policies <b>158</b>.
0091System <b>200</b> may be modified to implement an example of system <b>190</b> of <figref idref="DRAWINGS">FIG. <b>1</b>B</figref>. In the modified system <b>200</b>, chunkfiles <b>162</b> are stored to a local backup storage system <b>115</b> to support backups <b>142</b>.
0092Interface module <b>240</b> of backup storage system <b>115</b> may execute an interface by which other systems or devices may create, modify, delete, or extend a WORM lock expiration time for any of chunkfiles <b>162</b>. Interface module <b>240</b> may execute and present an API. The interface presented by interface module <b>240</b> may be a gRPC, HTTP, RESTful, command-line, graphical user, web, or other interface. Interface module <b>240</b> may be associated with use costs. One more methods or functions of the interface module <b>240</b> may impose a cost per-use (e.g., $0.10 to extend a WORM lock expiration time of chunkfiles <b>162</b>).
0093<figref idref="DRAWINGS">FIGS. <b>3</b>A-<b>3</b>B</figref> are block diagrams illustrating example systems performing efficient and secure key rotation for backup storage, in accordance with the techniques of this disclosure. System <b>300</b> of <figref idref="DRAWINGS">FIGS. <b>3</b>A-<b>3</b>B</figref> may be described as an example or alternate implementation of system <b>100</b> of <figref idref="DRAWINGS">FIG. <b>1</b>A</figref> or system <b>190</b> of <figref idref="DRAWINGS">FIG. <b>1</b>B</figref> (where chunkfiles <b>162</b> are written to a local storage system <b>115</b>). One or more aspects of <figref idref="DRAWINGS">FIGS. <b>3</b>A-<b>3</b>B</figref> may be described herein within the context of <figref idref="DRAWINGS">FIGS. <b>1</b>A-<b>1</b>B</figref>. For example, application system <b>102</b>, data platform <b>150</b>, and storage system <b>115</b> of <figref idref="DRAWINGS">FIGS. <b>3</b>A-<b>3</b>C</figref> may correspond to application system <b>102</b>, data platform <b>150</b>, and storage system <b>115</b> of <figref idref="DRAWINGS">FIGS. <b>1</b>A-<b>1</b>B</figref>.
0094Initialization or setup of data platform <b>150</b> will now be described with respect to the example of <figref idref="DRAWINGS">FIG. <b>3</b>A</figref>. During initialization, data platform <b>150</b> may prepare storage system <b>115</b> to store encrypted chunks <b>164</b>. For example, data platform <b>150</b> may create storage system <b>115</b> through a cloud storage provider or other public or private cloud service. Data platform <b>150</b> may obtain one or more addresses (e.g., URL(s)) from storage system <b>115</b> through which data can be read or written at storage system <b>115</b>.
0095Data platform <b>150</b> may generate one or more encryption keys and one or more key encryption keys for encrypting the encryption keys. For example, data platform <b>150</b>, may generate a KMS KEK <b>304</b>A and may store KMS KEK <b>304</b>A to a suitable storage device, such as to enclave <b>132</b> or storage system <b>105</b>. Data platform <b>150</b> may use KMS KEK <b>304</b>A to encrypt encryption keys used to encrypt one or more chunks, such as chunk <b>164</b>A. As described above, data platform <b>150</b> may utilize multiple encryption keys when encrypting chunks <b>164</b>. In this manner, unauthorized access to one encryption key is insufficient to decrypt and/or exfiltrate data (e.g., chunks <b>164</b>) of a backup.
0096For example, data platform <b>150</b> may generate multiple encryption keys by generating a first encryption key and a second encryption key. Data platform <b>150</b> may use KMS KEK <b>304</b>A to encrypt the first encryption key to generate first encrypted key <b>306</b>A and use KMS KEK <b>304</b>A to encrypt the second encryption key to generate second encrypted key <b>312</b>A. Data platform <b>150</b> may store first encrypted key <b>306</b>A and second encrypted key <b>312</b>A to one or more suitable storage devices. For example, data protection manager <b>154</b> of data platform <b>150</b> may store first encrypted key <b>306</b>A to storage system <b>105</b> and store second encrypted key <b>312</b>A to enclave <b>132</b>. Though shown and described as being stored to particular storage devices, first encrypted key <b>312</b>A and second encrypted key <b>312</b>B may be stored to various combinations of the same or different storage devices. To illustrate, in some examples, data platform <b>150</b> may store first encrypted key <b>106</b>A to storage system <b>115</b> and store second encrypted key <b>312</b>A to enclave <b>132</b>, or data platform <b>150</b> may store both first encrypted key <b>306</b>A and second encrypted key <b>312</b>A to the same storage device (e.g., enclave <b>132</b>).
0097As described above, encryption keys may be various types of encryption keys. For example, the first encryption key may be a symmetric encryption key and the second encryption key may be an asymmetric encryption key. As shown in the example of <figref idref="DRAWINGS">FIG. <b>3</b>A</figref> for instance, the second encryption key comprises an asymmetric key including a private key <b>308</b> and a public key <b>310</b>. In some examples, to encrypt asymmetric encryption keys, such as the second encryption key, data platform <b>150</b> may encrypt the entirety or a portion of an asymmetric encryption key. For instance, data platform <b>150</b> may encrypt, with KMS KEK <b>304</b>A, only private key <b>308</b> of the second encryption key or both private key <b>308</b> and public key <b>310</b> of the second encryption key to generate second encrypted key <b>312</b>A.
0098After initialization, data platform <b>150</b> may store data (e.g., encrypted chunks <b>164</b>), such as to storage system <b>115</b>. For example, data platform <b>150</b> may store one or more encrypted chunks <b>164</b> to backup source data <b>302</b> received from a source system, such as application system <b>102</b>. Application system <b>102</b>, chunks <b>164</b> and chunkfile <b>162</b> of <figref idref="DRAWINGS">FIGS. <b>3</b>A-<b>3</b>B</figref> may be examples of application system <b>102</b>, chunks <b>164</b>, and chunkfile <b>162</b> of <figref idref="DRAWINGS">FIGS. <b>1</b>A-<b>1</b>B</figref>. Though not shown encrypted chunks <b>164</b> may constitute one or more backups such as backups <b>142</b> of <figref idref="DRAWINGS">FIGS. <b>1</b>A-<b>1</b>B</figref>.
0099Data platform <b>150</b> may generate one or more raw (e.g., unencrypted) chunks from source data <b>302</b>, such as described above. For example, data platform <b>150</b> may generate raw chunks comprising 16-48 KB portions of source data <b>302</b>. Data platform <b>150</b> may encrypt a raw chunk using a data encryption key generated from the first encryption key and key data to generate encrypted chunk <b>164</b>. For example, data platform <b>150</b> may generate the data encryption key by applying a key derivation function (e.g., HKDF) using the first encryption key and the key data as input. Data platform <b>150</b> may obtain the first encryption key by decrypting first encrypted key <b>306</b>A, such as with KMS KEK <b>304</b>A.
0100Data platform <b>150</b> may generate the key data, such as by generating a random number or random data. In some examples, data platform <b>150</b> may generate distinct key data (e.g., a random salt) for each encrypted chunk <b>164</b>. In this manner, the key data for a particular encrypted chunk <b>164</b> cannot be used by unauthorized parties to decrypt other encrypted chunks <b>164</b>. After generating encrypted chunk <b>164</b>, data platform <b>150</b> may store encrypted chunk <b>164</b> along with corresponding encrypted key data <b>166</b>. As shown in the example of <figref idref="DRAWINGS">FIG. <b>3</b>A</figref> for instance, data platform <b>150</b> stores encrypted chunk <b>164</b>A along with corresponding encrypted key data <b>166</b>A, containing the key data used to derive the data encryption key used to encrypt encrypted chunk <b>164</b>A, to storage system <b>115</b>.
0101Data platform <b>150</b> may generate encrypted key data <b>166</b>A by encrypting the key data used to derive the data encryption key used to encrypt chunk <b>164</b>A. Data platform <b>150</b> may encrypt key data with a different encryption key that that used to derive the data encryption key. For example, data platform <b>150</b> may encrypt the key data with the second encryption key, rather than the first encryption, such as with public key <b>310</b> of the second encryption key. In this manner, possession of one of the first encryption key or the second encryption key is insufficient for an unauthorized party to decrypt encrypted chunks <b>164</b>. Data platform <b>150</b> may obtain the second encryption key, including public key <b>310</b> thereof, by decrypting second encrypted key <b>312</b>A.
0102For decryption purposes, data platform <b>150</b> may obtain the key data encoded within encrypted key data <b>166</b>A and use the key data from encrypted key data <b>166</b>A to generate the data encryption key capable of decrypting encrypted chunk <b>164</b>A. In some examples, data platform <b>150</b> may use enclave to obtain key data from encrypted key data <b>166</b>A. For instance, data platform <b>150</b> may send encrypted key data <b>166</b>A to enclave <b>132</b>, such as via a secure session with enclave <b>132</b>, for decryption. Enclave <b>132</b> may decrypt encrypted key data <b>166</b>A with the second encryption key, such as private key <b>308</b> of second encrypted key <b>312</b>A. Enclave <b>132</b> may obtain private key <b>308</b> by decrypting second encrypted key <b>312</b>A, such as with KMS KEK <b>304</b>A.
0103After decryption of encrypted key data <b>166</b>A, enclave <b>134</b> may send the key data obtained by decrypting encrypted key data <b>166</b>A to another element (e.g., data protection manager <b>154</b>) of data platform <b>150</b>. Data platform <b>150</b> may derive the data encryption key with the key data. For example, to generate the data encryption key to decrypt encrypted chunk <b>164</b>A, data platform <b>150</b> may execute a key derivation function (e.g., HKDF) using the first encryption key obtained from first encrypted key <b>306</b>A and the key data obtained from encrypted key data <b>166</b>A as input. Data platform may obtain the first encryption key by decrypting first encrypted key <b>306</b>A, such as with KMS KEK <b>304</b>A. As can be seen, the data encryption key used to decrypt encrypted chunk <b>164</b>A may be identical to or otherwise correspond to the data encryption key used to encrypt chunk <b>164</b>A. To illustrate, the data encryption key used to decrypt encrypted chunk <b>164</b>A may be derived from the same input as that used to derive the data encryption key used to encrypt chunk <b>164</b>A.
0104Data platform <b>150</b> may decrypt encrypted chunk <b>164</b> using the data encryption key. Data platform <b>150</b> may use the decrypted data from encrypted chunk <b>164</b> to restore a backup. For example, data platform <b>150</b> may store the decrypted data from encrypted chunk <b>164</b>, such as to storage system <b>105</b>, to restore chunk <b>164</b>A at storage system <b>105</b>.
0105Referring to <figref idref="DRAWINGS">FIG. <b>3</b>B</figref>, data platform <b>150</b>, such as through key rotation manager <b>156</b>, may rotate one or more key encryption keys. Data platform <b>150</b> may generate KMS KEK <b>304</b>B as a replacement to KMS KEK <b>304</b>A of <figref idref="DRAWINGS">FIG. <b>3</b>A</figref>. As shown by the example of <figref idref="DRAWINGS">FIG. <b>3</b>B</figref>, data platform <b>150</b> may replace KMS KEK <b>304</b>A of <figref idref="DRAWINGS">FIG. <b>3</b>A</figref> with KMS KEK <b>304</b>B of <figref idref="DRAWINGS">FIG. <b>3</b>B</figref>. As such, KMS KEK <b>304</b>A may be considered a replaced KMS KEK and KMS KEK <b>304</b>B may be considered a replacement KMS KEK. After KMS KEK <b>304</b>A is replaced, data platform <b>150</b> discontinues use of KMS KEK <b>304</b>A thereby deprecating or invalidating KMS KEK <b>304</b>A.
0106Data platform <b>150</b> may re-encrypt first encryption key and second encryption key with the replacement KMS KEK (e.g., KMS KEK <b>304</b>B) to respectively generate first encrypted key <b>306</b>B and second encrypted key <b>312</b>B. For example, data platform <b>150</b> may decrypt first encrypted key <b>306</b>A and second encrypted key <b>312</b>A of <figref idref="DRAWINGS">FIG. <b>3</b>A</figref> to respectively obtain first encryption key and second encryption key. Data platform <b>150</b> may “re-encrypt” first encryption key and second encryption key with a replacement KMS KEK (e.g., KMS KEK <b>304</b>B) to generate first encrypted key <b>306</b>B and second encrypted key <b>312</b>B of <figref idref="DRAWINGS">FIG. <b>3</b>B</figref>. Data platform <b>150</b> may replace first encrypted key <b>306</b>A and second encrypted key <b>312</b>A of <figref idref="DRAWINGS">FIG. <b>3</b>A</figref> with first encrypted key <b>306</b>B and second encrypted key <b>312</b>B of <figref idref="DRAWINGS">FIG. <b>3</b>B</figref>, respectively. In this manner, data platform <b>150</b> deprecates or invalidates first encrypted key <b>306</b>A and second encrypted key <b>312</b>A.
0107As can be seen by encrypted chunk <b>164</b>N of <figref idref="DRAWINGS">FIG. <b>3</b>B</figref>, data platform <b>150</b> may encrypt additional chunks using first encrypted key <b>306</b>B and second encrypted key <b>312</b>B of <figref idref="DRAWINGS">FIG. <b>3</b>B</figref>, as described above with respect to encrypting encrypted chunk <b>164</b>A with first encrypted key <b>306</b>A and second encrypted key <b>312</b>A of <figref idref="DRAWINGS">FIG. <b>3</b>A</figref>. Data platform <b>150</b> may decrypt encrypted chunks <b>164</b>A-<b>164</b>N (collectively, “chunks <b>164</b>”) using first encrypted key <b>306</b>B and second encrypted key <b>312</b> of <figref idref="DRAWINGS">FIG. <b>3</b>B</figref>, as described above with respect to encrypting encrypted chunk <b>164</b>A with first encrypted key <b>306</b>A and second encrypted key <b>312</b>A of <figref idref="DRAWINGS">FIG. <b>3</b>A</figref>.
0108For example, to generate encrypted chunk <b>164</b>N, data platform <b>150</b> may encrypt another raw chunk of source data <b>302</b> using a data encryption key generated from the first encryption key and key data. As described above, data platform <b>150</b> may generate the data encryption key by applying a key derivation function (e.g., HKDF) using the first encryption key and the key data as input. In this example, data platform <b>150</b> may obtain the first encryption key by decrypting first encrypted key <b>306</b>B, rather than first encrypted key <b>306</b>A, such as with KMS KEK <b>304</b>B. Data platform <b>150</b> may generate the key data, such as by generating a random number or random data. After generating encrypted chunk <b>164</b>N, data platform <b>150</b> may store encrypted chunk <b>164</b>N along with corresponding encrypted key data <b>166</b>N.
0109Data platform <b>150</b> may generate encrypted key data <b>166</b>N by encrypting the key data used to derive the data encryption key used to encrypt chunk <b>164</b>N. As described above with respect to <figref idref="DRAWINGS">FIG. <b>3</b>A</figref>, data platform <b>150</b> may encrypt key data with a different encryption key that that used to derive the data encryption key. For example, data platform <b>150</b> may encrypt the key data with the second encryption key, such as public key <b>310</b> thereof, rather than the first encryption key. In this manner, possession of one of the first encryption key or the second encryption key remains insufficient for an unauthorized party to decrypt encrypted chunks <b>164</b>. Data platform <b>150</b> may obtain the second encryption key, including public key <b>310</b> thereof, by decrypting second encrypted key <b>312</b>B, such as with KMS KEK <b>304</b>B.
0110To decrypt encrypted chunk <b>164</b>N, data platform <b>150</b> may obtain the key data encoded within encrypted key data <b>166</b>N. For example, data platform <b>150</b> may send encrypted key data <b>166</b>N to enclave <b>132</b>, such as via a secure session with enclave <b>132</b>, for decryption. Enclave <b>132</b> may decrypt encrypted key data <b>166</b>N with the second encryption key, such as private key <b>308</b> of second encrypted key <b>312</b>B. Enclave <b>132</b> may obtain private key <b>308</b> by decrypting second encrypted key <b>312</b>B, such as with KMS KEK <b>304</b>B. Data platform <b>150</b> may derive the data encryption key with the key data decrypted by and received from enclave <b>132</b>. For example, to derive the data encryption key to decrypt encrypted chunk <b>164</b>N, data platform <b>150</b> may execute a key derivation function (e.g., HKDF) using the first encryption key and the key data as input. Data platform may obtain the first encryption key by decrypting first encrypted key <b>306</b>B, such as with KMS KEK <b>304</b>B.
0111Data platform <b>150</b> may decrypt any of encrypted chunks <b>164</b>A-<b>164</b>N with replacement KMS KEK <b>304</b>B, first encrypted key <b>306</b>B, and second encrypted key <b>312</b>B. For example, to decrypt chunk <b>164</b>A of <figref idref="DRAWINGS">FIG. <b>3</b>A</figref> (also shown in <figref idref="DRAWINGS">FIG. <b>3</b>B</figref>), data platform <b>150</b> may obtain the first encryption key and the second encryption key by respectfully decrypting first encrypted key <b>306</b>B and second encrypted key <b>312</b>B, such as with KMS KEK <b>304</b>B. Data platform <b>150</b> may decrypt encrypted key data <b>166</b>A of chunk <b>164</b>A with the second encryption key, such as private key <b>310</b> thereof, to obtain the key data of encrypted key data <b>166</b>A. As stated, decryption of encrypted key data <b>166</b>A may be performed by enclave <b>132</b>. Data platform <b>150</b> may derive the data encryption key to decrypt chunk <b>164</b>A through a key derivation function (e.g., HKDF) with the key data obtained from encrypted key data <b>166</b>A and the first encryption key. Data platform <b>150</b> may use the data encryption key to decrypt encrypted chunk <b>164</b>A.
0112Through rotation of KMS KEK <b>304</b> (e.g., replacing KMS KEK <b>304</b>A with KMS KEK <b>304</b>B), key rotation manager <b>156</b> of data platform <b>150</b> deprecates or invalidates KMS KEK <b>304</b>A, replaces first encrypted key <b>306</b>A with first encrypted key <b>306</b>B, and replaces second encrypted key <b>312</b>A with second encrypted key <b>312</b>B. As described above, KMS KEK <b>304</b> may be used both to encrypt and decrypt first encrypted keys <b>306</b> and second encrypted keys <b>312</b>. As such, by deprecating or invalidating KMS KEK <b>304</b>A, data platform <b>150</b> prevents first encrypted key <b>306</b>A and second encrypted key <b>312</b>A, encrypted with KMS KEK <b>304</b>A, from being decrypted. By replacing first encrypted key <b>306</b>A and second encrypted key <b>312</b>A respectively with first encrypted key <b>306</b>B and second encrypted key <b>312</b>B, data platform <b>150</b> ensures the first encryption key and the second encryption key cannot be obtained using KMS KEK <b>304</b>A. Likewise, when data platform <b>150</b> deprecates or invalidates KMS KEK <b>304</b>B, such as by replacing KMS KEK <b>306</b>B with another replacement KMS KEK, data platform <b>150</b> prevents first encryption key <b>306</b>B and second encryption key <b>312</b>B from being used for encryption purposes (e.g., encryption and/or decryption of encrypted chunks <b>164</b>).
0113<figref idref="DRAWINGS">FIG. <b>4</b></figref> is a flowchart illustrating an example mode of operation for a data platform to perform efficient and secure key rotation for backup storage, in accordance with techniques of this disclosure. <figref idref="DRAWINGS">FIG. <b>4</b></figref> is described in the context of <figref idref="DRAWINGS">FIGS. <b>3</b>A-<b>3</b>B</figref>. As shown in the example of <figref idref="DRAWINGS">FIG. <b>4</b></figref>, data platform <b>150</b> may generate a first encrypted key <b>306</b>A and a second encrypted key <b>312</b>A (<b>402</b>). Data platform <b>150</b> may generate first encrypted key <b>306</b>A by encrypting a first encryption key with a first system key <b>304</b>A and generate second encrypted key <b>312</b>A by encrypting a second encryption key with first system key <b>304</b>A. As set forth above, KMS KEK <b>304</b> may also be referred to herein as “system key <b>304</b>.”
0114Data platform <b>150</b> may store one or more encrypted chunks <b>164</b> with each encrypted chunk <b>164</b> being encrypted, by data platform <b>150</b>, with a data encryption key derived from the first encryption key of first encrypted key <b>306</b>A and key data of encrypted key data <b>166</b>A. Encrypted key data <b>166</b>A may be encrypted, by data platform <b>150</b>, with the second encryption key from second encrypted key <b>312</b>A. Data platform <b>150</b> may store each encrypted chunk of one or more encrypted chunks <b>164</b> along with respective encrypted key data <b>166</b>. As shown in <figref idref="DRAWINGS">FIG. <b>3</b>B</figref> for example, encrypted chunk <b>164</b>A is stored with encrypted key data <b>166</b>A and encrypted chunk <b>165</b>N is stored with encrypted key data <b>166</b>N. One or more encrypted chunks <b>164</b> may be part of a backup, archive, or snapshot of data of the one or more encrypted chunks, (e.g., source data from one or more workloads <b>174</b> of application system <b>102</b>). In some examples, one or more encrypted chunks <b>164</b> may be part of WORM storage for the data of the one or more encrypted chunks, the WORM storage comprising one or more of a backup, archive, or snapshot
0115Data platform <b>150</b> may generate an asymmetric key pair comprising a private key <b>308</b> and a public key <b>310</b> for use as the second encryption key. The second encryption key may be public key <b>308</b> of the asymmetric key pair. As such, in some examples, to decrypt the encrypted key data <b>166</b>A to obtain the key data, data platform <b>150</b> may decrypt encrypted key data <b>166</b>A with private key <b>308</b>. Data platform <b>150</b> may obtain the second encryption key, including any private key <b>308</b> and/or public key <b>310</b> thereof, by decrypting second encrypted key <b>306</b>A, such as with first system key <b>304</b>A.
0116To perform key rotation, data platform <b>150</b> may replace first system key <b>304</b>A by determining a second system key <b>304</b>B (<b>404</b>). For example, data platform <b>150</b> may determine second system key <b>304</b>B by generating a key encryption key for use as second system key <b>304</b>B. In some examples, data platform <b>150</b> may replace first system key <b>304</b>A by determining second system key <b>304</b>B in response to a key rotation event. The key rotation event may be various events, such as expiration of a key rotation time period (e.g., 5 minutes, 10 minutes), detection of unauthorized access, or receipt of a user input to rotate a system key. In this manner, data platform <b>150</b> may perform key rotation in response to various events. For example, data platform <b>150</b> may rotate first system key <b>304</b>A periodically (e.g., every 5 minutes) or in response to the user input to rotate first system key <b>304</b>A. Data platform <b>150</b> may receive the user input, such as through input device <b>217</b> as shown in <figref idref="DRAWINGS">FIG. <b>2</b></figref>. Data platform <b>150</b> may, in some examples, include an intrusion detection system. In these examples, data platform <b>150</b> may rotate first system key <b>304</b>A in response to the intrusion detection system detecting an unauthorized access to data platform <b>150</b> or one or more elements thereof (e.g., data protection manager <b>154</b>, storage system <b>105</b>, storage system <b>115</b>, application system <b>102</b>).
0117Data platform <b>150</b> may encrypt, with second system key <b>304</b>B, the first encryption key to generate a replacement first encrypted key <b>306</b>B and the second encryption key to generate a replacement second encrypted key <b>312</b>B (<b>406</b>). To encrypt data (e.g., one or more chunks), data platform <b>150</b> may decrypt the replacement first encrypted key <b>306</b>B to obtain the first encryption key and encrypted key data <b>166</b>A to obtain the key data (<b>408</b>). Data platform <b>150</b> may decrypt first encrypted key <b>306</b>B, such as with second system key <b>304</b>B. and may decrypt encrypted key data <b>166</b>A with the second encryption key. Data platform <b>150</b> may obtain the second encryption key by decrypting second encrypted key <b>312</b>B, such as with second system key <b>304</b>B. The first encryption key and the key data may be used, by data platform <b>150</b>, to derive the data encryption key when decrypting one or more encrypted chunks <b>164</b>A. Data platform <b>150</b> may output data from one or more encrypted chunks <b>164</b>A by decrypting one or more encrypted chunks <b>164</b>A with the data encryption key (<b>410</b>).
0118One or more encrypted chunks <b>164</b>A may be considered to be one or more first encrypted chunks <b>164</b>A and encrypted key data <b>166</b>A may be considered to be first encrypted key data <b>166</b>A. As such, data platform <b>150</b> may encrypt one or more chunks (e.g., raw chunks of source data <b>302</b>) to generate one or more second encrypted chunks <b>164</b>N. Each encrypted chunk of one or more second encrypted chunks <b>164</b>N may be encrypted, by data platform <b>150</b>, with a data encryption key derived from the first encryption key of the replacement first encrypted key <b>306</b>B and the key data of second encrypted key data <b>166</b>N. Data platform <b>150</b> may store each encrypted chunk of one or more second encrypted chunks <b>164</b>N, along with the second encrypted key data <b>166</b>N.
0119The second encrypted key data <b>166</b>N may be encrypted, by data platform <b>150</b>, with the second encryption key of the replacement second encrypted key <b>312</b>B. Data platform may accordingly obtain the second encryption key by decrypting replacement second encrypted key <b>312</b>B, such as with second system key <b>304</b>B. Data platform <b>150</b> may obtain the first encryption key from replacement first encrypted key <b>306</b>B by decrypting replacement first encrypted key <b>306</b>B, such as with second system key <b>304</b>B.
0120Although the techniques described in this disclosure are primarily described with respect to a backup function performed by a key rotation manager of a data platform, similar techniques may additionally or alternatively be applied for an archive, replica, clone, or snapshot function performed by the data platform. In such cases, backups <b>142</b> would be archives, replicas, clones, or snapshots, respectively.
0121For processes, apparatuses, and other examples or illustrations described herein, including in any flowcharts or flow diagrams, certain operations, acts, steps, or events included in any of the techniques described herein can be performed in a different sequence, may be added, merged, or left out altogether (e.g., not all described acts or events are necessary for the practice of the techniques). Moreover, in certain examples, operations, acts, steps, or events may be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors, rather than sequentially. Further certain operations, acts, steps, or events may be performed automatically even if not specifically identified as being performed automatically. Also, certain operations, acts, steps, or events described as being performed automatically may be alternatively not performed automatically, but rather, such operations, acts, steps, or events may be, in some examples, performed in response to input or another event.
0122The detailed description set forth herein, in connection with the appended drawings, is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the various concepts. However, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring such concepts.
0123In accordance with one or more aspects of this disclosure, the term “or” may be interrupted as “and/or” where context does not dictate otherwise. Additionally, while phrases such as “one or more” or “at least one” or the like may have been used in some instances but not others; those instances where such language was not used may be interpreted to have such a meaning implied where context does not dictate otherwise.
0124In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored, as one or more instructions or code, on and/or transmitted over a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another (e.g., pursuant to a communication protocol). In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media, which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.
0125By way of example, and not limitation, such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
0126Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the terms “processor” or “processing circuitry” as used herein may each refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described. In addition, in some examples, the functionality described may be provided within dedicated hardware and/or software modules. Also, the techniques could be fully implemented in one or more circuits or logic elements.
0127The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, a mobile or non-mobile computing device, a wearable or non-wearable computing device, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a hardware unit or provided by a collection of interoperating hardware units, including one or more processors as described above, in conjunction with suitable software and/or firmware.
0128In this way, various aspects of the techniques may enable the following examples.
0129Example 1: A method includes generating, by a data platform implemented by a computing system, a first encrypted key and a second encrypted key, wherein the data platform stores one or more encrypted chunks, each encrypted chunk of the one or more encrypted chunks encrypted with a data encryption key derived from a first encryption key of the first encrypted key and key data of encrypted key data, the first encrypted key data encrypted with a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key encrypted with a first system key; replacing, by the data platform, the first system key by determining a second system key; encrypting, by the data platform and with the second system key, the first encryption key to generate a replacement first encrypted key and the second encryption key to generate a replacement second encrypted key; decrypting, by the data platform, the replacement first encrypted key to obtain the first encryption key and the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used derive the data encryption key when decrypting the one or more encrypted chunks; and outputting, by the data platform, data from the one or more encrypted chunks by decrypting the one or more encrypted chunks with the data encryption key.
0130Example 2: The method of example 1, wherein the one or more encrypted chunks are one or more first encrypted chunks and the encrypted key data is first encrypted key data, the method further includes encrypting, by the data platform, one or more chunks to generate one or more second encrypted chunks, each encrypted chunk of the one or more second encrypted chunks encrypted with a data encryption key derived from the first encryption key of the replacement first encrypted key and key data of second encrypted key data, the second encrypted key data encrypted with the second encryption key of the replacement second encrypted key.
0131Example 3: The method of example 2, further comprising storing, by the data platform, each encrypted chunk of the one or more second encrypted chunks, along with the second encrypted key data.
0132Example 4: The method of any of examples 1 through 3, wherein the data platform stores each encrypted chunk of the one or more encrypted chunks along with the encrypted key data.
0133Example 5: The method of any of examples 1 through 4, further comprising generating an asymmetric key pair comprising a public key and a private key, wherein the second encryption key is the public key of the asymmetric key pair.
0134Example 6: The method of example 5, wherein decrypting the encrypted key data to obtain the key data comprises decrypting, by the data platform, the encrypted key data with the private key.
0135Example 7: The method of any of examples 1 through 6, wherein the one or more encrypted chunks are part of write once, read many (WORM) storage for the data of the one or more encrypted chunks, the WORM storage comprising one or more of a backup, archive, or snapshot.
0136Example 8: The method of any of examples 1 through 7, wherein replacing the first system key by determining the second system key is responsive to a key rotation event, the key rotation event comprising one or more of expiration of a key rotation time period, detection of unauthorized access, or receipt of a user input to rotate a system key.
0137Example 9: A computing system includes a memory storing instructions; and processing circuitry that executes the instructions to: generate a first encrypted key and a second encrypted key, wherein the data platform stores one or more encrypted chunks, each encrypted chunk of the one or more encrypted chunks encrypted with a data encryption key derived from a first encryption key of the first encrypted key and key data of encrypted key data, the first encrypted key data encrypted with a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key encrypted with a first system key; replace the first system key by determining a second system key; encrypt, with the second system key, the first encryption key to generate a replacement first encrypted key and the second encryption key to generate a replacement second encrypted key; decrypt the replacement first encrypted key to obtain the first encryption key and the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used derive the data encryption key when decrypting the one or more encrypted chunks; and output data from the one or more encrypted chunks by decrypting the one or more encrypted chunks with the data encryption key.
0138Example 10: The computing system of example 9, wherein the one or more encrypted chunks are one or more first encrypted chunks and the encrypted key data is first encrypted key data, and the processing circuitry further executes the instructions to: encrypt one or more chunks to generate one or more second encrypted chunks, each encrypted chunk of the one or more second encrypted chunks encrypted with a data encryption key derived from the first encryption key of the replacement first encrypted key and key data of second encrypted key data, the second encrypted key data encrypted with the second encryption key of the replacement second encrypted key.
0139Example 11: The computing system of example 10, wherein the processing circuitry further executes the instructions to store each encrypted chunk of the one or more second encrypted chunks, along with the second encrypted key data.
0140Example 12: The computing system of any of examples 9 through 11, wherein the data platform stores each encrypted chunk of the one or more encrypted chunks along with the encrypted key data.
0141Example 13: The computing system of any of examples 9 through 12, wherein the processing circuitry further executes the instructions to generate an asymmetric key pair comprising a public key and a private key, wherein the second encryption key is the public key of the asymmetric key pair.
0142Example 14: The computing system of example 13, wherein to decrypt the encrypted key data to obtain the key data the processing circuitry further executes the instructions to decrypt the encrypted key data with the private key.
0143Example 15: The computing system of any of examples 9 through 14, wherein the one or more encrypted chunks are part of write once, read many (WORM) storage for the data of the one or more encrypted chunks, the WORM storage comprising one or more of a backup, archive, or snapshot.
0144Example 16: The computing system of any of examples 9 through 15, wherein the processing circuitry further executes the instructions to replace the first system key by determining the second system key responsive to a key rotation event, the key rotation event comprising one or more of expiration of a key rotation time period, detection of unauthorized access, or receipt of a user input to rotate a system key.
0145Example 17: A computer-readable storage medium includes instructions that, when executed, cause processing circuitry of a computing system to: generate a first encrypted key and a second encrypted key, wherein the data platform stores one or more encrypted chunks, each encrypted chunk of the one or more encrypted chunks encrypted with a data encryption key derived from a first encryption key of the first encrypted key and key data of encrypted key data, the first encrypted key data encrypted with a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key encrypted with a first system key; replace the first system key by determining a second system key; encrypt, with the second system key, the first encryption key to generate a replacement first encrypted key and the second encryption key to generate a replacement second encrypted key; decrypt the replacement first encrypted key to obtain the first encryption key and the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used derive the data encryption key when decrypting the one or more encrypted chunks; and output data from the one or more encrypted chunks by decrypting the one or more encrypted chunks with the data encryption key.
0146Example 18: The computer-readable storage medium of example 17, wherein the one or more encrypted chunks are one or more first encrypted chunks and the encrypted key data is first encrypted key data, and the instructions, when executed, cause processing circuitry of a computing system to: encrypt one or more chunks to generate one or more second encrypted chunks, each encrypted chunk of the one or more second encrypted chunks encrypted with a data encryption key derived from the first encryption key of the replacement first encrypted key and key data of second encrypted key data, the second encrypted key data encrypted with the second encryption key of the replacement second encrypted key.
0147Example 19: The computer-readable storage medium of any of examples 17 and 18, wherein the one or more encrypted chunks are part of write once, read many (WORM) storage for the data of the one or more encrypted chunks, the WORM storage comprising one or more of a backup, archive, or snapshot.
0148Example 20: The computer-readable storage medium of any of examples 17 through 19, wherein the instructions, when executed, cause processing circuitry of a computing system to replace the first system key by determining the second system key responsive to a key rotation event, the key rotation event comprising one or more of expiration of a key rotation time period, detection of unauthorized access, or receipt of a user input to rotate a system key.
0149Various examples of the disclosure have been described. Any combination of the described systems, operations, or functions is contemplated.
Contents5
8 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2006123250A1 | Cites | United States of America | Pre-grant |
| US2018007025A1 | Cites | United States of America | Pre-grant |
| US2021144141A1 | Cites | United States of America | Pre-grant |
| US9158896B2 | Cites | United States of America | Pre-grant |
| US9336092B1 | Cites | United States of America | Pre-grant |
3 members in 3 offices
Members3
| Document | Office | Kind | |
|---|---|---|---|
| US20260031986A1This record | United States of America | A1 | |
| CN121441484A | China | A | |
| EP4687322A1 | European Patent Office (EPO) | A1 |
70 transactions on the USPTO file
Allowed without a rejection on record.
- Non-final rejections
- 0
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Patent eGrant NotificationMEPG_NTF | MEPG_NTF | |
| Patent eGrant NotificationEPG_NTF | EPG_NTF | |
| Recordation of Patent eGrantEPG/ | EPG/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Response to 312 Amendment (PTO-271)MN271 | MN271 | |
| Response to Amendment under Rule 312N271 | N271 | |
| Response to Amendment under Rule 312N271 | N271 | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| Response to Reasons for AllowanceREAS | REAS | |
| Response to Reasons for AllowanceREAS | REAS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Email NotificationEML_NTR | EML_NTR | |
| Email NotificationEML_NTR | EML_NTR | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Email NotificationEML_NTR | EML_NTR | |
| Email NotificationEML_NTR | EML_NTR | |
| Application Is Now CompleteCOMP | COMP | |
| Application Is Now CompleteCOMP | COMP | |
| Mail Pre-Exam NoticeMPEN | MPEN | |
| Mail Pre-Exam NoticeMPEN | MPEN | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Sent to Classification ContractorPGPC | PGPC | |
| Sent to Classification ContractorPGPC | PGPC | |
| FITF set to YES - revise initial settingFTFS | FTFS | |
| FITF set to YES - revise initial settingFTFS | FTFS | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| PTO/SB/69-Authorize EPO Access to Search ResultsSREXR141 | SREXR141 | |
| PTO/SB/69-Authorize EPO Access to Search ResultsSREXR141 | SREXR141 | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX | |
| Initial Exam Team nnIEXX | IEXX |
6 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Information on status: patent application and granting procedure in generalPUBLICATIONS -- ISSUE FEE PAYMENT VERIFIEDSTPP | STPP | |
| Information on status: patent application and granting procedure in generalAWAITING TC RESP, ISSUE FEE PAYMENT VERIFIEDSTPP | STPP | |
| Information on status: patent application and granting procedure in generalPUBLICATIONS -- ISSUE FEE PAYMENT RECEIVEDSTPP | STPP | |
| Information on status: patent application and granting procedure in generalNOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONSSTPP | STPP | |
| Fee payment procedureENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP |
Numbers
- Publication
- 20260031986
- Application
- 18787690
Titles
- English
- EFFICIENT AND SECURE KEY ROTATION FOR BACKUP STORAGE
Patent term adjustment
- A delay
- +49 daysthe office missed an examination deadline
- Applicant delay
- −92 days
- Net adjustment
- 0 days
Classification
- CPC, 6
- H04L9/0822
- H04L9/0891
- H04L9/0894
- G06F21/602
- H04L9/0825
- H04L9/14
- IPC, 2
- H04L9 08
- G06F21 60