Patent ID: 12238211

DETAILED DESCRIPTION

Computer systems often include supervisory programs configured to perform deduplication on data stored in a storage device, such as a volatile storage device or a non-volatile storage device. A supervisory program is a software component that is usually part of the operating system (e.g., the kernel) and can control the execution of various routines; regulate work scheduling, input/output operations, error actions, and similar functions; and regulate the flow of work in a data processing system. To perform deduplication, the supervisory program can access the storage device and compare the storage blocks therein to identify matches. While this may be acceptable in situations where the stored data does not contain sensitive information, in other situations in which the stored data contains sensitive information it may be undesirable for the supervisory program to be able to read the data. For example, it may be undesirable for the supervisory program to be able to access sensitive information like biometric data, passwords, or personally identifying information stored in the storage device. In those situations, the computer system may prevent the supervisory program from being able to access the stored data for security reasons. But this can prevent the supervisory program from being able to perform deduplication because, without being able to access the stored data, the supervisory program has no way to perform the required comparisons for deduplication.

Some examples of the present disclosure can overcome one or more of the abovementioned problems by providing a secure enclave that can receive a request for multiple storage blocks from a supervisory program executing on a processor, such as a central processing unit. A secure enclave can be a dedicated secure subsystem that is separate from the processor and that includes electronic circuitry configured to perform security services. In response to receiving the request, the secure enclave can obtain the storage blocks from a storage device, encrypt them using an encryption key to generate encrypted storage blocks, and provide the encrypted storage blocks to the supervisory program. The encryption key can be maintained in the secure enclave and concealed from the supervisory program. The supervisory program can then receive the encrypted storage blocks and perform deduplication based on the encrypted storage blocks. Because the encryption key is hidden from the supervisory program, the supervisory program cannot access the underlying data in the encrypted storage blocks, so the underlying data is kept secure from the supervisory program. And because the encrypted storage blocks are generated using the same encryption key, the encrypted storage blocks will be the same when the underlying data is the same, thereby allowing the supervisory program to still be able to perform deduplication. For example, the supervisory program can determine that multiple encrypted storage blocks match (e.g., that they have the same encrypted content) and therefore infer that their underlying storage blocks also match. So, the supervisory program can execute a deduplication process with respect to the underlying storage blocks.

In some examples, the secure enclave can generate the encryption key used to encrypt the storage blocks. Because the storage blocks are encrypted but not decrypted, the secure enclave may only generate the encryption key without also generating a corresponding decryption key. This may help conserve the computing resources of the secure enclave, because the secure enclave does not need to expend processing power and memory to create a decryption key that it will not use.

Because the encryption key may no longer be needed once the encryption task is complete, in some examples the secure enclave can delete the encryption key from its local memory after using it to encrypt the storage blocks. This may further conserve the limited memory space of the secure enclave. If same storage blocks or other storage blocks are requested by the supervisory program after the encryption key has been deleted, the secure enclave can generate a new encryption key for purposes of encrypting the storage blocks.

In some examples, the secure enclave can periodically (e.g., occasionally) generate a new encryption key. The secure enclave may or may not also delete the old encryption key. For example, the secure enclave can generate a new encryption key, and delete the old encryption key, once per hour. The process of generating a new encryption key and discarding the old encryption key can be referred to as cycling the encryption key. Periodically cycling the encryption key can further enhance the security of the system because it may further protect sensitive information from an attacker. For example, an attacker could control the supervisory program to request a set of storage blocks from the secure enclave at a first point in time. The attacker could also control the supervisory program to request the same set of storage blocks from the secure enclave again at a second point in time. In response to these requests, the secure enclave would provide back a first set of encrypted storage blocks at the first point in time and a second set of encrypted storage blocks at a second point in time. The attacker could then compare the first set of encrypted storage blocks to the second set of encrypted storage blocks. If the first set differs from the second set, and if the secure enclave does not cycle its encryption key as described above, the attacker could infer that the underlying data in the storage blocks has changed. While the attacker would still not be able to access the underlying data, just knowing that it the underlying data has changed may comprise the security of the system. But by cycling the encryption key periodically, the attacker cannot tell whether the first set differs from the second set because the underlying data changed or because the encryption key changed. Thus, periodically cycling the encryption key can further improve the security of the system.

