1. Technical Field
Various inventive embodiments disclosed herein relate generally to computer security applications. In particular, embodiments disclosed herein relate to a system for and methods of controlling user access to applications and/or programs of a computer.
2. Background
In a shared computing environment, multiple users are accessing a common computer, such as a server, either directly or remotely via a network connection. Often in a shared computing environment most of the computer's files, programs, processes, and resources may be accessed or browsed by the users. However, certain files, programs, processes, and resources may be sensitive in nature and it may be desired to restrict users' access. Therefore, security measures are implemented on shared computers that attempt to provide isolation between users and thereby prevent one user from accessing another user's data and/or from performing any unauthorized actions. Currently, computer operating systems provide security features by which an administrator of a shared computer may configure each user (i.e., grant permissions or specify restrictions). However, there may be a great deal of complexity associated with using these security features. Therefore, the process of configuring the security settings of multiple users may be very difficult and time consuming.
Various inventive embodiments disclosed herein, both as to its organization and manner of operation, together with further objectives and advantages, may be best understood by reference to the following description, taken in connection with the accompanying drawings as set forth below:
The disclosure provides a system with improved security features for controlling user access to applications and/or programs, and more particularly to limiting or restricting user access to applications and/or programs of a computer. The system of the invention exhibits numerous advantages over existing systems. In various embodiments, the system and associated methods may provide a simple process by which an administrator may specify a list of allowable applications and/or programs. Further, in some embodiments, the system of the invention may be configured such that a data structure of allowable applications and/or programs are more readily available to an operating system kernel module. The system and methods of the invention provide isolation between different users and sessions, such that one user accessing a shared computer cannot access other user's data and/or perform any unauthorized actions.
Although not explicitly shown in
An operating system (OS) kernel module 124 and an application access manager driver 128 are loaded into kernel-mode address space 120. In embodiments in which OS 110 of computer 100 is the Microsoft Windows OS, OS kernel module 124 may be NTOSKRNL.EXE. Application access manager driver 128 may be implemented in the form of a kernel dynamic link library (DLL) or driver. OS kernel module 124 communicates with application access manager driver 128 using software calls referred to as callbacks, as will be further described herein.
This disclosure may relate to application publishing. The functionality of a server application shall be visible to and accessible by a client via a network. For example, server application may be a computer-aided design (CAD) application, such as AutoCAD (Autodesk, Inc., San Rafael, Calif., USA) or Cadence Virtuoso (Cadence Design Systems, San Jose, Calif.); a medical clinical workflow application such as Symbia.net (Siemens AG, Munich, Germany); an interactive mapping application such as Google Earth (Google, Inc.) or a 3D game. The functionality of the server application shall be visible to and accessible by the client via a network. For example, the functionality of a server application may be accessed from a client using a process herein known as application publishing, which is currently supported by products such as GraphOn GO-Global, Microsoft Remote Desktop Services and Citrix XenApp. Such application publishing may be performed in accordance with teachings of commonly-owned U.S. Pat. No. 5,831,609, filed Jun. 6, 1995, entitled “Method and system for dynamic translation between different graphical user interface systems,” which is incorporated by reference as though fully set forth herein.
User-mode address space 150 includes any number of application modules 154, a public application whitelist 158, an public application whitelist manager 162, a user/group application whitelist 170, and a user/group application whitelist manager 174. User/group application whitelist 170 and public application whitelist 158 are maintained in any data storage medium (not shown) of computer 100. The communication path between application modules 154 and OS kernel module 124 signifies that each application module is capable of passing information (e.g., the path to an application module) to OS kernel module 124 during operation. The communication paths from user/group application whitelist 170 to user/group application whitelist manager 174 and from public application whitelist 158 to public application whitelist manager 162 signify that both whitelists can be read from storage and information therein can be provided to application access manager driver 128 during operation.
When a process (parent process) running on computer 100 attempts to start another process (child process) while executing code in an application module 154, a request is sent to kernel address space 120, and more particularly to OS kernel module 124. For example, on Windows computers, when a user double-clicks a Microsoft Word icon on the desktop, the process running the Windows Desktop executable module (i.e., EXPLORER.EXE) executes a number of functions that eventually send a command to the OS kernel module 124 to start a new process running the Microsoft Word executable module (WINWORD.EXE). In this example, the process running EXPLORER.EXE is the parent process and the new process running WINWORD.EXE is the child process. By way of useful background, Windows Explorer is a Windows GUI shell that lets a user examine hard drives, folders, and files of computer 100.
When application access manager driver 128 receives notification of a request to run an application or process. Application access manager driver 128 processes the request and either allows the process to run or denies the request. That is, as access to a certain application is requested, application access manager driver 128 performs an application filtering function according to the invention. In this way, application access manager driver 128 is used to enforce access restrictions on the applications of computer 100.
Public application whitelist 158 is a resource (e.g., a file or files) for storing a list of applications that may be run by all users/groups 190 on computer 100. Such a resource is referred to in the art as a centralized whitelist. The contents of public application whitelist 158 are set up by an administrator.
Public application whitelist manager 162 starts when computer 100 boots up. Public application whitelist manager 162 is responsible for communicating public application whitelist 158 to application access manager driver 128 to be stored in global data 136 at application access manager driver 128, which can be accessed from any process. Public application whitelist manager 162 reads public application whitelist 158 from storage, adds to the whitelist any applications that an administrator has published to all users/groups 190, and then sends the whitelist to application access manager driver 128. As such, the act of publishing an application automatically grants all users/groups 190 rights to that application. Public application whitelist manager 162 sends public application whitelist 158 to application access manager driver 128 directly via a method that allows user-mode modules to send messages to kernel mode modules (drivers). On Windows computers this may be done using an IO Control.
User/group application whitelist 170 is a resource (e.g., a file or files) for storing a list of programs that are allowed to run on computer 100 by a specific user or group 190. User/group application whitelist 170 may include an association between programs and users or groups. It is further expressly contemplated that user/group application whitelist 170 may instead be a blacklist; that is, a resource storing only those programs that are not allowed to be run by each user or group 190. The contents of user/group application whitelist 170 are set up by an administrator. The administrator may make manual entries to user/group application whitelist 170 and/or automatically enable a user access to programs that an administrator has published to a user or group (e.g., programs that are referenced by shortcuts included in the user's profile.
User/group application whitelist manager 174 may be the program that manages initialization of the user's environment. User/group application whitelist manager 174 loads user/group application whitelist 170 from storage, adds to the whitelist programs that are published to the user (or groups to which the user belongs), and sends user/group application whitelist 170 to application access manager driver 128 to be stored in user data 132. Public application whitelist 158 can be edited by public application whitelist manager 162 or by the logon process at user/group application whitelist manager 174. By contrast, the user/group application whitelist 170 can only be edited by the logon process at user/group application whitelist manager 174. For the purposes of the invention, public application whitelist manager 162 and user/group application whitelist manager 174 may be implemented as separate processes or as a single process.
At step 210, an administrator (or other user with similar rights) uses an input device (not shown) of computer 100 to enter information regarding applications and/or programs that are required for users/groups 190 to access computer 100 and run the programs that are published to the user. On Windows computers, an example of one such program is ctfmon.exe, a Windows program that manages keyboard layouts.
At step 220, the administrator uses an input device (not shown) of computer 100 to enter information regarding applications and/or programs that may be invoked by all users/groups 190 of computer 100. That is, in the process of configuring computer 100, the administrator publishes a set of applications to all users/groups 190. For example, an administrator may publish Microsoft Word® by creating a shortcut to Microsoft Word® in the Public\Desktop folder of computer 100. The act of publishing an application to all users/groups 190 automatically grants all users/groups 190 rights to that application, as described in step 450 of method 400 of
Step 220 provides a benefit over conventional systems in which there is no connection between the process of publishing applications to a user and restricting the user from running applications that are not published. For example, administrators can publish applications to users on Windows computers using Group Policy Preferences and grant/deny users access to applications using Group Policy. With these methods, however, administrators must publish the applications and then separately perform manual steps to grant the user the right to run the published applications and restrict the user from running applications that are not published. In step 220, administrators must only publish the applications; the system then automatically grants the user access to the published applications and denies the user access to all other applications that are not in public application whitelist 158.
At step 230, the administrator saves the set of processes defined at step 210 in the form of public application whitelist 158 to storage medium (not shown) of computer 100. Optionally, the administrator may also save the list of published applications defined at step 220 in public application whitelist 158 to storage medium of computer 100, but in order to avoid data duplication, published applications are typically added to public application whitelist 158 at step 450 of method 400 of
At step 310, an administrator (or other user with similar rights) uses an input device (not shown) of computer 100 to enter information regarding the programs of computer 100 that specific users or groups are allowed to run. In one example, the administrator generates a user-specific or group-specific whitelist for each user or group 190. In another example, the administrator generates one whitelist in which each program entry includes a list of the users and groups 190 that are allowed to access the program.
At step 320, which may be in addition to or in place of step 310, the administrator publishes applications to specific users or groups 190. For example, on a Windows computer, an administrator may publish Microsoft Word® to a specific group of users using Group Policy Preferences. Like step 220 of method 200 of
In one example, the administrator specifies an application path and executable name for each allowable program. In another example, a directory can be specified and all programs within the directory (and, if present, subdirectories of the directory) can be considered allowable programs. In yet another example, the administrator can specify that a hash code be generated and used to identify each allowable program. Hash codes may be derived using any conventional or novel hashing process known to one of skill.
At step 330, the administrator saves the allowable processes in the form of user/group application whitelist 170 to storage medium (not shown) of computer 100. In one example, each user/group application whitelist 170 is stored in an XML file in a user-specific or group-specific directory. Further, this file or directory can have read-only access properties for users or groups 190. The properties are enforced by OS 110 and prevent unauthorized modifications of user allowable processes.
At step 410, public application whitelist manager 162 is started on computer 100. In one example, public application whitelist manager 162 is started during the startup process of OS 110. Note that startup typically occurs prior to user authentication.
At step 420, public application whitelist manager 162 loads and initializes application access manager driver 128 if application access manager driver 128 is not already running (e.g., if application access manager driver 128 is not configured to load when OS 110 boots).
At step 430, application access manager driver 128 registers a “create process” callback function with OS kernel module 124. This involves passing a reference to a function of application access manager driver 128 to kernel module 124 that meets OS 110's requirements for “create process” callback functions. These requirements may include calling convention and parameter requirements.
At step 440, public application whitelist manager 162 loads public application whitelist 158 from storage medium (not shown) into primary memory (not shown) of computer 100.
At step 450, based on applications that are published in step 220 of method 200 of
At step 460, public application whitelist manager 162 transmits the composite public application whitelist 158 to application access manager driver 128. In so doing, the list of public allowable programs crosses over from user-mode address space 150 to kernel-mode address space 120.
At step 470, application access manager driver 128 stores public application whitelist 158 in global data 136 of application access manager driver 128.
The benefits of performing method 400 of
At step 510, a certain user 190 is authenticated with computer 100. This step may include a username and password check or other type of conventional or novel authentication known to one of skill. This step generally assumes that the list of allowable users has been predetermined for computer 100 and is accessible from storage.
At step 520, user/group application whitelist manager 174 reads into memory (not shown) of computer 100 the list of allowable programs contained in user/group application whitelist 170 that are associated with the authenticated user 190 and any groups of which the user belongs. The allowable programs may be read from a file into a data structure that can be quickly searched, such as an array list.
At step 530, based on applications that are published in step 310 of method 300 of
At step 540, user/group application whitelist manager 174 transmits the composite user/group application whitelist 170, which contains the user-specific list of allowable programs, to application access manager driver 128. Thus, the user/group list of allowable programs exists in kernel-mode address space 120.
At step 550, application access manager driver 128 stores user/group application access whitelist 170 in user data 132 of the authenticated user 190. User data 132 resides at application access manager driver 128.
The benefits of initialization method 500 include bringing user/group application whitelist 170 into kernel-mode address space 120, where it can be accessed with high efficiency during user-specific application access enforcement methods.
At step 610, any process (parent process) executing application modules 154 attempts to launch a program of computer 100 and thereby create a child process. For example, the child process may be executing a word processing program such as Microsoft Word®, which is WINWORD.EXE, and the parent process of Microsoft Word® may be Windows Explorer, which is EXPLORER. EXE.
At step 620, parent process executing a specific application module 154 calls a “create process” function of OS kernel module 124. The “create process” function requests that OS kernel module 124 create a process and execute a specific application module 154.
At step 630, OS kernel module 124 prepares the process for execution. For example, OS kernel module 124 may set up an address space for the process, load the file containing the specific application module 154's code into memory, and/or set up a stack for the process.
At step 640, before starting the process, OS kernel module 124 calls application access manager driver 128's “create process” callback function, which was registered with OS kernel module 124 at step 430 of method 400 of
At decision step 650, application access manager driver 128 determines whether the invoked program is present in public application whitelist 158. For example, application access manager driver 128 interrogates the contents of public application whitelist 158 for the requested program. If the program is present, method 600 proceeds to step 690. If the program is not present, method 600 proceeds to decision step 660.
At decision step 660, application access manager driver 128 determines whether the invoked program is present in user/group application whitelist 170. For example, application access manager driver 128 interrogates the contents of user/group application whitelist 170 for the requested program. If the program is present, method 600 proceeds to step 690. If the program is not present, method 600 proceeds to step 670.
According to one embodiment, public application whitelist 158 and user/group application whitelist 170 are both stored in kernel space memory. Decision steps 650 and 660 may include iterating through entries in both whitelists and, for each allowable process entry, checking as to whether the application matches the entry. In embodiments in which the list of allowable processes is stored in any one of a plurality of formats (e.g., a file name, a directory name, a hash), checking may include a format-specific step, such as comparing file name strings, iterating through a directory and comparing file name strings found therein, and/or calculating a file hash. The iteration may return a Boolean true if the allowable process is found, otherwise returning false.
At step 670, having determined that the invoked program is not present in any whitelist, application access manager driver 128 returns a failure indication to OS kernel module 124.
At step 680, OS kernel module 124 terminates the invoked program, which may include unloading any executable modules of application modules 154 that were prepared at step 630.
At step 690, having determined that the invoked program is in either the public application whitelist 158 or user/group application whitelist 170, application access manager driver 128 returns a success indication to OS kernel module 124.
At step 695, OS kernel module 124 starts the program, which may include starting an initial thread of the process that was prepared at step 630.
The present application is a continuation and claims the priority benefit of U.S. patent application Ser. No. 13/367,228 filed Feb. 6, 2012, which claims the priority benefit of U.S. provisional application No. 61/439,765 filed Feb. 4, 2011, the disclosures of which are incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
5268962 | Abadi | Dec 1993 | A |
5809230 | Pereira | Sep 1998 | A |
5831609 | London et al. | Nov 1998 | A |
5898419 | Liu | Apr 1999 | A |
5978834 | Simonoff et al. | Nov 1999 | A |
6288702 | Tachibana | Sep 2001 | B1 |
6393569 | Orenshteyn | May 2002 | B1 |
6710790 | Fagioli | Mar 2004 | B1 |
7051288 | Bennett et al. | May 2006 | B2 |
7058461 | Malizia | Jun 2006 | B2 |
7188181 | Squier et al. | Mar 2007 | B1 |
7216298 | Ballard et al. | May 2007 | B1 |
7222158 | Wexelblat | May 2007 | B2 |
7249175 | Donaldson | Jul 2007 | B1 |
7353252 | Yang et al. | Apr 2008 | B1 |
7461134 | Ambrose | Dec 2008 | B2 |
7526792 | Ross | Apr 2009 | B2 |
7587459 | Wewalaarachchi et al. | Sep 2009 | B2 |
7647411 | Schiavone et al. | Jan 2010 | B1 |
7716302 | Maze et al. | May 2010 | B2 |
7739693 | Bernhard et al. | Jun 2010 | B2 |
7920528 | Karaoguz et al. | Apr 2011 | B2 |
8073855 | Nagoya | Dec 2011 | B2 |
8117554 | Grechishkin et al. | Feb 2012 | B1 |
8219807 | Danoyan et al. | Jul 2012 | B1 |
8281410 | Sobel et al. | Oct 2012 | B1 |
8427445 | Kennedy | Apr 2013 | B2 |
8438473 | Mak et al. | May 2013 | B2 |
8527978 | Sallam | Sep 2013 | B1 |
8688734 | Tidd | Apr 2014 | B1 |
8694507 | Meyerzon et al. | Apr 2014 | B2 |
8713658 | Tidd | Apr 2014 | B1 |
8738814 | Cronin | May 2014 | B1 |
8739074 | Kinoshita | May 2014 | B2 |
8745505 | Tam | Jun 2014 | B2 |
8769011 | Baird et al. | Jul 2014 | B2 |
8799777 | Lee | Aug 2014 | B1 |
8856907 | Tidd | Oct 2014 | B1 |
8863232 | Tidd | Oct 2014 | B1 |
8887132 | Hunter | Nov 2014 | B1 |
8950007 | Teal et al. | Feb 2015 | B1 |
8954887 | Tseng | Feb 2015 | B1 |
9165160 | Tidd | Oct 2015 | B1 |
9203791 | Olomskiy | Dec 2015 | B1 |
9239812 | Berlin | Jan 2016 | B1 |
9398001 | Tidd | Jul 2016 | B1 |
9401909 | Tidd | Jul 2016 | B2 |
20010023438 | Ishida | Sep 2001 | A1 |
20020091697 | Huang et al. | Jul 2002 | A1 |
20020130900 | Davis | Sep 2002 | A1 |
20020158921 | Silverstein | Oct 2002 | A1 |
20030058277 | Bowman-Amuah | Mar 2003 | A1 |
20030084112 | Curray et al. | May 2003 | A1 |
20030163448 | Kilemba et al. | Aug 2003 | A1 |
20040080771 | Mihira et al. | Apr 2004 | A1 |
20040163046 | Chu et al. | Aug 2004 | A1 |
20040190049 | Itoh | Sep 2004 | A1 |
20050044483 | Maze et al. | Feb 2005 | A1 |
20050093868 | Hinckley | May 2005 | A1 |
20050102636 | McKeon et al. | May 2005 | A1 |
20050114760 | Arregui et al. | May 2005 | A1 |
20050138569 | Baxter et al. | Jun 2005 | A1 |
20050149857 | Negishi et al. | Jul 2005 | A1 |
20050177730 | Davenport et al. | Aug 2005 | A1 |
20050198299 | Beck et al. | Sep 2005 | A1 |
20050210418 | Marvit et al. | Sep 2005 | A1 |
20050226192 | Red et al. | Oct 2005 | A1 |
20060005187 | Neil | Jan 2006 | A1 |
20060010433 | Neil | Jan 2006 | A1 |
20060039012 | Ferlitsch | Feb 2006 | A1 |
20060047780 | Patnude | Mar 2006 | A1 |
20060059253 | Goodman et al. | Mar 2006 | A1 |
20060075224 | Tao | Apr 2006 | A1 |
20060150256 | Fanton et al. | Jul 2006 | A1 |
20060161846 | Van Leeuwen | Jul 2006 | A1 |
20060230105 | Shappir et al. | Oct 2006 | A1 |
20060250578 | Pohl et al. | Nov 2006 | A1 |
20060253558 | Acree et al. | Nov 2006 | A1 |
20070061264 | Yeung et al. | Mar 2007 | A1 |
20070078994 | Wilson et al. | Apr 2007 | A1 |
20070089111 | Robinson et al. | Apr 2007 | A1 |
20070101297 | Forstall et al. | May 2007 | A1 |
20070113187 | McMullen et al. | May 2007 | A1 |
20070121584 | Qiu et al. | May 2007 | A1 |
20070174410 | Croft et al. | Jul 2007 | A1 |
20070198950 | Dodge | Aug 2007 | A1 |
20070280459 | Yee et al. | Dec 2007 | A1 |
20070283446 | Yami et al. | Dec 2007 | A1 |
20080016504 | Cheng et al. | Jan 2008 | A1 |
20080071860 | Dal Canto et al. | Mar 2008 | A1 |
20080091550 | Zacarias et al. | Apr 2008 | A1 |
20080137131 | Cavill et al. | Jun 2008 | A1 |
20080167005 | Gilzean et al. | Jul 2008 | A1 |
20080209537 | Wong et al. | Aug 2008 | A1 |
20080270516 | Ragnet et al. | Oct 2008 | A1 |
20090013045 | Maes et al. | Jan 2009 | A1 |
20090013273 | Fuchs | Jan 2009 | A1 |
20090021387 | Hosono | Jan 2009 | A1 |
20090024626 | Takei | Jan 2009 | A1 |
20090027334 | Foulk et al. | Jan 2009 | A1 |
20090037976 | Teo et al. | Feb 2009 | A1 |
20090070404 | Mazzaferri | Mar 2009 | A1 |
20090083852 | Kuo et al. | Mar 2009 | A1 |
20090132509 | Nagoya | May 2009 | A1 |
20090144362 | Richmond et al. | Jun 2009 | A1 |
20090177791 | Edelstein et al. | Jul 2009 | A1 |
20090180777 | Bernard et al. | Jul 2009 | A1 |
20090182501 | Fyke | Jul 2009 | A1 |
20090187654 | Raja et al. | Jul 2009 | A1 |
20090187857 | Tanaka | Jul 2009 | A1 |
20090204711 | Binyamin | Aug 2009 | A1 |
20090231285 | Duncan | Sep 2009 | A1 |
20090235347 | Syed et al. | Sep 2009 | A1 |
20090245176 | Balasubramanian et al. | Oct 2009 | A1 |
20090300129 | Golub | Dec 2009 | A1 |
20100005142 | Xiao et al. | Jan 2010 | A1 |
20100020025 | Lemort et al. | Jan 2010 | A1 |
20100058431 | McCorkendale et al. | Mar 2010 | A1 |
20100088367 | Brown et al. | Apr 2010 | A1 |
20100138780 | Marano et al. | Jun 2010 | A1 |
20100146504 | Tang et al. | Jun 2010 | A1 |
20100153581 | Nagarajan et al. | Jun 2010 | A1 |
20100162163 | Wang et al. | Jun 2010 | A1 |
20100214302 | Melcher et al. | Aug 2010 | A1 |
20100228963 | Kassab et al. | Sep 2010 | A1 |
20100268762 | Pahlavan et al. | Oct 2010 | A1 |
20100269039 | Pahlavan et al. | Oct 2010 | A1 |
20100269152 | Pahlavan et al. | Oct 2010 | A1 |
20100293499 | Young et al. | Nov 2010 | A1 |
20100295817 | Nicholson et al. | Nov 2010 | A1 |
20100321406 | Iwase | Dec 2010 | A1 |
20100325716 | Hong et al. | Dec 2010 | A1 |
20110010668 | Feldstein | Jan 2011 | A1 |
20110029772 | Fanton et al. | Feb 2011 | A1 |
20110099297 | Hayton | Apr 2011 | A1 |
20110113427 | Dotan | May 2011 | A1 |
20110137974 | Momchilov | Jun 2011 | A1 |
20110138295 | Momchilov et al. | Jun 2011 | A1 |
20110138314 | Mir et al. | Jun 2011 | A1 |
20110141031 | McCullough et al. | Jun 2011 | A1 |
20110145728 | Bishop | Jun 2011 | A1 |
20110154212 | Gharpure et al. | Jun 2011 | A1 |
20110191407 | Fu et al. | Aug 2011 | A1 |
20110197051 | Mullin et al. | Aug 2011 | A1 |
20110209064 | Jorgensen et al. | Aug 2011 | A1 |
20110258271 | Gaquin | Oct 2011 | A1 |
20110264463 | Kincaid | Oct 2011 | A1 |
20110270936 | Guthrie et al. | Nov 2011 | A1 |
20110277027 | Hayton et al. | Nov 2011 | A1 |
20110279829 | Chang et al. | Nov 2011 | A1 |
20110302495 | Pinto et al. | Dec 2011 | A1 |
20110307614 | Bernardi et al. | Dec 2011 | A1 |
20110314093 | Sheu et al. | Dec 2011 | A1 |
20120011472 | Ohkubo | Jan 2012 | A1 |
20120011578 | Hinton et al. | Jan 2012 | A1 |
20120023593 | Puder et al. | Jan 2012 | A1 |
20120030584 | Bian | Feb 2012 | A1 |
20120054671 | Thompson et al. | Mar 2012 | A1 |
20120066607 | Song et al. | Mar 2012 | A1 |
20120066695 | Berezansky et al. | Mar 2012 | A1 |
20120066762 | Todorovic | Mar 2012 | A1 |
20120084713 | Desai et al. | Apr 2012 | A1 |
20120092277 | Momchilov | Apr 2012 | A1 |
20120096389 | Flam et al. | Apr 2012 | A1 |
20120151374 | Liu | Jun 2012 | A1 |
20120159482 | Jeong et al. | Jun 2012 | A1 |
20120159570 | Reierson et al. | Jun 2012 | A1 |
20120173673 | Dietrich et al. | Jul 2012 | A1 |
20120173732 | Sullivan | Jul 2012 | A1 |
20120185527 | Jaudon et al. | Jul 2012 | A1 |
20120185767 | Schlegel | Jul 2012 | A1 |
20120226742 | Momchilov et al. | Sep 2012 | A1 |
20120240054 | Webber | Sep 2012 | A1 |
20120246645 | Iikura et al. | Sep 2012 | A1 |
20120297471 | Smithson | Nov 2012 | A1 |
20120304061 | Hoover | Nov 2012 | A1 |
20120304168 | Raj Seeniraj et al. | Nov 2012 | A1 |
20120311070 | BianRosa et al. | Dec 2012 | A1 |
20120324365 | Momchilov et al. | Dec 2012 | A1 |
20130024779 | Bechtel et al. | Jan 2013 | A1 |
20130024812 | Reeves et al. | Jan 2013 | A1 |
20130060842 | Grossman et al. | Mar 2013 | A1 |
20130097550 | Grossman et al. | Apr 2013 | A1 |
20130110828 | Meyerzon et al. | May 2013 | A1 |
20130132856 | Binyamin et al. | May 2013 | A1 |
20130138810 | Binyamin et al. | May 2013 | A1 |
20130198600 | Lockhart et al. | Aug 2013 | A1 |
20130219338 | VanBlon | Aug 2013 | A1 |
20130254675 | de Andrade et al. | Sep 2013 | A1 |
20130254761 | Reddy et al. | Sep 2013 | A1 |
20130275973 | Greenfield et al. | Oct 2013 | A1 |
20130290856 | Beveridge et al. | Oct 2013 | A1 |
20130305344 | Alicherry et al. | Nov 2013 | A1 |
20130311990 | Tang et al. | Nov 2013 | A1 |
20130318582 | McCann et al. | Nov 2013 | A1 |
20130326583 | Freihold et al. | Dec 2013 | A1 |
20140012574 | Pasupalak et al. | Jan 2014 | A1 |
20140026057 | Kimpton et al. | Jan 2014 | A1 |
20140032644 | Saxena et al. | Jan 2014 | A1 |
20140074881 | Meyerzon et al. | Mar 2014 | A1 |
20140143846 | Tidd | May 2014 | A1 |
20140143847 | Tidd | May 2014 | A1 |
20140165176 | Ow | Jun 2014 | A1 |
20140188977 | Song et al. | Jul 2014 | A1 |
20140325054 | Agrawal et al. | Oct 2014 | A1 |
20150074199 | Lv | Mar 2015 | A1 |
Number | Date | Country |
---|---|---|
WO 2010135127 | Nov 2010 | WO |
Entry |
---|
Park et al.; “Role-based access control on the web”; ACM transactions on information and system security; vol. 4, No. 1, Feb. 2001. p. 37-71, 35 pages. |
U.S. Appl. No. 13/367,228 Final Office Action mailed Jul. 23, 2013. |
U.S. Appl. No. 13/367,228 Office Action mailed Jan. 30, 2013. |
U.S. Appl. No. 13/367,239 Final Office Action mailed Nov. 14, 2013. |
U.S. Appl. No. 13/367,239 Office Action mailed Jun. 24, 2013. |
U.S. Appl. No. 13/481,742 Final Office Action mailed Sep. 4, 2013. |
U.S. Appl. No. 13/481,742 Office Action mailed May 9, 2013. |
U.S. Appl. No. 13/481,746 Final Office Action mailed Mar. 26, 2014. |
U.S. Appl. No. 13/481,746 Office Action mailed Dec. 19, 2013. |
U.S. Appl. No. 13/481,751 Office Action mailed Dec. 30, 2013. |
U.S. Appl. No. 13/481,752 Final Office Action mailed Sep. 4, 2013. |
U.S. Appl. No. 13/481,752 Office Action mailed May 9, 2013. |
U.S. Appl. No. 13/753,474 Office Action mailed Jun. 11, 2014. |
U.S. Appl. No. 13/753,474 Final Office Action mailed Mar. 6, 2014. |
U.S. Appl. No. 13/753,474 Office Action mailed Nov. 21, 2013. |
U.S. Appl. No. 13/570,106 Office Action mailed Feb. 27, 2014. |
U.S. Appl. No. 13/570,108 Office Action mailed May 13, 2014. |
U.S. Appl. No. 13/570,115 Final Office Action mailed Jun. 30, 2014. |
U.S. Appl. No. 13/570,115 Office Action mailed Feb. 11, 2014. |
U.S. Appl. No. 13/481,743 Office Action mailed Jan. 14, 2015. |
U.S. Appl. No. 13/481,751 Final Office Action mailed Sep. 3, 2014. |
U.S. Appl. No. 13/753,474 Final Office Action mailed Oct. 6, 2014. |
U.S. Appl. No. 13/570,106 Final Office Action mailed Sep. 15, 2014. |
U.S. Appl. No. 13/570,108 Office Action mailed Oct. 10, 2014. |
U.S. Appl. No. 13/668,097 Office Action mailed Sep. 12, 2014. |
U.S. Appl. No. 13/668,100 Office Action mailed Sep. 10, 2014. |
U.S. Appl. No. 13/753,475 Office Action mailed Apr. 24, 2015. |
U.S. Appl. No. 13/753,476 Office Action mailed Apr. 22, 2015. |
U.S. Appl. No. 13/570,103 Office Action mailed Apr. 24, 2015. |
U.S. Appl. No. 13/570,115 Office Action mailed Jun. 19, 2015. |
U.S. Appl. No. 13/668,097 Final Office Action mailed Jun. 16, 2015. |
U.S. Appl. No. 13/668,100 Final Office Action mailed Jun. 17, 2015. |
U.S. Appl. No. 13/481,745 Office Action mailed Feb. 10, 2015. |
U.S. Appl. No. 13/753,474 Office Action mailed Mar. 27, 2015. |
U.S. Appl. No. 13/570,108 Office Action mailed Apr. 1, 2015. |
U.S. Appl. No. 13/570,110 Office Action mailed Mar. 30, 2015. |
U.S. Appl. No. 13/570,111 Office Action mailed Apr. 1, 2015. |
U.S. Appl. No. 13/570,113 Office Action mailed Apr. 3, 2015. |
U.S. Appl. No. 13/481,746 Office Action mailed Sep. 15, 2015. |
U.S. Appl. No. 13/481,751 Office Action mailed Sep. 17, 2015. |
U.S. Appl. No. 13/753,477 Office Action mailed Jul. 29, 2015. |
U.S. Appl. No. 13/753,478 Office Action mailed Aug. 19, 2015. |
U.S. Appl. No. 13/753,479 Office Action mailed Aug. 12, 2015. |
U.S. Appl. No. 13/668,105 Office Action mailed Jul. 8, 2015. |
U.S. Appl. No. 14/150,680 Office Action mailed Mar. 29, 2016. |
U.S. Appl. No. 14/150,684 Office Action mailed Apr. 12, 2016. |
U.S. Appl. No. 14/151,222 Office Action mailed Mar. 30, 2016. |
U.S. Appl. No. 14/152,306 Office Action mailed Mar. 30, 2016. |
U.S. Appl. No. 13/753,475 Final Office Action mailed Mar. 3, 2016. |
U.S. Appl. No. 13/753,476 Final Office Action mailed Mar. 2, 2015. |
U.S. Appl. No. 13/753,478 Final Office Action mailed Mar. 29, 2016. |
U.S. Appl. No. 13/753,479 Final Office Action mailed Apr. 18, 2016. |
U.S. Appl. No. 13/668,097 Office Action mailed Feb. 25, 2016. |
U.S. Appl. No. 13/668,100 Office Action mailed Feb. 26, 2016. |
Damien, “How to Switch to Desktop Mode for Your Browser in Honeycomb Tablet [Android].” Oct. 4, 2011, http://www.maketecheasier.com/switch-to-desktop-mode-for-honeycomb-tablet-android/. |
Kessler, How to use Safari's new ‘Reader’, Jun. 9, 2010, http://www.cnet.com/news/how-to-use-safaris-new-reader/. |
Mobotap, “Add-on Digest: Desktop Toggle,” May 16, 2012, http://dolphin.com/add-on-digest-desktop-toggle/. |
Sieber, “5 Must Have Add-Ons for the Dolphin Browser on Your Android Honeycomb Tablet,” Oct. 25, 2011, http://www.makeuseof.com/tag/5-addons-dolphin-browser-android-honeycomb-tablet/. |
Xue, “Windows 8 How To: 1. Switch Between Metro UI and Desktop Mode,” Mar. 7, 2012, http://blogs.msdn.com/b/zxue/archive/2012/03/07win8-howto-1-switch-between-metro-ui-and-desktop.aspx. |
U.S. Appl. No. 14/152,303 Office Action mailed Nov. 13, 2015. |
U.S. Appl. No. 13/481,745 Final Office Action mailed Nov. 19, 2015. |
U.S. Appl. No. 14/445,319 Office Action mailed Dec. 14, 2015. |
U.S. Appl. No. 13/570,103 Final Office Action mailed Dec. 31, 2015. |
U.S. Appl. No. 13/570,110 Final Office Action mailed Dec. 21, 2015. |
U.S. Appl. No. 13/570,111 Final Office Action mailed Dec. 18, 2015. |
U.S. Appl. No. 13/570,113 Final Office Action mailed Dec. 18, 2015. |
U.S. Appl. No. 13/481,743 Office Action mailed Oct. 23, 2015. |
U.S. Appl. No. 13/570,108 Final Office Action mailed Oct. 29, 2015. |
U.S. Appl. No. 13/570,115 Final Office Action mailed Jun. 27, 2016. |
Number | Date | Country | |
---|---|---|---|
61439765 | Feb 2011 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13367228 | Feb 2012 | US |
Child | 14332660 | US |