Secure data movement

By using a transcoder to perform double encryption and pseudo-key replacement on the data, the security and flexibility issues of data sharing between computer nodes are solved, and secure access and data protection for the destination node are achieved.

CN116746114BActive Publication Date: 2026-06-30INTERNATIONAL BUSINESS MACHINE CORPORATION

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
INTERNATIONAL BUSINESS MACHINE CORPORATION
Filing Date
2021-12-15
Publication Date
2026-06-30

AI Technical Summary

Technical Problem

Existing technologies are not secure enough when sharing data between computer nodes, especially in terms of data leakage and trust issues with destination nodes, and they also lack flexibility and functional replacement capabilities.

Method used

By using a transcoder to perform double encryption on the data, the first and second keys are used to encrypt the data, and then the transcoder uses a third key to decrypt and encrypt it again. This ensures that the destination node can access the data, but the transcoder cannot decrypt the source node's key. Combined with a pseudo-key replacement mechanism, data access is restricted.

Benefits of technology

This enables the destination node to securely access data without exposing the source node's key, while preventing data leakage and flexibly managing sharing policies, thus improving the security and efficiency of data transmission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116746114B_ABST
    Figure CN116746114B_ABST
Patent Text Reader

Abstract

A computer-implemented method includes: receiving second encrypted data by a transcoder. The second encrypted data is data that has been encrypted with a first key to create first encrypted data, and the first encrypted data is then encrypted with a second key to create second encrypted data. The method includes receiving the second key and using the second key to decrypt the second encrypted data to obtain the first encrypted data. The method includes encrypting the first encrypted data with a third key to create third encrypted data, and sending the third encrypted data to a destination node. A computer-implemented method also includes: receiving a second encrypted key by a transcoder. The second encrypted key is a key that has been encrypted with a first key to create a first encrypted key, and the first encrypted key is then encrypted with the second key to create the second encrypted key.
Need to check novelty before this filing date? Find Prior Art

Description

Background Technology

[0001] This invention relates to data movement using storage systems, and more specifically, to a secure transcoder for data movement in cloud storage systems and networks.

[0002] The goal is to securely share data across various computer nodes. Secure data transfer is particularly beneficial for providing computing capabilities in proximity to the stored data. For example, each node may have specific computing capabilities (e.g., a database, inference engine, etc.). Access control is commonly used in existing methods to restrict data sharing. However, access control is not foolproof and can lead to data leaks. For example, privileges may be escalated, controls may be misconfigured, etc.

[0003] In other existing methods, the source node encrypts the stored data. In another method, the source node can decrypt the data and send it over a secure link for sharing. In yet another method, the source node decrypts the data, and the source node can share its decryption key with the destination node. In these applications, numerous opportunities for data leakage exist. For some applications, homomorphic encryption can be used to provide secure access to data; however, homomorphic encryption is limited to situations where the destination node is allowed to perform computations on the data without accessing the plaintext. The utility of homomorphic encryption is limited by its slow performance.

[0004] These different existing technical approaches often require a high degree of trust in the destination node. Furthermore, these traditional methods lack the flexibility for functional replacement. There remains a need in the art for a method that securely shares data and allows operations (e.g., computation such as near memory), while providing a high degree of security for the shared data, including the ability to terminate the sharing, especially in the event of a failure in the destination node. Summary of the Invention

[0005] According to one aspect, a computer-implemented method includes receiving second encrypted data by a transcoder. The second encrypted data is data that has been encrypted with a first key to create first encrypted data, and the first encrypted data is then encrypted with a second key to create second encrypted data. The method includes receiving the second key by the transcoder and using the second key to decrypt the second encrypted data to obtain the first encrypted data. The method also includes using a third key by the transcoder to encrypt the first encrypted data to create third encrypted data, and sending the third encrypted data to a destination node by the transcoder. The computer-implemented method provides the benefit of enabling a destination node to access and decrypt data stored by a source node, provided the transcoder allows the destination node to do so. According to an embodiment, the computer-implemented method may include sending the third key to the destination node by the transcoder. The destination node uses the third key to decrypt the third encrypted data to obtain the first encrypted data. The destination node uses the first key to decrypt the first encrypted data to obtain the data. This embodiment advantageously grants the destination node access to double-encrypted data that it can decrypt, while preventing data leakage when the transcoder never accesses the first key.

[0006] According to an embodiment, the computer-implemented method may include replacing the third key with a pseudo-key used by a transcoder to terminate data sharing between the source and destination nodes. This embodiment advantageously restricts the destination node's access to the stored data, even if the destination node maintains its own copy of the third key.

[0007] According to another aspect, a system includes a processor and logic integrated with the processor, executable by the processor, or integrated with and executable by the processor. This logic is operable to perform the aforementioned methods.

[0008] According to another aspect, a computer program product includes one or more computer-readable storage media and program instructions commonly stored on the one or more computer-readable storage media. The program instructions include program instructions operable to perform the aforementioned methods.

[0009] According to one aspect, a computer-implemented method includes receiving a second encrypted key by a transcoder. The second encrypted key is a key that has been encrypted with a first key to create a first encrypted key, and the first encrypted key is then encrypted with a second key to create the second encrypted key. The method includes receiving the second key by the transcoder and using the second key to decrypt the second encrypted key to obtain the first encrypted key. The method also includes encrypting the first encrypted key with a third key by the transcoder to create a third encrypted key, and sending the third encrypted key to a destination node by the transcoder. This aspect improves transcoding efficiency, where transcoding the key can be more efficient than transcoding relatively long blocks of data.

[0010] According to an embodiment, a computer-implemented method may include sending a third key to a destination node via a transcoder. The destination node uses the third key to decrypt a third encrypted key to obtain a first encrypted key. The destination node then uses the first key to decrypt the first encrypted key to obtain that key. This embodiment advantageously grants the destination node access to double-encrypted data that it can decrypt, while preventing data leakage when the transcoder never accesses the first key.

[0011] According to an embodiment, a computer-implemented method may include a destination node using a key to decrypt data from a source node. This embodiment can advantageously bypass the double encryption process used for relatively long data blocks while providing the security of double encryption.

[0012] According to another aspect, a computer program product includes one or more computer-readable storage media and program instructions commonly stored on the one or more computer-readable storage media. The program instructions include program instructions operable to perform the aforementioned methods.

[0013] Other aspects and methods of the invention will become apparent from the following detailed description, which, when taken in conjunction with the accompanying drawings, illustrates the principles of the invention by way of example. Attached Figure Description

[0014] Preferred embodiments of the invention will now be described by way of example only and with reference to the following figures:

[0015] Figure 1 A cloud computing environment according to an embodiment of the present invention is described.

[0016] Figure 2 An abstract model layer according to an embodiment of the present invention is described.

[0017] Figure 3 This is a diagram illustrating a high-level architecture according to an embodiment of the present invention.

[0018] Figure 4 This is a diagram illustrating a high-level architecture according to an embodiment of the present invention.

[0019] Figure 5A - Figure 5D This is a diagram illustrating a high-level architecture according to an embodiment of the present invention.

[0020] Figure 6 This is a flowchart of a method according to an embodiment of the present invention.

[0021] Figure 7 This is a flowchart of a method according to an embodiment of the present invention. Detailed Implementation

[0022] The following description is intended to illustrate the general principles of the invention and is not intended to limit the inventive concept claimed herein. Furthermore, specific features described herein may be used in combination with other described features in various possible combinations and arrangements.

[0023] Unless otherwise specifically defined herein, all terms will be given their broadest possible interpretation, including the meaning implied in the specification, the meaning understood by those skilled in the art, and / or the meaning defined in dictionaries, papers, etc.

[0024] It should also be noted that, as used in the specification and appended claims, the singular forms “a,” “an,” and “the” include plural indicators unless otherwise stated. It should also be understood that, when used in this specification, the terms “comprising” and / or “including” specify the presence of the stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or combinations thereof.

[0025] The following description discloses several embodiments of sharing access to stored data between a source node and a destination node, using a transcoder to provide access to the data to the destination node without accessing the source secret key used to decrypt the stored data.