These illustrative examples are given to introduce the reader to the general subject matter discussed here and are not intended to limit the scope of the disclosed concepts. The following sections describe various additional features and examples with reference to the drawings in which like numerals indicate like elements but, like the illustrative examples, should not be used to limit the present disclosure.

FIG.1shows a block diagram of an example of a computing device100for performing deduplication according to some aspects of the present disclosure. Examples of the computing device100can include a laptop computer, desktop computer, server, tablet, e-reader, a mobile phone, or a wearable device such as a smart watch. The computing device100can include a central processing unit104executing an operating system120, such as Red Hat Enterprise Linux® or Microsoft Windows®. The central processing unit104may also execute a supervisory program108. In some examples, the supervisory program108may be part of the operating system120. For example, the supervisory program108can be a kernel of a Linux operating system. In other examples, the supervisory program108may be separate from the operating system120and run on top of, or aside, the operating system120.

The supervisory program108can be configured to perform a deduplication process110. For example, the supervisory program108can be configured to deduplicate data stored in a storage device114. The deduplication process110can involve comparing two or more storage blocks to one another to determine whether they match. Each storage block may correspond to a single memory page, multiple memory pages, or a part of a memory page. If the storage blocks do not match, no deduplication action may be taken. If the storage blocks match, one of the storage blocks can be maintained in the storage device114and the redundant storage blocks (e.g., the duplicates) can be deleted from the storage device114. A page table can then be updated so that the redundant storage blocks point to the maintained storage block.

The storage device114can include any suitable type of volatile storage device or non-volatile storage device. For example, the storage device114can include a hard disk, a hard drive, optical drive, random access memory (RAM), read-only memory (ROM), or a flash memory. Although the storage device114is depicted as being internal to the computing device100inFIG.1, in other examples the storage device114may be external to the computing device100and communicatively coupled to the computing device100.

In some examples, the storage device114may include data that is to be protected from the supervisory program108. To assist in protecting the data from the supervisory program108, the computing device100may include a secure enclave102. The secure enclave102is hardware that is separate from the central processing unit104and may be dedicated to performing security services. The secure enclave102can include a secure enclave processor112, examples of which may include a Field-Programmable Gate Array (FPGA), an application-specific integrated circuit (ASIC), or a microprocessor. The secure enclave102can also include an encryption key generator122. The encryption key generator122can be hardware or software configured to generate encryption keys and optionally decryption keys. In some examples, the encryption key generator122may be capable of generating an encryption key1206without generating a corresponding description key, which may conserve computing resources. It will be appreciated that although the encryption key generator122and the secure enclave processor112are shown as separate components inFIG.1, in other examples the encryption key generator122can be software executing on the secure enclave processor112. Using the encryption key generator122, the secure enclave102can generate an encryption key106for use in performing an encryption process that can protect data stored in the storage device114from the supervisory program108.

