Storage device controlled access

Access to a storage device, such as a disk, is controlled by performing a disk operation using a single cryptographic engine. Keys associated with each layer of a layered structure associated with controlling access to the storage device are combined. The resultant of this combination is used as the key to the cryptographic engine. Data to be retrieved from and written to the storage device are operated on by the cryptographic engine utilizing the combined key. Keys are combined by combining functions associated with layers of the layered structure. A combining function can include an exclusive or function, a cryptographic hash function, or a combination thereof.

TECHNICAL FIELD

The technical field generally relates to computer processing and more specifically to controlling access to a storage device.

BACKGROUND

Current storage devices typically store data in a hierarchical layered structure. For example, a disk typically is accessed through layers, wherein each layer implements a respective abstraction. A disk operates on sectors and groups of sectors. Disk sectors are grouped into partitions having one or more partition per disk. Partitions are grouped into volumes, wherein a volume can contain partitions from different disks. Files typically comprise sectors from a volume.

To encrypt, or decrypt, data on a disk, current systems perform encryption, or decryption, at multiple layers. For example, to gain access to data stored in a file within a volume on a disk, encryption/decryption may be performed at the volume layer and then at the file layer. Encryption can also be performed within a file on data not having an integral number of sectors. Performing multiple encryption/decryption operations each time the disk is accessed results in detrimental performance such as slower system performance and limited utilization of system resources.

SUMMARY

To control access to a storage device, keys, such as cryptographic keys, are used. In an example embodiment, the keys are combined to form a composite key, and the resulting composite key is used to perform encryption/decryption. Keys are combined using a key combining function and encryption/decryption is performed using a keyed transformation function. For example, if respective keys are needed at a volume layer and at a file layer to access data on a storage device, the volume key is combined with the file key for a given sector, using a key combining function. The resultant key is used to perform encryption/decryption using a keyed transformation function. Thus, encryption/decryption is not performed at each layer. Instead, a more efficient key combining operation is performed at the designated layers. In example implementations, the key combining function can comprise an EXCLUSIVE-OR function or a cryptographic hash function, or any other appropriate key combination function, utilizing knowledge of all the input keys. The keyed transformation function can comprise, for example, an encryption/decryption function implemented in accordance with the Advanced Encryption Standard (AES), an authentication function such as a keyed-hash message authentication code (HMAC), or any other keyed function. The cipher text that results from encryption using the result of the key combining function is not the same as the cipher text that is the result of iterative encryptions using the individual keys; however the semantics associated with access to the cipher text is the same. That is, as long as the key combination function is not flawed, if there is access to all the keys involved, then there will be access to the plaintext in either architecture, but if any of the keys is unavailable, then there will be no access to the plaintext, in either architecture.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

FIG. 1is a depiction of an example system for controlling access to a storage device comprising a storage device12, a keyed transformation function14, multiple layers22,24,26, and combining functions28,30,32. The storage device12can comprise any appropriate storage device, for example, a magnetic cassette, a magnetic tape, magnetic disk storage or other magnetic storage device, a CD-ROM, digital versatile disks (DVD) or other optical storage device, random-access memory (RAM), read-only memory (ROM), programmable read-only memory (PROM), erasable PROM (EPROM), electrically EPROM (EEPROM), flash memory, universal serial bus (USB) compatible memory, smart cards, or other memory technology, or any other medium which can be used to store information and which can be accessed. As described herein, access includes writing, reading, or a combination thereof.

The keyed transformation function14can comprise any appropriate keyed transformation function, for example, a cryptographic engine, a symmetric key cryptographic function, a cryptographic function in accordance with the Advanced Encryption Standard (AES), or the like. A cryptographic engine can comprise for example, code, data, objects, methods and/or routines comprising a single or numerous programmatic functions and/or structures that are utilized to complete a task and/or set of tasks.

The layers22,24, and26, are representative of any appropriate number of layers that can be used to control access to the storage device12. The layers can be structured hierarchically. For example, layer22can represent a file layer, layer24can represent a volume layer, and layer26can represent a partition layer. It is to be understood that these layers are representative of any layered structure that can be implemented to control access to the storage device12.

Access to the storage device12is controllable using keys associated with each layer. As depicted inFIG. 1, key K22is associated with layer22, key K24is associated with layer24, and key K26is associated with layer26. Data associated with the layer22are accessible using the key K22. Data associated with the layer24are accessible using the key K24. Data associated with the layer26are accessible using the key K26. In a hierarchical layered structure, for example, if layer22represents a file layer, layer24represents a volume layer, and layer26represents a partition layer, the keys for all layers are needed to access the lowest level data. Thus, to access data associated with the file layer22, the keys for the file layer22, the volume layer24, and the partition layer26are needed.