[0026] In a general embodiment, a computer-implemented method includes receiving second encrypted data by a transcoder. The second encrypted data is data that has been encrypted with a first key to create first encrypted data, and the first encrypted data is then encrypted with a second key to create the second encrypted data. The method includes receiving the second key by the transcoder and using the second key to decrypt the second encrypted data to obtain the first encrypted data. The method further includes encrypting the first encrypted data with a third key by the transcoder to create third encrypted data, and sending the third encrypted data to a destination node by the transcoder.

[0027] In another general embodiment, a system includes a processor and logic integrated with the processor and executable by the processor, or logic integrated with and executable by the processor. This logic is configured to perform the aforementioned methods.

[0028] In another general embodiment, a computer program product includes one or more computer-readable storage media and program instructions commonly stored on the one or more computer-readable storage media. The program instructions include program instructions for performing the methods described above.

[0029] In a general embodiment, a computer-implemented method includes receiving a second encrypted key by a transcoder. The second encrypted key is a key that has been encrypted with a first key to create a first encrypted key, and the first encrypted key is then encrypted with a second key to create the second encrypted key. The method includes receiving the second key by the transcoder and using the second key to decrypt the second encrypted key to obtain the first encrypted key. The method also includes encrypting the first encrypted key with a third key by the transcoder to create a third encrypted key, and sending the third encrypted key to a destination node by the transcoder.

[0030] In another general embodiment, a computer program product includes one or more computer-readable storage media and program instructions commonly stored on the one or more computer-readable storage media. The program instructions include program instructions for performing the methods described above.

[0031] It should be understood that although this disclosure includes a detailed description of cloud computing, the implementation of the teachings cited herein is not limited to cloud computing environments. Rather, embodiments of the invention can be implemented in conjunction with any other type of computing environment now known or developed hereafter.

[0032] Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, storage, storage devices, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with service providers. This cloud model may include at least five features, at least three service models, and at least four deployment models.

[0033] The features are as follows:

[0034] On-demand self-service: Cloud consumers can automatically and unilaterally provide computing power, such as server time and network storage, as needed, without requiring manual interaction with service providers.

[0035] Wide network access: The capability is available on the network and accessed through standard mechanisms that facilitate the use of heterogeneous thin or thick client platforms, such as mobile phones, laptops, and PDAs.

[0036] Resource pooling: pooling the computing resources of providers to serve multiple consumers using a multi-tenant model, where different physical and virtual resources are dynamically allocated and reallocated based on demand. Location independence is significant because consumers typically do not have control or knowledge of the exact location of the resources provided, but are able to specify locations at a higher-level abstraction.

[0037] Rapid flexibility: In some cases, capacity can be provided automatically, quickly, and flexibly to rapidly shrink and rapidly expand. For consumers, the capacity available for supply often appears unlimited and can be purchased in any quantity at any time.

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

[0039] The service model is as follows:

[0040] Software as a Service (SaaS): This provides consumers with the ability to use the provider's applications running on cloud infrastructure. Applications can be accessed from various client devices through a thin client interface such as a web browser (e.g., web-based email). Consumers do not manage or control the underlying cloud infrastructure, including the network, servers, operating system, storage, or even individual application capabilities; possible exceptions are limited, user-specific application configuration settings.

[0041] PaaS (Platform as a Service): This provides consumers with the ability to deploy applications created or acquired by the consumer onto cloud infrastructure. These applications are created using programming languages ​​and tools supported by the provider. Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage devices, but they have control over the deployed applications and the configuration of any application hosting environment.

[0042] Infrastructure as a Service (IaaS): The capabilities provided to consumers are processing, storage, networking, and other basic computing resources that enable consumers to deploy and run arbitrary software, which may include operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but have control over the operating system, storage, deployed applications, and possibly limited control over chosen networking components (e.g., host firewalls).

[0043] The deployment model is as follows:

[0044] Private cloud: Cloud infrastructure operated solely by an organization. It can be managed by the organization or a third party and can be deployed either on-premises or off-premises.

[0045] Community cloud: Cloud infrastructure shared by several organizations and supporting a specific community with shared concerns (e.g., tasks, security requirements, policies, and compliance considerations). It can be managed by an organization or a third party and can be deployed on-premises or off-premises.

[0046] Public cloud: Cloud infrastructure available to the general public or large industrial groups and owned by organizations that sell cloud services.

[0047] Hybrid cloud: A cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain a single entity but are bound together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursts for load balancing between clouds).

[0048] Cloud computing environments are service-oriented environments focused on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is the infrastructure of a network of interconnected nodes.

[0049] Now for reference Figure 1 The diagram illustrates an illustrative cloud computing environment 50. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10, with local computing devices used by cloud consumers (e.g., personal digital assistants (PDAs) or cellular phones 54A, desktop computers 54B, laptop computers 54C, and / or automotive computer systems 54N) capable of communicating with these cloud computing nodes 10. The nodes 10 can communicate with each other. They can be physically or virtually grouped (not shown) in one or more networks, such as private clouds, community clouds, public clouds, or hybrid clouds, or combinations thereof, as described above. This allows the cloud computing environment 50 to provide infrastructure, platforms, and / or software as services that cloud consumers do not need to maintain on their local computing devices. It should be understood that... Figure 1 The types of computing devices 54A-N shown are intended to be illustrative only, and computing node 10 and cloud computing environment 50 can communicate with any type of computerized device via any type of network and / or network-addressable connection (e.g., using a web browser).

[0050] Now for reference Figure 2 This demonstrates the 50 (cloud computing environment) Figure 1 This provides a set of functional abstractions. It should be understood beforehand that... Figure 2 The components, layers, and functions shown are for illustrative purposes only, and embodiments of the present invention are not limited thereto. As shown in the figures, the following layers and corresponding functions are provided:

[0051] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: a mainframe 61; a RISC (Reduced Instruction Set Computer) based server 62; a server 63; a blade server 64; a storage device 65; and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0052] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual server 71; virtual storage 72; virtual network 73, including virtual private network; virtual application and operating system 74; and virtual client 75.

[0053] In one example, management layer 80 can provide the functions described below. Resource provisioning 81 provides dynamic acquisition of computing resources and other resources used to perform tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking for utilizing resources within the cloud computing environment, as well as billing or invoicing the consumption of these resources. In one example, these resources may include application software licenses. Security provides authentication for cloud consumers and tasks, and protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud resource allocation and management to meet required service levels. Service level agreement (SLA) planning and fulfillment 85 provides advance planning and procurement of cloud resources, anticipating future demand for cloud resources based on SLAs.

[0054] Workload tier 90 provides examples of functionalities that can be leveraged in a cloud computing environment. Examples of workloads and functionalities that can be provided from this tier include: mapping and navigation 91; software development and lifecycle management 92; virtual classroom education delivery 93; data analytics and processing 94; transaction processing 95; and secure data movement 96.

[0055] Various embodiments of the invention include sharing access to stored data between a source node and a destination node, using a secure transcoder to provide access to the data to the destination node without accessing the source secret key used to decrypt the stored data. In a preferred embodiment, the stored data is encrypted by the source node with a first source key, and the encrypted data (e.g., first encrypted data) is further encrypted by the source node with a second source key to create double-encrypted data (e.g., second encrypted data). The first source key is shared with the destination node, and the second source key is shared with the secure transcoder. The transcoder provides a third key and shares the third key with the destination node. The transcoder uses the second key to decrypt the double-encrypted data and re-encrypts the now separately encrypted data in the third key to create double-encrypted data (e.g., third encrypted data) using the third key. The transcoder shares the third key with the destination node. The destination node accesses the double-encrypted data via the transcoder (e.g., encrypted with the first key and further encrypted with the third key). The double-encrypted data is stored in a data repository for persistent new data.

[0056] Advantageously, at least some embodiments of the invention enable the destination node to access and decrypt data, provided the transcoder allows it to do so (e.g., according to a sharing policy established between the source node and the transcoder). Furthermore, once the sharing policy is changed, the transcoder never accesses the plaintext data, while preventing the destination node from accessing the stored data in the future.

[0057] In other methods, the source node uses different block keys to encrypt each block (e.g., encrypting each block using a unique block key), and uses at least some embodiments of this disclosure to encrypt and transcode each block. This per-block key approach significantly reduces the cryptographic load of the transcoder.

