Deduplication of data encrypted with multiple keys

The method allows deduplication of encrypted data using multiple client keys by transmitting key and deduplication information to a storage system, addressing the inefficiencies of traditional methods and ensuring data confidentiality, thus enhancing deduplication efficiency.

JP7763236B2Active Publication Date: 2025-10-31INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023504299
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-07-24
Filing Date
2021-07-06
Publication Date
2025-10-31
Estimated Expiration
2041-07-06

AI Technical Summary

Technical Problem

Traditional data reduction techniques, such as deduplication and compression, fail to provide meaningful reductions when applied to encrypted data, especially when different encryption algorithms are used, and do not ensure sufficient data confidentiality between clients and storage systems.

Method used

A method and system for deduplicating data chunks encrypted with multiple client keys by transmitting key group information and deduplication information to a storage system without revealing the decryption keys, using client-specific keys for encryption and fingerprinting, ensuring data confidentiality and enabling deduplication across multiple encryption keys.

Benefits of technology

Enables deduplication of encrypted data across multiple keys without the storage system having access to the encryption keys, maintaining data confidentiality and improving deduplication efficiency compared to traditional methods.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007763236000001
    Figure 0007763236000001
  • Figure 0007763236000002
    Figure 0007763236000002
  • Figure 0007763236000003
    Figure 0007763236000003
Patent Text Reader

Abstract

A computer-implemented method includes sending key group information to a storage system. The key group information includes key ID information for client data keys in the key group. The client data keys enable deduplication of data chunks encrypted with any of the client data keys in the key group. The method also includes generating deduplication information. The deduplication information includes a fingerprint associated with the chunk of client data. The method also includes encrypting the data chunks using one of the client data keys, wherein a decryption key corresponding to the encrypted data chunks is unavailable to the storage system. The method includes sending the deduplication information to the storage system for use in a deduplication process by the storage system and sending the encrypted data chunks to the storage system.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to data deduplication, and more particularly, to deduplication of data encrypted with multiple keys in cloud storage systems and networks. [Background technology]

[0002] Traditional data reduction techniques, such as deduplication and / or compression, do not provide meaningful reductions when applied to encrypted data. Deduplication of multiple sets of data, each encrypted with a unique encryption key, fails when different encryption algorithms prevent traditional deduplication processes from identifying duplicate data chunks. Traditional data reduction techniques also do not provide sufficient data confidentiality between clients and storage systems.

[0003] For example, one known bring-your-own-key (BYOK) encryption technique involves a multi-party trusted system. While all data reduction functionality may be provided by the storage system, which has access to all data, traditional BYOK systems do not provide data confidentiality between the storage system and the client because the storage system has access to the client's key. The third-party key service also has access to the shared encryption key used to encrypt client data. With this form of BYOK encryption, data confidentiality exists only between the users.

[0004] Traditional encryption at rest encrypts incoming unencrypted data using a key known to the storage system, which can then decrypt all data and perform deduplication on all data in the system. However, encryption at rest does not provide data confidentiality.

[0005] Traditional fully client-side encryption encrypts data using a key unknown to the storage system. The storage system then deduplicates only the encrypted data using the common key. Fully client-side deduplication provides relatively high data confidentiality, but it hinders deduplication efficiency. Summary of the Invention

[0006] Viewed from a first aspect, the present invention provides a computer-implemented method including transmitting key group information to a storage system. The key group information includes key ID information for client data keys in the key group. The client data keys enable deduplication of data chunks encrypted with any of the client data keys in the key group. The method also includes generating deduplication information. The deduplication information includes a fingerprint associated with the chunk of client data. The method also includes encrypting the data chunks with one of the client data keys, where a decryption key corresponding to the encrypted data chunks is unavailable to the storage system. The method also includes transmitting the deduplication information to the storage system for use in a deduplication process by the storage system and transmitting the encrypted data chunks to the storage system. The aforementioned method provides the advantage of enabling deduplication across data encrypted with any of the data keys in a set of data keys without the storage system having access to the data keys.

[0007] Preferably, the present invention provides a computer-implemented method in which encrypted data chunks are sent to the storage system in response to a request from the storage system, the request from the storage system also requesting key ID information identifying the client data key used to encrypt each of the data chunks.

[0008] Preferably, the present invention provides a computer-implemented method, wherein each of the client data keys is a key type selected from the group consisting of a client private key and a client deduplication key.

[0009] The present invention preferably provides a computer-implemented method, wherein the request from the storage system is for client data associated with a data chunk that is not identified for deduplication by the storage system, the method including transmitting the client data associated with the data chunk encrypted with the client's private key.

[0010] Preferably, the present invention provides a computer-implemented method further comprising, in response to a request from the storage system for client data associated with a data chunk that has been identified for deduplication by the storage system, transmitting the client data associated with the data chunk encrypted with the client's deduplication key.

[0011] Preferably, the present invention provides a computer-implemented method further comprising encrypting the fingerprint using a client's secret fingerprint key before transmitting the deduplication information to the storage system.

[0012] The present invention preferably provides a computer-implemented method further including requesting client data from a storage system and receiving the client data as data chunks, one or more of the data chunks being encrypted using the client's private key and one or more other of the data chunks being encrypted using the client's deduplication key.

[0013] Viewed from another aspect, the present invention provides a computer-implemented method including: receiving key group information at a storage system, the key group information including key ID information for client data keys in the key group, the client data keys enabling deduplication of data chunks encrypted with one of the client data keys in the key group; receiving encrypted client data for storage at the storage system; receiving deduplication information, the deduplication information accessible by the storage system to perform operations, the deduplication information including fingerprints associated with the encrypted chunks of client data; identifying data chunks for deduplication based on the deduplication information; and requesting client data associated with the data chunks encrypted with one of the client data keys for data chunks not identified for deduplication.

[0014] Preferably, the present invention provides a computer-implemented method, wherein each of the client data keys is a key type selected from the group consisting of a client private key and a client deduplication key.

[0015] Preferably, the present invention provides a computer-implemented method further comprising: in response to a request from a client for client data, identifying a data chunk associated with the data request; retrieving metadata associated with the data chunk, the metadata including key ID information; retrieving encrypted client data associated with the data request based on the metadata; and transmitting the encrypted client data to the client.

[0016] The present invention preferably provides a computer-implemented method, wherein the key ID information identifies the client data key that was used to encrypt each of the data chunks associated with the data request.

[0017] Preferably, the present invention provides a computer-implemented method in which the fingerprint is encrypted using the client's private fingerprint key, and the client's private fingerprint key is not available to the storage system.

[0018] Preferably, the present invention provides a computer-implemented method further comprising identifying a data chunk stored in the storage system that is encrypted with one of the client data keys, and requesting client data associated with the data chunk encrypted with the client's deduplication key.

[0019] Viewed from another aspect, the present invention provides a system including a processor and logic integrated with, executable by, or integrated with the processor and executable by the processor, the logic being configured to: send key group information to a storage system, the key group information including key ID information for client data keys in the key group, the client data keys enabling deduplication of data chunks encrypted with one of the client data keys in the key group; generate deduplication information, the deduplication information including a fingerprint associated with the chunk of client data; encrypt the data chunks using one of the client data keys, where a decryption key corresponding to the encrypted data chunk is unavailable to the storage system; send the deduplication information to the storage system for use in a deduplication process by the storage system; and send the encrypted data chunks to the storage system.

[0020] The present invention preferably provides a system in which encrypted data chunks are sent to the storage system in response to a request from the storage system, the request from the storage system also requesting key ID information identifying the client data key used to encrypt each of the data chunks.

[0021] The present invention preferably provides a system wherein each of the client data keys is a key type selected from the group consisting of a client private key and a client deduplication key.

[0022] The present invention preferably provides a system where the request from the storage system is for client data associated with a data chunk that is not identified for deduplication by the storage system, the system comprising logic configured to transmit the client data associated with the data chunk encrypted with the client's private key.

[0023] Preferably, the present invention provides a system further comprising logic configured to transmit client data associated with a data chunk encrypted with the client's deduplication key in response to a request from the storage system for client data associated with a data chunk that has been identified for deduplication by the storage system.

[0024] Preferably, the present invention provides a system further comprising logic configured to encrypt the fingerprint using the client's private fingerprint key before transmitting the deduplication information to the storage system.

[0025] Viewed from another aspect, the present invention provides a system further comprising a processor and logic integrated with, executable by, or integrated with the processor and executable by the processor, the logic being configured to: receive key group information at a storage system, the key group information including key ID information for client data keys in the key group, the client data keys enabling deduplication of data chunks encrypted with one of the client data keys in the key group; receive encrypted client data for storage at the storage system; receive deduplication information, the deduplication information accessible by the storage system to perform operations, the deduplication information including fingerprints associated with the encrypted chunks of client data; identify data chunks for deduplication based on the deduplication information; and, for data chunks not identified for deduplication, request client data associated with the data chunks encrypted with one of the client data keys.

[0026] The present invention preferably provides a system wherein each of the client data keys is a key type selected from the group consisting of a client private key and a client deduplication key.

[0027] Preferably, the present invention provides a system further comprising logic configured to: in response to a request from a client for client data, identify a data chunk associated with the data request; retrieve metadata associated with the data chunk, the metadata including key ID information; retrieve encrypted client data associated with the data request based on the metadata; and transmit the encrypted client data to the client.

[0028] The present invention preferably provides a system in which the key ID information identifies the client data key that was used to encrypt each of the data chunks associated with the data request.

[0029] The present invention preferably provides a system in which the fingerprint is encrypted using the client's private fingerprint key, and the client's private fingerprint key is not available to the storage system.

[0030] Viewed from another aspect, the present invention provides a computer program product comprising: one or more computer-readable storage media; and program instructions collectively stored on the one or more computer-readable storage media, the program instructions including: program instructions for sending key group information to a storage system, the key group information including key ID information for client data keys in the key group, the client data keys enabling deduplication of data chunks encrypted with one of the client data keys in the key group; program instructions for generating deduplication information, the deduplication information including a fingerprint associated with the chunk of client data; program instructions for encrypting the data chunk using one of the client data keys, wherein a decryption key corresponding to the encrypted data chunk is unavailable to the storage system; program instructions for sending the deduplication information to the storage system for use in a deduplication process by the storage system; and program instructions for sending the encrypted data chunk to the storage system.

[0031] Other aspects and techniques of the present invention will become apparent from the following detailed description, which, taken in conjunction with the drawings, illustrate by way of example the principles of the invention. [Brief explanation of the drawings]