More specifically, the supervisory program108can transmit a request124for a first storage block116aand a second storage block116bto the secure enclave102. The supervisory program108may transmit the request124for the purpose of performing a deduplication process110with respect to the first storage block116aand the second storage block116b. The secure enclave102can receive the request124. In response to the request124, the secure enclave102can retrieve the storage blocks116a-bfrom the storage device114and encrypt the storage blocks116a-busing an encryption key106generated by the encryption key generator122. This can produce a first encrypted storage block118aand a second encrypted storage block118b. The first encrypted storage block118acan be an encrypted version of the first storage block116a, and the second encrypted storage block118bcan be an encrypted version of the second storage block116b. The secure enclave102can then transmit the first encrypted storage block118aand the second encrypted storage block118bto the supervisory program108. The supervisory program108can receive the first encrypted storage block118aand the second encrypted storage block118band perform the deduplication process110using the first encrypted storage block118aand the second encrypted storage block118b. For example, the supervisory program108can compare the first encrypted storage block118ato the second encrypted storage block118bto determine whether they match (e.g., they are the same). If not, no deduplication action may be taken. If the first encrypted storage block118amatches the second encrypted storage block118b, the supervisory program108may then deduplicate the first storage block116and second storage block116b. For example, the supervisory program108may maintain the first storage block116in the storage device114and delete the second storage block116bfrom the storage device114. The supervisory program118may also update a page table so that any references to the second storage block116bpoint to the memory address of the first storage block116a. Using these techniques, the storage blocks116a-bcan be deduplicated without the supervisory program108being able to access their raw (e.g., plaintext or unencrypted) content.

In some examples, the secure enclave102can delete the encryption key106subsequent to generating the first encrypted storage block118aand the second encrypted storage block118b. This may help conserve memory space in a local memory of the secure enclave102. And in some examples, the secure enclave102can repeatedly change the encryption key over time. For instance, the secure enclave102can generate a new encryption key each time the secure enclave102detects a predefined event, such as the passage of a predefined time interval or a change to the content of a storage block. The secure enclave102may also delete the old encrypting key to conserve memory space. Repeatedly changing the encryption key can improve the security of the system.

The supervisory program108and the secure enclave102can perform the above process any number of times. For example, at a later point in time, the supervisory program108can transmit a request124to the secure enclave102for a third storage block116cand a fourth storage block116d. In response to the request124, the secure enclave102can retrieve the storage blocks116c-dfrom the storage device114and encrypt the storage blocks116c-dusing the same encryption key106or a different encryption key generated by the encryption key generator122. This can produce a third encrypted storage block118cand a fourth encrypted storage block118d. The third encrypted storage block118ccan be an encrypted version of the third storage block116c, and the fourth encrypted storage block118dcan be an encrypted version of the fourth storage block116d. The secure enclave102can then transmit the third encrypted storage block118cand the fourth encrypted storage block118dto the supervisory program108, which can perform the deduplication process110using the third encrypted storage block118cand the fourth encrypted storage block118d. For example, the supervisory program108can compare the third encrypted storage block118cto the fourth encrypted storage block118d, determine that they do not match (e.g., that they are different from one another), and consequently prevent deduplication from being performed with respect to the third storage block116cand the fourth storage block116d.

For simplicity, some of the above examples involve performing deduplication with respect to two storage blocks at a time. But, the concepts described herein are not intended to be limited to performing deduplication with respect to only two storage blocks at a time. The supervisory program108and the secure enclave102can cooperate to perform the above process for any number of storage blocks at a time. For example, the supervisory program108and the secure enclave102can cooperate to facilitate the deduplication of three, four, or more storage blocks at a time.

FIG.2shows a flow chart of an example of a process performed by a secure enclave according to some aspects of the present disclosure. Other examples may include more operations, fewer operations, different operations, or a different order of operations than is shown inFIG.2. The operations ofFIG.2are described below with reference to the components ofFIG.1described above.

In block202, a secure enclave102determines whether an event has been detected. Examples of the event can include the passage of a predetermined time interval (e.g., one hour or one day), a certain type of software or hardware interrupt, or a change in data stored on a storage device114associated with the secure enclave102. If the secure enclave102has not detected such an event, the process can return to block202and iterate until the event is detected. If the secure enclave102detects the event, the process can proceed to block204.

In block204, the secure enclave102deletes an existing encryption key106. The existing encryption key106may have been generated during a previous iteration of the process. The secure enclave102can delete the existing encryption key from a local memory of the secure enclave102.

In block206, the secure enclave102deletes existing versions of one or more encrypted storage blocks, such as a first encrypted storage block118aand a second encrypted storage block118b. The one or more encrypted storage blocks may have been previously generated (e.g., during a previous iteration of the process) using the existing encryption key106. The secure enclave102can delete the existing version of the one or more encrypted storage blocks from a local memory of the secure enclave102.