[0058] Compared to public-key encryption methods that are relatively slow for transmitting data between nodes in a system, at least some of the embodiments described herein can be advantageously used with symmetric encryption techniques that result in relatively high performance.

[0059] Figure 3 A high-level architecture according to various configurations is illustrated. Architecture 300 can be configured in various ways according to a preferred embodiment of the invention. Figure 1 - Figure 2 as well as Figure 4 - Figure 7 This can be implemented in any of the environments shown. Of course, architecture 300 can include more... Figure 3 The components described herein may be more or fewer than those described in detail, as will be understood by those skilled in the art upon reading this specification.

[0060] Architecture 300 includes a high-level architecture comprising a source node 302, a storage device 304, and a destination node 306. Source node 302 includes source node computing resources 308, a first key k1 310, and a second key k2 312. Source node 302 includes source node manager functionality 314, source node k1 encryption / decryption functionality 316, and source node k2 encryption / decryption functionality 318. Any encryption / decryption functionality described herein can be configured to encrypt and / or decrypt data using appropriate keys and any known encryption techniques, as will be understood by one of ordinary skill in the art upon reading this disclosure. Source node 302 may include multiple first keys, multiple second keys, multiple sets of first keys, multiple sets of second keys, etc.

[0061] Storage device 304 may be a storage system, a solid-state drive (SSD), a hard disk, a tape drive, a storage-type memory, DRAM, permanent memory, or any type of memory known in the art, or any combination thereof.

[0062] Architecture 300 includes a secure transcoder 320. The secure transcoder 320 includes a secure transcoder manager function 322 and a secure key storage 324 for a second key k2 312. In at least some methods, the secure transcoder 320 may include a key generator 326. The secure transcoder 320 includes a third key k3 328. The secure transcoder 320 includes encryption / decryption functions 330 and 332 for secure transcoder k2 and secure transcoder k3, respectively.

[0063] In various methods, key generator 326 generates a third key k3 328. In some methods, the third key k3 328 may be generated by source node 302. In other methods, the third key k3 328 may be generated by destination node 306. In a preferred embodiment, the third key k3 328 is generated by key generator 326 or source node 302 to avoid exposure to weak keys, key reuse, etc. In other methods, any key as described herein may be generated and / or managed by key generators and / or key managers (not shown) known in the art, as those skilled in the art will understand upon reading this invention.

[0064] The secure transcoder 320 can be designed to perform shared operations, each preferably defined by a separate policy. The transcoder may have multiple key memories and / or multiple secure transcoder encryption / decryption functions. These additional policies (and associated components) provide additional security for each shared policy (e.g., each shared policy may have a separate, unique third key, even if the shared policies can access the same data).

[0065] The secure transcoder 320 can be implemented using hardware, software, or any combination thereof. To achieve the desired security, the secure transcoder 320 protects the second key k2 312 from access outside the secure transcoder 320 to prevent security from being compromised or eliminated due to data leakage.

[0066] Destination node 306 includes destination node computing resources 334, a key storage device 336 for the first key k1 310, and a key storage device 338 for the third key k3 328. Destination node 306 includes destination node manager functionality 340. Destination node 306 includes encryption / decryption functionality 342 for destination node k1 and encryption / decryption functionality 344 for destination node k3.

[0067] refer to Figure 3Arrows and / or connecting lines are used to describe exemplary implementations of various embodiments of architecture 300. Source node 302 stores data in storage device 304. Data as used throughout this disclosure may include application data, metadata, keys, any other type of information, or any combination thereof, as will become apparent to those skilled in the art upon reading this disclosure. As used throughout this disclosure, encryption may be described by the encrypting term "encrypt (key, data)," and decryption may be described by the decrypting term "decrypt (key, data)." Source node 302 storing the data unit denoted by "P" preferably uses source node k1 encryption / decryption function 316 to encrypt the data P using a first key k1 310 to C1 = encrypt(k1, P). Source node k2 encryption / decryption function 318 also uses a second key k2 312 to encrypt the result (C1) to C2 = encrypt(k2, C1). The encrypted data C2 is sent to storage device 304 in operation 346. The stored data is encrypted using a combination of a first key k1 310 and a second key k2 312. In some methods, encrypted data that is not required for sharing can be directly sent to the storage device 304 in operation 348. In various methods, the storage device 304 may include encryption / decryption functionality (not shown) for performing further encryption to store data in a manner that will become obvious to those skilled in the art upon reading this disclosure.

[0068] Preferably, before sharing data, source node 302, storage device 304, destination node 306, and secure transcoder 320 authenticate each other to verify their identities. In various methods, the identity of each component in architecture 300 can be authenticated according to protocols known in the art. In some methods, authentication can be part of establishing a secure communication connection between the parties. In a preferred embodiment, all communication links are secure (e.g., encrypted). For example, source node 302 can establish shared access to data with destination node 306 using a sharing policy. The sharing policy can include policy information such as the dataset to be shared, the duration of the sharing, the amount of data to be shared, other access permissions, etc., or any combination thereof. The policy information can be sent between source node manager function 314 and secure transcoder manager function 322 in operation 350 (e.g., from source node manager function 314 to secure transcoder manager function 322). Secure transcoder manager function 322 can verify that the policy information is correct and that secure transcoder 320 supports the policy. Such verification may include communication between operation 352 and the destination node manager function 340 to confirm that the destination node 306 supports the policy. In response to the authentication of each component and the policy information, the source node 302 may send the second key k2 312 to the secure transcoder 320 in operation 354. The secure transcoder 320 stores a copy of the second key k2 312 in a secure key memory 324 for the second key k2 312.

[0069] In a preferred embodiment, neither the secure transcoder 320 nor the destination node 306 can access the first key k1 310 and the second key k2 312. Without such access, the secure transcoder 320 and the destination node 306 cannot decrypt the data stored in the storage device 304 stored by the source node 302. In a preferred embodiment, the secure key memory 324 for the second key k2 312 is volatile, such that in the event of a power failure, the secure transcoder 320 must re-authenticate the affected party (and vice versa) to re-establish the share. In the event of a power failure, the secure transcoder 320 also re-authenticates the key storage device 338 for the third key k3 328, and vice versa, to re-establish the share. As described above, the duration for which the secure transcoder 320 stores the second key k2 312 in the secure key memory 324 is determined by the sharing policy. In response to the termination of sharing as indicated by the sharing policy, the secure transcoder 320 shreds (e.g., deletes or destroys) a stored copy of the second key k2 312 in any manner that would become obvious to a person skilled in the art upon reading this disclosure. The shredding of the second key k2 312 facilitates the secure key storage 324 of the second key k2 312 in restricting access to the encryption / decryption function 330 of the secure transcoder k2 by the stored key information. This shredding prevents the leakage of the second key k2 312.

[0070] As part of establishing data sharing after policy verification, the secure transcoder 320 can generate a third key k3 328 using the key generator 326. In operation 356, the third key k3 328 is sent to the destination node 306. The destination node 306 stores a copy of the third key k3 328 in its key storage device 338. Furthermore, as part of establishing data sharing after policy verification, in operation 358, the source node 302 sends a first key k1 310 to the destination node 306. The destination node 306 stores a copy of the first key k1 310 in its key storage device 336. In a preferred embodiment, both the key storage device 336 for the first key k1 310 and the key storage device 338 for the third key storage device 312 are volatile. In a preferred method, once sharing is complete, the secure transcoder 320 deletes the third key k3 328 and stops accepting requests for shared data from the destination node 306. In other methods, the secure transcoder 320 replaces the third key k3 328 with a pseudo-key in any manner that would become obvious to a person skilled in the art upon reading this disclosure, and causes any request for shared data from the destination node 306 to result in no data and / or unavailable data (e.g., unreadable if the destination node 306 only has the first key k1 310 and the use of the third key no longer returns data encrypted with k1 at the destination node 306). If the destination node 306 has made write access to the shared data, the pseudo-key terminates all write access in a manner that would become obvious to a person skilled in the art upon reading this disclosure.

[0071] In other methods, the secure transcoder 320 notifies the destination node 306 that the sharing has been terminated. In response to the termination of sharing, the destination node 306 deletes the stored copies of the first key k1 310 and the third key k3 328. The sharing policy can be terminated in any manner that will become apparent to those skilled in the art upon reading this disclosure, such as by commands from the source node 302 to the secure transcoder 320, storage device 304, destination node 306, etc., or any combination thereof.

