Transient storage devices, such as Universal Serial Bus (“USB”) storage devices, have become increasingly common because, in part, of the simplicity of connecting and disconnecting such transient storage devices to various computer systems. For example, a user can connect a transient storage device to a computer system, copy files to the transient storage device, disconnect the transient storage device from the computer system, and connect the transient storage device to another computer system, which can then access the copied files. Because of the portable nature of such storage devices, they are particularly susceptible to being lost or stolen. Unless the storage device is somehow protected, a malicious user who gains access to a transient storage device can connect it to their computer and access the files stored on the transient storage device.
Various software and hardware solutions have been developed by software developers and by manufacturers of transient storage devices to help secure the data stored on transient storage devices. These solutions, however, have various limitations. Software solutions typically require platform-specific encryption software to protect the data. The use of encryption software limits the portability of the transient storage device, as the device can only be accessed by a computer system that includes the encryption software. Moreover, since the encrypted data is easily accessible by any computer system, it is susceptible to a brute force decryption attack. If a software solution is stored on the storage device itself, then it is susceptible to being modified by a malicious user or malicious software. Hardware solutions present different limitations. Hardware solutions do not provide different protection levels for the data of the storage device. In addition, hardware solutions map a single storage device to multiple logical storage devices for some operating systems. Such a mapping by operating systems has, however, resulted in less than desirable user experiences. Also, since the mapping to multiple logical storage devices is done by the manufacturer, the mapping may not meet the needs of some users.
A method and system for dynamically defining logical unit numbers of a transient storage device is provided. In some embodiments, a dynamic logical unit number system is implemented as part of a storage device that includes processing logic and storage functionality. As provided by a manufacturer, a storage device may be configured to provide a first logical unit number when the storage device is attached to a computer system or other computing device. After a connection is established, the computer system may be able to access the first logical unit number as it would a conventional transient storage device. The storage device through its dynamic logical unit number system provides a configuration interface through which the computer system can configure additional logical unit numbers and reconfigure existing logical unit numbers of the storage device. After the redefinition of the logical unit numbers, the dynamic logical unit number system may cause a reestablishment of the connection between the storage device and the computer system. Upon establishing the new connection, the computer system will recognize the redefined logical unit numbers and treat each logical unit number as a separate storage device, including assigning a different number to each logical unit number.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
A method and system for dynamically defining logical unit numbers of a transient storage device is provided. In some embodiments, a dynamic logical unit number system is implemented as part of a storage device that includes processing logic and storage functionality. As provided by a manufacturer, a storage device may be configured to provide a first logical unit number when the storage device is attached (i.e., physically connected) to a computer system. When the storage device is attached to a computer system, a connection is established between the first logical unit number and the computer system. After the connection is established, the computer system may be able to access the first logical unit number as it would a conventional transient storage device. The storage device through its dynamic logical unit number system provides a configuration interface through which the computer system can configure additional logical unit numbers and reconfigure existing logical unit numbers of the storage device. For example, if a storage device includes 1024 blocks of storage, the dynamic logical unit number system allows for a first logical unit number to be defined that is assigned blocks 0 through 255 and a second logical unit number to be defined that is assigned blocks 256 through 1023. After the redefinition of the logical unit numbers, the dynamic logical unit number system may cause a reestablishment of a connection between the storage device and the computer system. For example, a connection may be reestablished by the dynamic logical unit number system emulating a detaching and reattaching of the storage device to the computer system. When the reattachment occurs, a new connection is established between the storage device and the computer system. Upon establishing the new connection, the computer system will recognize the redefined logical unit numbers and treat each logical unit number as a separate storage device, including assigning a different number to each logical unit number. In this way, the dynamic logical unit number system allows a storage device to be dynamically reconfigured to accommodate various needs of users. In some embodiments, the dynamic logical unit number system may provide the configuration interface through a primary logical unit number, rather than a separately defined interface. In such an embodiment, the primary logical unit number would always be defined so that the configuration interface could be accessed.
In some embodiments, the dynamic logical unit number system may allow an owner, provisioner, or administrator of a storage device to be specified when the storage device is attached to a computer system. For example, when a user first attaches a new storage device to their computer system, the user may specify that the user is the owner of the storage device. Once the owner is specified, the owner may have the authorization to control all configuration aspects of the storage device and to set permissions for other users to access the storage device. For example, the owner of a storage device may be allowed to redefine the various logical unit numbers, define partitions within logical unit numbers, establish an access control list for each logical unit number or partition, specify various behaviors that a logical unit number is to exhibit, and so on. The dynamic logical unit number system may employ an authentication mechanism to authenticate an entity attempting to access the storage device. For example, when the owner of a storage device is specified, the dynamic logical unit number system may store an identifier of the owner in a portion of the storage device that is not accessible to the computer system to which it is attached. When a connection is established to the computer system, the computer system may provide authentication information to the dynamic logical unit number system. For example, when the owner is initially specified, a password may be provided to the dynamic logical unit number system. When an entity provides that same password, then the dynamic logical unit number system authenticates the entity as the owner. As another example, the owner may be authenticated using the public key infrastructure (“PKI”) using asymmetric keys or may be authenticated using a symmetric key. To be authenticated, an entity may provide their signature to the storage device. The dynamic logical unit number system may obtain a certificate for the owner (e.g., from the entity itself or a certificate server). The dynamic logical unit number system may then verify the certificate via the public key infrastructure. If the certificate is verified and is for the owner, then the public key of the certificate may be used to validate the signature, which represents an encryption using the corresponding public key. If the signature is valid, then the dynamic logical unit number system authenticates the entity as the owner. Similar authentication mechanisms may be used to authenticate entities that the owner has authorized to access the storage device. The storage system stores an indication of the authenticated entity in a nonpersistent manner. Thus, when the storage device is disconnected (or detached) from the computer system and then reconnected to that or another computer system, the entity would need to be reauthenticated. Although the owner can configure the storage device via the configuration interface, the owner may not have access to any of the resources (e.g., partitions and data blocks) of the logical unit numbers.
In some embodiments, the dynamic logical unit number system allows an authorized entity to define partitions within each logical unit number of a storage device. Each partition may be assigned a set of contiguous blocks within a logical unit number, which itself may contain contiguous blocks. Blocks may be considered contiguous when they have sequential addresses within the address space of the storage device. Each partition may inherit the attributes associated with the logical unit number such as permissions of the logical unit number.
In some embodiments, the dynamic logical unit number system may allow an authorized entity to establish permissions for controlling access of other entities to resources of a storage device. The resources of a storage device may include the storage device itself, a logical unit number, a partition, and so on. The dynamic logical unit number system may allow permissions to be established using a group-based model or a tree-based model. With a group-based model, groups of entities are given permissions and any entity within a group can access a resource in a manner that is consistent with the permissions of the group. When a new member is added to a group, it inherits the permissions of the group. With a tree-based model, entities are given permissions to access a resource and can grant access to child entities to access the resource with the same set or a subset of their permissions. When a new child entity is defined, it inherits by default the permissions of its parent. When a new partition is defined for a logical unit number, the permissions of the partition are inherited from the logical unit number. Thus, with the group-based model, the members of the groups that have permissions defined for that logical unit number have by default the same permissions defined for the partition. Similarly, with the tree-based model, a parent and child entities that have permissions to the logical unit number have by default the same permission defined for the partition. The permissions may include, for example, read/write access, read-only access, and execute access to a resource. For example, the owner of a storage device may specify that user 1 has read/write permission and execute permission to a certain logical unit number and that user 2 has read-only permission and execute permission to that certain logical unit number. Once an entity has been authenticated as being user 1 or user 2, the dynamic logical unit number system limits access to the resources of the storage system based on the specified permissions. The dynamic logical unit number system may also allow permissions to be specified for entities that cannot be authenticated. For example, the owner of the storage device may specify that an entity that is not authenticated has only execute permission to a certain logical unit number. Thus, if the storage device is attached to a computer system that has not been adapted to take advantage of the features of the dynamic logical unit number system, the computer system may still access resources of the storage device in accordance with the permissions specified for a nonauthenticated entity.
In some embodiments, the dynamic logical unit number system may allow the owner or other authorized entity to specify behaviors of a resource of a storage device. For example, the behaviors may include write caching, write protected, IEEE 1667 enabled, and so on. When a new behavior of a storage system is specified, the dynamic logical unit number system persistently stores an indication of the behavior within an area of the storage device that is not accessible to the computer system to which it is attached. Because the computer system recognizes the behavior of a storage device when a connection is established, the dynamic logical system effects the reestablishment of the connection when a different behavior is specified. When the connection is reestablished, the dynamic logical unit number system checks the specified behaviors and effects an implementation of those behaviors so that the computer system recognizes the different behaviors.
In some embodiments, the dynamic logical unit number system may use various techniques to reestablish a connection with a computer system. For example, the dynamic logical unit number system may stimulate a detachment and reattachment of the storage system to the computer system. When the reattachment is simulated, the computer system recognizes attributes of the storage device including the currently defined logical unit numbers and behaviors. As another example, an interface may be defined through which the dynamic logical unit number system notifies the computer system that its behavior has changed or notifies the computer system to perform the processing that is normally performed when a storage device is attached to the computer system. In particular, the computer system can tear down the existing logical unit numbers and rebuild them in accordance with the reconfiguration of the storage device.
In some embodiments, the dynamic logical unit number system may allow an authorized entity to specify that certain resources of a storage system are to have their data stored in an encrypted format. The dynamic logical unit number system may persistently store encryption/decryption keys in an area of the storage device that is not accessible to the computer system or may be provided with encryption/decryption keys when a connection is established with a computer system. When the encryption/decryption keys are stored persistently, the dynamic logical unit number system may perform the encryption and decryption in a manner that is transparent to an application program of a computer system that is accessing the storage device so long as the dynamic logical unit number system determines that the authenticated entity accessing the storage device is authorized to access the encrypted resource. When the keys are not stored persistently, the dynamic logical unit number system may decrypt data using decryption keys provided by the computer system. If a malicious user were to attempt to access the storage device, because the malicious user would likely not have read permission, the dynamic logical unit number system would not provide even the encrypted data of the resource to the user. Thus, the malicious user could not even attempt a brute force decryption of the encrypted data. The encryption of a resource may be considered a behavior of the resource.
The components of the storage device 200 also include a logical unit number mapping table 231, a permission table 232, and a behavior table 233. The logical unit number mapping table contains a mapping of blocks of the storage to the logical unit numbers of the device and of blocks within a logical unit number to partitions within the logical unit number. The permission table contains permissions that control access to resources of the device. The behavior table contains attributes indicating the behavior that the resources of the device are to exhibit. One skilled in the art will appreciate that multiple functions of the storage device can be integrated into a single component, separated into multiple components, or subdivided in various ways.
Alternatively, since a partition may inherit the permissions of its logical unit number, the permission table may not have an entry for a partition of a logical unit number. In such a case, the dynamic logical unit number system may use the permissions of the logical unit number that contains that partition as the permissions for the partition. In some embodiment, the dynamic logical unit number system may not even allow separate permissions to be defined for each partition.
The computing devices to which a storage device may be attached may include a central processing unit, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives). The memory and storage devices are computer-readable storage media that may contain instructions that implement functionality to access the storage device. In addition, the data structures and message structures may be transmitted via a computer-readable data transmission medium, such as a signal on a communications link. Various communications links may be used, such as the Internet, a local area network, a wide area network, or a point-to-point dial-up connection. The computer-readable media include computer-readable storage media and computer-readable data transmission media.
A dynamic data storage device may be used in various operating environments. The operating environment described herein is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the dynamic logical unit number system. Other well-known computing systems, environments, and configurations that may be suitable for use include personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The dynamic logical unit number system may be described in the general context of computer-executable instructions, such as program modules, executed by one or more processors or other devices. The dynamic logical unit number system may include a processor adapted to perform the functionality of the storage system. Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments. The functionality of various program modules may also be implemented via hardwired electronic circuitry and as code for a micro controller.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms for implementing the claims. Accordingly, the invention is not limited except as by the appended claims.
This application claims the benefit of U.S. Provisional Application No. 61/060,427, filed Jun. 10, 2008, and entitled “SECURE LOGICAL UNIT NUMBER BASED ACCESS TO A STORAGE DEVICE,” which is incorporated herein in its entirety by reference.
Number | Date | Country | |
---|---|---|---|
61060427 | Jun 2008 | US |