A combining function associated with a layer operates on provided keys to generate a resultant key. The resultant key is provided to the appropriate key input at the next layer in the sequence. In an example embodiment, the key input at a given layer and another key associated with the respective layer are combined to generate the key to provide to the key input at the next layer. This continues until the end of the sequence, at which point a final key is generated. It is the final key that is provided to the keyed transformation function14to access the storage device12. For example, key, K22is provided to the combining function28. The key, K22is operated on by the combining function28and the result34is provided to the combining function30. The key K24is provided to the combining function30. The combining function30operates on the resultant key34and the key K24to generate a resultant key36. The resultant key36is provided to the combining function32. The combining function32operates on the resultant key36and the key K26to generate the final key Kf. The final key, Kf, is provided to the keyed transformation function14. The transformation function14operates on either the data38or the data40utilizing the final key, Kf, to access the storage device12. If data is to be written to the storage device12, the keyed transformation function14operates on the data40utilizing the final key, Kf, and provides the resultant data to the storage device12for storage thereon. If data is to be read from the storage device12, the keyed transformation function14operates on the data38utilizing the final key, Kf.

It is emphasized thatFIG. 1exemplary.FIG. 1depicts one sequence of key combination functions and one keyed transformation function, however, any number of keys and keyed transformation functions are applicable, and those functions can be at the same or different layers of the storage abstraction. For example,FIG. 2shows two layers, each with its own keyed transformation function50,52. Two separate keyed transformation functions are shown, but any number can be employed. In an example embodiment, one transformation function50encrypts data and another transformation function52computes an integrity check (such as a Message Authentication Code). The encryption functions are represented by one encryption engine52using a key, K0, derived from multiple keys at different layers, and the authentication engine50can be employed at a different layer using different keys. At the left layer, there are two input keys, K0and K1, and one datum. At the input to the right layer, there is one key input, K3, and one datum, because the keyed transformation function,50, has consumed one of those keys. Although not depicted inFIG. 2, the transformation functions can be applied at any layer(s) and more than one transformation function can be applied in the same layer.FIG. 2illustrates that a keyed encryption engine consumes a key and therefore reduces the number of keys exposed as parameters into a layer. Each of these parameters can be communicated into that layer by known programming means, such as passing a parameter to an application programming interface (API) or a state variable associated with that layer, for example.

In an example embodiment, the keyed transformation function comprises a cryptographic engine for performing encryption and decryption. Thus, if data is to be written to the storage device12, the keyed transformation function14encrypts the data40utilizing the final key, Kf, and provides the encrypted data to the storage device12for storage thereon. If data is to be read from the storage device12, the keyed transformation function14decrypts encrypted data38utilizing the final key, Kf.

The combining function can comprise any appropriate combining function. For example, the combing function can comprise an exclusive or (XOR) function, wherein the key, or keys, provided to the combining function are XOR'd, and the resultant key is indicative thereof. In another example embodiment, the combining function can comprise a cryptographic hash function, wherein the key, or keys, provided to the combining function are cryptographically hashed, and the resultant key is indicative thereof. Any appropriate cryptographic hash function can be used, such as the well known SHA-1 or SHA-256 cryptographic hash functions, for example. In yet another example embodiment, the combining functions can comprise a combination of XOR functions and cryptographic hash functions.

If at any layer, there is no key added at that layer, then a key provided as input to the layer, is passed through to the output of the layer (the input to the next layer), unchanged.

FIG. 3depicts an example state table54for a combining function having two inputs, input1and input2, and one output, each depicted in a respective column of the table54. The table54illustrates how an example key structure is combined. In an example embodiment, a key can be represented as at least a two component structure, one of which is a cryptographic key and the other of which is a state indicator. In the table54the letters a, b, and c are indicative of respective state indicators. The letter “a” indicates that no key is yet specified. The letter “b” indicates there is a key. The letter “c” indicates that there is to be no key for this operation even if some key is offered at an intermediate layer. Thus, if either input in a row depicts a state of “c,” the output is state “c” with no key. If either input in a row depicts a state “a” and the other input is “b,” the output is state “b” with a combined key as appropriate. If both inputs are state “b,” the output is “b.” The construct K1·K2in the output column of the table54is indicative of the combination of the two keys, K1and K2. Each row of the table54depicts various combinations of inputs and the resulting output. For example, the first row of the table54shows key, K1and state “b” as the input1and key, K2, and state “b” as input2The output is shown as the combination of the keys K1and K2, K1·K2, and the state “b.” As seen in table54, a single key is passed through to the output, and multiple keys are combined.