[0072] In an exemplary implementation, destination node 306 performs a read operation by requesting data from secure transcoder 320 in operation 360. Destination node 306 cannot directly access the shared data from storage device 304 because it is encrypted using a second key k2 312, which is unavailable to destination node 306. If the sharing policy allows the read request, secure transcoder 320 reads the data associated with the read request from storage device 304 in operation 362. As described above, the data associated with the read request is encoded as C2 = encrypted(k2, C1). In operation 364, when C1 = decrypted(k2, C2), the data associated with the read request is decrypted using the second key k2 312 and the secure transcoder k2 encryption / decryption function 330. In operation 366, the associated data is encrypted using the third key k3 328 and the secure transcoder k3 encryption / decryption function 332 (now encrypted only with the first key k1 310). Prior to operation 366, the relevant data is still encrypted as C1 = encrypt(k1, P), and the first key k1 310 is not available to the secure transcoder 320. Therefore, the secure transcoder 320 cannot decrypt the data stored on storage device 304 by the source node 302. The secure transcoder k3 encryption / decryption function 332 uses the third key k3 328 to encrypt the associated data as C3 = encrypt(k3, C1) (e.g., the data is encrypted with the first key k1 310 and the third key k3 328). In operation 360, the encrypted data is sent to the destination node 306. The destination node 306 can use the destination node k3 encryption / decryption function 344 to decrypt the data as C1 = decrypt(k3, C3) using the third key k3 328 (e.g., now only the first key k1 310 is used to encrypt the associated data). Destination node 306 can use the destination node k1 encryption / decryption function 342 to decrypt the data using the first key k1 310 to P = decrypt(k1, C1) (e.g., destination node 306 gains access to the plaintext data).

[0073] In a preferred embodiment, the sharing cycle between the destination node 306 and the source node 302 using the secure transcoder 320 is terminated by stopping any communication in operation 360 according to the sharing policy information described herein. In various methods, if the communication channel between the destination node 306 and the secure transcoder 320 remains open, the sharing cycle between the destination node 306 and the source node 302 is terminated by the secure transcoder 320 shredding the third key k3 328 and / or the second key k2 312. In other methods, the secure transcoder 320 may terminate the sharing cycle by replacing the third key k3 328 and / or the second key k2 312 with a pseudo-key of a type known in the art. For example, shredding or replacing the third key k3 328 and / or the second key k2 312 provides additional security even if communication at operation 360 fails or remains open due to a design flaw. A misbehaving destination node will not receive any usable data from the secure transcoder, which does not have the correct key to decrypt the encrypted data. Those skilled in the art will understand upon reading this disclosure that the secure transcoder 320 may need to renegotiate with the source node 302 and / or the destination node 306 to continue or resume the shared period after the key is shredded. This "key rotation" provides the system with additional security features without having to re-encrypt all data stored in memory. For example, in a conventional system, if the transcoder were to lose a key, one approach would involve re-encrypting all data in memory, which could take a relatively long time compared to the aforementioned renegotiation process.

[0074] Before storing data unit P, destination node 306 uses destination node k1 encryption / decryption function 342 with first key k1 310 to encrypt data P into C1=encrypted(k1, P). Destination node 306 also uses destination node k3 encryption / decryption function 344 with third key k3 328 to encrypt the result C1 into C3=encrypted(k3, C1). In operation 360, a write request for data (C2) is sent to secure transcoder 320. If the sharing policy allows the write request, secure transcoder 320 accepts the write request. As described above, the data is encoded into C3=encrypted(k3, C1). The written data is decrypted by secure transcoder k3 encryption / decryption function 332 with third key k3 328 into C1=decrypted(k3, C3). In operation 366, the written data is sent to secure transcoder k2 encryption / decryption function 330. The written data at operation 366 is still encrypted into C1=encrypted(k1, P). The first key k1310 cannot be used by the secure transcoder 320. Therefore, the secure transcoder 320 cannot decrypt the write data stored by the destination node 306. The secure transcoder k2 encryption / decryption function 330 also uses the second key k2 312 to encrypt the write data to C2 = encrypted(k2, C1). In operation 362, the encrypted data (e.g., in the first key k1 310 and the second key k2 312) is sent to the storage device 304. The source node 302 can use the source node k2 encryption / decryption function 318 and the source node k1 encryption / decryption function 316 respectively to decrypt the data to C1 = decrypted(k2, C2) and P = decrypted(k1, C2) using appropriate keys, as will be apparent to those skilled in the art in light of this disclosure.

[0075] In an alternative method, data can be encrypted by source node 302 using a fourth key (not shown), and the fourth key can be encrypted according to the various embodiments described above. Therefore, the fourth key is the data to be encrypted. In this method, transcoding is relatively more efficient when the key is transcoded instead of the data. For example, the data block length can be 4kB, and the key length can be 32B. Transcoding such a key is approximately 128 times more efficient than transcoding the data block. In this method, data (e.g., the encryption key) can be sent to storage device 304 after encryption with the fourth key in operation 346, thereby bypassing source node k1 encryption / decryption function 316 and source node k2 encryption / decryption function 318. When transcoded, data (e.g., the encryption key) can be sent to the destination node in operation 368, thereby bypassing secure transcoder k2 encryption / decryption function 330 and secure transcoder k3 encryption / decryption function 332.

[0076] In other methods, additional information that needs to be isolated from the secure transcoder 320 can be used in encryption. For example, an initialization vector (IV) can be used in encryption. As will be understood by those skilled in the art, an IV can refer to any number used with the confidential key used for data encryption and used only once. Using an IV in first-key encryption avoids exposing the IV to second-key encryption. According to the IV implementation, the IV information can be used to advantageously break translation symmetry to provide additional security, which will become apparent to those skilled in the art upon reading this disclosure. For example, in AES-XTS, the IV is an address that breaks address symmetry. Translation symmetry is maintained when the IV is based on the data content. In a preferred embodiment, the IV information is shared with the destination node 306, but not with the secure transcoder 320. Regardless of whether the IV is used for first-key encryption, it can be used for second-key encryption without compromising the security of the architecture described herein. When the secure transcoder 320 needs to know the IV used for encryption with the second key, the information used to derive the IV may be part of negotiating a secure connection between the secure transcoder 320 and the source node 302, as will be apparent to a person skilled in the art who has read this disclosure.

[0077] In a secure deduplication system with each block key, fingerprints can be computed on plaintext blocks of data, and the data blocks are encrypted with block-specific keys (e.g., each data block is encrypted with a unique data block key, such as the fourth key described above). The fingerprints are encrypted in a fifth key (e.g., a fingerprint key) to prevent the deduplication storage system from concatenating a specific fingerprint with specific plaintext. For transcoding according to the various embodiments described herein, the data block key can be data encrypted by the source node using a first key and a second key. The first and second keys used for encrypting the fingerprints can be different from the first and second keys used for encrypting the data block keys. Different fingerprint and block key datasets are securely transcoded for use at the destination node. Typically, throughout this disclosure, multiple first keys and multiple second keys can exist for transcoding data, keys, metadata, etc., which are securely shared between the source and destination nodes using a secure transcoder.

[0078] In another method, for a secure deduplication system, there exists a set of second keys belonging to a key set, wherein the key set includes a first key, a fingerprint key, and a deduplication key. In this method, the storage system can store deduplicated data such that the deduplication key cannot decrypt it. A secure transcoder (such as a transcoder configured to perform at least some of the various embodiments described in detail above) can be used to transcode data from one of the second keys to the deduplication key of the key set or from the deduplication key of the key set to one of the second keys.

[0079] In another embodiment, the key set may include a set of first keys instead of a public first key. Preferably, in this method, a first key exists for each second key and for each deduplication key, as will become apparent to those skilled in the art upon reading this disclosure.

[0080] Figure 4 A high-level architecture according to various configurations is illustrated. Architecture 400 can be configured in various ways according to a preferred embodiment of the invention. Figure 1 - Figure 3 and Figure 5A - Figure 7 This can be implemented in any of the environments shown. Of course, architecture 400 can include more... Figure 4 The components described herein may be more or fewer than those described in detail, as will be understood by those skilled in the art upon reading this specification.