[0032] [Figure 1] FIG. 1 illustrates a computing environment in accordance with one embodiment of the present invention. [Figure 2] FIG. 1 illustrates an abstract model layer according to one embodiment of the present invention. [Figure 3] FIG. 1 is a high-level architectural diagram according to one embodiment of the present invention. [Figure 4] FIG. 1 is a high-level architectural diagram according to one embodiment of the present invention. [Figure 5] FIG. 1 is a high-level architectural diagram according to one embodiment of the present invention. [Figure 6] FIG. 1 is a high-level architectural diagram according to one embodiment of the present invention. [Figure 7] FIG. 1 is a high-level architectural diagram according to one embodiment of the present invention. [Figure 8] FIG. 1 is a high-level architectural diagram according to one embodiment of the present invention. [Figure 9] FIG. 1 is a high-level architectural diagram according to one embodiment of the present invention. [Figure 10] FIG. 1 is a high-level architectural diagram according to one embodiment of the present invention. [Figure 11] 1 is a flowchart of a method according to one embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION

[0033] The following description is made for the purpose of illustrating the general principles of the present invention and is not intended to limit the inventive concepts claimed herein. Moreover, features described herein can be used in combination with other described features, in each of the various possible combinations and permutations.

[0034] In this specification, unless otherwise specifically defined, all terms are to be given their broadest possible interpretation, including the meanings set forth in this specification and the meanings understood by those skilled in the art and / or defined in dictionaries, treatises, etc.

[0035] It should also be noted that, as used in this specification and the appended claims, the singular forms "a," "an," and "the" include plural referents unless otherwise specified. It will be further understood that the terms "comprises" and / or "comprising," when used herein, indicate the presence of stated features, integers, steps, operations, elements, or components, or combinations thereof, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups thereof, or combinations thereof.

[0036] The following description discloses several aspects of deduplication of multi-key encrypted data.

[0037] In one general aspect, a computer-implemented method includes transmitting key group information to a storage system. The key group information includes key ID information for client data keys in the key group. The client data keys enable deduplication of data chunks encrypted with any of the client data keys in the key group. The method also includes generating deduplication information. The deduplication information includes a fingerprint associated with the chunk of client data. The method also includes encrypting the data chunks using one of the client data keys, wherein a decryption key corresponding to the encrypted data chunks is unavailable to the storage system. The method includes transmitting the deduplication information to the storage system for use in a deduplication process by the storage system and transmitting the encrypted data chunks to the storage system.

[0038] In another general aspect, a system includes a processor and logic integrated with, executable by, or integrated with and executable by the processor, the logic configured to perform the method described above.

[0039] In another general aspect, a computer program product includes one or more computer-readable storage media and program instructions collectively stored on the one or more computer-readable storage media, the program instructions including program instructions for performing the aforementioned method.

[0040] In yet another general aspect, a computer-implemented method includes receiving key group information at a storage system. The key group information includes key ID information for client data keys in the key group. The client data keys enable deduplication of data chunks encrypted with one of the client data keys in the key group. The method includes receiving encrypted client data for storage at the storage system and receiving deduplication information. The deduplication information is accessible by the storage system to perform operations, and the deduplication information includes fingerprints associated with the encrypted chunks of client data. The method also includes identifying data chunks for deduplication based on the deduplication information and, for data chunks not identified for deduplication, requesting client data associated with the data chunks encrypted with one of the client data keys.

[0041] In another general aspect, a system includes a processor and logic integrated with, executable by, or integrated with and executable by the processor, the logic configured to perform the method described above.

[0042] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the subject matter presented herein is not limited to cloud computing environments. Aspects of the present invention may be implemented in conjunction with any other type of computing environment now known or later developed.

[0043] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computational resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) and for rapidly provisioning and releasing these resources with minimal administrative effort or interaction with a service provider. This cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0044] The features are as follows: On-demand self-service: Cloud customers can automatically provision server time, network storage, and other computing power as needed, without any unilateral or human interaction with the service provider. Wide network access: Cloud capabilities are available over the network and can be accessed using standard mechanisms, facilitating usage by heterogeneous thin- or thick-client platforms (e.g., mobile phones, laptops, and PDAs). Resource Pool: The provider's computing resources are pooled and offered to multiple consumers using a multi-tenant model. Various physical and virtual resources are dynamically allocated and reallocated according to demand. There is a sense of location independence, where the consumer typically has no control over or knowledge of the exact location of the resources provided, although at a higher level of abstraction, the location (e.g., country, state, or data center) may be specified.

[0045] Rapid Elasticity: Capacity is quickly and elastically provisioned, sometimes automatically, and can be quickly scaled out and quickly released to quickly scale in. Capacity available for provisioning often appears to consumers as unlimited, available for purchase in any quantity at any time.

[0046] Metered Services: Cloud systems leverage metering capabilities to automatically control and optimize resource usage at an abstraction level appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of utilized services.

[0047] The service model is as follows: SaaS (Software as a Service): The consumer is provided with the ability to use the provider's applications running on a cloud infrastructure. Those applications can be accessed from a variety of client devices through a thin-client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application functionality, except for the possibility of setting limited user-specific application configuration settings. PaaS (Platform as a Service): The ability offered to a consumer is to deploy applications they create or acquire, written using programming languages ​​and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the configuration of the application hosting environment. Infrastructure as a Service (IaaS): The capability provided to a customer is the provisioning of processing, storage, network, and other basic computing resources, over which the customer can deploy and run any software, which may include operating systems and applications. The customer does not manage or control the underlying cloud infrastructure, but does have control over the operating systems, storage, and deployed applications, and in some cases, limited control over selected network components (e.g., host firewalls).

[0048] The deployment model is as follows: Private Cloud: This cloud infrastructure is operated solely for one organization and can be managed by that organization or a third party, and can reside on-premise or off-premise. Community Cloud: This cloud infrastructure is shared by multiple organizations to support a specific community with shared interests (e.g., mission, security requirements, policy, and compliance considerations). It can be managed by these organizations or a third party and can reside on-premises or off-premises. Public Cloud: This cloud infrastructure is available for use by the general public or large industry organizations and is owned by an organization that sells cloud services. Hybrid cloud: This cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain distinct but are joined together by standardized or proprietary technologies that allow for data and application portability (e.g., cloud bursting to balance load between clouds).

[0049] A cloud computing environment is a service-oriented environment that emphasizes statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that contains a network of interconnected nodes.

[0050] Referring now to FIG. 1 , an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers (e.g., a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, and / or an automobile computer system 54N) can communicate. The nodes 10 may communicate with each other. The nodes 10 may be physically or virtually grouped in one or more networks (not shown), such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or combinations thereof, as previously described herein. This enables the cloud computing environment 50 to provide an infrastructure, platform, and / or SaaS that does not require cloud consumers to maintain resources on their local computing devices. The types of computing devices 54A-N shown in FIG. 1 are intended to be illustrative only, and it is understood that computing node 10 and cloud computing environment 50 can communicate with any type of computer-controlled device via any type of network and / or network-addressable connection (e.g., a connection using a web browser).

[0051] Referring now to Figure 2, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 1) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 2 are intended to be illustrative only and that aspects of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0052] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include a mainframe 61, a reduced instruction set computer (RISC) architecture-based server 62, a server 63, a blade server 64, a storage device 65, and a network and network components 66. In some embodiments, the software components include network application server software 67 and database software 68.

[0053] The virtualization layer 70 comprises an abstraction layer capable of providing virtual entities such as virtual servers 71 , virtual storage 72 , virtual networks including virtual private networks 73 , virtual applications and operating systems 74 , and virtual clients 75 .

[0054] By way of example, the management layer 80 may provide the following functions: Resource provisioning 81 dynamically procures computing and other resources used to execute tasks within the cloud computing environment; Metering and pricing 82 tracks costs as resources are utilized within the cloud computing environment and generates and sends bills for the use of those resources; by way of example, those resources may include application software licenses; Security verifies the identity of cloud users and tasks and protects data and other resources; User portal 83 provides users and system administrators with access to the cloud computing environment; Service level management 84 allocates and manages cloud computing resources to meet required service levels; and Service level agreement (SLA) planning and execution 85 proactively prepares and procures cloud computing resources in accordance with SLAs in anticipation of upcoming demand.

[0055] The Workload Layer 90 illustrates examples of functionality available in a cloud computing environment. Examples of workloads and functionality that may be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instruction delivery 93, data analytics processing 94, transaction processing 95, and multi-key cryptographic data deduplication 96.

[0056] Traditional data reduction techniques, such as deduplication and / or compression, do not provide meaningful reductions when applied to encrypted data. Deduplication of multiple sets of data, each encrypted with a unique encryption key, fails when different encryption algorithms prevent traditional deduplication processes from identifying duplicate data chunks. Traditional data reduction techniques also do not provide sufficient data confidentiality between clients and storage systems.

[0057] The KYOK (keep your own key) approach to secure deduplication achieves deduplication of encrypted data without the client having access to any other client's encryption keys. Data from one client's key can be deduplicated against other data under that key or against data under the storage system's key. It is beneficial for a client to possess a set of keys that allows for deduplication across the set of keys while providing secure access to the data. The present disclosure provides a deduplication key associated with a set of data keys to enable deduplication across data encrypted with any of the set of data keys without the storage system having access to the data keys.

[0058] At least some aspects of the present disclosure provide additional capabilities for secure deduplication with KYOK, allowing clients to encrypt data using multiple keys. Various aspects improve KYOK deduplication by increasing the set of data on which deduplication can operate. Various methods described herein maintain data confidentiality and improve data confidentiality compared to traditional encryption and / or deduplication techniques. Various operations of multi-key encrypted data deduplication achieve relatively better data reduction than traditional fully client-side encryption and less client overhead than client-side deduplication.

[0059] At least some of the operations described herein may be used in conjunction with symmetric key encryption and / or asymmetric key encryption (e.g., public key infrastructure (PKI)). It should be understood by those skilled in the art that PKI encryption may be performed according to any configuration known in the art. For example, a public key in a PKI is not a private key; encrypting data using a public key requires a corresponding private key for decryption. A private key, as referenced throughout this disclosure, refers to a key that is not shared between the client and the storage system.

[0060] Throughout various aspects of this disclosure, clients are associated with processes, users, other entities, etc., that have separate data access privileges. For security purposes, each of these entities has a private data key for encrypting data. As used throughout this disclosure, an entity that has its own private key is referred to as a key user. A client may desire to allow data deduplication across some subset of key users. As used throughout this disclosure, a subset of key users is referred to as a key group. For example, a client may have private keys k0, k1, k2...k7, where keys k0, k1, and k2 form group 1 (e.g., g1) and private keys k3, k4, k5 form key group 2 (e.g., g2). As one skilled in the art would understand upon reading this disclosure, access control may be provided by a client restricting access privileges to key users that are members of a key group. As one skilled in the art would understand upon reading this disclosure, access control may be provided by restricting key users' access privileges to specific keys within a key group.

[0061] To enable deduplication across the set of keys in a key group, each key group is provided with a secret deduplication key, which is described in detail below. The private deduplication key is used to encrypt the deduplicated chunks. In some optional methods, each key group is provided with a private fingerprint key, which is described in detail below. The private fingerprint key is used to encrypt the deduplication metadata and / or the deduplicated chunks before sending them to the storage system. The private fingerprint key does not need to be available to the key users. Access to the private deduplication key and the private fingerprint key may, at least in some methods, be shared among the key users of the associated key group. As one skilled in the art will understand upon reading this disclosure, this sharing is not a confidentiality concern because all data encrypted with a deduplication key is common data that exists under different private data keys in the key group. Additionally, as described in more detail below, a Key ID associated with each chunk of data may be used, similar to KYOK deduplication, to ensure that only data with a matching Key ID, including deduplicated data, is returned for a read request.