In block208, the secure enclave102generates a new encryption key. The secure enclave102can generate the new encryption key using the encryption key generator122. The secure enclave102may generate the new encryption key without generating a corresponding decryption key. For example, the encryption process may be an asymmetric encryption process for which an asymmetric key pair is normally be generated that includes a public key for encryption and a private key for decryption. But in some examples, the secure enclave102may only generate the public key and not the private key. This may conserve computing resources.

In block210, the secure enclave102generates new versions of the one or more encrypted storage blocks using the new encryption key. For example, the secure enclave102can obtain the first storage block116afrom the storage device114. The secure enclave102can then generate a new version of the first encrypted storage block by encrypting the first storage block116ausing the new encryption key. The secure enclave102can store the new version of the first encrypted storage block in local memory. Additionally, or alternatively, secure enclave102can obtain the second storage block116bfrom the storage device114. The secure enclave102can then generate a new version of the second encrypted storage block by encrypting the second storage block116busing the new encryption key. The secure enclave102can store the new version of the second encrypted storage block in local memory.

In block212, the secure enclave102provides the new versions of the one or more encrypted storage blocks to a supervisory program108for use in a deduplication process110. For example, the secure enclave102can transmit the new version of the first encrypted storage block to the supervisory program108. Additionally, or alternatively, the secure enclave102can transmit the new version of the second encrypted storage block to the supervisory program108. The supervisory program108may then perform the deduplication process110using the new version of the first encrypted storage block and the new version of the second encrypted storage block.

In some examples, the process may then return back to block202, where the secure enclave102again wait for the event. Some or all of this process may repeat each time the secure enclave102detects the event.

FIG.3shows a flow chart of an example of a process implemented by a supervisory program according to some aspects of the present disclosure. Other examples may include more operations, fewer operations, different operations, or a different order of operations than is shown inFIG.3. The operations ofFIG.3are described below with reference to the components ofFIG.1described above.

In block300, a supervisory program108requests a first storage block116aand a second storage block116bfrom a secure enclave102. For example, the supervisory program108can transmit a request124for the first storage block116aand the second storage block116bto the secure enclave102via a hardware connection, such as a hardware bus.

In block302, the supervisory program108receives a first encrypted storage block118aand a second encrypted storage block118bfrom the secure enclave102. The first encrypted storage block118acan be an encrypted version of the first storage block116aand the second encrypted storage block118bcan be an encrypted version of the second storage block116b. The supervisory program108can be executing on a processor such as a central processing unit104, which can receive the first encrypted storage block118aand the second encrypted storage block118bfrom the secure enclave103via the hardware connection.

Next, the supervisory program108can perform a deduplication process110based on the first encrypted storage block118aand the second encrypted storage block118b. More specifically, in block304, the supervisory program108compares the first encrypted storage block118ato the second encrypted storage block118bto determine whether they match. The first encrypted storage block118aand the second encrypted storage block118bmay match if the underlying first storage block116aand second storage block116bare duplicates of one another and they are encrypted using the same encryption key106.

In block306, the supervisory program108determines if the first encrypted storage block118amatches the second encrypted storage block118b. If so, the process can proceed to block308, where the supervisory program108can deduplicate the first storage block116aand the second storage block116b. If the first encrypted storage block118adoes not match the second encrypted storage block118b, the process can proceed to block310, where the supervisory program108can prevent deduplication of the first storage block116aand the second storage block116b.

FIG.4shows a block diagram of an example of a system400for performing deduplication based on encrypted storage blocks generated using a secure enclave according to some aspects of the present disclosure. The system400includes a processor402communicatively coupled to a secure enclave102. In some examples, the processor402may include a central processing unit of a computing device.