[0081] Architecture 400 is Figure 3 Variations of at least some aspects are shown, therefore common features share common numbering. Architecture 400 includes a high-level architecture comprising a source node 302, a storage device 304, and a destination node 306. Source node 302 includes source node computing resources 308, a first key k1 310, and a second key k2 312. Source node 302 includes source node manager functionality 314, source node k1 encryption / decryption functionality 316, and source node k2 encryption / decryption functionality 318. Any encryption / decryption functionality described in this art can use the associated keys to encrypt and / or decrypt data, as will be understood by one of ordinary skill in the art upon reading this disclosure.

[0082] Architecture 400 includes a secure transcoder 320. The secure transcoder 320 includes a secure transcoder manager function 322 and a secure key storage 324 for a second key k2 312. In at least some methods, the secure transcoder 320 may include a key generator 326. The secure transcoder 320 includes a third key k3 328. In various methods, the key generator 326 generates the third key k3 328. In other methods, any key described herein may be generated and / or managed by a key generator and / or key manager (not shown) known in the art. The secure transcoder 320 includes a secure transcoder k2 encryption / decryption function 330 and a secure transcoder k3 encryption / decryption function 332.

[0083] The secure transcoder 320 can be designed to perform shared operations, each preferably defined by a separate policy. The transcoder may have multiple key memories and / or multiple secure transcoder encryption / decryption functions. These additional policies (and associated components) provide additional security for each shared policy (e.g., each shared policy may have a separate, unique third key, even if the shared policies can access the same data).

[0084] Destination node 306 includes destination node computing resources 334, a key storage device 336 for the first key k1 310, and a key storage device 338 for the third key k3 328. Destination node 306 includes destination node manager functionality 340. Destination node 306 includes encryption / decryption functionality 342 for destination node k1 and encryption / decryption functionality 344 for destination node k3.

[0085] Figure 4 Architecture 400 shows that the data is not double-encrypted (e.g., as...). Figure 3 This is an exemplary implementation of the system shown and described in the preferred embodiment. Here, source node 302 stores data on storage device 304 without encrypting the data using the first key k1 310 and without encrypting the data using the second key k2 312. Secure transcoder 320 does not communicate with storage device 304. Instead, source node 302 reads all data from storage device 304. Source node 302 generates the first key k1 310 and the second key k2 312. Secure transcoder manager function 322 passes all read and write requests to source node manager function 314 of source node 302.

[0086] For a read request, source node k1's encryption / decryption function 316 uses the first key k1 310 to encrypt the data to obtain first encrypted data. Source node k2's encryption / decryption function 318 uses the second key k2 312 to encrypt the encrypted data to obtain second encrypted data. The second encrypted data is sent to the secure transcoder manager function 322 in operation 350, and the second encrypted data is transcoded, as shown in the reference. Figure 3 Detailed description. For write requests, the data is decrypted and written back to storage device 304 in plaintext, as described herein.

[0087] Among various methods, for clients wishing to transition to double encryption of all data, write requests can be written to double encryption in any manner known in the art, where metadata is stored along with blocks and the file system to indicate the encryption status of the data. All new data is double-protected (e.g., double-encrypted), and all "old" data is double-protected after being fully referenced. In this way, the system can track the state of a file while a background task is running for a file to reach a selected protection level, referencing the remaining data, thereby making the remaining data fully protected (e.g., double-encrypted).

[0088] In another embodiment, if the secure transcoder 320 can access the storage device 304 (e.g. Figure 3 As shown), the security transcoder 320 can be modified to view file metadata to determine its encryption status. If the file is protected (e.g., double-encrypted), the security transcoder 320 can directly read the file (e.g., ...). Figure 3 (As shown), otherwise the secure transcoder can query the source node manager function 314 for data. The security associated with this embodiment is not as good as described above. Figure 3 Ideally, the security is such that the secure transcoder 320 requests all data from the source node manager function 314. Allowing unencrypted data on storage device 304 is the most secure approach when the destination node 306 cannot access the stored data.

[0089] Figure 5A - Figure 5D A high-level architecture according to various configurations is illustrated. Architecture 500 can be configured in various ways according to a preferred embodiment of the invention. Figure 1 - Figure 3 and 6 picture- Figure 7 Implemented in any environment described herein. Of course, Architecture 500 can include more than... Figure 5A - Figure 5D More or fewer elements specifically described herein, as those who are skilled in the art will understand after reading this specification.

[0090] Each architecture 500 includes source node 302 (as referenced) Figure 3 - Figure 4 As described above), storage device 304 (as referenced) Figure 3 - Figure 4 As mentioned above), destination node 306 (as referred to) Figure 3 - Figure 4 (as described) and security transcoder 320 (as referred to) Figure 3 - Figure 4 As shown in the figure, the secure transcoder 320 can be located anywhere in the system. For example, as described... Figure 5AAs shown, the secure transcoder 320 can be part of the source node 302. This configuration can be found in any of the following: a central processing unit (CPU) complex, an I / O hub, a bridge, the CPU itself, a network interface card (e.g., a smart NIC), etc.

[0091] like Figure 5B As shown, the secure transcoder 320 can be located in a storage network coupled to the source node 302, storage device 304, and destination node 306. This configuration can be any of a switch, edge application, gateway, etc.

[0092] like Figure 5C As shown, the secure transcoder 320 can be part of the storage device 304. The secure transcoder 320 can be directly integrated into the storage device, storage controller, host bus adapter, smart NIC, etc.

[0093] like Figure 5D As shown, the secure transcoder 320 can be part of the destination node 306. This configuration can be any of a CPU complex, I / O hub, bridge, CPU itself, smart NIC, etc.

[0094] In various methods, at multiple locations (e.g., including) Figure 5A - Figure 5D Having a secure transcoder at each of the four locations shown to allow the establishment of a share using the optimal transcoding location for a particular operation would be beneficial. For example, transcoding at the source node is beneficial for storage devices directly attached to the source. In another example, transcoding at the storage device, as will be understood by those skilled in the art, facilitates scaling and network utilization. In some cases, the destination node of the first share may be the source node of the second share, and having transcoding capabilities at each source node and each destination node would be advantageous. From a security perspective, it may not be preferred to use transcoding capabilities as described herein at the destination node (even if transcoding capabilities exist at the destination). Figure 3 The shared transcoding location is shown. This can result in both the first and second keys being located at the destination node. For the strongest security, when all nodes (e.g., source node, storage device, and destination node) have transcoding capabilities, in a preferred embodiment, the protocol for accessing data does not utilize the transcoder at the destination node, as those skilled in the art will understand upon reading this invention.

[0095] For strong security, it is beneficial to treat the first and second keys as a pair used for data isolation. For example, a group of information encrypted with the first key should be the same group of information encrypted with the second key. If multiple second keys use a common first key, there is a possibility that data can move across the key boundaries in a way that exposes the data to data leakage.

[0096] In a preferred embodiment, Figure 3 - Figure 5D Any communication between each arrow shown and the components described herein may include additional protocols known in the art for communication encryption. For example, protocols such as Secure Sockets Layer (SSL) and Transport Layer Security (TSL) may be used to transmit keys between source and destination nodes, between source and secure transcoders, and between secure transcoders and destination nodes, as will be apparent to one of ordinary skill in the art upon reading this disclosure.

[0097] Now for reference Figure 6 A flowchart of a method 600 according to one embodiment is shown. Method 600 can be implemented according to a preferred embodiment of the invention. Figure 1 - Figure 5D and Figure 7 This can be performed in any of the environments shown, especially in various aspects. Of course, method 600 can include... Figure 6 The specific operations described herein may be more or less, as those skilled in the art will understand after reading this specification.

[0098] Each step of method 600 can be performed by any suitable component of the operating environment. For example, in various embodiments, method 600 can be performed partially or entirely by a computer or some other device having one or more processors. A processor (e.g., processing circuitry, chip, and / or module) implemented in hardware and / or software and preferably having at least one hardware component can be used in any device to perform one or more steps of method 600. Illustrative processors include (but are not limited to) a central processing unit (CPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), etc., combinations thereof, or any other suitable computing device known in the art.

