This invention pertains to storage systems, and more particularly to applying different encryption policies to different data on storage system.
There has long been a recognized need to protect data on storage devices. Disk drive manufacturers have attempted to meet this need by building devices that have encryption built into the device. And operating system manufacturers have similarly attempted to meet this need by building encryption into their operating systems.
But neither solution adequately solves the problem. Disk drive encryption is a slow process, taking potentially four times as long to read or write a block of data as unencrypted access would take. In addition, disk drive encryption does not factor in the logical structure of the data on the disk drive. While this delay might be acceptable if every block of data on the disk drive required encryption, it is an expensive price to pay with respect to data that does not require encryption.
Encryption by the operating system may take advantage of the logical structure of the data on the disk, and may be selective as to what files are encrypted. But the operating system operates at a higher level than the disk drive. File system encryption, therefore, operates above the block level. As a result, file system structure may still be visible on the disk, resulting in weaker security.
A need remains for a way to address these and other problems associated with the prior art.
Embodiments of the present invention are illustrated by way of example, and not by way of limitation, in the drawings and in which like reference numerals refer to similar elements.
Co-pending U.S. patent application Ser. No. 12/319,012, filed Dec. 31, 2008, which is herein incorporated by reference, describes a storage device that includes support for improving quality of service. “Quality of service” is a broad concept, which can encompass many different “services”. One such “service” is encryption of data on the storage device; this concept is explored further below.
Computer system 105 includes storage device 130. Storage device 130 may be any device that may store data. Storage device 130 may be a hard drive, storage area network (SAN), or other forms. In addition, storage device 130 may utilize magnetic storage, optical storage, or solid state storage, among other possibilities. Storage device 130 may be volatile or non-volatile memory.
In one embodiment of the invention, data tag 315 includes classification 320. Classification 320 classifies data 310, giving the storage device some additional information about the data to be processed. For example, classification 320 may indicate that data 310 is an operating system file, an application, or user data, among other possibilities. Classification 320 may also indicate a type of the file: for example, is the file an executable, a library file (e.g., a dynamic link library (DLL) file), a configuration file, an XML file, and so on. Classification 320 may also be used to store some other metadata about data 310. In this manner, the storage device gains some insight into the logical structure of the data stored on the storage device. For example, if data 310 is an operating system file, this file is less critical (and more easily replaced) than user data. Thus, a lower level of encryption (or no encryption at all) may be applied to an operating system file as compared to user data, which is more sensitive.
A typical data tag contains one byte, or eight bits of data, so as to minimize the amount of additional data that is sent with the I/O request. Using data tag 315 to store classification 320 allows for different data to be classified similarly, and therefore for similar encryption algorithms to be applied to various different data. Classification 320 may then be used by the storage device to access an applicable encryption policy, as described below with reference to
Once I/O request 305 is received by receiver 210, logic 215 uses memory 205 to determine the encryption algorithm to be applied to data 310. As discussed below with reference to
The encryption algorithm applied can be any encryption algorithm. For example, the Data Encryption Standard (DES), American National Standards Institute (ANSI) X3.92-1981 (R1998), approved Feb. 5, 1999, and the Advanced Encryption Standard (AES), Federal Information Processing Standards (FIPS) 197, published Nov. 26, 2011, are both examples of encryption algorithms that can be used, although a person of ordinary skill in the art will recognize that any other encryption algorithm can be used.
Note that when the encryption algorithm is applied may depend on the type of I/O request 305. If I/O request 305 is a read request, then the encryption algorithm is applied after the data is read from the storage device. If I/O request 305 is a write request, then the encryption algorithm is applied before the data is written to the storage device. But either way, the encryption algorithm is applied during processing of I/O request 305, within the storage device.
Each encryption policy has associated metadata that specifies operational parameters of the encryption algorithm. For example, encryption policy 405 has encryption metadata 420, encryption policy 410 has encryption metadata 425, and encryption policy 415 has encryption metadata 430. The encryption metadata may be any data appropriate to the encryption algorithm. For example, the encryption metadata may include the key to be used to encrypt the data.
Note that, in general, each pair of encryption policies will differ in some way. That is, for any pair of encryption policies, the two policies will use different encryption algorithms, different encryption metadata or both. Thus, for example, encryption metadata 420 and 425 differ as to the metadata, but use the same encryption algorithm; encryption metadata 420 and 430 differ as to both the encryption algorithm and metadata. But a person of ordinary skill in the art will recognize that there is no reason why “different” encryption policies might not have identical encryption metadata.
Also shown in
In one embodiment of the invention, the mapping from classification to encryption policy, the various encryption policies 405, 410, and 415 themselves, and the associate data 420, 425, and 430 for each encryption policy 405, 410, 415 are pre-programmed into the storage device. That is, logic 435, encryption policies 405, 410, and 415, and encryption metadata 420, 425, and 430 may all be programmed into the storage device at the time of manufacture. In another embodiment of the invention, logic 435, encryption policies 405, 410, and 415, and encryption metadata 420, 425, and 430 may be programmed by the end user after installing the storage device. A person of ordinary skill in the art will also recognize that these embodiments of the invention may be combined: that is, the storage device may be pre-programmed at the time of manufacture, but the end user may change the programming to meet their specific needs. Thus, different embodiments of the invention may utilize any desired memory structure to store mapping logic 435, encryption policies 405, 410, 415, and encryption metadata 420, 425, and 430. Such memory structures may include any variety of Read Only Memory (ROM), any variety of Random Access Memory (RAM), any variety of magnetic or optical storage, or any other desired memory structure.
Assuming the data tag is not included, then at block 510 a filter driver classifies the I/O request, determining what data is to be processed. At block 515, a filter driver reviews the classification and determines the appropriate encryption policy to be applied to the data. Once the appropriate encryption policy is determined, the appropriate classification may be specified in the data tag (or the encryption policy is specified directly in the data tag). The I/O request, as modified by the filter driver, may then be forwarded to the storage device for processing, as in block 520.
At block 625 (
The following discussion is intended to provide a brief, general description of a suitable machine in which certain aspects of the invention may be implemented. Typically, the machine includes a system bus to which is attached processors, memory, e.g., random access memory (RAM), read-only memory (ROM), or other state preserving medium, storage devices, a video interface, and input/output interface ports. The machine may be controlled, at least in part, by input from conventional input devices, such as keyboards, mice, etc., as well as by directives received from another machine, interaction with a virtual reality (VR) environment, biometric feedback, or other input signal. As used herein, the term “machine” is intended to broadly encompass a single machine, or a system of communicatively coupled machines or devices operating together. Exemplary machines include computing devices such as personal computers, workstations, servers, portable computers, handheld devices, telephones, tablets, etc., as well as transportation devices, such as private or public transportation, e.g., automobiles, trains, cabs, etc.
The machine may include embedded controllers, such as programmable or non-programmable logic devices or arrays, Application Specific Integrated Circuits, embedded computers, smart cards, and the like. The machine may utilize one or more connections to one or more remote machines, such as through a network interface, modem, or other communicative coupling. Machines may be interconnected by way of a physical and/or logical network, such as an intranet, the Internet, local area networks, wide area networks, etc. One skilled in the art will appreciated that network communication may utilize various wired and/or wireless short range or long range carriers and protocols, including radio frequency (RF), satellite, microwave, any of the Institute of Electrical and Electronics Engineers (IEEE) 810.11 standards, Bluetooth, optical, infrared, cable, laser, etc.
The invention may be described by reference to or in conjunction with associated data including functions, procedures, data structures, application programs, etc. which when accessed by a machine results in the machine performing tasks or defining abstract data types or low-level hardware contexts. Associated data may be stored in, for example, the volatile and/or non-volatile memory, e.g., RAM, ROM, etc., or in other storage devices and their associated storage media, including hard-drives, floppy-disks, optical storage, tapes, flash memory, memory sticks, digital video disks, biological storage, etc.: such associated data, by virtue of being stored on a storage medium, does not include propagated signals. Associated data may be delivered over transmission environments, including the physical and/or logical network, in the form of packets, serial data, parallel data, propagated signals, etc., and may be used in a compressed or encrypted format. Associated data may be used in a distributed environment, and stored locally and/or remotely for machine access.
Having described and illustrated the principles of the invention with reference to illustrated embodiments, it will be recognized that the illustrated embodiments may be modified in arrangement and detail without departing from such principles. And, though the foregoing discussion has focused on particular embodiments, other configurations are contemplated. In particular, even though expressions such as “in one embodiment” or the like are used herein, these phrases are meant to generally reference embodiment possibilities, and are not intended to limit the invention to particular embodiment configurations. As used herein, these terms may reference the same or different embodiments that are combinable into other embodiments.
Consequently, in view of the wide variety of permutations to the embodiments described herein, this detailed description and accompanying material is intended to be illustrative only, and should not be taken as limiting the scope of the invention. What is claimed as the invention, therefore, is all such modifications as may come within the scope and spirit of the following claims and equivalents thereto.
This application is a continuation-in-part of co-pending U.S. patent application Ser. No. 12/319,012, filed Dec. 31, 2008, which is herein incorporated by reference.
| Number | Date | Country | |
|---|---|---|---|
| Parent | 12319012 | Dec 2008 | US |
| Child | 13336411 | US |