The processor402can include one processing device or multiple processing devices. Examples of the processor402include a Field-Programmable Gate Array (FPGA), an application-specific integrated circuit (ASIC), or a microprocessor. The processor402can execute program code stored in a memory to perform operations. In some examples, the program code can correspond to a supervisory program108configured to execute a deduplication process110. The program code can include processor-specific instructions generated by a compiler or an interpreter from code written in any suitable computer-programming language, such as C, C++, C#, Java, or Python.

The secure enclave can include a secure enclave processor112communicatively coupled to a memory404. The secure enclave processor112can include one processing device or multiple processing devices. The secure enclave processor112can execute program code (e.g., instructions406) stored in memory404to perform operations. The program code can include processor-specific instructions generated by a compiler or an interpreter from code written in any suitable computer-programming language, such as C, C++, C#, Java, or Python.

The memory404can include one memory device or multiple memory devices. The memory404can be volatile or non-volatile (e.g., it can retain stored information when powered off). Examples of the memory404include electrically erasable and programmable read-only memory (EEPROM), flash memory, or any other type of non-volatile memory. At least some of the memory404includes a non-transitory computer-readable medium from which the secure enclave processor112can read instructions406. A computer-readable medium can include electronic, optical, magnetic, or other storage devices capable of providing the secure enclave processor112with computer-readable instructions or other program code. Examples of a computer-readable medium include magnetic disks, memory chips, ROM, RAM, an ASIC, a configured processor, optical storage, or any other medium from which a computer processor can read the instructions406.

In some examples, the secure enclave102can generate a first encrypted storage block118aand a second encrypted storage block118busing an encryption key106. For example, the secure enclave processor112can use the encryption key106to generate the first encrypted storage block118aand the second encrypted storage block118b. The secure enclave processor112can then store the first encrypted storage block118aand the second encrypted storage block118bin memory404. The first encrypted storage block118acan be an encrypted version of a first storage block116a, and the second encrypted storage block118bcan be an encrypted version of a second storage block116b. The encryption key106can be stored in memory404or elsewhere in the secure enclave102for use by the secure enclave processor112in generating the first encrypted storage block118aand the second encrypted storage block118b.

After generating the first encrypted storage block118aand the second encrypted storage block118b, the secure enclave102can provide the first encrypted storage block118aand the second encrypted storage block118bto the supervisory program108. The supervisory program108can be executing on the processor402that is separate from the secure enclave102. The supervisory program108can be configured to initiate deduplication of the first storage block116aand the second storage block116bin response to determining that the first encrypted storage block118amatches the second encrypted storage block118b.

FIG.5shows a flowchart of an example of a process for performing deduplication based on encrypted storage blocks generated using a secure enclave according to some aspects of the present disclosure. Other examples may include more operations, fewer operations, different operations, or a different order of operations than is shown inFIG.5. The operations ofFIG.5are described below with reference to the components ofFIG.4described above.

In block502, a secure enclave102generates a first encrypted storage block118aand a second encrypted storage block118busing an encryption key106. The first encrypted storage block118acan be an encrypted version of a first storage block116aand the second encrypted storage block118bcan be an encrypted version of a second storage block116b.

In block504, the secure enclave102provides the first encrypted storage block118aand the second encrypted storage block118bto a supervisory program108executing on the processor402that is separate from the secure enclave102. The supervisory program108can be configured to initiate deduplication of the first storage block116aand the second storage block116bin response to determining that the first encrypted storage block118amatches the second encrypted storage block118b.

While various examples are described above with respect to a supervisory program, it will be appreciated that similar principles can apply to other types of software programs, such as hypervisors. Thus, the concepts described herein are not intended to be limited only to supervisory programs and other types of programs may alternatively be used to perform some or all of the supervisory program's functionality described above.

The above description of certain examples, including illustrated examples, has been presented only for the purpose of illustration and description and is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Modifications, adaptations, and uses thereof will be apparent to those skilled in the art without departing from the scope of the disclosure. For instance, any examples described herein can be combined with any other examples.