[0099] like Figure 6 As shown, method 600 includes operation 602. Operation 602 includes receiving second encrypted data by a transcoder. The second encrypted data is data that has been encrypted with a first key to create first encrypted data, and the first encrypted data is then encrypted with a second key to create the second encrypted data. In a preferred embodiment, encrypting data into first encrypted data and then encrypting the first encrypted data into second encrypted data occurs at the source node. The source node includes a first key and a second key.

[0100] In one method, the second encrypted data is received at least in part based on a data request from a transcoder to a storage device. In response to receiving a data request from a destination node, the transcoder may send the data request directly to the storage device. In another method, the storage device may send the second encrypted data directly to the transcoder in response to a data request. For example, before the source node stores the second encrypted data in the storage device, the data can be encrypted with a first key to create first encrypted data, and then the first encrypted data can be encrypted with a second key to create the second encrypted data at the source node. The storage device may send the second encrypted data to the transcoder in response to a data request from the transcoder.

[0101] In another approach, the second encrypted data is received at least in part based on a data request from the transcoder to the source node. In response to a data request received from the destination node, the transcoder can send a data request to the source node. The source node can store the second encrypted data in a storage device, and the source node can also send the second encrypted data (previously stored in the storage device) to the transcoder.

[0102] In another approach, the source node can store unencrypted data in a storage device. In response to a data request received from the transcoder, the source node can retrieve the unencrypted data from the storage device, then encrypt the unencrypted data with a first key to create first encrypted data, and then encrypt the first encrypted data with a second key to create second encrypted data. In response to a data request from the transcoder to the source node, the second encrypted data is sent to the transcoder.

[0103] In various embodiments, second encrypted data is received at the transcoder from a storage device, a source node, etc., based on a data request from at least one destination node. Any number of destination nodes may be requested from the source node by the transcoder. In some methods, the transcoder may receive the second encrypted data in response to a data request from a destination node, based on sharing policy information among the source node, destination node, storage device, transcoder, etc. The sharing policy information may include what data can be shared between which entities, the duration of a sharing period between any entities, the number of operations associated with a sharing period between any entities, the amount of data that can be shared between any entities in each sharing period, etc. In various methods, the sharing policy information determines when to terminate a sharing period. In various embodiments, a sharing period may be terminated according to the policy in response to crushing at least one key, a request from the source node to end the sharing period, a power outage event, any other triggering event, etc., or a combination thereof.

[0104] In at least some methods, the source node stores data on a storage device. The data can be unencrypted data, second encrypted data, data encrypted with another key (e.g., data encrypted with a key different from the first or second key before being encrypted by the first key and then by the second key), etc. In a preferred embodiment, the source node includes a first key and a second key. In some methods, associated data encryption can be performed via at least one encryption / decryption function on the source node to create first encrypted data, and then associated encryption of the first encrypted data can be performed to create second encrypted data. In other methods, each key can be associated with a separate encryption / decryption function located on the source node, as understood by those skilled in the art in light of this disclosure.

[0105] Operation 604 includes receiving a second key by a transcoder. In various methods, the second key is received from a source node. In various methods, the source node sends a copy of the second key to the transcoder, which securely stores the copy for a duration, number of operations, etc., defined by the sharing policy information. In at least some embodiments, in response to the end of a shared period (e.g., as determined by the sharing policy, as requested by the source node, etc.), the transcoder may shred the second key and / or replace it with a pseudo-key in a manner that will become obvious to those skilled in the art upon reading this disclosure. The pseudo-key can be of any type known in the art.

[0106] In other methods, a second key can be received from a key manager. The key manager can be coupled to the source node, destination node, and / or any other component in the network to provide, generate, and manage keys for sharing data between the source and destination nodes.

[0107] Operation 606 involves the transcoder using a second key to decrypt the second encrypted data to obtain the first encrypted data. As described above, the second encrypted data is data created by encrypting with the first key, and the first encrypted data is then encrypted with the second key to create the second encrypted data. According to operation 606, the transcoder can obtain the first encrypted data at the transcoder using encryption / decryption functionality and a second key (sent by the source node in some methods). The transcoder preferably never obtains plaintext data (or the original data in another key-encrypted form), where the transcoder cannot access the first key (e.g., to decrypt the first encrypted data to obtain the data).

[0108] Operation 608 involves the transcoder using a third key to encrypt first encrypted data to create third encrypted data. The first encrypted data (e.g., encrypted only with the first key) can be encrypted with a new third key to create the third encrypted data using an encryption / decryption function on the transcoder. The encryption / decryption function may be the same as or different from the encryption / decryption function of operation 606 (e.g., separate from the third key, used only for the third key, etc.). In at least some methods, the third key may be generated by a key generator on the transcoder. In other methods, any key may be generated and / or managed by a key manager and / or key generator coupled to the source node, transcoder, destination node, etc.

[0109] In various methods, method 600 includes sending a third key to the destination node by a transcoder. In a preferred method, the destination node receiving the third key is the same node that initiated the request for data. In various methods, the transcoder sends a copy of the third key to the destination node, which securely stores the copy for a specified amount of time, number of operations, etc., as defined by the sharing policy information, and / or in any manner that will become obvious to those skilled in the art upon reading this disclosure. In a preferred embodiment, in response to the end of a sharing period (e.g., as determined by the sharing policy, as requested by the source node, etc.), the transcoder shreds the third key in any manner that will become obvious to those skilled in the art upon reading this disclosure and / or replaces the third key with a pseudo-key used to terminate data sharing between the source and destination nodes. The pseudo-key can be of any type known in the art.

[0110] In other methods, a third key can be sent from a key manager to the destination node. The key manager can be coupled to the source node, destination node, and / or any other component in the network to provide, generate, and manage keys for sharing data between the source and destination nodes.

[0111] Operation 610 includes sending third encrypted data to the destination node via a transcoder. As described above, the third encrypted data is first encrypted data (e.g., data encrypted in the first key) encrypted using a third key to create the third encrypted data. The destination node receives the first key directly from the source node in various methods. In various methods, the destination node is configured to decrypt the third encrypted data using the third key to obtain the first encrypted data using encryption / decryption functions on the destination node. The destination node is configured to decrypt the first encrypted data using the first key to obtain the data using encryption / decryption functions on the destination node (which may be the same as or different from the encryption / decryption functions used to decrypt the third encrypted data to obtain the first encrypted data). As described above, the data can be plaintext data, unencrypted data, plaintext data, data encrypted with another key, etc.

[0112] In one embodiment, the data (e.g., unencrypted data) comprises multiple data blocks, each encrypted with a fourth key. The fourth key can be encrypted with a first key to create a first encrypted fourth key, which is then encrypted with a second key to create a second encrypted fourth key. In at least some methods, each data block may be associated with a different fourth key, as those skilled in the art will understand upon reading this invention. In the foregoing embodiments, the transcoder can receive the second encrypted fourth key and the second key in a manner similar to that described in operations 602 and 604, respectively. In a manner similar to that described in operation 606, the transcoder can use the second key to decrypt the second encrypted fourth key to obtain the first encrypted fourth key (e.g., now encrypted only with the first key). The transcoder can use a third key to encrypt the first encrypted fourth key, creating a third encrypted fourth key in a manner similar to that described in operation 608. The transcoder can send a third key and a third encrypted fourth key (e.g., encrypting the fourth key with the first key to obtain a first encrypted fourth key, and then encrypting the first encrypted fourth key with the third key to obtain a third encrypted fourth key) to the destination node (e.g., as described in operation 610 and method 600). The destination node can be configured to use the third key (received from the transcoder or key manager in various methods) to decrypt the third encrypted fingerprint to obtain the first encrypted fourth key. The destination node can then use the first key received from the source node or key manager to decrypt the first encrypted fourth key in various methods to obtain the fourth key. The fourth key can be used to decrypt data blocks encrypted with the fourth key sent to the destination node. Transcoding the key instead of the data may be more efficient when the key is relatively shorter than the data block requested by the destination node.

