Abstract:
Computer protection is weak with the methods currently available and there are risks of malicious users getting access to computers, corrupting important data, including system data. We are proposing a method for improving access protection, more particularly, by adding a device capable of user authentication that will enable or disable protection for applications as required. The device supports one or more users, none or more user groups, none or one or more Application Security Environments for each user or user group and one or more states for each Application Security Environment. The state of the hardware is manually controlled by the users. Depending on the configuration, each hardware state corresponding to an Application Security Environment corresponds to a set of privileges for processes running in that Application Security Environment while that Application Security Environment is in that state.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    The present invention relates to creating one or more highly secure application security environments in computing systems. An Application Security Environment is an environment in which a user or a group of users can run one or more tasks or one or more processes or one or more applications and in which privileges of the tasks or processes or applications run by a user or a user group can be more constrained than the privileges of the user or the user group. An application could consist of one or more tasks or processes. A process could consist of one or more threads. 
         [0002]    Current technologies provide protection using operating system software and a malicious program or user can get access as a privileged user with limited access restrictions and run programs on behalf of other users or read confidential user data or corrupt user data. It requires hardware support to provide complete protection for user data from malicious programs. 
         [0003]    There are different methods for access control such as non-privileged users in UNIX or Windows operating systems who cannot execute privileged instructions or access all parts of volatile or non-volatile memories (storage). But a malicious program or user can sometimes exploit security weaknesses in an operating system, to get access as a privileged user. This will allow malicious users to impersonate privileged users and gain access to critical data belonging to other users or corrupt users&#39; data. UNIX and Windows security system does not allow limiting privileges assigned to a privileged user. 
         [0004]    High level of application protection is provided by Application Security Environments such as Solaris containers and HPUX Security Containers. Each container ideally has only a subset of the privileges and compromising security of most of the containers poses only a limited risk. However, when either the operating system security is compromised or when the security of a container that is used to create other containers is compromised, it will result in significant risk to both computer users&#39; identity and data. 
         [0005]    There is a serious risk to users&#39; data and users&#39; identity when their laptops are stolen or when someone gains access to a user&#39;s computer in the user&#39;s absence. 
         [0006]    There is a serious risk to users&#39; data and users&#39; identity when a privileged user is malicious. The privileged user may create containers that compromise both users&#39; identity and users&#39; data. 
         [0007]    There are many methods for protecting computer users and user data which do not require manual action for enabling and disabling protection; Such protections can be compromised by malicious privileged users or by malicious programs by emulating the required software behavior. 
         [0008]    U.S. Pat. No. 6,330,648 illustrates a method of adding protection against malicious programs using a manually controlled hardware with two states. By default the protection is enabled and has a mechanism to manually switch off the protection. This invention will not be able to provide protection for portions of storage belonging to each Application Security Environment, as is possible using our invention. Another drawback of the invention is that the solution cannot be used with mass memories which are already manufactured. 
         [0009]    US Patent Application 20060117156 illustrates a method of adding protection for non-volatile memories against malicious programs using a manually controlled hardware with two or more states, but only two states are used for protection. One state has protection enabled and the other state has protection disabled. This invention will not be able to provide protection for portions of storage belonging to each Application Security Environment, as is possible using our invention. 
         [0010]    U.S. patent application Ser. Nos. 11/514,807, 11/515,619 and 11/519,178 illustrate different manually controlled hardware solutions that protect data on mass-memories for each user. These patent applications propose dividing mass-memories into different areas and protecting these areas against malicious access. But these solutions cannot provide fine grained protection for each Application Security Environment. The privileges get enabled at user level and if any of the programs that are run by a user is malicious when the state corresponding to the user corresponds to low protection, it can cause serious risk to the user&#39;s data and user&#39;s identity. 
         [0011]      FIG. 1  shows an example of a computer  101  with multiple users and multiple Application Security Environments each containing multiple processes. There are 3 Application Security Environments in the computer. Application Security Environment P  102  contains two processes A  105  and D  106 . Application Security Environment Q  103  contains two processes C  107  and E  108 . Application Security Environment R  104  contains two processes B  109  and F  110 . The Application Security Environment P  102  and Q  103  are owned by User Y  111 . The Application Security Environment R  104  is owned by User Group X  112 . 
       BRIEF SUMMARY OF THE INVENTION 
       [0012]    It is the object of the present invention to use a device which supports user authentication and supports one or more Application Security Environments and supports one or more states for each Application Security Environment so that protection for the Application Security Environments can be improved. The device may be implemented in hardware or as a combination of hardware and firmware. This device is referred to as an Authenticating Application Security Environment Protection Device or AASEPDevice. The state of an Application Security Environment is referred to as Application Security Environment State. Each Application Security Environment is owned by a user or a group of users and only the owners of an Application Security Environment can run processes/tasks in that Application Security Environment. The privileges of the processes/tasks run in an Application Security Environment will be a subset of the privileges of the user or the user group who owns that Application Security Environment. The privileges of the processes/tasks run in an Application Security Environment will depend on the state of the Application Security Environment. The user or members of the user group who own an Application Security Environment are referred to as Application Security Environment Owners or ASEOs. Some users are grouped to create user groups. Each state of an Application Security Environment corresponds to or maps to a set of privileges that the processes/tasks/threads running in that Application Security Environment have when that Application Security Environment is in that state. This set of privileges corresponding to or mapped to an Application Security Environment State must be a subset of the privileges of the corresponding ASEOs. This mapping from a state of an Application Security Environment to a set of privileges that the processes/tasks/threads running in that Application Security Environment have when that Application Security Environment is in that state, is referred to as Application Security Environment State Mapping. Preferably, it requires a manual action on an AASEPDevice to:
       i. Create or delete a user or   ii. Create or delete a user group or   iii. Add a user to or remove a user from a user group or   iv. Create or delete an Application Security Environment or   v. Create or delete an Application Security Environment State or   vi. Change the state corresponding to an Application Security Environment or   vii. Create or modify or delete an Application Security Environment State Mapping or   viii. Divide mass-memories into Regions which can be protected by AASEPDevices or   ix. Assign privileges to users and user groups including access to Regions of mass-memories.       
 
         [0022]    These operations will be completed only if the user who makes the manual action is authenticated and has the required privileges. We refer to the manual action on the AASEPDevice to initiate these operations as Application Security Environment Protection Manual Action or ASEPManualAction. 
         [0023]    The ASEPManualAction on an AASEPDevice 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 manual action accepted by the AASEPDevice. 
         [0024]    The AASEPDevice interacts with software running on the computer to which it is attached to perform these operations. This software is referred to as Application Security Environment Protection Software or ASEPSoftware. 
         [0025]    As file system permissions and ownership are based on users and user groups, the protection provided for file operations will be based on users and user groups. The proposed invention does not handle protection for file system operations. All other privileged operations are handled by the proposed invention. 
         [0026]    An AASEPDevice can be used for enforcing privileges for processes/tasks/threads in an Application Security Environment when the processes/tasks/threads do privileged operations such as executing a privileged instruction, making a privileged system call, calling a privileged function, accessing an area or a Region of mass-memories such as hard disc, DVD, etc. Privileged instructions include instructions to do an input/output operation to a device attached to the computer. 
         [0027]    To protect data on mass-memories using an AASEPDevice, the mass-memories are divided into Regions or areas as proposed in U.S. patent application Ser. Nos. 11/514,807, 11/515,619 and 11/519,178. Read and write access to each Region is allowed or denied for each Application Security Environment based on the set of permissions that is mapped to the current state of the Application Security Environment. 
         [0028]    The software, firmware and hardware that implement access protection fail a privileged operation which does not meet the access restrictions corresponding to the current state of the Application Security Environment from which the privileged operation is initiated. The software, firmware and hardware which implement access protection by checking the Application Security Environment State Mapping for the current state of an Application Security Environment is called Application Security Environment Protection Implementers or ASEPImplementers. 
         [0029]    Preferably, a part of or all of the configuration required for enforcing protection based on the proposed invention must be kept in an AASEPDevice. These include the configuration for users, user groups, Application Security Environments, Application Security Environment States and Application Security Environment State Mappings. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0030]      FIG. 1  illustrates a computer system with different Application Security Environments each owned by a user or a user group. 
           [0031]      FIG. 2  illustrates an example of a state machine of an AASEPDevice that accepts ASEPManualAction. 
           [0032]      FIG. 3  illustrates an example of a state machine of an AASEPDevice device driver that controls an AASEPDevice. 
           [0033]      FIG. 4  illustrates an example of a state machine of ASEPSoftware which processes requests from an AASEPDevice device driver. 
           [0034]      FIG. 5  illustrates an example of a state machine of an ASEPImplementer that implements access restrictions for Application Security Environments using an AASEPDevice. 
           [0035]      FIG. 6  illustrates an example of how different components in a computer interact when used with an AASEPDevice that accepts ASEPManualActions. 
           [0036]      FIG. 7  illustrates an example of a state machine of an AASEPDevice that handles conflicts between operations. 
           [0037]      FIG. 8  illustrates an example of a state machine of an ASEPSoftware that can be used with an AASEPDevice that handles conflicts between operations. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0038]    According to the invention, one or more AASEPDevices or ASEPSoftware or a combination of one or more AASEPDevices and ASEPSoftware allow:
       i. A privileged user to create or delete users;   ii. A privileged user to create or delete user groups;   iii. A privileged user to add users to or remove users from a user group;   iv. A privileged user to assign privileges for users or user groups;   v. A user to create or delete Application Security Environments owned by that user;   vi. All or some members of a user group to create or delete Application Security Environments owned by that user group;   vii. Some privileged users to create or delete Application Security Environments owned by a user or by a user group;   viii. A user to create or delete Application Security Environment States for an Application Security Environment owned by that user;   ix. All or some members of a user group to create or delete Application Security Environment States for an Application Security Environment owned by that user group;   x. Some privileged users to create or delete Application Security Environment States for an Application Security Environment;   xi. A user to create or modify or delete an Application Security Environment State Mapping for an Application Security Environment State for an Application Security Environment owned by that user;   xii. All or some members of a user group to create or modify or delete an Application Security Environment State Mapping for an Application Security Environment State for an Application Security Environment owned by that user group;   xiii. Some privileged users to create or modify or delete an Application Security Environment State Mapping for an Application Security Environment State for an Application Security Environment.       
 
         [0052]    A user or user group can own none or one or more Application Security Environments. 
         [0053]    An Application Security Environment can have one or more states. This allows privileges to be enabled for an Application Security Environment only when one or more Applications need to be run in that Application Security Environment. This significantly enhances the security of the computing systems. Similarly, this allows privileges to be enabled based on the requirements of the application being run in an Application Security Environment. 
         [0054]    The state of an Application Security Environment can be changed only using an AASEPDevice. 
         [0055]    The privileges of an Application Security Environment owned by an ASEO must be a subset of the privileges of that ASEO. Preferably, only an ASEO of an Application Security Environment should be allowed to configure access restrictions for that Application Security Environment corresponding to different states of that Application Security Environment. 
         [0056]    The privileges assigned to different users or groups are not mutually exclusive. 
         [0057]    When an Application Security Environment State Mapping is created, an ASEPSoftware or an AASEPDevice verifies whether the privileges corresponding to the Application Security Environment State exceed the privileges of the user or user group who owns that Application Security Environment. Preferably, if the privileges corresponding to an Application Security Environment State exceed the privileges of the user or user group who owns the Application Security Environment, the Application Security Environment State Mapping is discarded and the user who tried to create the mapping gets an error. Optionally, the privileges corresponding to an Application Security Environment State that exceed the privileges of the user or user group who owns the Application Security Environment are discarded and the rest of the mapping is allowed. 
         [0058]    The configuration used by AASEPDevices and ASEPSoftware contains:
       i. The list of users;   ii. The list of user groups;   iii. The list of users in each user group;   iv. The set of privileges each user or each user group has;   v. The list of Application Security Environments for each user and user group;   vi. The list of states for each Application Security Environment;   vii. The list of Regions of mass-memories which are protected by AASEPDevices;   viii. The Application Security Environment State Mapping for each Application Security Environment State;       
 
         [0067]    The configuration may be stored in one or more AASEPDevices or one or more other devices which are attached to or are part of the computer. The device attached to the computer storing this configuration may be a mass-memory. Optionally, the configuration could be distributed among these devices. Optionally, two or more copies of the configuration could be on these devices. 
         [0068]    Preferably, the configuration must be kept in AASEPDevices in registers/memory not writable by a computer and updates to the configuration must be allowed only through ASEPManualAction. 
         [0069]    Optionally, if the configuration is kept in a Region of a mass-memory then preferably, only ASEPSoftware must have write access to that Region of mass memory. 
         [0070]    Optionally, when the configuration can be changed without a user performing an ASEPManualAction, writes and reads of the configuration must be protected by ASEPImplementers and one or more AASEPDevices. 
         [0071]    The verification performed by an ASEPImplementer to verify whether a process/task in an Application Security Environment can do a privileged operation may involve both reading registers/memory of an AASEPDevice to fetch the current state of the Application Security Environment and verification by the ASEPImplementer against the configuration. If the configuration is stored in an AASEPDevice, the ASEPImplementer can verify whether an operation is permitted by reading the AASEPDevice registers/memory. If the configuration is stored in a separate device, the ASEPImplementer must fetch the current state of the Application Security Environment and the Application Security Environment State Mapping for that state to determine whether the operation is permitted in the current state of that Application Security Environment. Preferably, every privilege has an identifier which makes searching for a given privilege in an Application Security Environment State Mapping simple. 
         [0072]    Reading and writing to the configuration are privileged operations. Preferably, when the configuration is kept in AASEPDevices, only AASEPDevices must have write access to the configuration. 
         [0073]    Preferably, write access to the configuration of an Application Security Environment must be given only to the owners (ASEOs) of that Application Security Environment. 
         [0074]    Only one or more privileged users can have privileges to create or delete users or to create or delete user groups or to add or remove users to or from a user group or to assign privileges to users or user groups. Hence, preferably, write access to the configuration containing the list of users, the list of user groups, the list of users in each user group, the privileges of each user or each user group must be given only to one or more privileged users. 
         [0075]    Optionally, when the configuration is not kept in AASEPDevices, only ASEPSoftware must have write access to the configuration. 
         [0076]    When a user performs an ASEPManualAction, the operation corresponding to the ASEPManualAction and optionally, an identifier for the user who performed the ASEPManualAction are placed in registers/memory readable by the computer to which the AASEPDevice is attached. 
         [0077]    The ASEPImplementers must be capable of identifying the Application Security Environment from which a process/task/thread is attempting to execute a privileged instruction/function/system call or access portions of mass memories. Optionally, the operating system should be able to tag every privileged operation with the identifier of the Application Security Environment from which the privileged operation is being executed. 
         [0078]    For most of the operations requested by users through ASEPManualActions, the ASEPSoftware needs to do a cleanup and update of data structures before an AASEPDevice is allowed to complete those operations. The cleanup may involve flushing dirty buffers in file system buffer caches and/or cleaning up data structures. 
         [0079]    For example, the ASEPSoftware may need to flush dirty buffers in file system buffer caches and/or clean up data structures corresponding to the old privileges as the new set of privileges may block access to these buffers and data for processes/tasks/threads in the Application Security Environment. 
         [0080]      FIG. 2  illustrates an example of a state machine of an AASEPDevice that accepts ASEPManualAction. The configuration is stored in this AASEPDevice and hence the firmware running on the AASEPDevice can determine whether an operation requested by an ASEPManualAction is valid or not. The AASEPDevice awaits  214  ASEPManualAction from a user or a Computer Command from the computer to which it is attached. The AASEPDevice checks the type of input  215 , whether an ASEPManualAction or a Computer Command is received. When a user performs an ASEPManualAction, the AASEPDevice checks  216  whether the operation requested by the user by performing the ASEPManualAction is valid. If the operation requested is invalid  217 , the AASEPDevice displays an error message for the invalid operation, discards the operation, updates registers/memory readable (but not writable by the computer) by the computer to indicate the discarded operation and the reason for discarding the operation and interrupts the computer to which it is attached. If the operation is valid  218 , the AASEPDevice prompts  218  the user who performed the ASEPManualAction for the user name and password. When the user enters the user name and password, the user name and password are validated  219 . If the validation fails  217 , the AASEPDevice displays an error message, discards the operation, updates registers/memory readable (but not writable by the computer) by the computer to indicate the discarded operation and the reason for discarding the operation and interrupts the computer to which it is attached. If the user name and password are valid, the ASEPSoftware checks whether the user has the privilege  220  to perform the operation requested by the user by performing the ASEPManualAction. If the user does not have the required privilege  217 , the AASEPDevice displays an error message, discards the operation, updates registers/memory readable (but not writable by the computer) by the computer to indicate the discarded operation and the reason for discarding the operation and interrupts the computer to which it is attached. If the user has the required privilege to perform the operation  222 , the AASEPDevice updates Computer Readable (but not computer writable) Registers/Memory with details of the operation requested through the ASEPManualAction and a unique identifier for the operation and interrupts the Computer to which it is attached. When a Computer Command is received, the AASEPDevice checks  223  whether the command is to discard or perform an operation. If the command is to discard an operation  225 , the AASEPDevice displays an error message and discards the operation identified by the unique identifier. If the command is to perform an operation, the AASEPDevice performs  224  the operation identified by the unique identifier, updates registers/memory readable (but not writable) by the computer with the status and results of the operation and interrupts the computer to which it is attached. 
         [0081]    If the configuration containing the Application Security Environment State Mappings is stored in the AASEPDevice and the operation requested by performing an ASEPManualAction is for an Application Security Environment State change, the AASEPDevice can update registers/memory with the new privileges that the processes/tasks running in the Application Security Environment have, as part of performing the operation. 
         [0082]    The ASEPManualAction on an AASEPDevice 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 ASEPManualAction supported by the AASEPDevice. Preferably, every AASEPDevice has a display screen where the user can see the inputs the user has entered. 
         [0083]    The AASEPDevice may use registers or memory readable by the computer to communicate the operation requested by a user by performing an ASEPManualAction. Preferably, 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 operation requested by a user by performing an ASEPManualAction. 
         [0084]    An ASEPManualAction can be for:
       i. Creating or deleting one or more users or   ii. Creating or deleting one or more user groups or   iii. Creating or deleting one or more Application Security Environments owned by a user or a user group or   iv. Creating or deleting one or more Application Security Environment States for an Application Security Environment or   vii. Dividing mass-memories into Regions which can be protected by AASEPDevices or   viii. Assigning privileges to users and user groups including access to Regions of mass-memories or   v. Adding users to or removing users from a user group or   vi. Changing the state of an Application Security Environment or   ix. Creating or modifying or deleting Application Security Environment State Mappings for an Application Security Environment.       
 
         [0094]    A privileged user can perform an ASEPManualAction to:
       i. Create or delete one or more users or   ii. Create or delete one or more user groups or   iii. Add one or more users to or remove one or more users from a user group or   iv. Assign privileges to one or more users or user groups or   v. Create or delete one or more Application Security Environments owned by a user or a user group or   vi. Create or delete one or more Application Security Environment States for an Application Security Environment or   vii. Change the state of an Application Security Environment or   viii. Divide mass-memories into Regions which can be protected by AASEPDevices or   ix. Create or modify or delete one or more Application Security Environment State Mappings for an Application Security Environment.       
 
         [0104]    A user can perform an ASEPManualAction to:
       i. Create or delete one or more Application Security Environments owned by that user or by one of that user&#39;s groups or   ii. Create or delete one or more Application Security Environment States for an Application Security Environment owned by that user or by one of that user&#39;s groups or   iii. Change the state of an Application Security Environment owned by that user or by one of that user&#39;s groups or   iv. Create or modify or delete one or more Application Security Environment State Mappings for an Application Security Environment owned by that user or by one of that user&#39;s groups.       
 
         [0109]    Optionally, some of the actions for each of the operations can be done using an AASEPDevice and the rest of the actions for the same operation can be done using ASEPSoftware. 
         [0110]    Optionally, some of these operations can be done using ASEPSoftware and rest of the operations can be done by doing ASEPManualActions on AASEPDevices. 
         [0111]    Optionally, an ASEPManualAction specifies only one operation such as adding one user or deleting one user, etc. 
         [0112]    Optionally, when an ASEPManualAction specifies more than one operation, none of these operations will be allowed to proceed if the user does not have the privilege to perform any of those operations. This is not a recommended option. 
         [0113]    Optionally, when an ASEPManualAction specifies more than one operation, only those operations will not be allowed to proceed for which the user does not have the privilege to perform the operations. This is not a recommended option. 
         [0114]    For the rest of the description, it is assumed that an ASEPManualAction specifies only one operation; However, creating multiple users or creating multiple Application Security Environments for a user, etc. is considered a single operation. 
         [0115]    When a new user or a new user group or a new Application Security Environment or a new Application Security Environment State is created, the AASEPDevice can allocate memory and create data structures for storing the corresponding information as part of performing the operation. 
         [0116]    When a user or a user group or an Application Security Environment or an Application Security Environment State is deleted, the AASEPDevice can deallocate the corresponding memory and update the corresponding data structures as part of performing the operation. 
         [0117]    When an Application Security Environment State Mapping is changed, the AASEPDevice can update internal data structures corresponding to that mapping and also update registers/memory containing the current set of privileges for the Application Security Environment based on its current state. The updates done by an AASEPDevice as part of performing an operation are implementation specific. 
         [0118]    Invalid operations include adding a user to a non-existent user group, creating an Application Security Environment for a non-existent user or for a non-existent user group, creating a new state for a non-existent Application Security Environment, creating an Application Security Environment State Mapping for a non-existent Application Security Environment State, creating or modifying Application Security Environment State Mapping such that the privileges corresponding to an Application Security Environment State exceeds the privileges of the corresponding ASEOs, etc. 
         [0119]    The ability of an AASEPDevice to detect invalid operations is implementation specific. Optionally, ASEPSoftware can be used for detecting some or all invalid operations. Optionally, ASEPSoftware can use a peripheral device other than the AASEPDevice for detecting invalid operations. 
         [0120]    The set of operations supported by an AASEPDevice is implementation specific. But all AASEPDevices must support one or more Application Security Environments and one or more states for each Application Security Environment. 
         [0121]    Different AASEPDevices could have different behaviors while accepting user-names and passwords. If the user-name/password entered by a user is invalid, the AASEPDevice could prompt the user for the user-name/password again and accept a new user-name/password from the user until a valid user-name/password is received or until the maximum number of password retries is reached or until the user cancels the request to reenter the password. The AASEPDevice that supports user-name/password retries, will discard an operation corresponding to an ASEPManualAction due to user authentication failure only if a valid user-name/password is not received even after the maximum number of user-name/password retries or if the user cancels the password retry. 
         [0122]    The method used by an AASEPDevice for authenticating a user using user-name/password or password is implementation specific. 
         [0123]    An AASEPDevice may use other options for authenticating a user, such as finger print validation, retina validation, or other current and future technologies for user authentication. An AASEPDevice may also use a combination of two or more methods of user authentication such as user-name validation, password validation, finger print validation, retina validation, etc., for authenticating the user who performed an ASEPManualAction. The method used by an AASEPDevice for authenticating a user is implementation specific. 
         [0124]    Some AASEPDevices may use a timeout while performing user authentication. In this case, the AASEPDevice will fail the user authentication and discard the operation after the timeout expires. 
         [0125]    The order in which the validation of an operation, the user authentication for an operation, the check to verify whether the user has sufficient privileges to do the operation and the check to detect/resolve whether the operation has conflict with any ongoing operations are done, is implementation specific. 
         [0126]      FIG. 3  illustrates an example of a state machine of an AASEPDevice device driver. The AASEPDevice device driver awaits  328  an interrupt from an AASEPDevice or a command from ASEPSoftware. The AASEPDevice device driver checks  329  whether it got invoked due to an interrupt or due to a command sent by the ASEPSoftware. When an interrupt is received from the AASEPDevice  330 , the device driver reads AASEPDevice registers and memory to create a request to be passed to the ASEPSoftware. Then it invokes the ASEPSoftware to process the request. When the ASEPSoftware invokes  331  the AASEPDevice device driver by sending a command, the driver sends the command to the AASEPDevice by writing into the AASEPDevice registers/memory. 
         [0127]    An AASEPDevice device driver may control one or more AASEPDevices. There could be one or more AASEPDevice device drivers running on a computer, each controlling a mutually exclusive set of AASEPDevices. 
         [0128]    Preferably, most of the ASEPSoftware should be part of the operating system. 
         [0129]      FIG. 4  illustrates an example of a state machine of the ASEPSoftware that processes requests from an AASEPDevice device driver. The ASEPSoftware  434  awaits requests from the AASEPDevice device driver. When a request from the AASEPDevice device driver arrives, the ASEPSoftware checks whether the request is for an operation corresponding to a new ASEPManualAction  435 . If the request is for an operation corresponding to a new ASEPManualAction, the ASEPSoftware checks whether the requested operation has any conflict  436  with any of the ongoing operations. If there is a conflict, the ASEPSoftware logs an error message  437  and sends a command  438  along with the unique identifier for the operation to the AASEPDevice device driver to discard the operation and goes back to the state where it awaits a new request from the AASEPDevice device driver. If the operation requested does not have any conflict with ongoing operations, the ASEPSoftware performs the cleanup  439  required to perform the operation including cleaning up of buffers and updating data structures as required. As part of the cleanup, all processes that will impact the clean state are blocked from running  439 . The ASEPSoftware may interact with other operating system modules to get the required cleanup completed. After the clean up is completed, ASEPSoftware sends a command  440  to the AASEPDevice device driver with the unique identifier for the operation so that the AASEPDevice can perform the operation and goes back to the state where it awaits a new request from the AASEPDevice device driver. In this state  440 , ASEPSoftware does not release the not-ready-to-run state for processes that will impact the clean state. If the request from the AASEPDevice device driver is not for a new ASEPManualAction  441 , ASEPSoftware checks whether the AASEPDevice has completed an operation. When an operation is completed  443 , for all the processes that were blocked from running for that operation to complete, the ASEPSoftware releases the block and goes back to the state where it awaits a new request from the AASEPDevice device driver. If the request from the AASEPDevice device driver is to indicate that a user entered an invalid operation or that user authentication for an ASEPManualAction failed or that user does not have the privilege required to perform an operation requested by an ASEPManualAction, the ASEPSoftware logs  442  the error message and goes back to the state where it awaits a new request from the AASEPDevice device driver. 
         [0130]    The ASEPSoftware could consist of different components such as configuration commands, operating system modules that create/delete/update data structures and configuration for users, user groups, Application Security Environments, Application Security Environment States and Application Security Environment State Mappings. 
         [0131]    If the operation requested by an ASEPManualAction is to delete a user, preferably, all the processes/tasks owned by the user will be terminated and all data structures for the Application Security Environments owned by that user will be deleted as part of the cleanup. If the operation requested by an ASEPManualAction is to delete an Application Security Environment, preferably, all the processes/tasks in the Application Security Environment will be terminated as part of the clean up. If the operation requested by an ASEPManualAction is to delete a state of an Application Security Environment and if the current state of the Application Security Environment is the same as the state being deleted, it is considered an invalid operation. If the operation requested is a change of Application Security Environment State, all processes/tasks in that Application Security Environment must be prevented from running and those processes/tasks are allowed to run again only after the state change is completed by the AASEPDevice. A process or a task could be blocked for more than one operation to complete and it will be allowed to run only after all those operations are complete. If the operation requested by an ASEPManualAction is to lower the privileges corresponding to a user or a user group, then the set of privileges corresponding to the Application Security Environment States of the Application Security Environments which are owned by that user or that user group will be also be lowered accordingly, by ANDing with the new set of privileges for the user or the user group. 
         [0132]    Optionally, when an operation requested by an ASEPManualAction is to delete a user and if that user has processes/tasks which are active, the operation can be discarded as a conflicting operation. 
         [0133]    The ASEPSoftware may use different strategies to resolve conflict between a new operation and ongoing operations such as queuing all new operations that have a conflict with an ongoing operation and using different levels of priority. If operations have priorities and if a conflicting low priority operation is in a state where it can be stopped, a new high priority operation can result in the ongoing low priority operation to be marked to be stopped and the high priority operation can be kept pending until the ongoing operation is stopped. The strategy used for resolving conflict between ongoing operations and a new operation is implementation specific. 
         [0134]    As part of cleanup for an operation, all the processes/tasks that will affect the clean state required for that operation must be stopped from running. 
         [0135]    Examples of operations that require cleanup/update by an ASEPSoftware are the creation/deletion of one or more users or user groups or Application Security Environments or Application Security Environment States or, adding/deleting one or more users to or from a user group or, changing the state corresponding to an Application Security Environment or, changing the privileges of a user or a user group or, modifying the Application Security Environment State Mappings for the current Application Security Environment State. 
         [0136]    In order to protect data on mass-memories, the mass-memories are divided into Regions and read or write access to each Region is controlled for each user and each user group. Privileged users limit read or write access to each user or user group to these Regions as proposed in U.S. patent application Ser. Nos. 11/514,807, 11/515,619 and 11/519,178. Users can further limit access to each Application Security Environment owned by them. These limits are applied in addition to the restrictions applied at file system level. 
         [0137]    File systems and raw disk access system calls can tag each read or write operation with the identifier of the Application Security Environment from which the file operation or raw disk access is attempted. Each buffer in a buffer cache in a file system is tagged similarly to the proposal in U.S. patent application Ser. Nos. 11/514,807, 11/515,619 and 11/519,178. Each buffer can have multiple tags and each tag corresponds to an Application Security Environment. When a file operation done by a process/task maps to a buffer in the buffer cache, the file system checks whether the Application Security Environment already has an Application Security Environment tag to that buffer. If the Application Security Environment tag exists, the file system checks whether the operation requested by the file operation is permitted by the tag. If the file operation is not permitted, the file system returns an error to the process/task that requested the operation. If the Application Security Environment tag exists and the tag allows the file operation, the read or write to the buffer is allowed to proceed. If the Application Security Environment tag does not exist, the file system calls an ASEPImplementer with the identifier for the Application Security Environment and an identifier for the Region of the mass-memory. The ASEPImplementer checks the AASEPDevice registers/memory corresponding to the Region of the mass-memory and the Application Security Environment and creates an Application Security Environment tag. The Application Security Environment tag is returned to the file system. The file system adds the tag to the buffer and verifies whether the operation requested is permitted by the tag. If the Application Security Environment tag does not permit the requested operation, an error is returned to the process/task. If the Application Security Environment tag permits the operation, the operation is allowed to continue. If the buffer requested by a file operation does not exist, the file system gets an Application Security Environment tag for the buffer from the ASEPImplementer. If the operation is permitted, the file system creates a new buffer in its buffer cache, adds the Application Security Environment tag to the buffer and if required, creates a mass-memory read request for the buffer along with the tag. A mass-memory read request is required if the buffer is being read or is being partially written by the process/task. If the operation is not permitted by the Application Security Environment tag, an error is returned to the process/task and no new buffer will be created. The Application Security Environment tag is passed to storage components below the file system along with mass-memory read or write requests similar to the proposal in U.S. patent application Ser. Nos. 11/514,807, 11/515,619 and 11/519,178. 
         [0138]    Before the state of an Application Security Environment can be changed, as part of cleanup, all the tags for that Application Security Environment should be removed from the buffers in the buffer cache in a file system. Similar cleanup will be required in all file systems in the operating system. 
         [0139]    Similar cleanup is required when an Application Security Environment or an ASEO is deleted or when the privileges of an ASEO is changed or when the set of privileges corresponding to the current state of an Application Security Environment is modified. 
         [0140]    There are different options for restarting processes/tasks which are blocked for cleanup. One option is to configure the AASEPDevice to generate an interrupt when an operation completes as shown in the examples. The processes/tasks in the Application Security Environment are blocked from executing until the interrupt is processed by the operation system. Another option is to use a timeout for an operation to complete and processes/tasks in the Application Security Environment are blocked from execution during the timeout period. If the operation does not complete during the timeout period, the user who initiated the ASEPManualAction can either abort the operation or initiate another timeout. This is not a recommended option. A third option is to use both the timeout and the interrupt for keeping the Application Security Environment in a clean state until state change is completed. 
         [0141]    If the configuration is not kept in the AASEPDevices, validity of an operation will have to be verified by the ASEPSoftware. In this case, if the operation is invalid as per the configuration, the ASEPSoftware will send a command to the AASEPDevice to discard the operation. 
         [0142]    Preferably, ASEPImplementers are computer software modules that implement access protection using AASEPDevice/s and create Application Security Environment tags for file systems. Preferably, all or most of the ASEPImplementers should be part of the operating system. 
         [0143]      FIG. 5  illustrates an example of a state machine of an ASEPImplementer. The ASEPImplementer gets invoked  546  when a process or a task or a thread attempts to do a privileged operation or when a file system requests an Application Security Environment tag. The ASEPImplementer checks  547  whether it was invoked by a request from a file system for a tag. If it is a request from a file system  548 , the ASEPImplementer reads read-only AASEPDevice registers/Memory corresponding to the Application Security Environment and the Region of mass-memory to create the tag. The tag is sent  548  to the file system and the ASEPImplementer returns. If the request is not a tag request from a file system, the ASEPImplementer checks  550  whether the process/task/thread that is attempting to do a privileged operation has the privilege to perform the privileged operation by reading  549  read-only registers/memory corresponding to the requested privileged operation for the Application Security Environment in which the process or task or thread is executing. If the Application Security Environment has the privilege  552  to perform the privileged operation in its current state, the process/task/thread is allowed to perform the privileged operation. If the Application Security Environment does not have the privilege  551  to perform the operation in its current state, the process/task/thread that attempted to do the privileged operation is placed in an error state and the ASEPImplementer returns. Handling of the process/task/thread in error state is done by the operating system. 
         [0144]    If there is no configuration present for a privileged operation which is attempted by a process/task/thread in an Application Security Environment such as when there is no Application Security Environment State Mapping for the current Application Security Environment State or when there are no states defined for an Application Security Environment, preferably, ASEPImplementers must be configured to block the privileged operation. There could be some ASEPImplementers that are configured to allow the privileged operation when there is no configuration. 
         [0145]    The ASEPImplementer may be designed such that it places an application in an error state when a process or a task or a thread in the application requests a privileged operation which is not allowed by the current state of the Application Security Environment. The way an ASEPImplementer handles a privileged operation failure is implementation specific. 
         [0146]      FIG. 6  illustrates an example of a computer  653  that implements access protection using an AASEPDevice. The computer has Application Security Environment A  654  which is owned by User P  657  and Application Security Environments B  655  and C  656  which are owned by User Group Q  658 . An AASEPDevice  659  is attached to the computer  653 . Part  660  of the AASEPDevice  659  is embedded in a hard disk  661  attached to the computer so that disk firmware can read AASEPDevice registers and memory without interacting with the computer or a link external to the disk. The AASEPDevice  659  is controlled by an AASEPDevice device driver  662 . The AASEPDevice device driver  662  passes requests from the AASEPDevice  659  to the ASEPSoftware  663  and commands from the ASEPSoftware  663  to the AASEPDevice  659 . Most of the ASEPSoftware is part of the operating system. A part of the software which writes errors to log files is part of the user space. ASEPImplementers  664  enforce access control by reading the AASEPDevice  659  registers/memory. File systems  665  interact with the ASEPImplementers  664  to get Application Security Environment tags. 
         [0147]    ASEPImplementers can use AASEPDevice device driver interfaces for reading AASEPDevice registers/memory. 
         [0148]    There are different ways to distribute functionality between AASEPDevices and ASEPSoftware. Optionally, ASEPSoftware can be used to verify whether an operation requested through an ASEPManualAction is valid. In this case, when an operation is not valid, ASEPSoftware can send a command to the AASEPDevice to discard the operation. Similarly, an AASEPDevice can be used to verify whether there is a conflict between a new operation requested by an ASEPManualAction and an ongoing operation. The distribution of functionality between ASEPSoftware and AASEPDevices is implementation specific. 
         [0149]      FIG. 7  illustrates an example of a state machine of an AASEPDevice that handles conflicts between operations. The configuration for users/user groups/Application Security Environments/Application Security Environment States is stored in this AASEPDevice and hence the firmware on the AASEPDevice can determine whether an operation requested by an ASEPManualAction is valid or not. The AASEPDevice awaits  714  ASEPManualAction from a user or a Computer Command from the computer to which it is attached. The AASEPDevice checks the type of input  715 , whether an ASEPManualAction or a Computer Command is received. When a user performs an ASEPManualAction, the AASEPDevice checks  716  whether the operation requested by the user by performing the ASEPManualAction is valid. If the operation requested is invalid  717 , the AASEPDevice displays an error message for the invalid operation, discards the operation, updates registers/memory readable (but not writable by the computer) by the computer to indicate the discarded operation and the reason for discarding the operation and interrupts the computer to which it is attached. If the operation is valid  718 , the AASEPDevice prompts  718  the user who performed the ASEPManualAction for the user name and password. When the user enters the user name and password, the user name and password are validated  719 . If the validation fails  717 , the AASEPDevice displays an error message, discards the operation, updates registers/memory readable (but not writable by the computer) by the computer to indicate the discarded operation and the reason for discarding the operation and interrupts the computer to which it is attached. If the user name and password are valid, the ASEPSoftware checks whether the user has the privilege  720  to perform the operation requested by the user by performing the ASEPManualAction. If the user does not have the required privilege  717 , the AASEPDevice displays an error message, discards the operation, updates registers/memory readable (but not writable by the computer) by the computer to indicate the discarded operation and the reason for discarding the operation and interrupts the computer to which it is attached. If the user has the required privilege to perform the operation  721 , the AASEPDevice checks whether the operation requested through the ASEPManualAction has conflict with any of the ongoing operations. If the operation requested has conflict  717  with any of the ongoing operations, the AASEPDevice displays an error message, discards the operation, updates registers/memory readable (but not writable by the computer) by the computer to indicate the discarded operation and the reason for discarding the operation and interrupts the computer to which it is attached. If a valid operation requested through the ASEPManualAction by the user does not have any conflicts with any of the ongoing operations  722 , the AASEPDevice updates Computer Readable (but not computer writable) Registers/Memory with details of the operation requested through the ASEPManualAction and a unique identifier for the operation and interrupts the Computer to which it is attached. When a Computer Command is received (in this case a computer command is issued when cleanup required for an operation is completed), the AASEPDevice performs  724  the operation identified by the unique identifier, updates registers/memory readable (but not writable) by the computer with the status and results of the operation and interrupts the computer to which it is attached. 
         [0150]    There are different algorithms for resolving conflicts between operations in an AASEPDevice, such as priorities, queuing until all prior conflicting operations are completed, etc. 
         [0151]    Algorithms used in AASEPDevices for resolving conflicts can use priorities for operations. For example, when a privileged user has initiated a high priority operation and if one conflicting low priority operation is ongoing, the ongoing operation can be marked as inactive and the high priority operation can be kept pending. The inactive operation is discarded and the pending operation is sent to the AASEPDevice device driver by the AASEPDevice as soon as the AASEPDevice device driver sends a command to the AASEPDevice to discard or complete the inactive operation. When an operation is discarded, the computer to which the AASEPDevice is attached, is notified using an interrupt. If the ASEPSoftware has done any cleanup for a discarded operation, part of the cleanup may have to be rolled back depending on the operation. Preferably, only one high priority operation can be kept pending and all other high priority operations are discarded. There are different ways to resolve conflicts between operations based on priorities. 
         [0152]    The algorithm used in an AASEPDevice for resolving conflict between new and ongoing operations is implementation specific. 
         [0153]      FIG. 8  illustrates an example of a state machine of an ASEPSoftware that can be used with an AASEPDevice that handles conflicts between operations. The ASEPSoftware  834  awaits requests from the AASEPDevice device driver. When a request from the AASEPDevice device driver arrives, the ASEPSoftware checks whether the request is for an operation corresponding to a new ASEPManualAction  835 . If the request is for an operation corresponding to a new ASEPManualAction, the ASEPSoftware performs the cleanup  839  required to perform the operation including cleaning up of buffers and updating data structures as required. As part of the cleanup, all processes that will impact the clean state are blocked from running  839 . The ASEPSoftware may interact with other operating system modules to get the required cleanup completed. After the clean up is completed, ASEPSoftware sends a command  840  to the AASEPDevice device driver with the unique identifier for the operation so that the AASEPDevice can perform the operation and goes back to the state where it awaits a new request from the AASEPDevice device driver. In this state  840 , ASEPSoftware does not release the not-ready-to-run state for processes that will impact the clean state. If the request from the AASEPDevice device driver is not for a new ASEPManualAction  841 , ASEPSoftware checks whether the AASEPDevice has completed an operation. When an operation is completed  843 , for all the processes that were blocked from running for that operation to complete, the ASEPSoftware releases the block and goes back to the state where it awaits a new request from the AASEPDevice device driver. If the request from the AASEPDevice device driver is to indicate that a user entered an invalid or conflicting operation or that user authentication for an ASEPManualAction failed or that user does not have the privilege required to perform an operation requested by an ASEPManualAction or that an operation was discarded due to conflict with ongoing operations, the ASEPSoftware logs  842  the error message and goes back to the state where it awaits a new request from the AASEPDevice device driver. 
         [0154]    There could be one or more AASEPDevices in a computer, each controlling states corresponding to a mutually exclusive set of Application Security Environments or controlling Application Security Environments owned by a mutually exclusive set of users/user-groups or controlling a mutually exclusive set of privileges. Some implementations may use more than one AASEPDevice on the same computer, each controlling states corresponding to sets of Application Security Environments which are not mutually exclusive, but we do not recommend such implementations. 
         [0155]    Parts of an AASEPDevice could be embedded in different peripheral or mass-memory devices attached to a computer, such as disks. In this case, a mass-memory device controller can implement privileges based on the current state of the Application Security Environments. This will significantly improve security for mass-memories attached to computers as a malicious user will not be able to copy data from these mass memory devices even if they are stolen. 
         [0156]    Optionally, the access restrictions associated with each state of an Application Security Environment is independent of access restrictions associated with other states of the same Application Security Environment. Preferably, access restrictions are such that there are dependencies between access restrictions corresponding to some or all of the states corresponding to an Application Security Environment. This could be achieved by using a bit map as a state where each bit corresponds to a set of privileges and the privileges are enabled or disabled depending on whether the corresponding bit is one or zero. Optionally, the access restrictions for the next state can be created by ANDing or ORing the access restrictions corresponding to the previous state with the access restrictions corresponding to a new selection. Hence, access restrictions may have dependencies on previous states. 
         [0157]    Optionally, every process or task or thread can belong to a separate Application Security Environment. In this case, a process identifier or a task identifier or a thread identifier could be used to uniquely identify an Application Security Environment. This may require a user to identify an available process or task identifier, create an Application Security Environment having this identifier and then create a process or task in this Application Security Environment with the same identifier. This implementation requires an operating system that allows a user to select process or task identifiers. 
         [0158]    Optionally, an AASEPDevice is such that it allows an ASEPManualAction to change the privileges of an Application Security Environment and does not use Application Security Environment States. 
         [0159]    Optionally, there should be an option for users to set a timeout for an ASEPManualAction. At the end of the timeout, if the operation has not been completed, then the user may either let the operation continue or abort the operation. 
         [0160]    When an operation requested by a process or task or thread in an Application Security Environment is not permitted by the current state of that Application Security Environment, the process or the task or the thread that attempted to do that privileged operation is put in an error state. The operating system will take appropriate action such as terminating the process or task depending on the error. 
         [0161]    Preferably, all or part of the code for the ASEPSoftware, the ASEPImplementers, file system components that use Application Security Environment tags and AASEPDevice device drivers should be kept in Read-Only memory or in memory pages which are write protected to further improve protection. The write protected memories may be a ROM or may be pages or areas of memories marked not writable by an operating system loader; No software including the operating systems running on the computer or an external device should be allowed to change the write protection status for these pages or areas of memories or write into these pages or areas of memories. 
         [0162]    Some of the access protection in a computer which is attached to one or more AASEPDevices may be implemented by software other than ASEPImplementers. 
         [0163]    If a system allows the configuration to be modified without a user performing an ASEPManualAction, then only the privileged users must have write access to the portion of the configuration containing the list of users, the list of user groups, the list of users in each user group and the privileges of users and user groups. In this case, preferably, the write access to this portion of the configuration must be protected by one or more ASEPImplementers. 
         [0164]    If a system allows the configuration to be modified without a user performing an ASEPManualAction then preferably, only a user should have write access to the configuration of each of the Application Security Environments owned by that user. In this case, preferably, the write access to that portion of the configuration must be protected by one or more ASEPImplementers. 
         [0165]    If a system allows the configuration to be modified without a user performing an ASEPManualAction then preferably, only members of a user group should have write access to the configuration of each of the Application Security Environments owned by that user group. In this case, preferably, the write access to that portion of the configuration must be protected by one or more ASEPImplementers. 
         [0166]    Optionally, some privileged users may have write access to the configuration for other users or to the configurations for groups in which they are not members. In this case, all users need not have write access to configurations. In other words, if privileged users have the privilege to create Application Security Environments and Application Security Environment States for other users, some users need not have the privilege to create Application Security Environments owned by themselves or owned by groups in which they are members. 
         [0167]    Preferably, the configuration corresponding to a user or a user group can be fetched using the identifier of the user or the user group. Similarly, the configuration corresponding to an Application Security Environment can be fetched using the identifier of the Application Security Environment. If the device that stores the configuration is a memory or mass-memory device, it is preferable to have a mapping from the identifier of the user/user-group/Application Security Environment to the memory address where the corresponding configuration is stored. 
         [0168]    The next state requested by an operation can be hidden from the computer to which an AASEPDevice is attached until the operation is completed. To change the state corresponding to an Application Security Environment, the AASEPDevice can update computer readable registers/memory (which preferably are not writable by the computer) with the identifier of the Application Security Environment, an identifier to identify the state change operation and a unique identifier for the operation and interrupt the computer using a hardware interrupt. Since the new state requested by the ASEPManualAction is not communicated to the computer, no malicious software can control the state of the AASEPDevice corresponding to an Application Security Environment. 
         [0169]    The configuration can be kept in AASEPDevice registers/memory which are not writable by the computer to which an AASEPDevice is attached. Since the configuration is kept in registers/memory not writable by software, no malicious software can modify the configuration. This way, highly secure Application Security Environments can be created. 
         [0170]    Optionally, an Application Security Environment State corresponds to a set of privileges that the processes/tasks running in the Application Security Environment have while that Application Security Environment is in that state. In this case, an Application Security Environment State is virtual and it is the same as the privileges that the processes/tasks running in the Application Security Environment have while that Application Security Environment is in that state. 
         [0171]    Optionally, the effective state of an Application Security Environment can be a combination of the state of a user as proposed in U.S. patent application Ser. Nos. 11/514,807, 11/515,619 and 11/519,178 and the state of an Application Security Environment. 
         [0172]    Optionally, the privileges corresponding to an Application Security Environment can be obtained by ANDing the privileges corresponding to a user state and the privileges corresponding to an Application Security Environment State. 
         [0173]    Optionally, where privileges are a function of user state, an Application Security Environment can have a fixed set of privileges and need not have multiple states. 
         [0174]    Optionally, the configuration can be such that an Application Security Environment State Mapping identifies a set of access restrictions or lack of privileges that the processes/tasks running in an-Application Security Environment have while that Application Security Environment is in that state. 
         [0175]    Optionally, the configuration can be such that an Application Security Environment State Mapping identifies a set of both privileges and access restrictions that the processes/tasks running in the Application Security Environment have while that Application Security Environment is in that state. 
         [0176]    Preferably, an AASEPDevice allows scripting and the AASEPDevice can emulate an ASEPManualAction as directed by scripts. Optionally, scripts can direct an ASEPManualAction to be emulated by an AASEPDevice at periodic intervals or at a specified date and time.