Efficient and secure key rotation for backup storage
Patent Information
- Application Number
- CN202411522684.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-07-29
- Filing Date
- 2024-10-29
- Publication Date
- 2026-01-30
Smart Images

Figure CN121441484A_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present disclosure relates to data platforms for computing systems. BACKGROUND
[0002] Data platforms that support compute applications can rely on primary storage systems to support latency-sensitive applications. However, because primary storage is often more difficult to scale or more expensive to scale, secondary storage systems are often relied on to support secondary use cases, such as backup and archive. SUMMARY
[0003] Examples of the present disclosure describe techniques for efficient and secure key rotation for backup storage. Envelope encryption has been widely used to encrypt at-rest data. Typically, a system can 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, an organization (e.g., an enterprise) can require a key rotation policy from a data protection vendor. The key rotation policy typically involves rotating (e.g., changing) the KEK every three to six months. Each time the KEK is rotated, the DEK can be re-encrypted using the new KEK, which devalues the old KEK.
[0004] In the event that an unauthorized party (such as through a system intrusion or other unauthorized access) accesses the data platform, encryption can not guarantee complete data protection. For example, in the event of a successful system intrusion, an unauthorized party can access the DEK, and with the DEK, the unauthorized party can decrypt and exfiltrate the data. Similarly, a privilege abuse can cause the DEK to become accessible, allowing an unauthorized party to decrypt and exfiltrate the encrypted data.
[0005] Some systems deploy a key rotation job that iterates through each encrypted DEK (EDEK) encrypted with a previous KEK and replaces the EDEK with a new EDEK encrypted with a new KEK. Thus, these key rotation jobs can perform O(n) re-encryption, where n is the number of DEKs created during the encryption process. In systems with very large capacities of data (e.g., multiple gigabytes, terabytes, or more), O(n) re-encryption can be computationally expensive and can take a significant amount of time (e.g., a day or more). In systems where EDEKs are stored along with encrypted data, performing re-encryption can be infeasible.
[0006] The technology described herein provides efficient and secure key rotation for backup storage, including for backups in which EDEKs are stored along with encrypted backup data. Various examples of the technology can provide improved efficiency during key rotation. For example, according to the technology, a data platform can perform O(l) rather than O(n) re-encryption in connection with key rotation, a data platform can avoid modifying previously stored backups in connection with key rotation, or both.
[0007] The technology described herein provides efficient and secure key rotation for backup storage, including for backups in which EDEKs are stored along with encrypted backup data. Various examples of the technology can provide improved efficiency during key rotation. For example, according to the technology, a data platform can perform O(l) rather than O(n) re-encryption in connection with key rotation, a data platform can avoid modifying previously stored backups in connection with key rotation, or both.
[0008] While the technology described in this disclosure is primarily described with respect to backup functionality of a data platform (e.g., key rotation for backups), similar technology can be applied to archival functionality of a data platform (e.g., key rotation for archives or other write-once-read-many (WORM) storage) or other similar functionality.
[0009] In one example, the disclosure describes a method comprising: encrypting, by a data platform implemented by a computing system, a first encryption key using a first system key to generate a first encrypted key; encrypting, by the data platform, a second encryption key using the first system key to generate a second encrypted key; encrypting, by the data platform, one or more blocks to generate one or more encrypted blocks, each of the one or more blocks encrypted with a respective data encryption key derived from the first encryption key and key data; storing, by the data platform, the one or more encrypted blocks; encrypting, by the data platform, the key data using the second encryption key to generate encrypted key data; 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; 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 obtained first encryption key and the obtained key data are used to derive the data encryption key in decrypting the one or more encrypted blocks; and outputting, by the data platform, data from the one or more encrypted blocks by decrypting the one or more encrypted blocks with the derived data encryption key.
[0010] In another example, the disclosure describes a computing system comprising: processing means configured to: encrypt a first encryption key using a first system key to generate a first encrypted key; encrypt a second encryption key using the first system key to generate a second encrypted key; encrypt one or more blocks to generate one or more encrypted blocks, each of the one or more blocks encrypted with a respective data encryption key derived from the first encryption key and key data; store the one or more encrypted blocks; encrypt the key data using the second encryption key to generate encrypted key data; replace the first system key by determining a second system key; encrypt the first encryption key with the second system key to generate a replacement first 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 obtained first encryption key and the obtained key data are used to derive the data encryption key in decrypting the one or more encrypted blocks; and output data from the one or more encrypted blocks by decrypting the one or more encrypted blocks with the derived data encryption key.
[0011] In another example, the disclosure describes a computer-readable storage medium comprising instructions that, when executed, cause one or more processors of a computing system to: encrypt a first encryption key using a first system key to generate a first encrypted key; encrypt a second encryption key using the first system key to generate a second encrypted key; encrypt one or more blocks to generate one or more encrypted blocks, each block of the one or more blocks encrypted with a respective data encryption key derived from the first encryption key and key data; store the one or more encrypted blocks; encrypt the key data using the second encryption key to generate encrypted key data; replace the first system key by determining a second system key; encrypt the first encryption key with the second system key to generate a replacement first encrypted key; decrypt the replacement first encrypted key to obtain the first encryption key and decrypt the encrypted key data to obtain the key data, wherein the obtained first encryption key and the obtained key data are used to derive the data encryption key in decrypting the one or more encrypted blocks; and output data from the one or more encrypted blocks by decrypting the one or more encrypted blocks with the derived data encryption key.
[0012] The details of one or more embodiments of the application are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the application will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF DRAWINGS
[0013] Figures 1A-1B is a block diagram illustrating an example system to perform efficient and secure key rotation for backup storage in accordance with the techniques of this disclosure.
[0014] Figure 2 is a block diagram illustrating an example system to perform efficient and secure key rotation for backup storage in accordance with the techniques of this disclosure.
[0015] Figures 3A-3B is a block diagram illustrating an example system to perform efficient and secure key rotation for backup storage in accordance with the techniques of this disclosure.
[0016] Figure 4 is a flow diagram illustrating an example operational mode of a data platform to perform efficient and secure key rotation for backup storage in accordance with the techniques of this disclosure.
[0017] Throughout the drawings and the specification, like reference numerals refer to like elements. DETAILED DESCRIPTION
[0018] Figures 1A-1Bis a block diagram illustrating an example system that performs efficient and secure key rotation for backup storage, in accordance with one or more examples of the present disclosure. In Figure 1A In examples, the system 100 includes an application system 102. The application system 102 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 108 and one or more client devices 109 over a network 113. The application system 102 can include one or more physical or virtual computing devices that execute workloads 174 for the applications or services. The workloads 174 can include one or more virtual machines, containers, Kubernetes® pods each including one or more containers, bare-metal processes, and / or other types of workloads.
[0019] In Figure 1A In examples, the application system 102 includes application servers 170A-170M (collectively, “application servers 170”) that connect with database servers 172 implementing databases via a network. Other examples of the application system 102 can include one or more load balancers, web servers, network devices such as switches or gateways, or other devices used to implement one or more applications or services and to deliver the one or more applications or services to mobile devices 108 and client devices 109. The application system 102 can include one or more file servers. The one or more file servers can implement a primary file system of the application system 102. (In such instances, the file system 153 can be a secondary file system that provides backup, archive, and / or other services for the primary file system. References to file systems herein can include the primary file system or the secondary file system, e.g., the primary file system of the application system 102 or the file system 153 operating as a primary file system or a secondary file system.)
[0020] The application system 102 can be internally deployed and / or located at one or more data centers that are part of a public cloud, a private cloud, or a hybrid cloud. The applications or services can be distributed applications. The applications or services can support enterprise software, financial software, office or other productivity software, data analytics software, customer relationship management, web services, educational software, database software, multimedia software, information technology, healthcare software, or other types of applications or services. The applications or services can be provided as software as a service (SaaS), platform as a service (PaaS), infrastructure as a service (IaaS), data storage as a service (dSaaS), or other types of services in a service as a service (-aaS) form.
[0021] In some examples, application system 102 can represent an enterprise system that includes one or more workstations in the form of desktop computers, laptops, mobile devices, enterprise servers, network devices, and other hardware to support enterprise applications. Enterprise applications can include enterprise software, financial software, office or other productivity software, data analytics software, customer relationship management, web services, educational software, database software, multimedia software, information technology, healthcare software, or other types of applications. Enterprise applications can be delivered as a service from an external cloud service provider or other provider, natively executed on application system 102, or both.
[0022] In Figure 1A In examples, system 100 includes a data platform 150 that provides a file system 153 and archival functionality to application system 102, such as through storage system 105 and separate storage system 115. Data platform 150 can implement a distributed file system 153 and storage architecture to facilitate application system 102 accessing file system data and facilitating the transfer of data between storage system 105 and application system 102 via network 111. In the case of a distributed file system, data platform 150 enables devices of application system 102 to access file system data via network 111, 113 using a communication protocol as if such file system data were stored locally (e.g., to a hard disk of equipment of application system 102). 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 153 can be a primary file system or a secondary file system of application system 102.
[0023] File system manager 152 represents a collection of hardware devices and software components that implement file system 153 for data platform 150. Examples of file system functionality provided by file system manager 152 include storage space management, including deduplication, file naming, directory management, metadata management, partitioning, and access control. File system manager 152 executes a communication protocol to facilitate application system 102 accessing files and objects stored to storage system 105 over network 111.
[0024] Data platform 150 includes a storage system 105 having one or more storage devices 180A–180N (collectively, “storage devices 180”). Storage device 180 may represent one or more physical or virtual computing and / or storage devices that include storage media or otherwise have access to storage media. Such storage media may include one or more of the forms of flash drives, solid-state drives (SSDs), hard disk drives (HDDs), electrically programmable memory (EPROM) or electrically erasable programmable memory (EEPROM) and / or other types of storage media used to support data platform 150. Different storage devices in storage device 180 may have combinations of different types of storage media. Each of storage devices 180 may include system memory. Each of storage devices 180 may be a storage server, a network attached storage (NAS) device, or disk storage that may represent a computer device. Storage system 105 may be a redundant array of independent disks (RAID) system. In some examples, one or more storage devices in storage device 180 are both computing devices and storage devices that execute software for data platform 150, such as file system manager 152 and data protection manager 154 in the example of system 100, and store objects and metadata for data platform 150 to storage media. In some examples, a separate computing device (not shown) executes software for data platform 150, such as file system manager 152 and data protection manager 154 in the example of system 100. Each storage device in storage device 180 may be considered and referred to as a “storage node” or simply a “node”. Storage device 180 may represent a virtual machine running on a supported hypervisor, a cloud virtual machine, a physical rack server, or a computing model installed in a convergence platform.
[0025] In various examples, data platform 150 may run on a physical system, virtually, or in a cloud-native environment. For example, data platform 150 may be deployed as one or more physical clusters, virtual clusters, or cloud-based clusters running in a private cloud, hybrid private / public cloud, or public cloud deployed by a cloud service provider. In some examples of system 100, multiple instances of data platform 150 may be deployed, and file system 153 may be replicated among the various instances. In some cases, data platform 150 may be a compute cluster representing a single management domain. A number of scalable storage devices 180 may be available to meet performance requirements.
[0026] Data platform 150 can implement and provide multiple storage domains to one or more tenants, or isolate workloads 174 that require different data policies. A storage domain can be a data policy domain, which determines the policies for deduplication, compression, encryption, tiering, and other operations performed on objects stored using the storage domain. In this way, data platform 150 provides users with the flexibility to select a global data policy or a workload-specific data policy. Data platform 150 may support partitioning.
[0027] A view can be a protocol export residing within a storage domain. A view can inherit the data policy of its storage domain, but additional data policies can be specified for the view. Views can be exported via SMB, NFS, S3, and / or another communication protocol. Policies determining the data processing and storage performed by the data platform 150 can be assigned at the view level. Protection policies can specify backup frequency and retention policies, which may include data lockout periods. Backups 142 created according to protection policies inherit the data lockout and retention periods specified by the protection policies.
[0028] Each of Network 113 and Network 111 may be the Internet, or may include or represent any public or private communications network or other network. For example, Network 113 may be cellular, Wi-Fi®, ZigBee®, Bluetooth®, Near Field Communication (NFC), satellite, enterprise, service provider, and / or other types of networks that support the transfer of data between computing systems, servers, computing devices, and / or storage devices. One or more devices of such types may use any suitable communication technology across Network 113 or Network 111 to transmit and receive data, commands, control signals, and / or other information. Each of Network 113 or Network 111 may include one or more network hubs, network switches, network routers, satellite dish, or any other network equipment. Such network devices or components are operatively coupled to each other, thereby providing information exchange 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). Figures 1A-1B Each of the devices or systems shown may be operatively coupled to network 113 and / or network 111 using one or more network links. The links coupling such devices or systems to network 113 and / or network 111 may be Ethernet, Asynchronous Transfer Mode (ATM) or other types of network connections, and such connections may be wireless and / or wired connections. Figures 1A-1B One or more of the devices or systems shown or otherwise located on network 113 and / or network 111 may be in a remote location relative to one or more other devices or systems shown.
[0029] Application system 102 can use file system 153 provided by data platform 150 to generate objects and other data. File system manager 152 can create, manage, and store the objects and other data in storage system 105. For this purpose, application system 102 may be alternatively referred to as the "source system," file system 153 of application system 102 may be alternatively referred to as the "source file system," and storage system 105 may be alternatively referred to as the "source storage system." Application system 102 may communicate directly with storage system 105 via networks 111 and 113 to transfer objects for some purposes, and may also communicate with file system manager 152 via networks 111 and 113 to indirectly obtain objects or metadata from storage system 105 for some purposes. File system manager 152 generates metadata and stores it in storage system 105. The collection of data stored in storage system 105 and used to implement file system 153 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 used to support snapshots. The stored objects may include files, virtual machines, databases, applications, web pods, containers, any of workloads 174, system images, directory information, or other types of objects used by application system 102. Objects of different types and objects of the same type can be deduplicated relative to each other.
[0030] Data platform 150 includes a data protection manager 154 that provides backups of file system data for file system 153. In the example of system 100, data protection manager 154 may store one or more backups 142 of file system data stored in storage system 105 to one or more storage systems 115 via network 111.
[0031] Storage system 115 includes one or more storage devices 140A–140X (collectively referred to as “storage device 140”). Storage device 140 may represent one or more physical or virtual computing and / or storage devices that include storage media or otherwise have access to storage media. Such storage media may include one or more of the forms of flash drives, solid-state drives (SSDs), hard disk drives (HDDs), optical discs, electrically programmable memory (EPROM) or electrically erasable programmable memory (EEPROM) and / or other types of storage media. Different storage devices of storage device 140 may have different mixtures of storage media. Each of storage devices 140 may include system memory. Each of storage devices 140 may be a storage server, a network attached storage (NAS) device, or disk storage that may represent a computer device. Storage system 115 may include a redundant array of independent disks (RAID) system. Storage system 115 may be capable of storing a much larger amount of data than storage system 105. Storage device 140 may also be configured for long-term storage of information, which is more suitable for archiving purposes.
[0032] In some examples, storage systems 105 and / or 115 may be storage systems deployed at and managed by a cloud storage provider and referred to as “cloud storage systems.” Example cloud storage providers include, for example, Amazon Web Services (AWS®), Microsoft Azure®, Dropbox®, Oracle Cloud®, and Google Cloud Platform (GCP). In some examples, storage system 115 may co-locate with storage system 105 in a data center, on-premises, or in a private, public, or hybrid private / public cloud. Storage system 115 may be referred to as an “external target” of backup 142. When deployed and managed by a cloud storage provider, storage system 115 may be referred to as a “cloud storage device.” Storage system 115 may include one or more interfaces for managing the transfer of data between storage systems 105 and 115 and / or between application system 102 and storage system 115. Data platform 150, which supports application system 102, relies on storage system 105 to support latency-sensitive applications. However, because storage system 105 is typically more difficult to scale or more expensive to scale, data platform 150 may use storage system 115 to support use cases such as backup and archiving. A file system backup may be a copy of file system 153 used to support protection of file system 153 for rapid recovery (typically due to some data loss in file system 153), and a file system archive (“archive”) may be a copy of file system 153 used to support long-term retention and viewing. A “copy” of file system 153 may include such data required to restore or view the state of file system 153 at the time of backup or archiving.
[0033] Data protection manager 154 can back up file system data of file system 153 at any time according to backup policies 158. These backup policies specify, for example, backup periodicity and timing (daily, weekly, etc.), which file system data to store, backup retention period, storage location, access control, etc. Initial backup 142 of file system data may correspond to the state of the file system data at the initial backup time (the backup creation time of the initial backup). Depending on the backup policy, the initial backup may include a complete backup of the file system data, or it may include a complete backup of less than the file system data. For example, the initial backup may include all objects of file system 153 or one or more selected objects of file system 153.
[0034] One or more subsequent incremental backups 142 of file system 153 may correspond to the corresponding state of file system 153 at the respective subsequent backup creation time (i.e., after the backup creation time corresponding to the initial backup). Subsequent backups 142 may include incremental backups of file system 153. Subsequent backups may correspond to incremental backups of one or more objects of file system 153. Some of the file system data of file system 153 that was stored on storage system 105 at the initial backup creation time may also be stored on storage system 105 at the subsequent backup creation time. Subsequent incremental backups may include data that was not previously stored on storage system 115. Data protection manager 154 may perform deduplication on file system data included in subsequent backups against file system data included in one or more previous backups (including the initial backup) to reduce the amount of storage used. (Referring to "time" in this disclosure may refer to a date and / or time. Time may be associated with a date. (For example, multiple backups may occur at different times on the same day.)
[0035] In system 100, data protection manager 154 uses block file 162 to store file system data to storage system 115 as backup 142. Data protection manager 154 can use any of backups 142 to subsequently restore the file system (or portions thereof) to its state at the time of backup creation, or can use backup 142 to create or present a new file system (or "view") based on backup 142. As described above, data protection manager 154 can perform deduplication on file system data included in subsequent backups 142 against file system data included in one or more previous backups. For example, deduplication can be performed on a second object in file system 153 included in a second backup 142 against a first object in a first earlier backup of file system 153. Data protection manager 154 can remove blocks of the second object and generate metadata having references (e.g., pointers) to blocks stored in block 164 of one of the block files 162. The stored blocks in this example are instances of blocks stored against the first object.
[0036] Data Protection Manager 154 may apply deduplication as part of a write process that writes (i.e., stores) objects from file system 153 to backup 142 in storage system 115. Deduplication can be implemented in various ways. For example, the method can be fixed-length or variable-length, the block size used for the file system can be fixed or variable, and deduplication fields can be applied globally or on a workload basis. Fixed-length deduplication involves defining data streams at fixed intervals. Variable-length deduplication involves defining data streams at variable intervals to improve the ability to match data, regardless of the file system block size method being used. This algorithm is more complex than fixed-length deduplication algorithms but is more efficient in most cases and typically 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 block being deduplicated.
[0037] In some examples, for variable-length deduplication, the block size can be within a fixed range. For example, data protection manager 154 can calculate blocks with block sizes ranging from 16 kB to 48 kB. Data protection manager 154 can avoid deduplication for objects smaller than 16 kB. In some exemplary implementations, when considering deduplication of an object's data, data protection manager 154 can compare the data's block identifier (ID) (e.g., the hash of the entire block) with existing block IDs of stored blocks. If a match is found, data protection manager 154 can update the object's metadata to point to the matching, stored block. If no matching block is found, data protection manager 154 writes the object's data as a block in block file 164 of block file 162 to the storage device. Additionally, data protection manager 154 can store the block ID associated with the newly stored block in the block metadata to allow for future deduplication against the newly stored block. Typically, for any of the backups 142, the block metadata can be used to generate, view, retrieve, or restore objects stored as block 164 (and references to it) within block file 162, as described in more detail below.
[0038] Each block file in block file 162 comprises multiple blocks 164. Block file 162 can be of fixed size (e.g., 8MB) or variable size. Block file 162 can be stored using data structures provided by a cloud storage provider to storage system 115. For example, each of the following can be an S3 object in an AWS cloud storage bucket, an object in an Azure Blob storage device, an object in an Oracle Cloud object storage device, or another similar data structure used in a storage system of another cloud storage provider. Any of the blocks in block file 162 may be subject to a WORM lock with a write-once, read-many (WORM) lock expiration time. The WORM lock used for S3 objects is referred to as an "object lock," and the WORM lock used for objects in an Azure Blob storage device is referred to as "blob immutability."
[0039] The process of deduplicating multiple objects across multiple backups produces block files 162, each containing multiple blocks 164 for multiple distinct objects associated with the multiple backups. In some examples, for instance, different backups 142 may have copies of objects that are essentially identical data, for example, objects in a file system that have not been modified. Backup objects may be represented or “stored” as having metadata that includes references to the blocks that enable access to the objects. Therefore, the description herein of backups “storing,” “having,” or “including” objects includes instances where the backup does not store the data of the objects in their native form.
[0040] Initial backups and one or more subsequent incremental backups may each be associated with a corresponding retention period, and in some cases, with a data lock period. As described above, a data management policy (not shown) can specify the backup retention period and the backup data lock period. The backup retention period is the amount of time that the backup and the blocks referenced by the backed-up objects must be stored before the backup and the blocks are eligible for removal from the storage device. The backup retention period begins when the backup is stored (backup creation time). A block file containing backup object references and subject to the backup retention period but not the backup data lock period can be modified at any time before the retention period expires. The nature of such modification must be such that it is able to preserve the data referenced by the backed-up objects.
[0041] Users or applications associated with application system 102 can access (e.g., read or write) backups stored in storage system 115. Users or applications may delete some data due to malicious attacks (e.g., viruses, ransomware, etc.), rogue or malicious administrators, and / or human error. User credentials may be compromised, and therefore, backups stored in storage system 115 may be vulnerable to ransomware attacks. To reduce the possibility of accidental or malicious data deletion or corruption, in addition to the protections described herein, a data lock with a data lockout period may be applied to backup 142.
[0042] As described above, block file 162 may represent an object in the backup storage system (shown as "storage system 115", also referred to as "backup storage system 115") that conforms to the underlying architecture of backup storage system 115. Data platform 150 includes a data protection manager 154 that supports storing backup 142 in the form of block file 162, which interfaces with backup storage system 115 to store block file 162 after it has been formed from one or more blocks 164 of data. Data protection manager 154 may apply a process called "deduplication" relative to block 164 to remove redundant blocks and generate metadata that links the redundant blocks to previously stored blocks 164, thereby reducing the storage consumed (and thus reducing the storage required to store the blocks).
[0043] Data protection manager 154 can protect backup 142, archives, or other copies of file system data by controlling access to backup 142. For example, data protection manager 154 can encrypt block 164 of backup 142 before storing it on storage system 115, and require user authentication before decrypting the encrypted block 164. As will be further described herein, data protection manager 154 can encrypt and / or decrypt block 164 of backup 142 using a key encryption key, an encryption key, key data, and a data encryption key, and rotate the key to protect backup 142 (e.g., prevent unauthorized decryption / leakage). Although the description focuses primarily on block 164 and backup 142, the encryption, decryption, and key rotation techniques described herein can be applied to backups, archives, or other write-once-read-many (WORM) storage, as well as other similar copies of data.
[0044] Data Protection Manager 154 may perform one or more administrative functions (e.g., creation, deletion, modification, storage, authentication, verification, access control) on encrypted information (e.g., key data, encryption keys, including data encryption keys, certificates) and authentication information (e.g., usernames or user identifiers and passwords) related to the encryption and / or decryption of Block 164. In some examples, Data Protection Manager 154 may perform at least some administrative functions by using confidential computing. Some examples of confidential computing platforms include Intel® SGX / TDX, AMD® SEV, AWS NITRO SYSTEM®, NVIDIA® H100, AZURE® CONFIDENTIAL COMPUTE, and GOOGLE® CLOUD.
[0045] In some examples, the data protection manager 154 may utilize enclave 132, which provides encryption, decryption, data storage, or other functions within a trusted execution environment (TEU) of the confidential computing platform or system of data platform 150. The TEU may include isolated hardware, such as isolated processing components (e.g., processing circuitry of one or more processors), one or more protected memory regions, or both. The TEU can be considered secure or “trusted” because it is isolated, preventing the operating system, applications, or other software (regardless of privilege level) from directly accessing or modifying instructions within the hardware region.
[0046] The trusted execution environment (TEE) can be verified, for example, through an external verification system, to ensure its integrity (e.g., the software and / or hardware of the TEE is genuine and unadulterated). The verification system can be a third-party trusted authority (such as Intel® Trusted Authority), which can evaluate the verification and verify whether the TEE of Enclave 132 is genuine or legitimate. The verification may include an indication that the integrity of the TEE is established if verified by the verification system (e.g., the TEE is genuine, or in other words, it is not compromised). After the verification system verifies or is unable to verify the verification, Data Platform 150 may receive an indication from the verification system regarding the validity or invalidity of the verification. Data Platform 150 may disable one or more functions of Enclave 132 in response to receiving an indication that the verification is invalid. For example, Data Platform 150 may disable Enclave 132 to prevent its use. Data Platform 150 may enable or avoid disabling Enclave 132 in response to receiving an indication that the verification is valid.
[0047] Enclave 132 can provide access to the functionality of enclave 132 to components outside its trusted execution environment. For example, enclave 132 can establish one or more secure sessions (e.g., secure communication) between enclave 132 and data protection manager 154, such as... Figure 1A As shown in the examples, or in other devices or systems outside the trusted execution environment, such as storage system 105, storage system 115, and application system 102, to securely communicate with such devices or systems. In some examples, enclave 132 may implement an API or remote procedure call framework (e.g., gRPC) to provide access to the functionality or data of enclave 132.
[0048] Data protection manager 154 may include key management system (KMS) 157 to initialize or establish (e.g., generate and store) various encryption information for encryption purposes (e.g., encrypting and decrypting data, such as block 164 of backup 142). For example, key management system 157 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., block 164), or various subsets thereof that data protection manager 154 may use for encryption purposes. Key management system 157 may generate encryption keys by generating bit sequences that, when applied to encrypted data, decrypt the encrypted data to obtain (e.g., reveal) the original data from the encrypted data. Data protection manager 154 may apply encryption keys, including such bit sequences generated by key management system 157, to the original data to encrypt the original data and thereby generate encrypted data.
[0049] The key management system 157 can generate and use various types of encryption keys, including symmetric keys and asymmetric keys (e.g., public / private key pairs for Public Key Infrastructure (PKI)). For example, the key management system 157 can generate a symmetric key to encrypt raw data to generate encrypted data and decrypt the encrypted data to obtain the original data. As another example, the key management system 157 can generate an asymmetric key that includes multiple keys (e.g., a public key and a private key). In this case, the key management system 157 can use a first key (e.g., a public key) to encrypt the raw data to generate encrypted data, and can use a second key (e.g., a private key) to decrypt the encrypted data to obtain the original data.
[0050] The key encryption key can represent an encryption key that the key management system 157 can use to encrypt other encryption keys. The key management system 157 can use the key encryption key to encrypt an encryption key to generate an encrypted key. In some examples, the key management system 157 can encrypt part or all of an encryption key. For example, the key management system 157 can use the key encryption key to encrypt the private key, public key, or both in a public / private key pair of an asymmetric key.
[0051] In operation, the data platform 150 or its components (e.g., data protection manager 154, key rotation manager 156) may invoke the encryption functions of the key management system 157. For example, the data protection manager 154 and / or the key rotation manager 156 may invoke the key management system 157 to generate encryption keys, key encryption keys, key data (e.g., random salt), and / or data encryption keys.
[0052] Data protection manager 154 may include key rotation manager 156, which rotates (e.g., replaces) the encryption key used by data protection manager 154 to encrypt data (e.g., block 164). For example, key rotation manager 156 may replace an existing encryption key with another encryption key. Once the encryption key is replaced, data protection manager 154 may stop using the replaced encryption key and instead use the replacement encryption key for encryption purposes.
[0053] The key management system 157 can use an encryption key and key data to derive (e.g., generate) a data encryption key, and the data protection manager 154 can use the data encryption key to encrypt and decrypt data, such as block 164 of backup 142. For example, the key management system 157 can use an encryption key and key data (e.g., a random salt) as input to generate a data encryption key. The key management system 157 can generate random numbers or random data to generate key data units. As will be further described below, each individual distinct key data unit must be obtained to decrypt block 164 and restore backup 142. In some examples, the data protection manager 154 can protect backup 142 by encrypting each block 164 of backup 142 using an encryption key along with corresponding key data to generate a corresponding data encryption key for encrypting each individual block 164. Each individual key data unit may contain different data relative to other key data units. For example, the key management system 157 may generate first key data (e.g., a first random number) for deriving a first data encryption key and second key data (e.g., a second distinct random number) for deriving a second data encryption key. The first data encryption key can be used to encrypt and / or decrypt the first block in block 164, and the second data encryption key can be used to encrypt and / or decrypt the second block in block 164. In this way, for a specific block 164, unauthorized access to the key data does not allow the decryption of other blocks 164.
[0054] The key management system 157 can generate or derive data encryption keys in various ways, such as by executing various key derivation functions. For example, the key management system 157 can execute a hash-based key derivation function (“HKDF”) to generate a data encryption key. For example, the key management system 157 can use an encryption key and key data as input to execute an HKDF to generate a data encryption key. The data protection manager 154 can use the data encryption key to encrypt data to generate encrypted data. For example, the data protection manager 154 can use the data encryption key to encrypt a block to generate an encrypted block 164.
[0055] The key management system 157 can protect (e.g., encrypt) an encryption key using a key encryption key. For example, the key management system 157 can generate a first key encryption key, which may be referred to as a KMS key encryption key (“KMS KEK”), also referred to herein as the “system key,” for encrypting the encryption key. The key management system 157 can encrypt the encryption key using the KMS KEK to generate an encrypted key. Continuing the above example, for example, the key management system 157 can encrypt the encryption key used to derive a data encryption key. The encrypted key generated 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. The key management system 157 can store the key encryption key, including the KMS KEK, the encrypted key, or both, in a storage device such as enclave 132 and / or storage system 105.
[0056] As described above, the key rotation manager 156 can rotate the key encryption key. For example, in the example above, the key rotation manager 156 can rotate the KMS KEK by replacing the KMS KEK with another KMS KEK. For example, the key rotation manager 156 (such as through the key management system 157) can generate a replacement KMS KEK, and the key rotation manager 156 can replace the existing KMS KEK with the replacement KMS KEK. The replacement key encryption key (e.g., the replacement KMS KEK) can be objected to, deleted, or otherwise invalidated. Once replaced, the data protection manager 154 can stop using the replacement KMS KEK for encryption purposes and use the replacement KMS KEK to encrypt the encryption key.
[0057] For example, a key rotation manager 156, such as that of a key management system 157, may encrypt an encryption key used to derive a data encryption key using a replacement KMS KEK instead of a replacement KMS KEK. As part of replacing an existing KMS KEK, the key rotation manager 156 may decrypt the encrypted key to obtain an encryption key, and encrypt the key using the replacement KMS KEK (instead of the replacement KMS KEK) for encryption (e.g., re-encryption). In some examples, the key rotation manager 156 may decrypt the encrypted key using the replacement KMS KEK before encrypting the encryption key using the replacement KMS KEK.
[0058] Some systems may use a single data encryption key for data belonging to a specific tenant, partition, or workload. Such systems may encrypt the data encryption key using a key encryption key, for example. The key encryption key can be replaced with a replacement key encryption key, and the data encryption key can be re-encrypted by such a system using the replacement key encryption key. However, exposing the data encryption key in these systems allows unauthorized parties to decrypt and leak all data encrypted with the data encryption key. In some cases, some systems may use an intermediate encryption key to encrypt and protect the data encryption key. This intermediate encryption key can also be encrypted using the key encryption key. Therefore, when the key encryption key is replaced with a replacement key encryption key, the intermediate encryption key can be re-encrypted using the replacement key encryption key. However, similar to the aforementioned systems, exposing the encryption key (in this case, the intermediate encryption key) allows unauthorized parties to decrypt and leak all data encrypted using the intermediate encryption key.
[0059] According to the techniques described herein, the data protection manager 154 can utilize multiple encryption keys to enhance data security. For example, each of the multiple encryption keys can be associated with a different party, computing / storage device, or both, to enhance the security of encrypted data (e.g., block 164). For example, a first key encryption key can be assigned to a first party, while a second key encryption key can be assigned to a second party. Examples of such parties include data owners, which may be enterprises or other users of application system 102, and data platform providers (e.g., service providers offering data platform 150). By utilizing multiple encryption keys, a successful attack on a party, device, or system possessing one of the encryption keys prevents data from being decrypted or leaked.
[0060] For example, the key management system 157 can generate a first encryption key and a second encryption key. The key management system 157 can encrypt the first and second encryption keys using a KMS KEK. To encrypt data such as blocks of backup 142, the key management system 157 can derive a data encryption key. For example, the key management system 157 can use the first encryption key and key data (e.g., a random salt) as input to execute a key derivation function (e.g., HKDF) to generate a data encryption key. The data protection manager 154 can encrypt data using the data encryption key. The data protection manager 154 can store encrypted data, such as in the form of encrypted blocks 164 of backup 142, such as storing it in storage system 115.
[0061] The key management system 157 can use a second encryption key to encrypt key data to generate encrypted key data 166, instead of using the same encryption key (e.g., the first encryption key). Therefore, both the first encryption key and the key data, which can be used together to derive the data encryption key, are protected by encryption based on different encryption keys (e.g., the first encryption key and the second encryption key, respectively). In this way, a successful attack on a single encryption key (e.g., the first encryption key or the second encryption key) is insufficient to allow an unauthorized party to decrypt and / or leak the encrypted block 164. In some examples, the data protection manager 154 may store the encrypted block 164 together with its corresponding encryption key data 166 (e.g., encrypted key data including key data used to derive the data encryption key for the encrypted block 164). For example, as... Figure 1A As shown in the example, the data protection manager 154 stores the encrypted block 164 together with the corresponding encrypted key data 166 in a storage system such as 115.
[0062] The key management system 157 can use encryption to protect a first encryption key and a second encryption key. For example, the key management system 157 can use a KMS KEK to encrypt the first encryption key to generate a first encrypted key, and use a KMS KEK to encrypt the second encryption key to generate a second encrypted key. The key management system 157 can also use a KMS KEK to encrypt and decrypt the encryption keys. For example, the key management system 157 can use a KMS KEK to decrypt the first encrypted key to obtain the first encryption key, and use a KMS KEK to decrypt the second encrypted key to obtain the second encryption key.
[0063] In some examples, the key management system 157 may store encrypted keys only in the form of encrypted keys (e.g., a first encrypted key and a second encrypted key), rather than storing them in unencrypted form, such as in enclave 132, storage system 105, and / or storage system 115. For example, the data protection manager 154 may store the first encrypted key in storage system 105 or storage system 115, and may store the second encrypted key in other storage devices, such as enclave 132. Since enclave 132 is within the trusted execution environment of the confidential computing platform, enclave 132 can use the trusted execution environment of enclave 132 to protect the second encrypted key or other encrypted keys or encrypted information. For example, enclave 132 may use the sealing process of the trusted execution environment of enclave 132 to seal the encrypted keys and other encrypted information stored in enclave 132. For example, enclave 132 may store and seal encrypted keys, such as the second encrypted key, by “encapsulating” and / or assigning specific platform measurements or characteristics to the encrypted keys (such as encrypting the encrypted keys using platform measurements and characteristics). Continuing this example, the encrypted key (e.g., the second encrypted key) can only be desealed (e.g., "unsealed") if the platform's measurement results or characteristics match those used to encrypt the sealing key. In this way, when the platform's measurement results or characteristics differ from those used to encrypt the sealing key, the sealed encryption key or other sealed encrypted information (e.g., KMS KEK) may not be decrypted for use.
[0064] To encrypt a block, a data protection manager 154 (such as via a key management system 157) can use a first encryption key and key data to generate or derive a data encryption key. For example, the data protection manager 154 can use the first encryption key and key data as input to perform HKDF to generate a data encryption key. In some examples, the key management system 157 can generate different key data (e.g., a random salt) for each data unit (e.g., a block) to be encrypted. The data protection manager 154 can then encrypt the block using the data encryption key to generate an encrypted block 164.
[0065] As described above, the first encryption key can be protected by a data protection manager 154, which encrypts the first encryption key using a KMSKEK to generate a first encrypted key. The data protection manager 154 can obtain the first encryption key from the first encrypted key by, for example, decrypting the first encrypted key using a KMSKEK. In addition to protecting the first encryption key with encryption, the data protection manager 154 can also protect key data with encryption. For example, the data protection manager 154 can encrypt the key data to generate encrypted key data 166. The data protection manager 154 (e.g., through a key management system 157) can encrypt the key data with a second encryption key to generate encrypted key data 166.
[0066] In some examples, data protection manager 154 can retrieve encrypted keys, encrypted blocks, and / or encrypted key data from various storage devices (including storage system 105, storage system 115, and / or enclave 132) that store encrypted keys, encrypted blocks, and / or encrypted key data. For example, data protection manager 154 can retrieve a first encrypted key from storage system 105 or storage system 115, and can retrieve a second encrypted key from enclave 132. Data protection manager 154 can retrieve data from enclave 132 by executing a function call to a trusted execution environment of enclave 132.
[0067] To decrypt the encrypted block 164 stored in storage system 115, key data used to encrypt block 164 is required. Continuing the example above, for example, key data contained in encrypted key data 166 is needed to generate a data encryption key for decrypting the encrypted block 164. Data protection manager 154 can retrieve the encrypted block 164 and the encrypted key data 166 used to encrypt the block 164 from storage system 115. Data protection manager 154 can obtain key data from encrypted key data 166 by decrypting the encrypted key data 166 (e.g., through key management system 157).
[0068] In some examples, the data protection manager 154 can obtain key data from encrypted key data 166 via enclave 132. For example, the data protection manager 154 can request from enclave 132, and in response, enclave 132 can decrypt the encrypted key data 166 to obtain the key data encoded in the encrypted key data 166. Enclave 132 can retrieve the encryption key from storage within the enclave itself or within the enclave's trusted execution environment, and use the encryption key to decrypt the encrypted key data 166. For example, enclave 132 can retrieve a second encryption key from storage within the enclave itself or within the enclave's trusted execution environment, and use the second encryption key to decrypt the encrypted key data 166 to obtain the key data.
[0069] In some examples, the second encryption key can be an asymmetric key. For example, the second encryption key may include a private key and a public key, such as a public / private key pair in a PKI. In this case, to encrypt key data with the second encryption key, such as when encrypting block 164, the data protection manager 154 can encrypt the key data with the public key of the second encryption key to generate encrypted key data 166. To decrypt the encrypted key data 166 encrypted with the public key of the second encryption key, the data protection manager 154 can decrypt the encrypted key data 166 with the private key of the second encryption key. When the second encryption key is an asymmetric key, the key rotation manager 156 can 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 using a KMS KEK to generate a second encrypted key.
[0070] Data protection manager 154 can derive a data encryption key to decrypt the encrypted block 164 using key data obtained from encrypted key data 166 and a first encryption key. For example, data protection manager 154 can generate a data encryption key by performing a key derivation function (e.g., HKDF) using the first encryption key and key data from encrypted key data 166 as input. Data protection manager 154 can then decrypt the encrypted block 164 using the derived data encryption key. Data protection manager 154 can obtain the first encryption key from the first encryption key by decrypting the first encryption key (e.g., using KMS KEK).
[0071] As can be seen, both the first and second encryption keys are used during the encryption and decryption of block 164 of backup 142. The key management system 157 protects the first and second encryption keys by encrypting them with a KMS KEK. As described above, the key management system 157 can use a KMS KEK to encrypt the first encryption key to generate a first encrypted key, and can use a KMS KEK to encrypt the second encryption key to generate a second encrypted key.
[0072] Key rotation manager 156 can mitigate or prevent security problems caused by unauthorized access to the KMS KEK by rotating the KMS KEK. For example, the KMS KEK may be unintentionally leaked (e.g., accessed) without authorization (such as through system intrusion, misconfiguration, or privilege abuse). Key rotation manager 156 can replace the damaged KMS KEK with a replacement KMS KEK to prevent further use of the damaged KMS KEK. Key rotation manager 156 can encrypt encryption keys (e.g., a first encryption key and a second encryption key) with the replacement KMS KEK, for example, through key management system 157, to prevent access to the encryption keys using the damaged KMS KEK. It can be seen that key rotation manager 156 can re-encrypt the first encryption key and the second encryption key when replacing the KMS KEK, which can be performed in O(1) or constant time, instead of performing O(n) re-encryption, such as re-encrypting the data encryption key for n blocks 164.
[0073] Therefore, the key rotation manager 156 can protect data (e.g., block 164 of backup 142) by efficiently and securely rotating the encryption key used to encrypt the encryption key. As described herein, the key rotation manager 156 can provide efficient and secure key rotation for various types of data, including the encrypted block 164, where the corresponding EDEK (e.g., encrypted key data) is stored along with each encrypted block. According to the described technique, the key rotation manager 156 can be executed in constant time (e.g., O(1)) instead of performing O(n) re-encryption in conjunction with key rotation. By using multiple encrypted keys and their encryption based on the rotation-based KMS KEK, the data protection manager 154 avoids re-encrypting previously stored backup data (e.g., previously stored encrypted block 164) in conjunction with key rotation.
[0074] Key rotation manager 156 improves data security by performing key rotation more efficiently (e.g., O(1) to O(n) re-encryption) and without high computational resource consumption even when there are very large amounts of encrypted backup data. Key rotation manager 156 can perform key rotation to mitigate and / or prevent security issues (e.g., unauthorized data access / leakage, privilege abuse) related to the unintended or unauthorized use of encrypted information such as encryption keys, key encryption keys, data encryption keys, and key data. The constant-time efficiency of key rotation performed by key rotation manager 156 reduces system load and / or system downtime and allows for more frequent key rotation to further mitigate and / or prevent security issues related to the unintended or undesirable leakage of such encrypted information. Security improvements are achieved by preventing the leakage of large amounts of data (e.g., gigabytes or terabytes of data) that inherently pose security risks and consume significant computational resources.
[0075] Figure 1B System 190 is Figure 1A A variant of system 100, in which data platform 150 may use block files 162 stored on a backup storage system 115 located internally or locally on data platform 150 to store backups 142. In some examples of system 190, storage system 115 allows users or applications to create, modify, or delete block files 162 via file system manager 152. In system 190, Figure 1B Storage system 105 can be the primary storage system 105 used by system 190 or data platform 150 for initial storage and accumulation of blocks 164 before backup to storage system 115. Although not shown, in some examples, storage system 105 may be located internally or locally to data platform 150, regardless of whether storage system 115 is located remotely or locally to data platform 150.
[0076] Figure 2 This is a block diagram illustrating an exemplary system 200 according to the technology of this disclosure. Figure 2 System 200 can be described as Figure 1A System 100 or Figure 1B This document provides examples or alternative implementations of system 190 (in which block file 162 is written to local storage system 115). Figure 1A and Figure 1B Contextual description Figure 2 One or more aspects of.
[0077] exist Figure 2 In the example, system 200 includes network 111, data platform 150 implemented by computing system 202, and storage system 115. Figure 2In this context, network 111, data platform 150, and storage system 115 can correspond to... Figure 1A The network 111, data platform 150, and storage system 115 are described. Although only one storage system 115 is depicted, the data platform 150 may use multiple instances of storage system 115 to apply the techniques according to this disclosure. Different instances of storage system 115 may be deployed by different cloud storage providers, the same cloud storage provider, enterprises, or other entities.
[0078] The computing system 202 can 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 capable of performing the operations and / or functions described in one or more examples according to this disclosure. In some examples, the computing system 202 represents a cloud computing system, server farm, and / or server cluster (or a portion thereof) that provides services to other devices or systems. In other examples, the computing system 202 may represent or be implemented through one or more virtualized computing instances (e.g., virtual machines, containers) of a cloud computing system, server farm, data center, and / or server cluster.
[0079] exist Figure 2 In the example, computing system 202 may include one or more communication units 215, one or more input devices 217, one or more output devices 218, and one or more storage devices of local storage system 105. Local storage system 105 may include various components. For example, local storage system 105 may include interface module 226, file system manager 152 and policy 158, as well as data protection manager 154, key rotation manager 156 and key management system 157. One or more of the devices, modules, storage areas or other components of computing system 202 may be interconnected to enable inter-component communication (physical, communicative and / or operational). In some examples, such connectivity may be provided via communication channels (e.g., communication channel 212), which may represent one or more of system buses, network connections, inter-process communication data structures, or any other method for conveying data.
[0080] The computing system 202 includes processing components. Figure 2 In the example, the processing component includes one or more processors 213, which are configured to implement functions associated with or related to the computing system 202. Figure 2The functionality associated with one or more modules shown and described below and / or the execution of instructions associated with the above. One or more processors 213 may be processing circuitry, may be part of processing circuitry, and / or may include a processing circuitry system that performs operations according to one or more examples of this disclosure. Examples of processors 213 include microprocessors, application processors, display controllers, auxiliary processors, one or more sensor hubs, and any other hardware configured to function as a processor, processing unit, or processing device. The computing system 202 may use one or more processors 213 to perform operations according to one or more examples of this disclosure using software, hardware, firmware, or a mixture of hardware, software, and firmware residing in and / or executing at the computing system 202.
[0081] One or more processors 213 may include one or more enclaves 132. In some examples, an enclave 132 may include processing components, memory, or both isolated from the rest of the hardware of the processor 213. For example, an enclave 132 may include physically isolated processing components, memory, or both, wherein the processor 213 constitutes a trusted execution environment for a confidential computing platform.
[0082] One or more communication units 215 of computing system 202 can communicate with devices outside computing system 202 by transmitting and / or receiving data, and in some respects can operate as both an input device and an output device. In some examples, communication unit 215 can communicate with other devices via a network. In other examples, communication unit 215 can transmit and / or receive radio signals on a radio network (such as a cellular radio network). In other examples, communication unit 215 of computing system 202 can transmit and / or receive satellite signals on a satellite network. Examples of communication unit 215 include network interface cards (e.g., Ethernet cards), optical transceivers, radio frequency transceivers, GPS receivers, or any other type of device capable of transmitting and / or receiving information. Other examples of communication unit 215 may include devices capable of communicating via Bluetooth®, GPS, NFC, ZigBee® and cellular networks (e.g., 3G, 4G, 5G) and Wi-Fi® radios in mobile devices, as well as Universal Serial Bus (USB) controllers. Such communication may comply with, implement, or follow appropriate protocols, including Transmission Control Protocol / Internet Protocol (TCP / IP), Ethernet, Bluetooth®, NFC, or other technologies or protocols.
[0083] One or more input devices 217 may represent any input device of computing system 202 not otherwise described separately herein. Input devices 217 may generate, receive, and / or process input. For example, one or more input devices 217 may generate or receive input from a network, a user input device, or any other type of device for detecting input from a person or machine.
[0084] One or more output devices 218 may represent any output device of computing system 202 not otherwise described separately herein. Output devices 218 may generate, present, and / or process output. For example, one or more output devices 218 may generate, present, and / or process output in any form. Output devices 218 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 outputs. Some devices may function as both input and output devices. For example, a communication device may transmit data to and receive data from other systems or devices via a network.
[0085] One or more storage devices of the local storage system 105 within the computing system 202 may store information for processing during operation of the computing system 202, such as random access memory (RAM), flash memory, solid-state drive (SSD), hard disk drive (HDD), etc. The storage devices may store program instructions and / or data associated with one or more modules among the modules described according to one or more examples of this disclosure. One or more processors 213 and one or more storage devices may provide an operating environment or platform for such modules, which may be implemented as software, but in some examples may include any combination of hardware, firmware, and software. One or more processors 213 may execute instructions, and one or more storage devices of the storage system 105 may store instructions and / or data of one or more modules. The combination of processors 213 and the local storage system 105 may retrieve, store, and / or execute instructions and / or data of one or more applications, modules, or software. The processor 213 and / or the storage devices of the local storage system 105 may also be operatively coupled to one or more other software and / or hardware components, including but not limited to the computing system 202 and / or one or more devices or systems shown as connected to the computing system 202.
[0086] File system manager 152 can perform functions related to providing file system 153, as described above. Figure 1AThe file system manager 152 can generate and manage file system metadata 232 for constructing file system data 230 of the file system 153, and store the file system metadata 232 and file system data 230 in the local storage system 105. The file system metadata 232 may include one or more trees that describe the objects and file system hierarchy within the file system 153 and can be used to write or retrieve objects within the file system 153. The file system manager 152 can interact and / or cooperate with one or more modules of the computing system 202, including interface module 226 and data protection manager 154.
[0087] Data protection manager 154, key rotation manager 156, and key management system 157 can perform backup functions related to the backup 142 of storing and protecting file system 153, as referenced above. Figure 1A The above-described operations include the encryption of the key via a rotating key and the encryption and decryption of block 164. Data Protection Manager 154 can generate one or more backups 142 and store file system data 230 as block 164 within block file 162 in backup storage system 115. Data Protection Manager 154 can selectively deduplicat object blocks within file system data 230 according to one or more policies 158 using an adaptive deduplication process. Data Protection Manager 154 can generate and manage block metadata 224 for generating, viewing, retrieving, or restoring any backup 142. Backup metadata 222 may include the corresponding original data lock period for backup 142. Data Protection Manager 154 can generate and manage block metadata 224 for generating, viewing, retrieving, or restoring objects stored as block 164 (and references thereto) within block file 162 for any backup 142. Logical files can be used to represent and manipulate stored objects to identify blocks of objects.
[0088] Local storage system 105 may store block metadata 224, including a block table describing block 164. The block table may include a corresponding block ID for block 164 and may contain a pointer to block file 162 and an offset within block file 162 for retrieving block 164 from one or more storage systems 115 of one or more cloud environments 130. Block 164 is written to block file 162 at a different offset. By comparing the new block ID with the block table, data protection manager 154 can determine whether the data already exists on the system. Data protection manager 154 can use the block table to look up the block file identifier of the block file containing the block.
[0089] Local storage system 105 may include a block file table that describes the corresponding physical or virtual location of block file 162 on storage system 115, as well as other metadata about the block file, such as checksums, encrypted data, compressed data, etc. For example, in Figure 2 In this context, the data protection manager 154 can store block metadata 224, including the block file table, to the local storage system 105. Optionally or in conjunction with the file system manager 152, the data protection manager 154 can use the block metadata 224 to restore any backup 142 to a file system implemented by the data platform 150, which can then be presented to other systems by the file system manager 152.
[0090] Interface module 226 executes an interface through which other systems or devices can determine the operation of file system manager 152 or data protection manager 154. Another system or device can communicate via the interface of interface module 226 to specify one or more policies 158.
[0091] System 200 can be modified to achieve this. Figure 1B Example of system 190. In the modified system 200, block file 162 is stored in local backup storage system 115 to support backup 142.
[0092] The interface module 240 of the backup storage system 115 executes an interface through which other systems or devices can create, modify, delete, or extend the WORM lock expiration time for any block file 162. The interface module 240 executes and presents an API. The interface presented by the interface module 240 can be gRPC, HTTP, RESTful, command line, graphical user interface, Web interface, or other interfaces.
[0093] Figures 3A-3B This is a block diagram illustrating an exemplary system for performing efficient and secure key rotation for backup storage according to various techniques of this disclosure. Figures 3A-3B System 300 can be described as Figure 1A System 100 or Figure 1B This document provides examples or alternative implementations of system 190 (in which block file 162 is written to local storage system 115). Figures 1A-1B Contextual description Figures 3A-3B One or more aspects. For example, Figures 3A-3B Application system 102, data platform 150 and storage system 115 can correspond to Figures 1A-1B Application system 102, data platform 150 and storage system 115.
[0094] Now about Figure 3AThe following example illustrates the initialization or setup of data platform 150. During initialization, data platform 150 may prepare storage system 115 to store encrypted blocks 164. For example, data platform 150 may create storage system 115 through a cloud storage provider or other public or private cloud services. Data platform 150 may obtain one or more addresses (e.g., URLs) from storage system 115, through which data can be read or written at storage system 115.
[0095] Data platform 150 can generate one or more encryption keys and one or more key encryption keys for encrypting the encryption keys. For example, data platform 150 can generate a KMS KEK 304A and can store the KMS KEK 304A in a suitable storage device, such as enclave 132 or storage system 105. Data platform 150 can use KMS KEK 304A to encrypt the encryption key used to encrypt one or more blocks (such as block 164A). As described above, when encrypting block 164, data platform 150 can utilize multiple encryption keys. In this way, unauthorized access to one encryption key is insufficient to decrypt and / or leak backup data (e.g., block 164).
[0096] For example, data platform 150 can generate multiple encryption keys by generating a first encryption key and a second encryption key. Data platform 150 can use a KMS KEK 304A to encrypt the first encryption key to generate a first encrypted key 306A, and use a KMS KEK 304A to encrypt the second encryption key to generate a second encrypted key 312A. Data platform 150 can store the first encrypted key 306A and the second encrypted key 312A in one or more suitable storage devices. For example, data protection manager 154 of data platform 150 can store the first encrypted key 306A in storage system 105 and the second encrypted key 312A in enclave 132. Although shown and described as stored in a specific storage device, the first encrypted key 312A and the second encrypted key 312B can be stored in various combinations of the same or different storage devices. For illustration purposes, in some examples, data platform 150 may store the first encrypted key 106A in storage system 115 and the second encrypted key 312A in enclave 132, or data platform 150 may store both the first encrypted key 306A and the second encrypted key 312A in the same storage device (e.g., enclave 132).
[0097] As mentioned above, the encryption key can be of various types. For example, the first encryption key can be a symmetric encryption key, and the second encryption key can be an asymmetric encryption key. For example, as... Figure 3AAs shown in the example, the second encryption key may include an asymmetric key, which includes a private key 308 and a public key 310. In some examples, to encrypt an asymmetric encryption key (such as the second encryption key), the data platform 150 may encrypt all or a portion of the asymmetric encryption key. For example, the data platform 150 may use a KMS KEK 304A to encrypt only the private key 308 of the second encryption key or to encrypt both the private key 308 and the public key 310 of the second encryption key to generate a second encryption key 312A.
[0098] After initialization, data platform 150 may store data (e.g., encrypted blocks 164) to a storage system such as storage system 115. For example, data platform 150 may store one or more encrypted blocks 164 to back up source data 302 received from a source system (such as application system 102). Figures 3A-3B Application system 102, block 164, and block file 162 can be Figures 1A-1B Examples of application system 102, block 164, and block file 162. Although not shown, encrypted block 164 can constitute one or more backups, such as Figures 1A-1B Backup 142.
[0099] As described above, data platform 150 can generate one or more (e.g., unencrypted) blocks from source data 302. The unencrypted blocks may be referred to as the original blocks. For example, data platform 150 can generate original blocks comprising 16kB to 48kB portions of source data 302. Data platform 150 can encrypt the original blocks using a data encryption key generated from a first encryption key and key data to generate an encrypted block 164. For example, data platform 150 can generate the data encryption key by applying a key derivation function (e.g., HKDF) using the first encryption key and key data as input. Data platform 150 can obtain the first encryption key by, for example, decrypting the first encrypted key 306A using KMS KEK 304A.
[0100] Data platform 150 can generate key data, such as by generating random numbers or random data. In some examples, data platform 150 can generate different key data (e.g., a random salt) for each encrypted block 164. In this way, the key data of a particular encrypted block 164 cannot be used by an unauthorized party to decrypt other encrypted blocks 164. After generating the encrypted block 164, data platform 150 can store the encrypted block 164 together with the corresponding encrypted key data 166. For example, as... Figure 3A As shown in the example, data platform 150 stores the encrypted block 164A together with the corresponding encrypted key data 166A in storage system 115. The encrypted key data includes key data for deriving the data encryption key used to encrypt the encrypted block 164A.
[0101] Data platform 150 can generate encrypted key data 166A by encrypting key data used to derive the data encryption key used to encrypt block 164A. Data platform 150 can encrypt the key data using an encryption key different from the encryption key used to derive the data encryption key. For example, data platform 150 can encrypt the key data using a second encryption key instead of the first encryption key, such as using the public key 310 of the second encryption key. In this way, possessing either the first encryption key or the second encryption key is insufficient for an unauthorized party to decrypt the encrypted block 164A. Data platform 150 can obtain the second encryption key, including its public key 310, by decrypting the second encryption key 312A.
[0102] For decryption purposes, data platform 150 can obtain key data encoded within encrypted key data 166A and use the key data from encrypted key data 166A to generate a data encryption key capable of decrypting encrypted block 164A. In some examples, data platform 150 can use an enclave to obtain key data from encrypted key data 166A. For example, data platform 150 can send encrypted key data 166A to enclave 132, such as via a secure session with enclave 132, for decryption. Enclave 132 can decrypt encrypted key data 166A using a second encryption key (such as private key 308 of second encrypted key 312A). Enclave 132 can obtain private key 308 by, for example, decrypting second encrypted key 312A using KMS KEK 304A.
[0103] After the encrypted key data 166A is decrypted, enclave 134 can send the key data obtained by decrypting the encrypted key data 166A to another element of data platform 150 (e.g., data protection manager 154). Data platform 150 can derive a data encryption key from the key data. For example, to generate a data encryption key to decrypt encrypted block 164A, data platform 150 can execute a key derivation function (e.g., HKDF) using a first encryption key obtained from a first encryption key 306A and key data obtained from encrypted key data 166A as input. The data platform can obtain the first encryption key by decrypting the first encryption key 306A, such as using KMS KEK 304A. As can be seen, the data encryption key used to decrypt encrypted block 164A may be the same as or otherwise correspond to the data encryption key used to encrypt block 164A. To illustrate, the data encryption key used to decrypt the encrypted block 164A can be derived from the same input used to derive the data encryption key used to encrypt block 164A.
[0104] Data platform 150 can use a data encryption key to decrypt encrypted block 164. Data platform 150 can use the decrypted data from encrypted block 164 to restore a backup. For example, data platform 150 can store the decrypted data from encrypted block 164 to a storage system such as storage system 105 to restore block 164A at storage system 105.
[0105] refer to Figure 3B Data platform 150 (such as via key rotation manager 156) can rotate one or more key encryption keys. Data platform 150 can generate KMS KEK 304B as... Figure 3A A replacement for KMS KEK 304A. For example... Figure 3B As shown in the example, data platform 150 is available. Figure 3B KMS KEK 304B replacement Figure 3A The KMS KEK 304A is considered a replacement for the KMS KEK, and the KMS KEK 304B is considered a replacement for the KMS KEK. After the KMS KEK 304A is replaced, the data platform 150 stops using the KMS KEK 304A, thus rendering the KMS KEK 304A objected to or invalid.
[0106] Data platform 150 can re-encrypt the first and second encryption keys using a replacement KMS KEK (e.g., KMS KEK 304B) to generate a first encryption key 306B and a second encryption key 312B, respectively. For example, data platform 150 can... Figure 3A The first encryption key 306A and the second encryption key 312A are decrypted to obtain the first encryption key and the second encryption key, respectively. The data platform 150 can use a replacement KMS KEK (e.g., KMS KEK 304B) to "re-encrypt" the first encryption key and the second encryption key to generate... Figure 3B The first encryption key 306B and the second encryption key 312B. Data platform 150 can respectively use... Figure 3B The first encryption key 306B and the second encryption key 312B are replaced. Figure 3A The first encryption key 306A and the second encryption key 312A are used. In this way, the data platform 150 can object to or invalidate the first encryption key 306A and the second encryption key 312A.
[0107] like Figure 3B As seen in the encrypted block 164N, data platform 150 can be used. Figure 3B The first encryption key 306B and the second encryption key 312B are used to encrypt the additional block, as described above regarding the use of... Figure 3AThe first encryption key 306A and the second encryption key 312A are used to encrypt the encrypted block 164A. The data platform 150 can use... Figure 3B The first encryption key 306B and the second encryption key 312 are used to decrypt encrypted blocks 164A to 164N (collectively referred to as "block 164"), as described above regarding the use of... Figure 3A The first encryption key 306A and the second encryption key 312A are used to encrypt the encrypted block 164A.
[0108] For example, to generate encrypted block 164N, data platform 150 can encrypt another original block of source data 302 using a data encryption key generated from the first encryption key and key data. As described above, data platform 150 can generate the data encryption key by applying a key derivation function (e.g., HKDF) that uses the first encryption key and key data as input. In this example, data platform 150 can obtain the first encryption key by, for example, decrypting the first encryption key 306B using KMS KEK 304B instead of the first encryption key 306A. Data platform 150 can generate the key data, for example, by generating random numbers or random data. After generating encrypted block 164N, data platform 150 can store the encrypted block 164N together with the corresponding encrypted key data 166N.
[0109] Data platform 150 can generate encrypted key data 166N by encrypting the key data used to derive the data encryption key used to encrypt block 164N. (As mentioned above...) Figure 3A The data platform 150 can encrypt the key data using an encryption key different from the encryption key used to derive the data encryption key. For example, the data platform 150 can encrypt the key data using a second encryption key (such as its public key 310) instead of the first encryption key. In this way, possessing either the first encryption key or the second encryption key is still insufficient for an unauthorized party to decrypt the encrypted block 164. The data platform 150 can obtain the second encryption key, including its public key 310, by decrypting the second encryption key 312B using, for example, KMS KEK 304B.
[0110] To decrypt the encrypted block 164N, data platform 150 can obtain key data encoded within encrypted key data 166N. For example, data platform 150 can send the encrypted key data 166N to enclave 132 via a secure session with enclave 132 for decryption. Enclave 132 can decrypt the encrypted key data 166N using a second encryption key (such as private key 308 of the second encryption key 312B). Enclave 132 can obtain private key 308 by decrypting the second encryption key 312B using, for example, KMS KEK 304B. Data platform 150 can derive the data encryption key using the key data decrypted by enclave 132 and received from that enclave. For example, to derive the data encryption key for decrypting the encrypted block 164N, data platform 150 can execute a key derivation function (e.g., HKDF) using the first encryption key and key data as input. The data platform can obtain the first encryption key by, for example, decrypting the first encryption key 306B using KMS KEK 304B.
[0111] Data platform 150 can use the replacement KMS KEK 304B, the first encryption key 306B, and the second encryption key 312B to decrypt any encrypted blocks 164A to 164N. For example, in order to decrypt... Figure 3A Block 164A (also in) Figure 3B (As shown in the diagram) Decryption can be performed by data platform 150, which can obtain the first encryption key and the second encryption key by decrypting the first encryption key 306B and the second encryption key 312B respectively using, for example, KMS KEK 304B. Data platform 150 can use the second encryption key (such as its private key 308) to decrypt the encrypted key data 166A of block 164A to obtain the key data of encrypted key data 166A. As described above, the decryption of encrypted key data 166A can be performed by enclave 132. Data platform 150 can derive the data encryption key from the key data obtained from encrypted key data 166A and the first encryption key using a key derivation function (e.g., HKDF) to decrypt block 164A. Data platform 150 can use the data encryption key to decrypt encrypted block 164A.
[0112] By rotating KMS KEK 304 (e.g., replacing KMS KEK 304A with KMS KEK 304B), the key rotation manager 156 of the data platform 150 opposes or invalidates KMS KEK 304A, replaces the first encrypted key 306A with the first encrypted key 306B, and replaces the second encrypted key 312A with the second encrypted key 312B. As described above, KMS KEK 304 can be used to encrypt and decrypt the first encrypted key 306A and the second encrypted key 312A. Therefore, by opposing or invalidating KMS KEK 304A, the data platform 150 prevents the first encrypted key 306A and the second encrypted key 312A encrypted with KMS KEK 304A from being decrypted. By replacing the first encryption key 306A and the second encryption key 312A with the first encryption key 306B and the second encryption key 312B respectively, the data platform 150 ensures that the first encryption key and the second encryption key cannot be obtained using KMS KEK 304A. Similarly, when the data platform 150 renders KMS KEK 304B objected to or invalidated, such as by replacing KMS KEK 304B with another alternative KMSKEK, the data platform 150 prevents the first encryption key 306B and the second encryption key 312B from being used for encryption purposes (e.g., encryption and / or decryption of encrypted block 164).
[0113] Figure 4 This is a flowchart illustrating an exemplary operating mode of a data platform for performing efficient and secure key rotation for backup storage using various techniques according to this disclosure. Figure 4 exist Figures 3A-3B Described in the context of. For example... Figure 4 As shown in the example, data platform 150 can generate a first encryption key 306A and a second encryption key 312A (402). Data platform 150 can generate the first encryption key 306A by encrypting the first encryption key with the first system key 304A, and generate the second encryption key 312A by encrypting the second encryption key with the first system key 304A. As mentioned above, KMS KEK 304 may also be referred to herein as "system key 304".
[0114] Data platform 150 can store one or more encrypted blocks 164, wherein each encrypted block 164 is encrypted by data platform 150 using a data encryption key derived from a first encryption key 306A and key data 166A of encrypted key data. The encrypted key data 166A can be encrypted by data platform 150 using a second encryption key derived from a second encryption key 312A. Data platform 150 can store each encrypted block of one or more encrypted blocks 164 together with its corresponding encrypted key data 166. For example, as... Figure 3B As shown, encrypted block 164A is stored together with encrypted key data 166A, and encrypted block 165N is stored together with encrypted key data 166N. One or more encrypted blocks 164 may be part of a backup, archive, or snapshot of data from one or more encrypted blocks (e.g., source data from one or more workloads 174 of application system 102). In some examples, one or more encrypted blocks 164 may be part of a WORM storage for data from one or more encrypted blocks, the WORM storage including one or more backups, archives, or snapshots.
[0115] Data platform 150 can generate an asymmetric key pair including a private key 308 and a public key 310 to be used as a second encryption key. The second encryption key can be the public key 310 in the asymmetric key pair. Therefore, in some examples, to decrypt encrypted key data 166A to obtain the key data, data platform 150 can decrypt the encrypted key data 166A using the private key 308. Data platform 150 can obtain the second encryption key, including any of its private key 308 and / or public key 310, by decrypting the second encrypted key 312A using, for example, a first system key 304A.
[0116] To perform key rotation, data platform 150 can replace the first system key 304A (404) by determining a second system key 304B. For example, data platform 150 can determine the second system key 304B by generating a key encryption key to be used as the second system key 304B. In some examples, data platform 150 can determine the second system key 304B to replace the first system key 304A in response to a key rotation event. Key rotation events can be various events, such as the expiration of a key rotation period (e.g., 5 minutes, 10 minutes), the detection of unauthorized access, or the receipt of user input to rotate the system key. In this way, data platform 150 can perform key rotation in response to various events. For example, data platform 150 can rotate the first system key 304A periodically (e.g., every 5 minutes) or in response to user input. Data platform 150 can receive user input, such as through... Figure 2The input device 217 is shown. In some examples, the data platform 150 may include an intrusion detection system. In these examples, the data platform 150 may rotate the first system key 304A in response to the intrusion detection system detecting unauthorized access to the data platform 150 or one or more of its components (e.g., data protection manager 154, storage system 105, storage system 115, application system 102).
[0117] Data platform 150 can encrypt the first encryption key with the second system key 304B to generate a replacement key 306B for the first encryption, and encrypt the second encryption key to generate a replacement key 312B for the second encryption (406). To encrypt data (e.g., one or more blocks), data platform 150 can decrypt the replacement key 306B to obtain the first encryption key, and decrypt the encrypted key data 166A to obtain key data (408). Data platform 150 can decrypt the first encryption key 306B, for example, with the second system key 304B, and can decrypt the encrypted key data 166A with the second encryption key. Data platform 150 can obtain the second encryption key by, for example, decrypting the second encryption key 312B with the second system key 304B. When decrypting one or more encrypted blocks 164A, data platform 150 can derive the data encryption key using the first encryption key and the key data. Data platform 150 can output data from one or more encrypted blocks 164A by decrypting one or more encrypted blocks 164A with a data encryption key (410).
[0118] One or more encrypted blocks 164A can be considered as one or more first encrypted blocks 164A, and encrypted key data 166A can be considered as first encrypted key data 166A. Therefore, data platform 150 can encrypt one or more blocks (e.g., the original blocks of source data 302) to generate one or more second encrypted blocks 164N. Each encrypted block of the one or more second encrypted blocks 164N can be encrypted by data platform 150 using a data encryption key derived from the key data of the first encryption key replacing the first encryption key 306B and the second encrypted key data 166N. Data platform 150 can store each encrypted block of the one or more second encrypted blocks 164N together with the second encrypted key data 166N.
[0119] The second encrypted key data 166N can be encrypted by the data platform 150 using a second encryption key that replaces the second encryption key 312B. The data platform can correspondingly obtain the second encryption key by, for example, decrypting the replacement second encryption key 312B using the second system key 304B. The data platform 150 can obtain the first encryption key 306B that replaces the first encryption key 306B by, for example, decrypting the replacement first encryption key 306B using the second system key 304B.
[0120] Although the techniques described in this disclosure are primarily concerned with backup functions performed by a key rotation manager of a data platform, similar techniques may be additionally or alternatively applied to archiving, copying, cloning, or snapshot functions performed by the data platform. In such cases, backup 142 will be archiving, copying, cloning, or snapshotting, respectively.
[0121] For the processes, apparatuses, and other examples or illustrations described herein included in any flowchart, certain operations, actions, steps, or events included in any technology described herein may be performed in a different order, may be added, combined, or omitted entirely (e.g., not all described actions or events are necessary for the practice of the technology). Furthermore, in some examples, operations, actions, steps, or events may be performed simultaneously, for example, through multithreading, interrupt handling, or multiple processors, rather than sequentially. Additionally, certain operations, actions, steps, or events may be performed automatically even if not explicitly identified as automatically executed. Moreover, certain operations, actions, steps, or events described as automatically executed may alternatively not be automatically executed; rather, in some examples, such operations, actions, steps, or events may be performed in response to input or another event.
[0122] The detailed descriptions set forth herein in conjunction with the accompanying drawings are intended to describe various configurations and are not intended to represent only configurations in which the concepts described herein can be practiced. Specific details are included for the purpose of providing a comprehensive understanding of the various concepts. However, it will be apparent to those skilled in the art that these concepts can be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form to avoid obscuring such concepts.
[0123] According to one or more aspects of this disclosure, the term "or" may be interpreted as "and / or" unless otherwise specified in the context. Additionally, while phrases such as "one or more" or "at least one" may be used in some instances, they may not be used in others; these instances may be interpreted as having an implied meaning unless otherwise specified in the context.
[0124] In one or more examples, the described functionality may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, these functions may be stored as one or more instructions or code on and / or transmitted via a computer-readable medium and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium that corresponds to a tangible medium (such as a data storage medium) or a communication medium (including any medium that facilitates the transfer of a computer program (e.g., according to a communication protocol) from one place to another). In this way, a computer-readable medium may generally correspond to (1) a tangible computer-readable storage medium that is non-transitory, or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this disclosure. Computer program products may include computer-readable media.
[0125] For example, and not as a limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disc storage, disk storage or other magnetic storage devices, flash memory, or any other medium that can be used to store program code in the form of desired instructions or data structures and is accessible by a computer. Furthermore, any connection is appropriately referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technology (such as infrared, radio, and microwave), then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technology (such as infrared, radio, and microwave) are included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but rather refer to non-transient tangible storage media. As used, disks and discs include compact discs (CDs), laser discs, optical discs, digital universal discs (DVDs), floppy discs, and Blu-ray discs, where disks typically reproduce data magnetically, while discs optically reproduce data using lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0126] The instructions can 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 arrays (FPGAs), or other equivalent integrated or discrete logic circuit systems. Therefore, the terms "processor" or "processing circuit system" as used herein can each refer to any of the foregoing structures or any other structure suitable for implementing the described techniques. Additionally, in some examples, the described functionality may be provided within dedicated hardware and / or software modules. Moreover, these techniques can be implemented entirely within one or more circuit or logic elements.
[0127] As used herein, a processing component may include the processing circuitry as described above. In some examples, the processing component may include at least one processor and at least one memory having computer code including a set of instructions that, when executed by the at least one processor, cause the at least one processor to perform any of the functions described herein. In some examples, the processing component may receive computer code including the instruction set from at least one memory coupled to the processing component.
[0128] The techniques disclosed herein can be implemented in a wide variety of devices or apparatuses, including wireless handsets, mobile or non-mobile computing devices, wearable or non-wearable computing devices, integrated circuits (ICs) or IC sets (e.g., chipsets). Various components, modules, or units are described in this disclosure to emphasize functional aspects of a device configured to perform the disclosed techniques, but they do not necessarily need to be implemented by different hardware units. Rather, as described above, various units may be combined within hardware units or provided by a collection of interoperable hardware units (including one or more processors as described above) combined with suitable software and / or firmware.
[0129] Additional details
[0130] This disclosure implements at least the following exemplary process. This process can be performed by a data platform implemented through a computing system. The process begins with the data platform encrypting a first encryption key and a second encryption key using a first system key. This operation generates the first encryption key and the second encryption key, respectively.
[0131] The data platform then encrypts one or more blocks to generate one or more encrypted blocks. Each block is encrypted with a corresponding data encryption key. This data encryption key is derived from the first encryption key and key data.
[0132] The data platform stores one or more encrypted blocks. This step ensures that the encrypted data is securely maintained for future retrieval and use. The data platform encrypts the key data using a second encryption key. This operation generates encrypted key data, adding an additional security layer to the encryption process. The data platform replaces the first system key by determining a second system key. This provides periodic updates to the system's security measures. The data platform encrypts the first encryption key with the newly determined second system key. This operation generates a key to replace the first encryption. The key replacing the first encryption is decrypted to obtain the first encryption key. Additionally, the encrypted key data is decrypted to obtain the key data. The obtained first encryption key and the obtained key data are used to derive the data encryption key. The derived data encryption key is used to decrypt one or more encrypted blocks.
[0133] The data platform outputs decrypted data from one or more encrypted blocks. At this point, the original encrypted data is available for use.
[0134] This process enhances key management practices. By utilizing multiple layers of encryption keys—including a system key, encryption keys, and a derived data encryption key—the process allows for updating system-level keys without altering the encrypted data blocks. This enables periodic security updates while maintaining seamless access to encrypted information.
[0135] This process provides an efficient mechanism for data encryption. By applying the derived data encryption key to individual blocks, fine-grained control over data access is achieved. This granular approach allows for selective decryption of specific data segments as needed, potentially improving overall system performance and resource utilization.
[0136] The technology facilitates flexible key rotation strategies. The ability to replace system keys and update encryption keys without extensive reencrypting of stored data supports regular security maintenance. This approach helps maintain robust protection over time while minimizing operational disruptions and computational overhead associated with large-scale data reencryption processes.
[0137] This disclosure implements the following additional examples.
[0138] Example 1: A method comprising: generating a first encryption key and a second encryption key by a data platform implemented through a computing system, wherein the data platform stores one or more encrypted blocks; each of the one or more encrypted blocks being encrypted with a data encryption key derived from a first encryption key of the first encryption key and key data of encrypted key data, the first encryption key data being encrypted with a second encryption key from the second encryption key, the first encryption key and the second encryption key being encrypted with a first system key; replacing the first system key by the data platform by determining the second system key; encrypting the first encryption key by the data platform and the second system key to generate a replacement key for the first encryption key, and encrypting the second encryption key to generate a replacement key for the second encryption key; decrypting the replacement key for the first encryption key by the data platform to obtain the first encryption key, and decrypting the encrypted key data to obtain the key data, wherein the data encryption key is derived using the first encryption key and the key data when decrypting the one or more encrypted blocks; and outputting data from the one or more encrypted blocks by the data platform decrypting the one or more encrypted blocks with the data encryption key.
[0139] Example 2: The method as described in Example 1, wherein the one or more encrypted blocks are one or more first encrypted blocks, and the encrypted key data is first encrypted key data, the method further includes encrypting the one or more blocks by the data platform to generate one or more second encrypted blocks, each of the one or more second encrypted blocks being encrypted with a data encryption key derived from the key data of the first encryption key replacing the first encryption key and the second encrypted key data, and the second encrypted key data being encrypted with the second encryption key replacing the second encryption key.
[0140] Example 3: The method as described in Example 2, the method further includes having the data platform store each of the one or more second encrypted blocks together with the second encrypted key data.
[0141] Example 4: The method of any one of Examples 1 to 3, wherein the data platform stores each of the one or more encrypted blocks together with the encrypted key data.
[0142] Example 5: The method of any one of Examples 1 to 4, the method further comprising generating an asymmetric key pair including a public key and a private key, wherein the second encryption key is the public key in the asymmetric key pair.
[0143] Example 6: The method described in Example 5, wherein decrypting the encrypted key data to obtain the key data includes the data platform decrypting the encrypted key data using the private key.
[0144] Example 7: The method of any one of Examples 1 to 6, wherein the one or more encrypted blocks are part of a write-once-read-many (WORM) storage for the data of the one or more encrypted blocks, the WORM storage including one or more backups, archives or snapshots.
[0145] Example 8: The method of any one of Examples 1 to 7, wherein the first system key is replaced by determining the second system key in response to a key rotation event, the key rotation event including one or more of the following: key rotation period expires, unauthorized access is detected, or user input for rotating the system key is received.
[0146] Example 9: A computing system comprising: a memory storing instructions; and a processing circuitry system executing the instructions to: generate a first encrypted key and a second encrypted key, wherein a data platform stores one or more encrypted blocks, each of the one or more encrypted blocks being 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 being encrypted with a second encryption key from the second encrypted key, the first encrypted key and the second encrypted key being encrypted with a first system key; replacing the first system key by determining a second system key; encrypting the first encrypted key with the second system key to generate a replacement key for the first encrypted key, and encrypting the second encrypted key to generate a replacement key for the second encrypted key; decrypting the replacement key for the first encrypted key to obtain the first encrypted key, and decrypting the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used to derive the data encryption key when decrypting the one or more encrypted blocks; and outputting data from the one or more encrypted blocks by decrypting the one or more encrypted blocks with the data encryption key.
[0147] Example 10: A computing system as described in Example 9, wherein the one or more encrypted blocks are one or more first encrypted blocks, and the encrypted key data is first encrypted key data, and the processing circuitry further executes the instructions to: encrypt the one or more blocks to generate one or more second encrypted blocks, each of the one or more second encrypted blocks being encrypted with a data encryption key derived from the key data of the first encryption key replacing the first encryption key and the second encrypted key data, the second encrypted key data being encrypted with the second encryption key replacing the second encryption key.
[0148] Example 11: A computing system as described in Example 10, wherein the processing circuitry further executes the instructions to store each of the one or more second encrypted blocks together with the second encrypted key data.
[0149] Example 12: A computing system as described in any one of Examples 9 to 11, wherein the data platform stores each of the one or more encrypted blocks together with the encrypted key data.
[0150] Example 13: A computing system as described in any one of Examples 9 to 12, wherein the processing circuitry further executes the instructions to: generate an asymmetric key pair including a public key and a private key, wherein the second encryption key is the public key in the asymmetric key pair.
[0151] Example 14: The computing system as described in Example 13, wherein, in order to decrypt the encrypted key data to obtain the key data, the processing circuitry further executes the instruction to: decrypt the encrypted key data using the private key.
[0152] Example 15: A computing system as described in any one of Examples 9 to 14, wherein the one or more encrypted blocks are part of a write-once-read-many (WORM) storage for the data of the one or more encrypted blocks, the WORM storage including one or more backups, archives or snapshots.
[0153] Example 16: A computing system as described in any one of Examples 9 to 15, wherein the processing circuitry further executes the instructions to: replace the first system key by determining the second system key in response to a key rotation event, the key rotation event including one or more of the following: key rotation period expires, unauthorized access is detected, or user input for rotating the system key is received.
[0154] Example 17: A computer-readable storage medium comprising instructions that, when executed, cause a processing circuitry of a computing system to: generate a first encryption key and a second encryption key, wherein the data platform stores one or more encrypted blocks, each of the one or more encrypted blocks being encrypted with a data encryption key derived from a first encryption key of the first encryption key and key data of encrypted key data, the first encryption key data being encrypted with a second encryption key from the second encryption key, the first encryption key and the second encryption key being encrypted with a first system key; replacing the first system key by determining a second system key; encrypting the first encryption key with the second system key to generate a replacement first encryption key, and encrypting the second encryption key to generate a replacement second encryption key; decrypting the replacement first encryption key to obtain the first encryption key, and decrypting the encrypted key data to obtain the key data, wherein the first encryption key and the key data are used to derive the data encryption key when decrypting the one or more encrypted blocks; and outputting data from the one or more encrypted blocks by decrypting the one or more encrypted blocks with the data encryption key.
[0155] Example 18: A computer-readable storage medium as described in Example 17, wherein the one or more encrypted blocks are one or more first encrypted blocks, and the encrypted key data is first encrypted key data, and the instructions, when executed, cause the processing circuitry of a computing system to: encrypt the one or more blocks to generate one or more second encrypted blocks, each of the one or more second encrypted blocks being encrypted with a data encryption key derived from the key data of the first encryption key replacing the first encryption key and the second encrypted key data, the second encrypted key data being encrypted with the second encryption key replacing the second encryption key.
[0156] Example 19: A computer-readable storage medium as described in any one of Examples 17 and 18, wherein the one or more encrypted blocks are part of a write-once, read-many-time (WORM) storage for the data of the one or more encrypted blocks, the WORM storage including one or more backups, archives, or snapshots.
[0157] Example 20: A computer-readable storage medium as described in any one of Examples 17 to 19, wherein the instructions, when executed, cause the processing circuitry of a computing system to: replace the first system key by determining the second system key in response to a key rotation event, the key rotation event including one or more of the following: the expiration of a key rotation period, detection of unauthorized access, or receipt of user input for rotating the system key.
[0158] Various examples of this disclosure have been described. Any combination of the described systems, operations, or functions is contemplated.
Claims
1. A method comprising: encrypting, by a data platform implemented by a computing system, a first encryption key using a first system key to generate a first encrypted key; encrypting, by the data platform, a second encryption key using the first system key to generate a second encrypted key; encrypting, by the data platform, one or more blocks to generate one or more encrypted blocks, each of the one or more blocks encrypted with a respective data encryption key derived from the first encryption key and key data; storing, by the data platform, the one or more encrypted blocks; encrypting, by the data platform, the key data using the second encryption key to generate encrypted key data; 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; 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 obtained first encryption key and the obtained key data are used to derive data encryption keys in decrypting the one or more encrypted blocks; and outputting, by the data platform, data from the one or more encrypted blocks by decrypting the one or more encrypted blocks with the derived data encryption keys. The data platform stores each of the one or more encrypted blocks along with respective encrypted key data.
2. The method of claim 1, wherein, The one or more encrypted blocks are one or more first encrypted blocks and the encrypted key data is first encrypted key data, the method further comprising:
3. The method of claim 1, wherein, encrypting, by the data platform, one or more blocks to generate one or more second encrypted blocks, each of the one or more second encrypted blocks encrypted with a respective data encryption key derived from the first encryption key of the replacement first encrypted key and second key data; encrypting, by the data platform and with the second system key, the second encryption key to generate a replacement second encrypted key; and encrypting, by the data platform using the second encryption key of the replacement second encrypted key, the second key data to generate second encrypted key data.
4. The method of claim 3, further comprising storing, by the data platform, each of the one or more second encrypted blocks along with the second encrypted key data.
5. The method of claim 1, further comprising generating an asymmetric key pair comprising a public key and a private key, wherein the second encryption key is the public key in the asymmetric key pair, and optionally: 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. 6. The method of claim 1, wherein, The one or more encrypted blocks are part of a one-write multiple-read storage of the data for the one or more encrypted blocks, the one-write multiple-read storage comprising one or more of a backup, an archive, or a snapshot.
7. The method of claim 1, wherein replacing the first system key with the second system key is in response to a key rotation event, the key rotation event comprising one or more of: a key rotation time period expiring, detecting unauthorized access, or receiving user input to rotate a system key.
8. A computing system, the computing system comprising: processing means configured to: encrypt a first encryption key using a first system key to generate a first encrypted key; encrypt a second encryption key using the first system key to generate a second encrypted key; encrypt one or more blocks to generate one or more encrypted blocks, each of the one or more blocks encrypted with a respective data encryption key derived from the first encryption key and key data; store the one or more encrypted blocks; encrypt the key data using the second encryption key to generate encrypted key data; replace the first system key with a second system key; encrypt the first encryption key with the second system key to generate a replacement first encrypted key; decrypt the replacement first encrypted key to obtain the first encryption key and decrypt the encrypted key data to obtain the key data, wherein the obtained first encryption key and the obtained key data are used to derive data encryption keys in decrypting the one or more encrypted blocks; and output data from the one or more encrypted blocks by decrypting the one or more encrypted blocks with the derived data encryption keys.
9. The computing system of claim 8, wherein the processing means is further configured to store each of the one or more encrypted blocks with the encrypted key data.
10. The computing system of claim 8, wherein the one or more encrypted blocks are one or more first encrypted blocks and the encrypted key data is first encrypted key data, and the processing means is further configured to: encrypt one or more blocks to generate one or more second encrypted blocks, each of the one or more second encrypted blocks encrypted with a respective data encryption key derived from the first encryption key of the replacement first encrypted key and second key data; encrypt the second encryption key with the second system key to generate a replacement second encrypted key; and encrypt the second key data using the second encryption key of the replacement second encrypted key to generate second encrypted key data.
11. The computing system of claim 10, wherein the processing means is further configured to store each of the one or more second encrypted blocks with the second encrypted key data. 12. The computing system of claim 8, wherein the processing means is further configured to generate an asymmetric key pair comprising a public key and a private key, wherein the second encryption key is the public key in the asymmetric key pair, and optionally: wherein to decrypt the encrypted key data to obtain the key data, the processing means is further configured to decrypt the encrypted key data with the private key.
13. The computing system of claim 8, wherein, The one or more encrypted blocks are part of a write-once read-many store of the data of the one or more encrypted blocks, the write-once read-many store comprising one or more of a backup, an archive, or a snapshot.
14. The computing system of any of claims 8 to 13, wherein the processing means is further configured to replace the first system key by determining the second system key in response 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 user input to rotate the system key.
15. A computer-readable storage medium comprising instructions that, when executed, cause one or more processors of a computing system to perform the method of any of claims 1 to 7.
Citation Information
Cited By
A storage volume data encryption method and system in a K8s cloud-native environment
CN122389063A