[0113] According to some methods, data (e.g., unencrypted data) comprises multiple data blocks, each having a fingerprint associated with and / or computed thereon. Each fingerprint can be computed using SHA-256 or any other secure hashing algorithm known in the art. The fingerprint can be double-encrypted according to at least some of the embodiments described herein. The encrypted fingerprint can be used for secure deduplication of each block key, allowing the fingerprint data to be securely transcoded for use at the destination node. The encrypted fingerprint can be used to determine deduplication opportunities, as an end-to-end integrity check, to provide additional data privacy, etc. Any number of keys can exist for transcoding data, fingerprints, metadata, etc., for secure sharing according to at least some of the operations described herein. In preferred methods of the foregoing aspects, each data block is associated with (e.g., encrypted / decrypted by) at least one unique key compared to any other data block. In various methods, each data block and / or each fingerprint can be associated with its own first key, second key, or first key and second key. Thus, at least some embodiments of this disclosure provide forward secrecy by changing at least one key for each data block destined for the destination node. The destination node has unencrypted data blocks (after transcoding the data blocks, if applicable), but the source node can define how much data the destination node receives by changing the key for each data block.

[0114] Now for reference Figure 7 A flowchart of a method 700 according to one embodiment is shown. Method 700 can be implemented according to a preferred embodiment of the invention. Figure 1 - Figure 6 and Figure 7 This can be performed in any environment shown, especially in various aspects. Of course, method 700 can include... Figure 7 The specific operations described herein may be more or less, as those skilled in the art will understand after reading this specification.

[0115] Each step of method 700 can be performed by any suitable component of the operating environment. For example, in various embodiments, method 700 can be performed partially or entirely by a computer or some other device having one or more processors. A processor (e.g., processing circuitry, a chip, and / or a module) implemented in hardware and / or software and preferably having at least one hardware component can be used in any device to perform one or more steps of method 700. Illustrative processors include (but are not limited to) a central processing unit (CPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), etc., combinations thereof, or any other suitable computing device known in the art.

[0116] like Figure 7As shown, method 700 includes operation 702. Operation 702 includes receiving a second encrypted key by a transcoder. The second encrypted key is a key that has been encrypted with a first key to create a first encrypted key, and the first encrypted key is then encrypted with the second key to create the second encrypted key. In a preferred embodiment, encrypting the key to the first encrypted key and then encrypting the first encrypted key to the second encrypted key occurs at the source node. The source node includes the first key and the second key.

[0117] Operation 704 includes receiving a second key by a transcoder. In various methods, the second key is received from a source node. In various methods, the source node sends a copy of the second key to the transcoder, which securely stores the copy for a duration, number of operations, etc., defined by the sharing policy information. In at least some embodiments, in response to the end of a sharing period (e.g., as determined by the sharing policy, as requested by the source node, etc.), the transcoder may shred the second key and / or replace it with a pseudo-key, as will become apparent to those skilled in the art upon reading this disclosure. The pseudo-key can be of any type known in the art.

[0118] In other methods, a second key can be received from a key manager. The key manager can be coupled to the source node, destination node, and / or any other component in the network to provide, generate, and manage keys for sharing data between the source and destination nodes.

[0119] Operation 706 involves the transcoder using a second key to decrypt a second encrypted key to obtain a first encrypted key. As described above, the second encrypted key is a key that was encrypted with the first key to create the first encrypted key, and then encrypted with the second key to create the second encrypted key. According to operation 706, the transcoder can obtain the first encrypted key at the transcoder using encryption / decryption functionality and a second key (sent by the source node in some methods). In cases where the transcoder cannot access the first key (e.g., to decrypt the first encrypted key to obtain the key), the transcoder preferably never obtains the key in plaintext.

[0120] Operation 708 involves the transcoder using a third key to encrypt a first encrypted key to create a third encrypted key. The first encrypted key (e.g., encrypted only in the first key) can be encrypted with the new third key to create the third encrypted key by an encryption / decryption function on the transcoder. The encryption / decryption function may be the same as or different from the encryption / decryption function of operation 706 (e.g., separate from the third key, used only for the third key, etc.). In at least some methods, the third key may be generated by a key generator on the transcoder. In other methods, any key may be generated and / or managed by a key manager and / or key generator coupled to the source node, transcoder, destination node, etc.

[0121] In at least some methods, method 700 includes sending a third key from a transcoder to a destination node. In various methods, the transcoder sends a copy of the third key to the destination node, which securely stores the copy for a specified amount of time, number of operations, etc., as defined by the sharing policy information. In a preferred embodiment, in response to the end of a sharing period (e.g., as determined by the sharing policy, or as requested by the source node), the transcoder shreds the third key in any manner that will become apparent to those skilled in the art upon reading this disclosure and / or replaces the third key with a pseudo-key used to terminate data sharing between the source and destination nodes. The pseudo-key can be of any type known in the art.

[0122] In other methods, a third key can be sent from a key manager to the destination node. The key manager can be coupled to the source node, destination node, and / or any other component in the network to provide, generate, and manage keys for sharing data between the source and destination nodes.

[0123] Operation 710 includes sending a third encrypted key to the destination node via a transcoder. As described above, the third encrypted key is a first encrypted key (e.g., a key encrypted within the first key) that is encrypted using the third key to create the third encrypted key. The destination node receives the first key directly from the source node using various methods. In various methods, the destination node is configured to decrypt the third encrypted key using the third key to obtain the first encrypted key using encryption / decryption functions on the destination node. The destination node is also configured to decrypt the first encrypted key using the first key to obtain the key using encryption / decryption functions on the destination node (which may be the same as or different from the encryption / decryption functions used to decrypt the third encrypted key to obtain the first encrypted key). As described above, the key can be a plaintext key, an unencrypted key, etc.

[0124] In various methods, the destination node can use a key (e.g., an unencrypted key) to decrypt data from the source node. For example, the unencrypted key could be... Figure 6 The first key in at least some of the operations described in Method 600.

[0125] According to a preferred embodiment, the present invention can be a system, method, and / or computer program product at any possible level of integration technical detail. The computer program product may include a computer-readable storage medium (or medium) having computer-readable program instructions thereon for causing a processor to execute aspects of the present invention.

[0126] Computer-readable storage media can be tangible devices capable of retaining and storing instructions for use by an instruction execution device. Computer-readable storage media can be, for example, but not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: a portable computer disk, hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable optical disc read-only memory (CD-ROM), digital multifunction disc (DVD), memory stick, floppy disk, mechanically encoded devices, perforated cards or raised structures such as those with instructions recorded thereon, and any suitable combination of the foregoing. Computer-readable storage media as used herein should not be construed as a transient signal itself, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses through fiber optic cables), or electrical signals transmitted through wires.

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

[0128] Computer-readable program instructions used to perform the operations of this invention may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​such as Smalltalk, C++, etc., and procedural programming languages ​​such as the "C" programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer, partially on a remote computer, or entirely on a remote computer or server. In the latter case, 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 connected to an external computer (e.g., via the Internet provided by an Internet service provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs) may execute computer-readable program instructions by personalizing the electronic circuitry with state information utilizing the computer-readable program instructions in order to perform aspects of this invention.

[0129] Various aspects of the present invention will be 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 should 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.

[0130] These computer-readable program instructions may be provided to a computer processor or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the computer processor or other programmable data processing apparatus, create means for implementing the functions / actions specified in one or more boxes of a flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can instruct a computer, programmable data processing apparatus, and / or other equipment to function in a particular manner, such that the computer-readable storage medium storing the instructions includes an article of writing comprising instructions for implementing aspects of the functions / actions specified in one or more boxes of a flowchart and / or block diagram.

[0131] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device, thereby producing a computer-implemented process, such that the instructions that execute on the computer, other programmable apparatus or other device implement the functions / actions specified in one or more boxes of a flowchart and / or block diagram.

[0132] 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 box in a flowchart or block diagram may represent a module, segment, or portion of instructions comprising one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions indicated in the boxes may not occur in the order shown in the figures. For example, two boxes shown consecutively may actually be completed as a single step, executed concurrently or substantially concurrently in a manner that overlaps partially or entirely in time, or these boxes may sometimes be executed in reverse order, depending on the functions involved. It will also be noted that each box in the block diagrams and / or flowcharts, and combinations of boxes in the block diagrams and / or flowcharts, may be implemented by a dedicated hardware-based system that performs the specified function or action or executes a combination of dedicated hardware and computer instructions.

