BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
FIG. 1 illustrates different components of the storage system on a computer.
FIG. 2 illustrates an example for states of a DUPHardware that accepts DUPManualActions.
FIG. 3A illustrates an example for states of a device driver that control the DUPHardware and a software module that prompts users for password.
FIG. 3B illustrates a file system module which flushes dirty buffers of a user in the file system buffer cache to mass memory and removes association between the user and the buffers in the buffer cache, before sending message containing identifier of the user to the DUPHardware device driver.
FIG. 4 illustrates an example for states of a module in the storage component that implement access restrictions for each user.
FIG. 5 illustrates an example of how different components interact when used with a DUPHardware that accepts DUPManualActions.
DETAILED DESCRIPTION OF THE INVENTION
FIG. 2 illustrates an example for different states of a DUPHardware that is attached to a computer and accepts DUPManualActions. The DUPHardware awaits 201 either a DUPManualAction from a user or a computer command. The DUPHardware checks 202 the type of input, DUPManualAction vs a command from computer. When a DUPManualAction is received, the DUPHardware checks 204 whether the user and the state requested by the DUPManualAction are valid. If the user or state is invalid, the DUPManualAction is ignored (discarded). If the user and state are valid, the DUPHardware updates 205 a register readable by the computer, with the identifier of the user and interrupts 205 the computer using a hardware interrupt, such as PCI interrupt. The computer cannot write into the DUPHardware register containing identifier of the user. The DUPHardware then returns to the state where it waits for a DUPManualAction or a computer command. When DUPHardware receives a computer command 203 to change the state of the DUPHardware corresponding to a user, the DUPHardware changes the state of the user to the state selected through DUPManualAction by the user. Since the state requested by the user is not communicated to the computer, no malicious software can control the state of the DUPHardware corresponding to a user. The DUPHardware updates a register readable by the computer 203, with the state corresponding to the user. The computer cannot write into the register containing the state corresponding to a user.
Preferably, if more than one DUPManualAction is received for the same user before the state corresponding to the user is changed, the DUPHardware will change state corresponding to the user to the state corresponding to the last DUPManualAction made by the user. Optionally, if more than one DUPManualAction is received for the same user before the state corresponding to the user is changed, the DUPHardware will change state corresponding to the user to the state corresponding to first DUPManualAction made by the user after the last state change. Some implementations may even change the state to one of the states corresponding to a DUPManualAction between the first manual action after the last state change and the last manual action depending on some other criteria.
The DUPManualAction on a DUPHardware may be pressing one or more buttons and/or toggling the position of one or more switches and/or turning a wheel and/or changing one or more jumper positions and/or any other DUPManualAction supported by the DUPHardware.
The DUPHardware may use registers or memory locations readable by the computer to communicate the identifier of the user who initiated DUPManualAction and the current state of DUPHardware corresponding to a user. A computer should not be allowed to write into these registers or memory locations. This improves security as a malicious software will not be able to manipulate the state of the hardware corresponding to each user.
A DUPHardware may control one or more mass memories. There could be one or more DUPHardwares on a computer, each controlling states corresponding to a mutually exclusive set of users. Some implementations may use more than one DUPHardware on the same computer, each controlling states corresponding to sets of users which are not mutually exclusive, but we do not recommend such implementations.
FIG. 3 illustrates an example for states of a device driver which runs on a computer and controls the DUPHardware which accepts DUPManualActions. The DUPHardware device driver runs 301 either when an interrupt from the DUPHardware or a message from the file system arrives. The DUPHardware device driver checks 302 the type of input, interrupt vs. file system message. When an interrupt is received 303, the driver invokes a software module that prompts 305 user whose identifier is present in the DUPHardware register (or memory), for a password. If the password is invalid 306, the software module terminates. If the password is valid 307, the software module sends a request to the file system to flush dirty buffers belonging to the user and terminates. A buffer in the file system buffer cache is considered dirty if the user has written into the buffer. The file system flushes (writes to mass memories) 311 the dirty buffers in the file system buffer cache belonging to the user, resets the user identifier in all buffers that were assigned to the user and then, sends a message 312 containing the user identifier, to the DUPHardware device driver. The DUPHardware device driver sends 304 a command to the DUPHardware to change the state corresponding to the user.
There could be different behaviors for the software that accepts passwords. If the password entered by a user is invalid, the software could prompt the user for password and accept a new password from the user until a valid password is received or until the maximum number of retries is reached or user cancels the password entry. The software that supports password retries, will terminate only if a valid password is not received even after maximum number of retries or if the user cancels the request to reenter the password. There are different ways the software that accepts password could be implemented, such as a daemon, a process etc. The software may also prompt for a user name in addition to the password. The way the password processing software behaves and how it is invoked are implementation specific.
If there are more than one file system on a computer, the password validating software that received a valid password must send messages containing the identifier of the user to all the file systems on the computer. The DUPHardware device driver will command DUPHardware to change the state corresponding to a user only after all the file systems flush dirty buffers assigned to the user and resets the user identifier in all the buffers that were assigned to the user.
A DUPHardware device driver may control one or more DUPHardware. There could be one or more DUPHardware device drivers running on a computer each controlling a mutually exclusive set of DUPHardware.
There could be one or more storage components or new modules that implement access control according to the invention on a computer. We refer to the modules that implement access control as DUPImplementers. When an upper layer module of the DUPImplementer sends a new read or write request to the a DUPImplementer, the DUPImplementer will get the current DUPHardware state corresponding to the user on whose behalf the read or write request was created. The DUPImplementer is configured with information on portions of mass memories and type of access (read or write) allowed or denied for each portion of mass memory, for each combination of user and state. The software component checks the portions of mass memory or mass memories accessed by the read or write request against the configuration. If a read or write requests violates the access restrictions, the read or write request is not allowed to proceed and is returned with error. If no configuration is present for a portion of mass memory, DUPImplementers are configured either to allow or block the read or write request that access such a portion.
FIG. 4 illustrates an example for a storage component that is a DUPImplementer. The storage component processes read or write requests 401. When a new read or write request arrives, the storage component will read or get the DUPHardware state 402 corresponding to the user on whose behalf the read or write request was created. The storage component checks 403 whether the read or write request violates access restrictions configured corresponding to the current state of the user. If access is not allowed 404, the read or write request is returned to the upper layer with error. If the access is allowed 405 the read or write request is allowed to proceed.
A user is allowed access to portions of a mass memory or memories by privileged users. The portions of mass memories to which each user has access is not mutually exclusive. The portions of mass memories to which a user has access and the type of access is written to a portion of the mass memory to which only privileged users has access. The area of the mass memory where this configuration is stored is protected by the DUPHardware.
A configuration software allows each user to further divide these portions of mass memory or mass memories to which the user has access. The configuration software further allows a user to enable or disable read or write access to each of these divided portions and associate the access restrictions to a state of the DUPHardware corresponding to the user. Preferably, the access restrictions associated with each state is independent of access restrictions associated with other states of the DUPHardware corresponding to the same user. Optionally, access restrictions are such that there are dependencies between access restrictions corresponding to some or all of the states corresponding to a user.
Preferably, the configuration corresponding to a user is written to a predefined area of the mass memory or mass memories, selected on the basis of the user identifier and write to this area is enabled for the user only on one or more states of DUPHardware corresponding to the user. Preferably, no other user, including privileged users has write or read access to this area of the mass memory or mass memories.
FIG. 5 illustrates an example of interaction between different components in a computer 501 that implement the read and write protection for each user to parts of a mass memory, when used with a DUPHardware 505 that accepts DUPManualActions. Only components that are changed or affected by the invention are shown. The DUPHardware 505 writes the identifier or the user in a register readable by the computer and interrupts the computer when a user performs DUPManualAction to change the state corresponding to the user. The DUPHardware device driver 506 processes the interrupt and reads the identifier of the user from the DUPHardware. The DUPHardware device driver invokes a software 507 that prompts the user for password, accepts the password entered by the user and verifies it. In this example, part of this software 507 is part of the operating system and part of the software 508 runs as a user process. If the password entered by the user is invalid even after maximum number of retries or if the user cancels password entry, the software process 508 will terminate. If the password entered by the user is valid, the software will send a request to the file system 504 to flush dirty buffers assigned to the user. The file system 504 goes through the list of buffers assigned to the user, writes (flushes) the buffer to the mass memory if the user had written into it (dirty) and removes the association between the user and the buffer. After removing association between the user and all the buffers that were assigned to the user, the file system 504 sends a message to the DUPHardware device driver 506. The DUPHardware device driver sends a command to the DUPHardware to change its state corresponding to the user. In this example, the configuration software 502 configures the file system 504 and the storage stack 503 to implement access restrictions for users. The storage stack gets the state of DUPHardware corresponding to a user by reading the computer readable memory in the DUPHardware containing states. The file system gets the state of DUPHardware corresponding to a user through DUPHardware device driver, which reads the computer readable memory in DUPHardware containing states. The state of the DUPHardware corresponding to a user is used by both the storage stack and the file system to implement access restrictions for the user configured by the configuration software. The configuration software interacts with the storage stack to write the configuration to the disk 509. The configuration is read by the storage stack, the file system and the configuration software. The file system and the configuration software interact with the storage stack to read the configuration from the disk 509. The components which are not affected by the invention such as Interface Driver, HBA, Disk Controller, Disk Controller firmware etc., are not shown.
The protection provided by DUPHardware need not be limited to mass memories alone. Other modules that implement access protections could check the current state of the hardware corresponding to a user and implement access restrictions based on the current state and configuration associated with the state for the module implementing access restrictions.
Since DUPHardware or part of DUPHardware can be enclosed in the same mass memory that is being protected, there is less risk to data even if the laptop of a user is stolen.