FIG. 4is a flow diagram of an example process for controlling access to a storage device. Combining functions are associated with layers at step56. Layers, as described above, refer to the layered structure that can be implemented to control access to the storage device. Any or all layers can have associated combination functions. Keys are associated with layers at step58. Any or all layers can have associated keys. At step60, the combining function operation associated with the first layer is performed. As described above, the combining function can combine all keys provided as input, or combine no keys provided as input, dependent upon the arguments provided to the combining function. In an example embodiment, a command argument is indicative of the functionality of the combining function.

In sequence, the output of a combining function is provided as input to the next combining function at step62. This continues until the last combining function in the sequence is reached. The output of the last sequence, denoted as the final key, is provided to the keyed transformation function at step64. The keyed transformation function can comprise any appropriate function capable of transforming data provided thereto in accordance with a key. Example keyed transformation functions include cryptographic functions, symmetric key cryptographic functions, and cryptographic functions implemented in accordance with the AES, for example. Those keyed transformation functions can be used for encryption/decryption, integrity verification such as with a Message Authentication Code (MAC), a function that combines encryption/decryption with integrity verification in one operation, scrambling over a large region of storage, or any other keyed transformation function.

The type of access is determined at step66. If data is to be written to the storage device (step66), the data provided to the keyed transformation function is transformed utilizing the final key at step72. The transformed data is provided to the storage device at step74. If data is to be read from the storage device (step66), the data is received from the storage device at step68. The received data is transformed by the keyed transformation function utilizing the final key at step70.

FIG. 5is a diagram of an exemplary computing device76for controlling access to a storage device. The computing device76can be implemented as a client processor and/or a server processor. The computing device76comprises a processing portion78, a memory portion80, and an input/output portion82. The processing portion78, memory portion80, and input/output portion82are coupled together (coupling not shown inFIG. 5) to allow communications therebetween. The processing portion78is capable of performing cryptographic processing, such as encryption and decryption, for example. The processing portion78is capable of performing the operations associated with controlling access to a storage device. For example, the processing portion78is capable of associating combining functions with respective layers, associating keys with respective layers, combining keys, and controlling access to the storage device in accordance with the keyed transformation function utilizing the final key. The memory portion80is capable of storing all parameters associated with controlling access to the storage device, such as keys combining function command arguments, for example. The memory portion80, or any portion thereof, can be the storage device having controlled access thereto. Input/output portion82is capable of providing and/or receiving components utilized to implement controlled access to the storage device.

Depending upon the exact configuration and type of processor, the memory portion80can be volatile (such as RAM and/or cache)84, non-volatile (such as ROM, flash memory, etc.)86, or a combination thereof. The computing device76can have additional features/functionality. For example, the computing device76can include additional storage (removable storage88and/or non-removable storage90) including, but not limited to, magnetic or optical disks, tape, flash, smart cards or a combination thereof. Computer storage media, such as memory portion80,84,86,88, and90, include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, universal serial bus (USB) compatible memory, smart cards, or any other medium which can be used to store the desired information and which can be accessed by the computing device76. Any such computer storage media can be part of the computing device76.

The computing device76also can contain communications connection(s)96that allow the computing device76to communicate with other devices, such as a storage device having controlled access, for example. Communications connection(s)96is an example of communication media. Communication media typically embody computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein includes both storage media and communication media. The computing device76also can have input device(s)94such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s)92such as a display, speakers, printer, etc. also can be included.

The various techniques described herein can be implemented in connection with hardware or software or, where appropriate, with a combination of both. Thus, the methods and apparatuses for controlling access to a storage device or certain aspects or portions thereof, can take the form of program code (i.e., instructions) embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for controlling access to a storage device.

The program(s) can be implemented in assembly or machine language, if desired. In any case, the language can be a compiled or interpreted language, and combined with hardware implementations. The methods and apparatuses for controlling access to a storage device also can be practiced via communications embodied in the form of program code that is transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via any other form of transmission, wherein, when the program code is received and loaded into and executed by a machine, such as an EPROM, a gate array, a programmable logic device (PLD), a client computer, or the like, the machine becomes an apparatus for controlling access to a storage device. When implemented on a general-purpose processor, the program code combines with the processor to provide a unique apparatus that operates to invoke the functionality of controlled access to a storage device. Additionally, any storage techniques used in connection with controlling access to a storage device can invariably be a combination of hardware and software.

While controlled access to a storage device has been described in connection with the example embodiments of the various figures, it is to be understood that other similar embodiments can be used or modifications and additions can be made to the described embodiments for performing the same functions controlling access to a storage device without deviating therefrom. Therefore, controlling access to a storage device as described herein should not be limited to any single embodiment, but rather should be construed in breadth and scope in accordance with the appended claims.