[0133] Furthermore, the system according to various embodiments may include a processor and logic integrated with and / or executable by the processor, the logic being configured to perform one or more processing steps described herein. Integration with a processor means that the processor has logic embedded therein as hardware logic, such as an application-specific integrated circuit (ASIC), an FPGA, etc. Executability by a processor means that the logic is hardware logic; software logic, such as firmware, part of an operating system, part of an application; etc., or some combination of hardware and software logic accessible to the processor and configured to cause the processor to perform certain functions when executed by the processor. The software logic may be stored on local and / or remote memory of any memory type known in the art. Any processor known in this art may be used, such as software processor modules and / or hardware processors, such as ASICs, FPGAs, central processing units (CPUs), integrated circuits (ICs), graphics processing units (GPUs), etc.

[0134] It will be clear that the various features of the aforementioned systems and / or methods can be combined in any way, creating multiple combinations from the description presented above.

[0135] It should also be understood that embodiments of the present invention may be provided in the form of services deployed on behalf of customers to provide services on demand.

[0136] Various embodiments of the invention have been described for illustrative purposes, but these descriptions are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein is chosen to best explain the principles of the embodiments, their practical application, or technical improvements to existing technologies in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.

Claims

1. A computer-implemented method, comprising: The transcoder receives the second encrypted data. The second encrypted data is data that has been encrypted with the first key to create the first encrypted data, and the first encrypted data is then encrypted with the second key to create the second encrypted data. The second key is received by the transcoder; The transcoder uses the second key to decrypt the second encrypted data to obtain the first encrypted data; The transcoder uses a third key to encrypt the first encrypted data to create third encrypted data, wherein the third key is generated independently by the transcoder. The transcoder sends the third encrypted data to the destination node; as well as The transcoder sends the third key to the destination node, wherein the destination node is configured to use the third key to decrypt the third encrypted data to obtain the first encrypted data, and wherein the destination node is configured to use the first key to decrypt the first encrypted data to obtain the data.

2. The computer-implemented method according to claim 1, wherein the second key is received from the source node, and the source node sends the second encrypted data to the transcoder.

3. The computer-implemented method of claim 1, wherein the second encrypted data is received at least in part based on a data request from the transcoder to the storage device.

4. The computer-implemented method of claim 2, wherein the second encrypted data is received at least in part based on a data request from the transcoder to the source node.

5. The computer-implemented method of claim 1, wherein the data comprises a plurality of data blocks, wherein each data block is encrypted with a fourth key, wherein the fourth key is encrypted with the first key to create a first encrypted fourth key, and the first encrypted fourth key is then encrypted with the second key to create a second encrypted fourth key. The transcoder receives the second encrypted fourth key; The transcoder uses the second key to decrypt the second encrypted fourth key to obtain the first encrypted fourth key; The transcoder uses the third key to encrypt the first encrypted fourth key to create a third encrypted fourth key; as well as The transcoder sends the third encrypted fourth key to the destination node.

6. The computer-implemented method of claim 2, wherein the transcoder is located on the source node.

7. The computer-implemented method of claim 3, wherein the transcoder is located on the storage device.

8. The computer-implemented method of claim 3, wherein the transcoder is located on a storage network coupled to a source node and the storage device; and the method comprises: The transcoder replaces the third key with a pseudo-key used to terminate data sharing between the source node and the destination node.

9. The computer-implemented method according to claim 1, comprising: The transcoder replaces the third key with a pseudo-key used to terminate data sharing between the source node and the destination node.

10. A computer-implemented method, comprising: The transcoder receives the second encrypted key. The second encrypted key is a key that has been encrypted with the first key to create the first encrypted key, and the first encrypted key is then encrypted with the second key to create the second encrypted key; The second key is received by the transcoder; The transcoder uses the second key to decrypt the second encrypted key to obtain the first encrypted key; The third key is generated independently by the transcoder; The transcoder uses the third key to encrypt the first encrypted key to create the third encrypted key; as well as The transcoder sends the third encrypted key to the destination node. The destination node is configured to use the third key to decrypt the third encrypted key to obtain the first encrypted key, and the destination node is configured to use the first key to decrypt the first encrypted key to obtain the key.

11. The computer-implemented method of claim 10, wherein the destination node uses the key to decrypt data from the source node.

12. A system for secure data movement, comprising: processor; as well as Logic, which is integrated with and executable by the processor, or integrated with and executable by the processor, is configured to: The transcoder receives the second encrypted data. The second encrypted data is data that has been encrypted with the first key to create the first encrypted data, and the first encrypted data is then encrypted with the second key to create the second encrypted data. The second key is received by the transcoder; The transcoder uses the second key to decrypt the second encrypted data to obtain the first encrypted data; The transcoder uses a third key to encrypt the first encrypted data to create third encrypted data, wherein the third key is generated independently by the transcoder. The transcoder sends the third encrypted data to the destination node; as well as The transcoder sends the third key to the destination node, wherein the destination node is configured to use the third key to decrypt the third encrypted data to obtain the first encrypted data, and wherein the destination node is configured to use the first key to decrypt the first encrypted data to obtain the data.

13. The system of claim 12, wherein the second key is received from a source node, the source node creating the second encrypted data.

14. The system of claim 12, wherein the second encrypted data is received at least in part based on a data request from the transcoder to the storage device.

15. The system of claim 13, wherein the second encrypted data is received at least in part based on a data request from the transcoder to the source node.

16. The system of claim 12, wherein the data comprises a plurality of data blocks, wherein each data block is encrypted with a fourth key, wherein the fourth key is encrypted with the first key to create a first encrypted fourth key, which is then encrypted with the second key to create a second encrypted fourth key; And the logic is configured as follows: The transcoder receives the second encrypted fourth key; The transcoder uses the second key to decrypt the second encrypted fourth key to obtain the first encrypted fourth key; The transcoder uses the third key to encrypt the first encrypted fourth key to create a third encrypted fourth key; as well as The transcoder sends the third encrypted fourth key to the destination node.

17. The system of claim 13, wherein the transcoder is located on the source node.

18. The system of claim 14, wherein the transcoder is located on the storage device.

19. The system of claim 14, wherein the transcoder is located on a storage network coupled to the source node and the storage device.

20. The system of claim 12, further comprising logic configured to: The transcoder replaces the third key with a pseudo-key used to terminate data sharing between the source node and the destination node.

21. A computer program product, the computer program product comprising: One or more computer-readable storage media, and program instructions co-stored on the one or more computer-readable storage media, the program instructions comprising: Program instructions used by the transcoder to receive the second encrypted data The second encrypted data is data that has been encrypted with the first key to create the first encrypted data, and the first encrypted data is then encrypted with the second key to create the second encrypted data. Program instructions for receiving the second key by the transcoder; Program instructions for the transcoder to use the second key to decrypt the second encrypted data to obtain the first encrypted data; Program instructions for the transcoder to encrypt the first encrypted data using a third key to create third encrypted data, wherein the third key is generated independently by the transcoder; Program instructions for sending the third encrypted data from the transcoder to the destination node; and Program instructions for sending the third key from the transcoder to the destination node, wherein the destination node is configured to use the third key to decrypt the third encrypted data to obtain the first encrypted data, wherein the destination node is configured to use the first key to decrypt the first encrypted data to obtain the data.

22. A computer program product, the computer program product comprising: One or more computer-readable storage media, and program instructions co-stored on the one or more computer-readable storage media, the program instructions comprising: Program instructions used by the transcoder to receive the second encrypted key. The second encrypted key is a key that has been encrypted with the first key to create the first encrypted key, and the first encrypted key is then encrypted with the second key to create the second encrypted key; Program instructions for receiving the second key by the transcoder; Program instructions for the transcoder to use the second key to decrypt the second encrypted key to obtain the first encrypted key; Program instructions for independently generating a third key by the transcoder; Program instructions for the transcoder to encrypt the first encrypted key using the third key to create a third encrypted key; and Program instructions used by the transcoder to send the third encrypted key to the destination node. The destination node is configured to use the third key to decrypt the third encrypted key to obtain the first encrypted key, and the destination node is configured to use the first key to decrypt the first encrypted key to obtain the key.

23. A computer-readable storage medium configured to store a computer program that, when run on a computer, causes the computer to perform the method according to any one of claims 1 to 9 or 10 to 11.