[0062] Figure 3 illustrates a high-level architecture according to various configurations. Architecture 300 may be implemented in accordance with the present invention in a variety of configurations, particularly in any of the environments illustrated in Figures 1-2 and 4-11. Of course, as one of ordinary skill in the art would understand upon reading this description, architecture 300 may include more or fewer elements than those specifically illustrated in Figure 3.

[0063] Architecture 300 illustrates an exemplary implementation of a write operation using symmetric key encryption. Architecture 300 includes client 1 302. As shown, client 1 302 includes a key group 304 that includes private data keys k0 306, k1 308, and k2 310. Private data keys k0 306, k1 308, and k2 310 may be symmetric keys, asymmetric keys, etc., or any combination thereof. As shown, private data keys k0 306, k1 308, and k2 310 are symmetric keys. Key group 304 includes a private fingerprint key ks 312 and a private deduplication key kd 314.

[0064] Client 1 302 includes a meta generator 316. In a preferred method, the meta generator 316 calculates deduplication metadata associated with the data. In various configurations, the meta generator 316 may be located on either the client 1 302 or the storage system 338, or both, or on a network between the client 1 302 and the storage system 338. In various configurations, some of the KYOK functionality (e.g., metadata generation and / or encryption) may be located on the client, on a network connecting the client to the storage, in a unit attached to the storage system (e.g., if the unit does not provide the storage system with access to the client's keys or unencrypted data), etc.

[0065] Preferably, the storage system does not have access to the client's keys and / or unencrypted data. After the meta generator 316 generates the metadata, various encryption operations are performed, which are described in detail below. In configurations where the meta generator 316 is located in the storage system 338, the meta generator 316 is encapsulated so that the client's keys and unencrypted data are not exposed to the storage system 338. The meta generator 316 may be encapsulated in any manner known in the art, including via hardware (e.g., a smart NIC), a trusted computing environment, etc.

[0066] In a preferred method, the meta generator 316 performs metadata operations on the data at client 1 302 to identify data deduplication opportunities within the data. The meta generator 316 identifies the data deduplication opportunities using any data deduplication technique known in the art. In one embodiment, the meta generator 316 uses fixed block deduplication. In another embodiment, the meta generator 316 uses full object deduplication, etc. In yet another embodiment, the meta generator 316 identifies the data deduplication opportunities using a sliding window variable chunk deduplication technique. The meta generator 316 identifies and / or calculates deduplication fingerprints (e.g., rolling minimum hashes, cryptographic hashes, etc.). The meta generator 316 generates metadata (e.g., deduplication information) associated with the data deduplication opportunities, including pointers, chunk lengths, chunk fingerprints, etc. As described in more detail below, portions of the data deduplication information, such as the chunk fingerprint, may be encrypted using the client's private fingerprint key ks312. In one approach, the meta generator 316 compresses the data using any data compression technique known in the art. In some approaches, various compression techniques may be applied before or after chunking, or both. In one configuration, the pre-chunking compression may be a type of compression that improves chunking performance. In another configuration, the post-chunking compression may be tailored toward minimizing the resulting chunk size.

[0067] Fingerprint calculations may be performed on data chunks before and / or after compression. Pre-compression fingerprint calculations allow the fingerprint to be verified after decompression on read. Post-compression fingerprint calculations allow the fingerprint to be checked while the chunk is in its compressed state.

[0068] Client 1 302 includes a private data key encryptor 318. As one skilled in the art would understand upon reading this disclosure, private data key encryptor 318 may encrypt data using private data keys (e.g., k0 306, k1 308, and k2 310).

[0069] Client 1 302 includes a private deduplication key encryptor 320. As one skilled in the art would understand upon reading this disclosure, private deduplication key encryptor 320 may encrypt data using private deduplication key kd 314.

[0070] Client 1 302 includes a private fingerprint key encryptor 324. As one skilled in the art would understand upon reading this disclosure, private fingerprint key encryptor 324 may encrypt the fingerprint using private fingerprint key ks312. In an alternative approach, the private fingerprint key and the private deduplication key may be the same key. In such an alternative approach, as one skilled in the art would understand upon reading this disclosure, the private fingerprint key encryptor may encrypt the data, the fingerprint, or both using the private fingerprint key.

[0071] Client 1 302 includes a dechunker 326. In various configurations, the dechunker 326 may be located on client 1 302, on storage system 338, or both, or on a network between client 1 302 and storage system 338. In various configurations, the dechunker (e.g., including the functionality associated with dechunking) may be located on the client, on a network connecting the client to the storage, in a unit attached to the storage system (e.g., if the unit does not provide the storage system with access to the client's keys or unencrypted data), etc.

[0072] Preferably, the storage system does not have access to the client's keys and / or unencrypted data. In configurations where the dechunker 326 is located in the storage system 338, the dechunker 326 is encapsulated such that the client's keys and unencrypted data are not exposed to the storage system 338. The dechunker 326 may be encapsulated in any manner known in the art, including via hardware (e.g., a smart NIC), a trusted computing environment, etc.

[0073] The dechunker 326 may dechunk data chunks received from the storage system, where the data chunks are encrypted using multiple encryption keys. In a preferred approach, a data chunk encrypted using multiple encryption keys refers to a case where at least some data chunks are encrypted using a first key and at least some other data chunks are encrypted using a second key, where the first key and the second key are different keys. A data chunk encrypted using multiple encryption keys should not be construed as a data chunk that is subject to multiple client private encryption keys, either consecutively or simultaneously, unless expressly disclosed herein.

[0074] The dechunker 326 may identify which encryption key a data chunk was encrypted using and decrypt the data chunk using a corresponding decryptor (e.g., private data key decryptor 328, private fingerprint key decryptor 330, private deduplication key decryptor 332, etc.) As one skilled in the art will understand upon reading this disclosure, each decryptor may decrypt the data using a corresponding key.

[0075] Architecture 300 optionally includes a key ID manager 336. As one skilled in the art would understand upon reading this disclosure, key ID manager 336 stores and / or manages keys and any associated key IDs in any manner known in the art.

[0076] Architecture 300 includes a storage system 338. Storage system 338 may be any type of storage system known in the art. It should be understood by those skilled in the art that storage system 338 may include more or fewer components than those illustrated herein. Storage system 338 preferably performs the various deduplication operations described herein.

[0077] Storage system 338 includes secret storage encryption key 340. In a preferred approach, secret storage encryption key 340 never leaves storage system 338. In this preferred approach, secret storage encryption key 340 is not shared with client 1 302, client 2 342, any other clients, any other storage systems, etc. Secret storage encryption key 340 may be a symmetric key, an asymmetric key, etc. As shown, secret storage encryption key 340 is a symmetric key. As will be appreciated by those skilled in the art, secret storage encryption key 340 may optionally be used to encrypt client data, data chunks, chunk fingerprints, etc. received from a client.

[0078] Storage system 338 includes deduplication manager 344. Deduplication manager 344 locates and / or identifies duplicate data based on deduplication information provided by client1 302. In the case of chunking deduplication, the deduplication information is used along with chunk metadata to identify duplicate data chunks. As one skilled in the art would understand upon reading this disclosure, deduplication manager 344 performs any relevant deduplication operations. Any known deduplication technique may be used to deduplicate the data chunks.

[0079] Storage system 338 includes chunk storage 346. Chunk storage 346 may include any storage component known in the art. Chunk storage 346 may store data chunks, deduplicated data, non-deduplicated data, encrypted data, unencrypted data, deduplication information, etc., in any manner known in the art. In one manner, chunk storage 346 stores data chunks, deduplicated data, non-deduplicated data, encrypted data, unencrypted data, deduplication information, etc., in tables.

[0080] Storage system 338 includes chunk metadata in storage 348. Storage 348 may comprise any storage component known in the art. Storage 348 may store chunk metadata, data chunks, deduplicated data, non-deduplicated data, encrypted data, unencrypted data, deduplication information, etc., in any manner known in the art. Chunk metadata may include any metadata associated with non-deduplicated data chunks and / or deduplicated data chunks, including pointers, chunk lengths, chunk fingerprints, etc. Chunk metadata may be updated in response to receiving new data from deduplication manager 344.

[0081] Storage system 338 includes key ID list 350. Key ID list 350 includes a list of key IDs associated with the set of private data keys (e.g., k0 306, k1 308, and k2 310) used by client 1 302 to encrypt data.

[0082] The storage system 338 includes a private storage key encryptor 352. As one skilled in the art will understand upon reading this disclosure, the private storage key encryptor 352 may optionally encrypt data using a private storage encryption key 340.

[0083] The storage system 338 includes a private storage key decryptor 354. As one skilled in the art would understand upon reading this disclosure, the private storage key decryptor 354 may decrypt data encrypted using the private storage encryption key 340.

[0084] Client1 302's private data keys (e.g., k0 306, k1 308, and k2 310) are not shared with storage system 338, and private storage encryption key 340 is not shared with any client. The client and / or storage system may choose to store and / or manage keys using a key manager (see optional key ID manager 336) or any additional means.

[0085] Architecture 300 includes client 2 342. As shown, client 2 342 uses encrypted storage at rest and transmits unencrypted data (e.g., non-private data) to storage system 338. In at least some approaches, client 2 342 may transmit unencrypted data because it does not have concerns about data confidentiality. Unencrypted data may refer to data received by the storage system in an unencrypted state. In various approaches, any communication encryption known in the art may be implemented between the various components. Any communication encryption may be implemented between at least some of the various components according to methods known in the art.

[0086] Before writing data, client 1 302 may issue request 358 to storage system 338. Client 1 302 may send client's key group information from key ID list 350 associated with request 358. The client's key group information from key ID list 350 informs storage system 338 of the set of keys the client uses and uniquely identifies each key used by the client. The client's key group information from key ID list 350 may include a client identifier, a group identifier, a tag indicating whether the group allows deduplication on plaintext (e.g., unencrypted chunks), a list of key IDs in the group, and any associated key type identifiers for each key ID (e.g., data, deduplication, etc.). The client's key group information from key ID list 350 preferably does not include the keys associated with the key IDs.

[0087] In a preferred method, the key ID is not easily predictable and / or determinable from the key itself. A random value and / or a value encrypted with another key may be used to generate the key ID. Any other technique may be used to generate the key ID. A key ID that is not easily predictable and / or determinable from the key itself prevents unauthorized entities from gaining access to storage. For example, malware may gain access to an authorized process for a particular client's private data key ID. It is beneficial for this process to use this information to make it relatively difficult to guess other key ID values, thereby limiting its ability to extract and / or modify data under other keys. The key ID may be obtained (360) from a key ID manager 336. The key ID manager 336 may be used to communicate (362) the key ID to a storage system 338. Key ID Manager 336 may be implemented as software, hardware, a standalone entity, a process on Client1 302, etc., or any combination thereof.

[0088] As part of the request 358, the storage system 338 may verify the identity and access privileges associated with the client 1 302 and the request 358. In one method, the client 1 302 establishes a session with the storage system 338 via the request 358 to the storage system 338.

[0089] In one method, client 1 302 encrypts the write data before sending it to meta generator 316. client 1 302 sends the write data and a key ID (e.g., k0 306, k1 308, k2 310) indicating the private data key used to encrypt the write data to meta generator 316.

[0090] In a preferred method, the meta generator 316 calculates deduplication information (e.g., chunk metadata) associated with the write data. As one skilled in the art would understand upon reading this disclosure, the deduplication information may include operational details of the deduplication method. In one configuration, in the case of chunking deduplication, the deduplication information may include chunk start locations, chunk lengths, chunk fingerprints, similarity information, etc. In one method, the chunk fingerprint is a cryptographic hash that may be calculated in any manner known in the art.

[0091] In one method, the write data is compressed by meta generator 316. Any form of compression known in the art may be used. In some aspects, the write data may be sent in response to a request from storage system 338 (described in more detail below). In response to the request, the compressed data may be sent to private data key encryptor 318 and encrypted using an appropriate private data key from key group 304. The data encrypted by the private data key and the key ID associated with the private data key from key group 304 may be sent to storage system 338 (e.g., deduplication manager 344 on storage system 338).

[0092] In at least some methods, write data is sent to private fingerprint key encryptor 324, which encrypts the corresponding fingerprint using private fingerprint key ks312. The write data and a key ID associated with private fingerprint key ks312 may be sent to storage system 338 (e.g., deduplication manager 344 on storage system 338).

[0093] In yet another method, the write data may be sent in response to a request from the storage system 338 (described in more detail below). In response to the request, the write data is sent to the private deduplication key encryptor 320 and encrypted using the private deduplication key kd 314. The write data and a key ID associated with the private deduplication key kd 314 may be sent to the storage system 338 (e.g., the deduplication manager 344).

[0094] In any of the foregoing methods, the data is preferably opaque to the storage system 338 (e.g., the data is encrypted using a private data key, private fingerprint key ks 312, or private deduplication key kd 314, and these keys are not available to the storage system 338). In various methods, the deduplication information and the write data are tagged and / or otherwise indicated as associated.

[0095] Deduplication manager 344 locates and / or identifies duplicate data based on the deduplication information. In the case of chunking deduplication, the deduplication information is used along with chunk metadata to identify duplicate data chunks. For example, deduplication manager 344 compares pointers, fingerprints, chunk lengths, etc. from the decoded deduplication information with the pointers, fingerprints, chunk lengths, etc. stored in the chunk metadata. As one skilled in the art would understand upon reading this disclosure, deduplication manager 344 performs any relevant deduplication operations.

[0096] In response to performing the associated deduplication operation, updates may be performed on the chunk metadata. The updates reflect changes resulting from using any deduplicated chunks, adding information related to all remaining chunks, etc. The chunk metadata includes information about the key ID that encrypts the particular data chunk. All remaining data chunks associated with the new non-deduplicated fingerprint (e.g., fingerprints not already present in the chunk metadata) are written to chunk storage 346. Any new non-deduplicated data chunks are written to chunk storage 346.

[0097] Subsequent data access requests include a Key ID associated with the client's private data key used to encrypt the data. The Key ID may be part of a particular message. The Key ID may be part of an established session, process, etc.

[0098] Various aspects disclosed in detail below describe the behavior of the aforementioned configuration when using sliding window variable chunk size deduplication. Prior to the operations described in detail below, the client may request 358 key group information from the key ID list 350. Note that the client's action of sending unencrypted data may send key group information to the storage system 338. For clear data, default information may be assumed. Note that group and key ID information is transferred as part of the session and is not necessarily sent with each input / output (IO). It is beneficial for the storage system to encrypt all stored data 368 using the private storage key encryptor 352, even for data encrypted with a private client key. In the following description, the aforementioned encryption is assumed.

[0099] Figure 4 illustrates a high-level architecture according to various configurations. Architecture 400 may be implemented in accordance with the present invention in a variety of configurations, particularly in any of the environments illustrated in Figures 1-3 and 5-11. Of course, as one of ordinary skill in the art would understand upon reading this description, architecture 400 may include more or fewer elements than those specifically illustrated in Figure 4.

[0100] Architecture 400 illustrates an exemplary implementation of a read operation using symmetric key encryption. Architecture 400 includes client 1 302. As shown, client 1 302 includes a key group 304 that includes private data keys k0 306, k1 308, and k2 310. Private data keys k0 306, k1 308, and k2 310 may be symmetric keys, asymmetric keys, etc., or any combination thereof. As shown, private data keys k0 306, k1 308, and k2 310 are symmetric keys. Key group 304 includes private fingerprint key ks 312 and private deduplication key kd 314.

[0101] Client 1 302 includes a meta generator 316. In various configurations, the meta generator 316 may be located on client 1 302 or on storage system 338 or both, or on a network between client 1 302 and storage system 338. In various configurations, some of the KYOK functionality (e.g., metadata generation and / or encryption) may be located on the client, on a network connecting the client to the storage, in a unit attached to the storage system (e.g., if this unit does not provide the storage system with access to the client's keys or unencrypted data), etc.

[0102] Preferably, the storage system does not have access to the client's keys and / or unencrypted data. After the meta generator 316 generates the metadata, various encryption operations are performed, which are described in detail below. In configurations where the meta generator 316 is located in the storage system 338, the meta generator 316 is encapsulated so that the client's keys and unencrypted data are not exposed to the storage system 338. The meta generator 316 may be encapsulated in any manner known in the art, including via hardware (e.g., a smart NIC), a trusted computing environment, etc.

[0103] In a preferred method, the meta generator 316 calculates deduplication metadata associated with the data. In various configurations, the meta generator 316 may be located on the client 1 302 and / or on the storage system 338.

[0104] In a preferred method, the meta generator 316 performs metadata operations on the data at the client 1 302 to identify data deduplication opportunities within the data. The meta generator 316 identifies the data deduplication opportunities using any data deduplication technique known in the art. In one aspect, the meta generator 316 identifies the data deduplication opportunities using a sliding-window variable chunk deduplication technique. The meta generator 316 identifies and / or calculates deduplication fingerprints (e.g., rolling minimum hashes, cryptographic hashes, etc.). The meta generator 316 generates metadata (e.g., deduplication information) associated with the data deduplication opportunities, including pointers, chunk lengths, chunk fingerprints, etc. As described in more detail below, portions of the data deduplication information, such as the chunk fingerprints, may be encrypted using the client's private fingerprint key ks312.

[0105] In one approach, the meta generator 316 compresses the data using any data compression technique known in the art. In some approaches, various compression techniques may be applied before or after chunking, or both. In one configuration, the pre-chunking compression may be of a type that improves chunking performance. In another configuration, the post-chunking compression may be geared toward minimizing the resulting chunk size.

[0106] Fingerprint calculations may be performed on data chunks before and / or after compression. Pre-compression fingerprint calculations allow the fingerprint to be verified after decompression on read. Post-compression fingerprint calculations allow the fingerprint to be checked while the chunk is in its compressed state.

[0107] Client 1 302 includes a private data key encryptor 318. As one skilled in the art would understand upon reading this disclosure, private data key encryptor 318 may encrypt data using private data keys (e.g., k0 306, k1 308, and k2 310).

[0108] Client 1 302 includes a private deduplication key encryptor 320. As one skilled in the art would understand upon reading this disclosure, private deduplication key encryptor 320 may encrypt data using private deduplication key kd 314.

[0109] Client 1 302 includes a private fingerprint key encryptor 324. As one skilled in the art will understand upon reading this disclosure, private fingerprint key encryptor 324 encrypts the fingerprint using private fingerprint key ks312.

[0110] Client 1 302 includes a dechunker 326. In various configurations, the dechunker 326 may be located on client 1 302, on storage system 338, or both, or on a network between client 1 302 and storage system 338. In various configurations, the dechunker (e.g., including the functionality associated with dechunking) may be located on the client, on a network connecting the client to the storage, in a unit attached to the storage system (e.g., if the unit does not provide the storage system with access to the client's keys or unencrypted data), etc.

[0111] Preferably, the storage system does not have access to the client's keys and / or unencrypted data. In configurations where the dechunker 326 is located in the storage system 338, the dechunker 326 is encapsulated such that the client's keys and unencrypted data are not exposed to the storage system 338. The dechunker 326 may be encapsulated in any manner known in the art, including via hardware (e.g., a smart NIC), a trusted computing environment, etc.

[0112] The dechunker 326 may dechunk data chunks received from the storage system, where the data chunks are encrypted using multiple encryption keys. In a preferred approach, a data chunk encrypted using multiple encryption keys refers to a case where at least some data chunks are encrypted using a first key and at least some other data chunks are encrypted using a second key, where the first key and the second key are different keys. A data chunk encrypted using multiple encryption keys should not be construed as a data chunk that is subject to multiple client private encryption keys, either consecutively or simultaneously, unless expressly disclosed herein.

[0113] The dechunker 326 may identify which encryption key a data chunk was encrypted using and decrypt the data chunk using a corresponding decryptor (e.g., private data key decryptor 328, private fingerprint key decryptor 330, private deduplication key decryptor 332, etc.) As one skilled in the art will understand upon reading this disclosure, each decryptor may decrypt the data using a corresponding key.

[0114] Architecture 400 optionally includes a key ID manager 336. As one skilled in the art would understand upon reading this disclosure, key ID manager 336 stores and / or manages keys and any associated key IDs in any manner known in the art.

[0115] Architecture 400 includes a storage system 338. Storage system 338 may be any type of storage system known in the art. It should be understood by those skilled in the art that storage system 338 may include more or fewer components than those illustrated herein. Storage system 338 preferably performs the various deduplication operations described herein.

[0116] Storage system 338 includes a private storage encryption key 340. In a preferred approach, private storage encryption key 340 never leaves storage system 338. In this preferred approach, private storage encryption key 340 is not shared with client 1 302, client 2 342, any other clients, any other storage systems, etc. Private storage encryption key 340 may be a symmetric key, an asymmetric key, etc. As shown, private storage encryption key 340 is a symmetric key.

[0117] Storage system 338 includes deduplication manager 344. Deduplication manager 344 locates and / or identifies duplicate data based on deduplication information provided by client1 302. In the case of chunking deduplication, the deduplication information is used along with chunk metadata to identify duplicate data chunks. As one skilled in the art would understand upon reading this disclosure, deduplication manager 344 performs any relevant deduplication operations. Any known deduplication technique may be used to deduplicate the data chunks.

[0118] Storage system 338 includes chunk storage 346. Chunk storage 346 may include any storage component known in the art. Chunk storage 346 may store data chunks, deduplicated data, non-deduplicated data, encrypted data, unencrypted data, deduplication information, etc., in any manner known in the art. In one manner, chunk storage 346 stores data chunks, deduplicated data, non-deduplicated data, encrypted data, unencrypted data, deduplication information, etc., in tables.

[0119] Storage system 338 includes chunk metadata stored in storage 348. Storage 348 may comprise any storage component known in the art. Storage 348 may store chunk metadata, data chunks, deduplicated data, non-deduplicated data, encrypted data, unencrypted data, deduplication information, etc., in any manner known in the art. Chunk metadata may include any metadata associated with non-deduplicated data chunks and / or deduplicated data chunks, including pointers, chunk lengths, chunk fingerprints, etc. Chunk metadata may be updated in response to receiving new data from deduplication manager 344.

[0120] Storage system 338 includes key ID list 350. Key ID list 350 includes a list of key IDs associated with the set of private data keys (e.g., k0 306, k1 308, and k2 310) used by client 1 302 to encrypt data.

[0121] The storage system 338 includes a private storage key encryptor 352. As one skilled in the art will understand upon reading this disclosure, the private storage key encryptor 352 may optionally encrypt data using a private storage encryption key 340.

[0122] The storage system 338 includes a private storage key decryptor 354. As one skilled in the art would understand upon reading this disclosure, the private storage key decryptor 354 may decrypt data encrypted using the private storage encryption key 340.

[0123] Client1 302's private data keys (e.g., k0 306, k1 308, and k2 310) are not shared with storage system 338, and private storage encryption key 340 is not shared with any client. The client and / or storage system may choose to store and / or manage keys using a key manager (see optional key ID manager 336) or any additional means.

[0124] Architecture 400 includes client 2 342. As shown, client 2 342 uses encrypted storage at rest and transmits unencrypted data (e.g., non-private data) to storage system 338. In at least some approaches, client 2 342 may transmit unencrypted data because it does not have concerns about data confidentiality. Unencrypted data may refer to data received by the storage system in an unencrypted state. In various approaches, any communication encryption known in the art may be implemented between the various components. Any communication encryption may be implemented between at least some of the various components according to methods known in the art.

[0125] Prior to reading the data, client 1 302 may issue request 358 to storage system 338. In a preferred method, request 358 includes a request for key group information from key ID list 350 associated with request 358. The client's key group information from key ID list 350 informs storage system 338 of the set of keys the client uses and uniquely identifies each key used by the client. The client's key group information from key ID list 350 may include a client identifier, a group identifier, a tag indicating whether the group allows deduplication on plaintext (e.g., unencrypted chunks), a list of key IDs in the group, and any associated key type identifiers for each key ID (e.g., data, deduplication, etc.). The client's key group information from key ID list 350 preferably does not include the keys associated with the key IDs.

[0126] Client 1 302 sends a read request 402 containing a key ID value associated with the read data to storage system 338. In some methods, authorization for read request 402 may require a non-zero reference count for each chunk containing read request 402.

[0127] The deduplication manager 344 uses chunk metadata associated with the chunk storage 346 (e.g., metadata storage) to retrieve information associated with the chunks associated with the read request 402. The chunk metadata may include the key ID of the key used to encrypt each chunk, a reference count, a location, any other chunk information, or any combination thereof. In operation 404, the deduplication manager 344 requests the appropriate set of chunks from the chunk storage 346 on the storage system 338. Each chunk and associated metadata (e.g., including the key ID for each chunk) are sent to the private storage key decryptor 354 (406). Each chunk and associated metadata (e.g., including the key ID for each chunk) are sent to the dechunker 326 (408). The dechunker 326 looks up the key ID for each chunk. Dechunker 326 decrypts each chunk using a decryptor appropriate for the key associated with the Key ID (e.g., private data key decryptor 328, private deduplication key decryptor 332, no decryptor for a plaintext Key ID, etc.) As one skilled in the art will understand upon reading this disclosure, each decryptor may decrypt the data using a corresponding key.

[0128] Dechunker 326 performs any necessary decryption and merges the chunks to generate output data 414 for client 1 302. In some approaches, client 1 302 may provide its decryptors (e.g., private fingerprint key decryptor 330, private data key decryptor 328, private deduplication key decryptor 332, etc.) that are separate from dechunker 326 as a means of keeping the client's keys private. The decryptors (e.g., private fingerprint key decryptor 330, private data key decryptor 328, private deduplication key decryptor 332, etc.) may be separate components (as shown), or at least two decryptors may be a single unit that is appropriately provided with an associated decryption key for each chunk, as would be understood by one of ordinary skill in the art, or both.

[0129] In various operations, the deduplication manager 344 uses the chunk metadata to identify a data chunk associated with the read request 402. The identified data chunk is read from the chunk storage 346. The deduplication manager 344 compares the pointer, fingerprint, chunk length, etc. from the read request 402 with the pointer, fingerprint, chunk length, etc. stored in the chunk metadata. In a preferred method, the chunk metadata includes an identifier (e.g., a key ID) of the key used to encrypt each data chunk. As one skilled in the art would understand upon reading this disclosure, the encrypted data chunk is decrypted using an appropriate decryptor. For example, a data chunk encrypted using the private storage encryption key 340 may be sent to the private storage key decryptor 354. The private storage key decryptor 354 may decrypt the data encrypted using the private storage encryption key 340.

[0130] The dechunker 326 may de-chunk data chunks received from the storage system, where the data chunks are encrypted using multiple encryption keys. In a preferred approach, a data chunk encrypted using multiple encryption keys refers to a case where at least some data chunks are encrypted using a first key and at least some other data chunks are encrypted using a second key, where the first key and the second key are different keys. A data chunk encrypted using multiple encryption keys should not be construed as a data chunk that is subject to multiple client private encryption keys, either consecutively or simultaneously, unless expressly disclosed herein. The dechunker 326 may identify which encryption key a data chunk was encrypted with and decrypt the data chunk using a corresponding decryptor (e.g., private fingerprint key decryptor 330, private data key decryptor 328, private deduplication key decryptor 332, etc.). As one skilled in the art will understand upon reading this disclosure, each decryptor may decrypt data chunks encrypted using a corresponding key.

[0131] In various ways, de-chunker 326 may perform any de-compression operation known in the art. De-chunker 326 may merge the data chunks to generate output data 414 for client 1 302.

[0132] As one skilled in the art will understand upon reading this disclosure, the decryptor may be provided by client 1 302 separate from dechunker 326 to keep the various private keys secret.

[0133] Data chunks encrypted using the client's key sent 408 from the storage system 338 may include data chunk metadata containing chunk fingerprints to verify that each chunk was delivered correctly and decrypted using the appropriate key. The data chunk metadata may provide an end-to-end check.

[0134] In a preferred configuration of architecture 400, various compression and / or deduplication techniques may be performed without the private key ever leaving client 1 302. The private key is not available to storage system 338, client 2 342, any other clients, any third-party services, any other storage systems, etc. Portions of the deduplication process (e.g., the chunking process in architecture 400) are preferably performed client-side, thereby significantly reducing or eliminating external visibility of the private key.

[0135] In a preferred method, communications between the client and the storage system may be encrypted using any encryption method known in the art, for example, standard transport encryption (e.g., transport layer security (TLS)).

[0136] In a preferred method, in contrast to traditional deduplication operations, additional chunk metadata is associated with each data chunk to indicate the key under which the chunk is encrypted. Different clients may contain data chunks that are identical (e.g., duplicates with the same fingerprint). However, if duplicate data chunks from different clients are encrypted using different keys, traditional deduplication of a first client's data chunk against a second client's data chunk requires key sharing. In stark contrast, various configurations of the present disclosure provide chunk identifiers that include information identifying the key used to encrypt the data chunk, index, tag, fingerprint, key ID, etc. Information regarding the key ID may be provided by client1 302 to storage system 338 prior to any input / output (I / O) operation.

[0137] In the context of data confidentiality, a key ID is not the key itself. For example, the provided key ID may be a cryptographic hash, such as SHA256, of the private data key of the key group 304. In another example, the key ID may be a unique index number of the private data key of the key group 304. The storage system 338 may create an internal reference key ID. For example, the storage system 338 may create an index table of key IDs (e.g., key ID list 350).

[0138] The chunk metadata may, in various ways, include a reference counter to indicate how many different pieces of data point to the data chunk. Metadata indicating the source key ID and the reference count for each key ID may be added to each data chunk. Attempts to read chunks that do not contain a non-zero reference count for the key ID of the request may be intercepted. This interception provides access control to deduplicated data chunks. For example, client 1 302 using key ID associated with private data key k1 308 may include data containing deduplicated chunk A. Chunk A may be the only portion of data encrypted using private data key k1 308 that was deduplicated for chunk A. Client 1 302 may delete the data containing deduplicated chunk A. The reference counter for client 1 302's key ID associated with private data key k1 308 is decremented to 0. All subsequent attempts to read chunk A using the key ID associated with client1's 302 private data key k1 308 may be blocked, and all requests with an associated reference count other than zero may be allowed.

[0139] If data encrypted using a private data key from the key group 304 is not initially deduplicated, it may be deduplicated in response to writing a data chunk encrypted using a private storage encryption key 340 containing a matching fingerprint, writing an unencrypted data chunk, or both. The process for deduplicating a data chunk that is not initially deduplicated may be referred to as backporting in various configurations described herein. A backport operation involves a deduplication operation that stores a new data chunk (e.g., encrypted using a key available to the storage system 338). Specifically, the original chunk was written with a private data key, and backporting stores the new chunk, typically written with a private deduplication key from the same key group. The new chunk is written with a key known to storage only if the flag allowing deduplication for plaintext is on; the new chunk is written in plaintext (e.g., sent to the storage system 338), and the storage system encrypts the data at rest with its own private storage encryption key 340.

[0140] Backporting involves deleting all existing chunks that contain a matching fingerprint but a different key ID. The metadata for the stored and / or deleted data chunks may be transformed to point to the new data chunks (e.g., as if the new data chunks had existed in the first place). The order in which data chunks are written with different keys does not affect the final deduplication efficiency. If many private copies of a data chunk exist, all subsequent at-rest and / or unencrypted writes of copies of the data chunk use the backporting techniques described herein to reduce the amount of space stored on the system.

[0141] The various configurations described herein may be implemented using asymmetric encryption keys (e.g., PKI). Symmetric key encryption may be preferable to asymmetric key encryption for relatively large data sets. Asymmetric key encryption involves a client containing a public key that is shared with the storage system and a private key that is not shared with the storage system. The storage system may contain both a public key that is shared with the client and a private key that is not shared with the client. Although the public key in a PKI is not secret, encrypting data with the public key requires the corresponding private key to decrypt the data.

[0142] Figure 5 is a high-level architecture according to various configurations. Architecture 500 may be implemented in accordance with the present invention in a variety of configurations, particularly in any of the environments illustrated in Figures 1-4 and 6-11. Of course, as one of ordinary skill in the art would understand upon reading this description, architecture 500 may include more or fewer elements than those specifically illustrated in Figure 5.

[0143] Architecture 500 illustrates an exemplary implementation for writing data in the clear from client c2 502 to storage 504. Architecture 500 includes key group g0 information 506 for client c2. Client c2's key group g0 information 506 includes a dct (deduplicate clear) flag. The dct flag is set to 1 to indicate that deduplication is allowed for the clear. The only key in the key group is clr (clear), indicating that no encryption is used in this configuration. A standard key ID, kid.clr, is used to indicate that the data is not encrypted. For example, a key ID value of 0 may be reserved for kid.clr so that all clients have the same clear key ID. The key is not sent to storage 504 as part of the group information sent to storage 504 (sending operation not shown).

[0144] Storage 504 includes a meta generator 508. Meta generator 508 performs in a manner similar to meta generator 316 described in detail above with reference to Figures 3-4. Alternatively, meta generator 508 is located on client c2 502.

[0145] Client c2 502 writes data object M2 510, which includes data m2. Operation 512 includes sending data object M2 510, which includes data m2, to a meta generator 508 on storage 504. As shown, meta generator 508 identifies two data chunks 514 (e.g., data chunk d3 516 and data chunk d4 518). Data chunk d3 516 is associated with fingerprint S3 and data d3. Data chunk d4 518 is associated with fingerprint S4 and data d4. As described in detail above, in various ways, the fingerprints may include the chunk length of each data chunk. Metadata 520 includes key group identifier g0 and key ID kid.clr, which indicates that the data is plaintext. At operation 522, the data chunks are stored. Operation 524 stores data chunk d3 516, which includes fingerprint S3 (e.g., stored in plain text) and associated data d3 at kid.clr. Operation 526 stores data chunk d4 518, which includes fingerprint S4 (e.g., stored in plain text) and associated data d4 at kid.clr.

[0146] Table 528 contains the deduplication key ID list metadata associated with each chunk, assuming that none of the chunks have been deduplicated at this point. The first row of table 528 indicates that data chunk d3 516 containing fingerprint S3 is owned by client c2 502. The first row of table 528 indicates that data chunk d3 516 containing fingerprint S3 is encrypted with kid.clr (e.g., the data chunk is in plaintext) and is accessible only using the kid.clr key ID. Table 528 indicates that data chunk d3 516 containing fingerprint S3 has a reference count of 1 and that data chunk d3 516 containing fingerprint S3 is stored at location l1. The second row of table 528 shows the corresponding information about data chunk d4 518 containing fingerprint S4, which is stored at location l2.

[0147] Figure 6 illustrates a high-level architecture according to various configurations. Architecture 600 may be implemented in accordance with the present invention in a variety of configurations, particularly in any of the environments illustrated in Figures 1-5 and 7-11. Of course, as one of ordinary skill in the art would understand upon reading this description, architecture 600 may include more or fewer elements than those specifically illustrated in Figure 6.

[0148] Architecture 600 illustrates an exemplary implementation of adding additional data by client c0 602 to storage 504 under key k0. Client c0's key group g0 information 604 includes a dct flag set to 1 (deduplicate on plaintext) to indicate that deduplication is allowed for data written with key IDs belonging to group g0 in addition to data written in plaintext. Specifically, a flag of dct=1 allows deduplication on plaintext. Client c0's key group g0 information 604 indicates that key group g0 includes data key k0 and data key k1 with respective key IDs kid.k0 and kid.k1. Client c0's key group g0 information 604 includes deduplication key kd with key ID kid.kd. Client c0's key group g0 information 604 includes plaintext data key clr with associated key ID kid.clr, as previously described. dct is equal to 1 to indicate that plaintext deduplication is allowed and that fingerprints are not encrypted with the fingerprint key.

[0149] If the data is encrypted, a meta generator 606 resides in client c0 602. The meta generator 606 is similar to the meta generator 316 described in detail above with reference to Figures 3-4.

[0150] Client c0 602 writes data object M0 608, which includes data m0. Operation 610 includes sending data object M0 608, which includes data m0, to meta generator 606. As shown, meta generator 606 identifies three data chunks 612 (e.g., data chunk d3 614, data chunk d2 616, and data chunk d0 618). Data chunk d3 614 is associated with fingerprint S3 and data d3. Data chunk d2 616 is associated with fingerprint S2 and data d2. Data chunk d0 618 is associated with fingerprint S0 and data d0. As described in detail above, in various ways, the fingerprints may include the chunk length of each data chunk. Metadata 620 includes a key group identifier g0 and a key ID kid.k0 indicating that the data is encrypted using the private key associated with key ID kid.k0. Operation 622 includes sending fingerprints S0, S2, and S3 to storage 504. The key group identifier g0 enables storage 504 to verify that the deduplication key ID is kid.kd from the previously transferred group information (e.g., key group g0 information 604 for client c0; see also request 358 with reference to FIGS. 3-4). The key group identifier g0 enables storage 504 to verify that deduplication is allowed for plaintext data for client c0 602 in group g0.

[0151] The storage 504 examines the current chunk metadata table 528 (see FIG. 5) and determines that S0 and S2 are new fingerprints. The storage 504 examines the chunk metadata table 528 and determines that S3 already exists in kid.clr. Because group g0 of client c0 602 allows cleartext deduplication and kid.clr is available to all clients (e.g., kid.clr represents cleartext), chunk S3 (e.g., data chunk d3 614) may be deduplicated.

[0152] The storage 504 may request (624) that client c0 602 send chunk S0 (e.g., data chunk d0 618) with kid.k0 and chunk S2 (e.g., data chunk d2 616) with kid.k0. The storage 504 does not request chunk S3. Client c0 602 encrypts (626) data chunk d0 with key k0 and sends (628) the encrypted chunk along with metadata (e.g., including fingerprint S0 and key ID kid.k0) to the storage 504. Similarly, after encrypting (630) data chunk d2, chunk S2 is sent (632) to the storage 504. The storage 504 stores the chunks and updates the chunk metadata table 528. Row 1 of table 528 shows an update for S3 to include information that the chunk was also written by client c0 602 with kid.k0 and contains a reference count of 1 with this key ID, but leaves the encryption key ID as kid.clr. S3 may be accessed using either kid.clr or kid.k0. Row 3 of table 528 includes new metadata indicating that chunk S0 was encrypted with the private key associated with key ID kid.k0, was written by client c0 602, is accessible using kid.k0, contains a reference count of 1 with this key ID, and is stored at location l3. Row 4 of table 528 shows similar information for chunk S2, which is stored at location l4.

[0153] Figure 7 illustrates a high-level architecture according to various configurations. Architecture 700 may be implemented in accordance with the present invention in a variety of configurations, particularly in any of the environments illustrated in Figures 1-6 and 8-11. Of course, as one of ordinary skill in the art would understand upon reading this description, architecture 700 may include more or fewer elements than those specifically illustrated in Figure 7.

[0154] Architecture 700 illustrates an exemplary implementation of adding additional data by client c0 602 under key k1 to storage 504. Key k1 is part of key group g0 (see key group g0 information 604 for client c0 shown in FIG. 6).

[0155] Client c0 602 writes data object M1 702, which includes data m1. Operation 704 includes sending data object M1 702, which includes data m1, to meta generator 606. As shown, meta generator 606 identifies two data chunks 706 (e.g., data chunk d1 708 and data chunk d2 710). Data chunk d1 708 is associated with fingerprint S1 and data d1. Data chunk d2 710 is associated with fingerprint S2 and data d2. Metadata 712 includes key group identifier g0 and key ID kid.k1, which indicates that the data is encrypted using the private key associated with key ID kid.k1. Operation 714 includes sending fingerprints S1 and S2 to storage 504. The key group identifier g0 allows storage 504 to verify that the deduplication key ID is kid.kd from the previously transferred group information (e.g., key group g0 information 604 for client c0, see also request 358 with reference to FIG. 3).

[0156] The storage 504 may check the current chunk metadata table 528 and determine that S1 is a new fingerprint. The storage 504 may check the current chunk metadata table 528 and determine that S2 already exists in kid.k0. Chunk S2 (e.g., data chunk d2 710) may be deduplicated using deduplication kid.kd of group g0. The storage 504 may request (716) that client c0 602 send chunk S1 (e.g., data chunk d1 708) with kid.k1 and chunk S2 with kid.kd. Client c0 602 may encrypt (718) data chunk d1 with key k1 and send (720) the encrypted chunk along with metadata (e.g., including fingerprint S1 and key ID kid.k1) to the storage 504. Client c0 602 encrypts (722) data chunk d2 with key kd and sends (724) the encrypted chunk along with metadata (e.g., including fingerprint S2 and key ID kid.kd) to storage 504. This latter action backports chunk S2 from key ID kid.k0 to key ID kid.kd, thus allowing the chunk to be decrypted by both the key user associated with key k0 and the key user associated with key k1.

[0157] Storage 504 stores the chunk and updates chunk metadata table 528. Line 4 of table 528 shows an update for S2 to include information that the chunk was also written by client c0 602 with kid.k1, contains a reference count of 1 with this key ID, and changes the encryption key ID to kid.kd. The location is shown as l5, such as in the case of a copy on the writing system. In a direct overwrite system, the location remains l4. Line 5 is the new metadata indicating that chunk S1 was written by client c0 602, encrypted with the private key associated with key ID kid.k1, was accessed using kid.k1, contains a reference count of 1 with this key, and is stored at location l6.

[0158] Figure 8 illustrates a high-level architecture according to various configurations. Architecture 800 may be implemented in accordance with the present invention in a variety of configurations, particularly in any of the environments illustrated in Figures 1-7 and 9-11. Of course, as one of ordinary skill in the art would understand upon reading this description, architecture 800 may include more or fewer elements than those specifically illustrated in Figure 8.

[0159] Data confidentiality is improved when deduplication using plaintext is not allowed. Architecture 800 shows an example implementation of adding additional data by client c0 602 to storage 504 with key k2, which does not allow deduplication on plaintext. In this architecture, it is assumed that the operation follows that shown in FIG. 5.

[0160] Key group g1 information 802 for client c0 includes a dct flag (deduplicate for plaintext) set to 0 to indicate that data written with key IDs belonging to group g1 can be deduplicated, but data written in plaintext cannot be deduplicated. Key group g1 information 802 for client c0 includes data keys k2 and k3 with respective key IDs kid.k2 and kid.k3. Key group g1 information 802 for client c0 includes a deduplication key ke with key ID kid.ke. Key group g1 information 802 for client c0 includes a fingerprint key ks that includes key ID kid.ks when deduplication for plaintext is not allowed.

[0161] If the data is encrypted, a meta generator 606 resides in client c0 602. The meta generator 606 is similar to the meta generator 316 described in detail above with reference to Figures 3-4.

[0162] Client c0 602 writes data object M0 804, which includes data m0. Operation 806 includes sending data object M0 804, which includes data m0, to meta generator 606. As shown, meta generator 606 identifies three data chunks 808 (e.g., data chunk d3 810, data chunk d2 812, and data chunk d0 814). Data chunk d3 810 is associated with fingerprint S3 and data d3. Data chunk d2 812 is associated with fingerprint S2 and data d2. Data chunk d0 814 is associated with fingerprint S0 and data d0. At 816, the fingerprints are encrypted using private fingerprint key ks: S0 is encrypted to S0', S2 is encrypted to S2', and S3 is encrypted to S3'. Metadata 818, including key group identifier g1 and key ID kid.k2 (e.g., indicating that the data is encrypted using the private key associated with key ID kid.k2), and encrypted fingerprints S0′, S2′, and S3′, are sent (820) to storage 504. The key group identifier g1 enables storage 504 to verify that the deduplication key ID is kid.ke from the previously transferred group information (e.g., key group g1 information 802 for client c0; see also request 358 with reference to FIG. 3). The key group identifier g1 enables storage 504 to verify that deduplication is not allowed on plaintext data for group g1 for client c0.

[0163] Storage 504 consults current chunk metadata table 528 of FIG. 5 and determines that S0', S2', and S3' are new fingerprints. The fingerprint of chunk S3 (e.g., data chunk d3 810) is encrypted to S3', and this value is passed to storage 504. Thus, even if the data content of d3 matches the chunk S3 stored in table 528 and written by client c2 (see FIG. 5), storage 504 does not deduplicate this chunk because the encrypted fingerprint S3' does not match. Thus, the encryption of the fingerprints cryptographically separates the deduplication area of ​​group g1 for client c0 from the other groups. Storage 504 cannot determine whether the content of any data in the first group matches the content of any data in the second group.

[0164] If plaintext deduplication is not enabled, storage 504 does not compare fingerprints of plaintext chunks. The deduplication operation of storage 504 limits fingerprint comparison to key IDs that belong to the operation's key group. Deduplication is not performed even if fingerprints from different groups match (e.g., using cryptographic hash fingerprints generally makes the probability of such collisions negligible). This reduces the table space required to search for fingerprint matches. For example, even if the plaintext fingerprints of data chunk 810 and data chunk 516 (FIG. 5) match, metadata fingerprints S3' and S3 do not match.

[0165] Storage 504 requests (822) that client c0 602 send chunks S0', S2', and S3' with kid.k2. Client c0 602 encrypts data chunk d0 with key k2 (824) and sends (826) the encrypted chunk to storage 504 along with metadata including the encrypted fingerprint S0' and key ID kid.k2. Similarly, chunks S2 and S3 are each encrypted (828, 830). The encrypted chunks and metadata including each encrypted fingerprint and key ID are sent to storage 504 (832, 834), respectively.

[0166] Storage 504 stores the chunk and updates chunk metadata table 528. Line 3 is new metadata indicating that chunk S0' was written by client c0 602, encrypted with the key associated with kid.k2, is accessible using kid.k2, contains a reference count of 1 with key ID kid.k2, and is stored at location l3. Line 4 shows similar information for chunk S2'. Line 5 shows similar information for chunk S3'.

[0167] Figure 9 illustrates a high-level architecture according to various configurations. Architecture 900 may be implemented in accordance with the present invention in a variety of configurations, particularly in any of the environments illustrated in Figures 1-8 and 10-11. Of course, as one of ordinary skill in the art would understand upon reading this description, architecture 900 may include more or fewer elements than those specifically illustrated in Figure 9.

[0168] Architecture 900 shows an example implementation of adding additional data by client c0 602 under key k3. Key k3 is part of key group g1 (see client's key group information 802 in FIG. 8). In this architecture, it is assumed that the operations follow those shown in FIG. 8.

[0169] Client c0 602 writes data object M1 902, which includes data m1. Operation 904 includes sending data object M1 902, which includes data m1, to meta generator 606. As shown, meta generator 606 identifies two data chunks 906 (e.g., data chunk d1 908 and data chunk d2 910). Data chunk d1 908 is associated with fingerprint S1 and data d1. Data chunk d2 910 is associated with fingerprint S2 and data d2. At 912, the fingerprints are encrypted using private fingerprint key ks: S1 is encrypted to S1', and S2 is encrypted to S2'. Metadata 914, including key group identifier g1 and key ID kid.k3 (e.g., indicating that the data is encrypted using the private key associated with key ID kid.k3), and encrypted fingerprints S1' and S2', are sent (916) to storage 504. Key group identifier g1 enables storage 504 to verify that the deduplication key ID is kid.ke from the previously transferred group information (e.g., key group g1 information 802 for client c0; see also request 358 with reference to FIG. 3).

[0170] The storage 504 consults the chunk metadata table 528 of FIG. 8 and determines that S1' is a new fingerprint and that S2' already exists in kid.k2. Chunk S2' may be deduplicated using deduplication key ke for group g1. The storage 504 requests (918) that client c0 602 send chunk S1' in kid.k3 and chunk S2' in kid.ke. Client c0 602 encrypts (920) data chunk d1 with key k3 and sends (922) the encrypted chunk to storage 504 along with metadata including the encrypted fingerprint S1' and key ID kid.k3. Similarly, client c0 602 encrypts (924) data chunk d2 with key ke and sends (926) the encrypted chunk to storage 504 along with metadata including the encrypted fingerprint S2' and key ID kid.ke. This latter operation backports chunk S2' from key ID kid.k2 to key ID kid.ke, thus allowing the chunk to be decrypted by both the key user associated with key k1 and the key user associated with key k2.

[0171] Storage 504 stores the chunk and updates chunk metadata table 528. Line 4 shows an update for S2' to include information that the chunk was also written by client c0 602 with kid.k1, contains a reference count of 1 with key ID kid.k1, has changed its encryption key ID to kid.ke, and is now stored at location l6. Line 6 is new metadata indicating that chunk S1' was written by client c0 602, encrypted with a key associated with kid.k3, is accessible using kid.k3, contains a reference count of 1 with key ID kid.k3, and is stored at location l7.

[0172] As explained in the previous architecture, it is beneficial to maintain a reference count for each Key ID per chunk. Therefore, a non-zero reference count with a particular Key ID is required to read a data chunk. If a chunk contains a positive reference count, this count is decremented each time a reference to the chunk is removed, until the counter reaches zero. After the reference count reaches zero, the Key ID may be removed from the chunk's Access Key ID list. This removal occurs while the reference counts with other Key IDs are non-zero.

[0173] Figure 10 illustrates a high-level architecture according to various configurations. Architecture 1000 may be implemented in accordance with the present invention in a variety of configurations, particularly in any of the environments illustrated in Figures 1-9 and 11. Of course, as one skilled in the art would understand upon reading this description, architecture 1000 may include more or fewer elements than those specifically illustrated in Figure 10.

[0174] Architecture 1000 illustrates an exemplary read operation for data object M1 (see FIG. 9). Data object M1 was written with key ID kid.k3. Operation 1002 involves client c0 602 issuing a read request for M1 to storage 504, including group g1 and kid.k3 as tags. Storage 504 determines, in a manner known to those skilled in the art (e.g., from the object chunk manifest), that chunks S1' and S2' contain object M1. In operation 1004, storage 504 reads S1' and S2'. Chunk S1' and associated metadata 1006, and chunk S2' and associated metadata 1008 are sent to client c0 602 for dechunking (1010, 1012), respectively. Chunk S1' is decrypted using data key k3, determined from key ID kid.k3 in the metadata (1014). Chunk S2' is decrypted (1016) using a deduplication key ke determined from the key ID kid.ke in the metadata. The fingerprint is decrypted (1018) using a fingerprint key ks determined from the policy of key group g1 (the fingerprint's path to decryption 1018 is not shown). To check for data corruption, the decrypted fingerprints 1020 (S1 and S2) may be compared to the fingerprints of decrypted data chunks d1 1024 and d2 1030. The decrypted chunks 1024, 1030 are sent (1028, 1026), respectively, to a chunk merger 1032. The merged chunk 1022 is a data object M1 containing data m1. Data object M1 is returned (1034), completing the read operation.

[0175] Referring now to Figure 11, a flowchart of a method 1100 is shown according to one embodiment. Method 1100 may be performed in accordance with the present invention in various embodiments, particularly in any of the environments shown in Figures 1-10. Of course, as one skilled in the art would understand upon reading this description, method 1100 may include more or fewer operations than those specifically illustrated in Figure 11.

[0176] Each of the steps of method 1100 may be performed by any suitable component of an operating environment. For example, in various aspects, method 1100 may be performed, in part or in whole, by a computer or other device including one or more processors. A processor (e.g., a processing circuit, chip, or module, or a combination thereof) implemented in hardware and / or software and preferably including at least one hardware component may be utilized within any device to perform one or more steps of method 1100. Exemplary processors include, but are not limited to, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or the like, combinations thereof, or any other suitable computing device known in the art.

[0177] As shown in FIG. 11 , method 1100 includes operation 1102. Operation 1102 includes transmitting key group information to a storage system. The key group information may be transmitted to the storage system by any method known in the art. The key group information preferably includes key ID information for client data keys in the key group. The client data keys belonging to the key group may be either client private keys or client deduplication keys. The key group information preferably does not include the actual client private keys or the actual client deduplication keys. In a preferred method, the key group includes client private keys for encrypting data. The client private keys are associated with the key group. In a preferred method, the key ID is not easily predictable and / or determinable from the key itself. A random value and / or a value encrypted with another key may be used to generate the key ID. Any other technique may be used to generate the key ID.

[0178] In various aspects, the client data key enables deduplication of data chunks encrypted with any of the client data keys in the key group. For example, client data encrypted with a client's private key belonging to a key group may be deduplicated against other data encrypted with that client's private key or against data encrypted with any other client's private key in the key group. The client's private key provides the ability to deduplicate across the set of keys in the key group without the storage system having access to the client's private key. In a preferred approach, to enable deduplication across the set of client's private keys, the key group includes a private deduplication key (e.g., the client's deduplication key) for encrypting the deduplicated chunks.

[0179] Operation 1104 includes generating deduplication information. The deduplication information includes fingerprints associated with chunks of client data. Preferably, the deduplication information includes deduplication opportunities. In some methods, a meta generator identifies and / or calculates deduplication fingerprints (e.g., rolling minimum hashes, cryptographic hashes, etc.). In other methods, other components known in the art may identify and / or calculate deduplication fingerprints to identify deduplication opportunities. In some methods, metadata (e.g., deduplication information) associated with data deduplication opportunities is generated, including pointers, chunk lengths, chunk fingerprints, etc. In a preferred method, the deduplication information (e.g., including at least chunk fingerprints) is generated before encrypting the data and / or data chunks to be sent to the storage system, as described below.

[0180] As one skilled in the art would understand upon reading this disclosure, the deduplication information may include details of the operation of the deduplication method. In one configuration, in the case of chunking deduplication, the deduplication information may include chunk start positions, chunk lengths, chunk signatures, similarity information, etc. In one method, the chunk fingerprint is a cryptographic hash that may be computed in any manner known in the art.

[0181] In some optional methods, portions of the data deduplication information, such as the chunk fingerprint, may be encrypted using the client's private fingerprint key. Preferably, the client's private fingerprint key is not available to the storage system. As one skilled in the art will understand upon reading this disclosure, the client's private fingerprint key encryptor may encrypt the fingerprint using the client's private key. In a preferred embodiment, the fingerprint is encrypted using the client's private fingerprint key before transmitting the deduplication information to the storage system.

[0182] Act 1106 includes encrypting the data chunk using one of the client data keys. In a preferred method, the data chunk is encrypted before sending the data chunk to the storage system. In various methods, the data chunk is encrypted using one of the client's private keys in a key group. In a preferred embodiment, the decryption key corresponding to the encrypted data chunk is not available to the storage system.

[0183] Operation 1108 includes transmitting the deduplication information to the storage system for use in a deduplication process by the storage system. The deduplication information may be transmitted to the storage system in any manner known in the art. In a preferred manner, the storage system uses the deduplication information to identify data chunks for deduplication based on the deduplication information. For data chunks not identified for deduplication, the storage system may request client data associated with those data chunks. As one skilled in the art would understand in light of this disclosure, the client data associated with those data chunks is encrypted with one of the client's private keys. Preferably, the client data associated with the data chunks includes corresponding key ID information that identifies the client's private key used to encrypt the data chunks. In various manners, a request for client data associated with a data chunk not identified for deduplication by the storage system may be received from the storage system. The client data associated with the data chunks, encrypted with the client's private key, may be transmitted to the storage system in response to the request in any manner known in the art.

[0184] Act 1110 includes transmitting the encrypted data chunks to the storage system. In some methods, the encrypted data chunks are transmitted to the storage system in response to a request from the storage system. In other methods, the encrypted data chunks may be transmitted to the storage system in response to a request from the client or from another source known in the art. In accordance with any of the aspects described in detail above, the request may include a request for the data chunks, associated data, or both. The request preferably also requests key ID information identifying the client data key used to encrypt the data chunks. The encrypted data chunks may be transmitted to the storage system in any manner known in the art.

[0185] In some methods, a request may be received from a storage system for client data associated with a data chunk stored at the storage system encrypted with the client's private key. The request preferably includes that the client data associated with the data chunk be transmitted to the storage system encrypted with the client's deduplication key. The client data may be transmitted to the storage system in response to the request in any manner known in the art in view of this disclosure.

[0186] A storage system performs deduplication in accordance with various aspects described herein. The storage system may deduplicate data chunks stored on the storage system against chunks of client data, and deduplication information is used to select data chunks for deduplication. In one approach, a deduplication manager locates and / or identifies duplicate data based on the deduplication information. In the case of chunking deduplication, the deduplication information is used in conjunction with chunk metadata to identify duplicate data chunks. For example, the deduplication manager compares pointers, fingerprints, chunk lengths, etc. from the decrypted deduplication information with any pointers, fingerprints, chunk lengths, etc. stored in a chunk metadata repository on the storage system. As one skilled in the art would understand upon reading this disclosure, the deduplication manager performs any associated deduplication operations. In a preferred approach, the storage system stores metadata for the data chunks, and the metadata includes a key identifier that uniquely identifies the key used to encrypt the data chunks.

[0187] In various methods, encrypted data stored in a storage system is retrieved in response to a request for client data from a client connected to the storage system. The request may include multiple requests for client data, as would be understood by one skilled in the art. Furthermore, the request may include a request (or multiple requests) for client data with two or more of the client data keys. The storage system preferably identifies a data chunk associated with the data request. A method for retrieving encrypted data from the storage system includes retrieving metadata associated with the data chunk. The metadata preferably includes key ID information. The storage system retrieves the encrypted client data associated with the data request based on the metadata according to any of the methods described herein. As would be understood by one skilled in the art in light of this disclosure, the encrypted client data may be transmitted to the client in any manner known in the art. In some methods, the encrypted client data may be received as data chunks. One or more of the data chunks may be encrypted using the client's private key, and one or more different data chunks are encrypted using the client's deduplication key.

[0188] In the preferred method, the client's private key never leaves the client. In this preferred method, the storage system never sees the encrypted data in the clear at any point in the data transfer. In this preferred method, the client data key is never shared with the storage system, any other clients, any other storage systems, etc.

[0189] The present invention may be a system, method, or computer program product, or any combination thereof, at any possible level of technical detail of integration. The computer program product may include a computer-readable storage medium containing computer-readable program instructions for causing a processor to perform aspects of the present invention.

[0190] A computer-readable storage medium can be a tangible device that can hold and store instructions for use by an instruction execution device. A computer-readable storage medium can be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves in which instructions are recorded, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium should not itself be construed as a transitory signal such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse passing through a fiber optic cable), or an electrical signal transmitted over a wire.

[0191] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or storage device over a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network). This network may include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface within each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage on a computer-readable storage medium within each computing / processing device.

[0192] Computer-readable program instructions for carrying out the operations of the present invention may be source or object code written in any combination of one or more programming languages, including assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or object-oriented programming languages ​​such as Smalltalk®, C++, and procedural programming languages ​​such as the “C” programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer as a standalone software package, partially on the user's computer and on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, to carry out aspects of the present invention, electronic circuitry including, for example, programmable logic circuits, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute computer-readable program instructions to customize the electronic circuitry by utilizing state information of the computer-readable program instructions.

[0193] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0194] These computer-readable program instructions may be provided to a processor of a computer or other programmable data processing apparatus to create a machine, where the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for performing the functions / acts specified in the blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may be stored on a computer-readable storage medium and capable of directing a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, such that the computer-readable storage medium on which the instructions are stored comprises an article of manufacture containing instructions for performing aspects of the functions / acts specified in the blocks of the flowcharts and / or block diagrams.

[0195] Computer-readable program instructions may be loaded into a computer, other programmable data processing apparatus, or other device such that the instructions, which execute on the computer, other programmable apparatus, or other device, perform the functions / acts specified in the flowchart and / or block diagram blocks, thereby causing a series of operable steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process.

[0196] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, comprising one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions shown in the blocks may occur out of the order shown in the figures. For example, two blocks shown in succession may actually be executed as a single step, executed concurrently, executed substantially concurrently in a partially or fully overlapping manner in time, or executed in the reverse order, depending on the functionality involved. It should also be noted that each block in the block diagrams and / or flowchart diagrams, and combinations of blocks included in the block diagrams and / or flowchart diagrams, may be implemented by a special-purpose hardware-based system that performs the specified functions or operations or executes a combination of special-purpose hardware and computer instructions.

[0197] Furthermore, systems according to various embodiments may include a processor and logic integrated into and / or executable by the processor, the logic configured to perform one or more of the processing steps enumerated herein. The processor may be any configuration as described herein, such as a discrete processor or processing circuit, including various components such as processing hardware, memory, and I / O interfaces. By integrated, we mean that the logic is embedded in the processor as hardware logic, such as an application-specific integrated circuit (ASIC), FPGA, etc. By executable by the processor, we mean that the logic is hardware logic accessible by the processor, software logic (such as firmware, part of an operating system, part of an application program, etc.), or some combination of hardware and software logic, configured to cause the processor to perform a function when executed by the processor. The software logic may be stored in any memory type known in the art, local and / or remote memory. Any processor known in the art may be used, such as a software processor module or hardware processor, or both, such as an ASIC, FPGA, central processing unit (CPU), integrated circuit (IC), graphics processing unit (GPU), etc.

[0198] It will be apparent from the description provided above that multiple combinations may be created such that the various features of the systems and / or methods described above may be combined in any manner.

[0199] It will further be appreciated that embodiments of the present invention may be provided in the form of a service that is deployed for customers to provide the service on demand.

[0200] The description of various embodiments of the present invention is presented for illustrative purposes, but is not intended to be exhaustive and is limited to the disclosed embodiments. It will be apparent to those skilled in the art that many changes and modifications are possible without departing from the scope of the described embodiments. The terms used in this specification are selected to best explain the principles, practical applications, or technical improvements of the embodiments beyond those found in the market, or to enable other skilled in the art to understand the embodiments disclosed herein.

Claims

1. The client: sending key group information to a storage system, the key group information including key ID information identifying a private key for the client's data and a deduplication key for deduplication of the data; generating deduplication information, the deduplication information including at least fingerprints associated with the chunks of data; sending the deduplication information to the storage system for use in a deduplication process using fingerprints for each chunk of data stored by the storage system; In response to a request from the storage system that has determined in the deduplication process that the fingerprint included in the transmitted deduplication information is a new fingerprint, transmitting the chunk of data encrypted with the private key to the storage system in order to newly store the chunk of data encrypted with the private key and key ID information of the private key in the storage system; in response to a request from the storage system that has determined in the deduplication process that the fingerprint included in the transmitted deduplication information is an existing fingerprint, updating the original data chunk associated with the existing fingerprint stored in the storage system with the data chunk encrypted with the deduplication key, and transmitting the data chunk encrypted with the deduplication key to the storage system in order to update key ID information of the private key of the original data chunk with key ID information of the deduplication key; How to do it.

2. The method of claim 1 , further comprising encrypting the fingerprint using the client's private fingerprint key before sending the deduplication information to the storage system.

3. requesting the data from the storage system; 10. The method of claim 1, further comprising receiving the data as chunks, wherein one or more of the chunks are decrypted using the client's private key and one or more other of the chunks are decrypted using the client's deduplication key.

4. The storage system receiving key group information from a client, the key group information including key ID information identifying a private key for data of the client and a deduplication key for deduplication of the data; receiving deduplication information from the client, the deduplication information including at least fingerprints associated with the chunks of data; determining whether the fingerprint included in the deduplication information is a new fingerprint or an existing fingerprint based on the fingerprint included in the deduplication information and fingerprints for each chunk of data stored in the storage system; If the fingerprint is determined to be new, requesting the chunk of data encrypted with the private key from the client; newly storing the chunk encrypted with the private key received from the client in response to the request and key ID information of the private key; if determining that the fingerprint already exists, requesting the chunk of data encrypted with the deduplication key from the client; updating the original data chunk associated with the pre-existing fingerprint with the data chunk encrypted with the deduplication key received from the client in response to the request, and updating key ID information of the private key of the original data chunk with key ID information of the deduplication key; How to do it.

5. A program for causing a processor to execute the method according to any one of claims 1 to 4.

6. A system comprising a processor for executing the method of any one of claims 1 to 4.

7. A storage medium storing the program according to claim 5.

Citation Information

Patent Citations

  • Encryption device, decryption device, encryption method, and encryption program

    JP2015022318A

  • Method for scattering data for data encoding

    JP2018142314A

  • Encrypted data deduplication in cloud storage

    US20170177899A1

  • Deduplication of client encrypted data

    US20200213109A1