1. Field of the Invention
The present invention relates generally to network-based computer security and, more particularly, methods of and systems for authenticating a user of a device for computer network security.
2. Description of the Related Art
In some computer attacks, a device can be controlled by a person who is physically remote from the device. In such attacks, that person can use any of a number of Remote Desktop Protocols (RDPs) to control the device, even without having physical possession of the device. The attacking person may gain access to passwords and other authentication data stored on the device such that the person can spoof authentication of the legitimate user of the device and obtain services through the Internet that should not be authorized.
What is needed is a way to determine whether a person providing authentication data is in physical possession of the device carrying out the authentication session.
In accordance with the present invention, a device user being authenticated is determined to be in physical possession of the device according to data in one or more user input device buffers that indicates whether data received from a user input device is injected or is generated by physical manipulation of the user input device. An authentication server monitors buffers of one or more user input devices that are expected to be used by the user during a user input event (such as a logon attempt) in which authentication data is input by the user. The buffers include data representing events of the user input devices and include injected flags for each event to indicate whether the event is responsive to physical manipulation of the user input device or is injected by logic executing in the device, such as logic implementing RDP for example. In one embodiment, the authentication server prompts the user to enter data for the input event.
If the events recorded in the buffer are not injected but are instead responsive to physical manipulation of the user input device, the user entering the authentication data is determined to be in physical possession of the device and authentication proceeds. The user can be authenticated if the authentication data entered by the user matches predetermined reference data. Conversely, if the events are injected, the user is determined not to be in physical possession of the device and authentication fails regardless of whether the authentication data matches the predetermined reference data.
Other systems, methods, features and advantages of the invention will be or will become apparent to one with skill in the art upon examination of the following figures and detailed description. It is intended that all such additional systems, methods, features and advantages be included within this description, be within the scope of the invention, and be protected by the accompanying claims. Component parts shown in the drawings are not necessarily to scale, and may be exaggerated to better illustrate the important features of the invention. In the drawings, like reference numerals may designate like parts throughout the different views, wherein:
In accordance with the present invention, an authentication server 108 (
As used herein, the term gesture refers to an act of physical manipulation of a device 102 by a user in physical possession of that device that triggers an input signal distinguishable from an input signal that is injectable by a remote device or a local process. Examples of such input signals triggered by such a gesture are low-level input signals generated by keystrokes on a conventional keyboard or mouse. Further examples of gestures include physical movement or reorientation of a mobile or hand-held device that generates input signals from accelerometers installed on the device. It is contemplated that other types of gestures may fall within the scope of this definition, such as voice input or other physical movements of a user that cause low-level input signals distinguishable from an input signal that is injectable by a remote device or by another process such as malware.
To facilitate appreciation and understanding of the present invention, user device buffers are briefly described. User input devices such as keyboards and mice communicate with a computing device asynchronously, meaning that the device does not know when to expect signals from such user input devices. User input devices detect physical manipulation by a human user and generate signals that represent the detected physical manipulation. For example, when a user presses the “x” key on a keyboard, the keyboard detects the pressing and, in response, generates data indicating that the “x” key has been pressed and sends the data to the computing device.
Since the keyboard sends data asynchronously, the computing device has a buffer, i.e., a portion of memory, set aside to receive user input data when the computing device might be busy doing other things. Remote Desktop Protocols (RDPs) and other logic can mimic physical manipulation of user input devices by injecting, i.e., writing, data into user input device buffers. The computing device processes the injected data as it would data received from a user input device. Such allows for such things as RDPs and macros and other simulated use of the computing device, and such injection data is typically effected at the application level.
Data stored in user input device buffers are generally of the structure shown as input buffer record 400 (
Injected flag 406 specifies whether event 404 was injected by logic executing within the computing device, e.g., device 102 (
Authentication system 100 (
In an authentication transaction that is described below in greater detail in conjunction with transaction flow diagram 600 (
In step 204, the authentication logic gathers data generated by the user. In one embodiment, the data is gathered responsive to a prompt from the authentication server 108. For example, if the authentication requires the user to enter credentials such as a username and passphrase, the authentication logic prompts the user to enter the username and passphrase and receives data entered by the user in response to the prompt in step 204. In another embodiment, the prompt may require that the user physically reposition a mobile device 102, e.g., by rotating the device 90 degrees, by changing its position to a portrait or landscape orientation, or by rotating the device some number of degrees about any one of the conventional orthogonal axes. In another embodiment, no prompting is required in step 204, and instead step 204 represents a monitoring action initiated by the authentication server. That is, authentication logic is programmed to expect gesture-induced input from device 102 if in fact the user requesting device registration is in physical possession of the device. If so, the expected gesture-induced input will cause data representing, e.g. keystrokes or accelerometer signals, to be transmitted in a subsequent step.
In step 206, the authentication logic terminates the monitoring of user input device buffers, e.g, by DDK generator 1140 (
In step 210 (
The user-generated authentication data is evaluated, e.g., by server 106 (
In test step 302, authentication server 108 determines whether the user-generated data is correct, i.e., matches predetermined reference data. For example, if the user-generated data represents a username and an associated passphrase, authentication server 108 stores predetermined reference data that includes username and associated passphrase pairs. If the user-generated data matches any of the username-and-passphrase pairs, authentication server 108 determines that the user-generated data is correct in test step 302.
If the user-generated data is not correct, processing by authentication server 108 transfers to step 308 in which authentication server rejects the user-generated data as inauthentic. Conversely, if the user-generated data is correct, processing by authentication server 108 transfers to test step 304.
In test step 304, authentication server 108 determines whether the user-generated data was injected rather than entered by a human user in physical possession of device 102. There are a number of ways authentication server 108 can evaluate the injection data to determine whether the user-generated data had been injected. In one embodiment, authentication server 108 determines that the user-generated data had been injected if any events of the monitored user input device buffer had been injected. In another embodiment, authentication server 108 determines that the user-generated data had been injected only if all events of the monitored user input device buffer had been injected. In a variation of these embodiments, authentication server 108 identifies specific events in the injection data that correlate to generation of the user-generated data and consider only those events in determining whether the user-generated data had been injected. In another embodiment, in step 304 the authentication server 108 determines whether any gesture-induced low-level input data was received concurrently with the user-generated data, i.e. within a predetermined time period associated with receipt of the user-generated data. In this embodiment, the actual content of the low-level input data need not be tested; its mere presence can be sufficient evidence that a user is in physical possession of the device 102. In more elaborate embodiments, some or all of the content of the low-level input may be verified by comparison to expected user-generated data. In either case, receipt of expected gesture-induced input signals allows the authentication server to determine that the user-generated data is not injected data.
If authentication server 108 determines in test step 304 that the user-generated data had been injected, processing transfers to step 308 in which authentication server 108 rejects the user-generated data as inauthentic. Conversely, if authentication server 108 determines in test step 304 that the user-generated data had not been injected, processing transfers to step 306 in which authentication server 108 accepts the user-generated data as authentic.
Transaction flow diagram 600 (
In this illustrative embodiment, the user-generated data and injection data are combined with other attributes of device 102 and of the user of device 102 to form a dynamic device key (DDK) of device 102. Such other attributes include hardware and system configuration attributes of device 102 that make up an internal state of device 102. Known device record 700 (
Device attributes 704 that are used to authenticate the user of device 102 are sometimes referred to as interactive device attributes. At least one of device attributes 704 is an interactive attribute that requires the user of device 102 to take some action.
Device attribute 704 also includes extraction logic 710, comparison logic 712, alert logic 714, and adjustment logic 716. The particular device attribute represented by device attribute 704 is sometimes referred to as “the subject device attribute” in the context of
Extraction logic 710 specifies the manner in which the subject device attribute is extracted by device 102. Logic flow diagram 200 (
Comparison logic 712 specifies the manner in which the subject device attribute is compared to a corresponding device attribute to determine whether device attributes match one another. Logic flow diagram 300 (
Alert logic 714 can specify alerts of device matches or mismatches or other events. Examples of alert logic 714 include e-mail, SMS messages, and such to the owner of device 102 and/or to a system administrator responsible for proper functioning of device 102.
Adjustment logic 716 specifies the manner in which the subject device attribute is to be adjusted after authentication. For example, if the action to be performed by the user in an interactive device attribute changes over time, adjustment logic 716 can cause value 708 to be updated accordingly.
Device attribute 704 is shown to include the elements previously described for ease of description and illustration. However, it should be appreciated that a device attribute 704 for a given device can include only identifier 706 and value 708, while a separate device attribute specification can include extraction logic 710, comparison logic 712, alert logic 714, and adjustment logic 716. In addition, all or part of extraction logic 710, comparison logic 712, alert logic 714, and adjustment logic 716 can be common to attributes of a given type and can therefore be defined for the given type.
Returning to transaction flow diagram 600 (
In step 604 (
In step 606 (
In step 608 (
In step 612 (
In response to the request, authentication server 108 generates and cryptographically signs a session key. Session keys and their generation are known and are not described herein. In addition, authentication server 108 creates a device key challenge and encrypts the device key challenge using a public key of device 102 and PKI.
To create the device key challenge, authentication server 108 retrieves the known device record 700 (
In step 616 (
In step 618, server 106 sends an “authenticating” page to device 102 along with the device key challenge. The “authenticating” page includes content that provides a message to the user of device 102 that authentication of device 102 and its user is underway and content that causes device 102 to produce a dynamic device key in the manner specified by the device key challenge.
The device key challenge causes web browser 1120 (
The device key challenge specifies the manner in which DDK 1142 is to be generated from the attributes of device 102 represented in device attributes 704 (
The device key challenge specifies items of information to be collected from hardware and system configuration attributes of device 102 and the manner in which those items of information are to be combined to form DDK 1142. In this embodiment, the challenge specifies that the user enter data that is gathered in the manner described above with respect to logic flow diagram 200 (
In step 620 (
Once DDK 1142 (
In step 622 (
In step 626, authentication logic 1020 (
In step 802, authentication logic 1020 identifies device 102. In this illustrative embodiment, the received DDK includes a device identifier corresponding to device identifier 702 (
In test step 804 (
In step 806, authentication logic 1020 applies the same device key challenge sent in step 616 (
In test step 808 (
If the received DDK does not authenticate device 102, processing transfers to step 814 (
In step 810, authentication logic 1020 determines that device 102 is successfully authenticated.
In step 812 (
In step 814, authentication logic 1020 determines that device 102 or its user is not authentic, i.e., that authentication according to logic flow diagram 626 fails.
In step 816, authentication logic 1020 logs the failed authentication and, in step 818, applies alert logic 714 (
In step 628 (
In step 630, server 106 determines whether to continue to interact with device 102 and in what manner according to the authentication results received in step 628.
Server computer 106 is shown in greater detail in
CPU 902 and memory 904 are connected to one another through a conventional interconnect 906, which is a bus in this illustrative embodiment and which connects CPU 902 and memory 904 to network access circuitry 912. Network access circuitry 912 sends and receives data through computer networks such as wide area network 104 (
A number of components of server 106 are stored in memory 904. In particular, web server logic 920 and web application logic 922, including authentication logic 924, are all or part of one or more computer processes executing within CPU 902 from memory 904 in this illustrative embodiment but can also be implemented using digital logic circuitry.
Web server logic 920 is a conventional web server. Web application logic 922 is content that defines one or more pages of a web site and is served by web server logic 920 to client devices such as device 102. Authentication logic 924 is a part of web application logic 922 that causes client devices and their users to authenticate themselves in the manner described above.
Authentication server 108 is shown in greater detail in
A number of components of authentication server 108 (
Device 102 is a personal computing device and is shown in greater detail in
CPU 1102 and memory 1104 are connected to one another through a conventional interconnect 1106, which is a bus in this illustrative embodiment and which connects CPU 1102 and memory 1104 to one or more input devices 1108, output devices 1110, and network access circuitry 1112. Input devices 1108 can include, for example, a keyboard, a keypad, a touch-sensitive screen, a mouse, a microphone, and one or more cameras. Output devices 1110 can include, for example, a display—such as a liquid crystal display (LCD)—and one or more loudspeakers. Network access circuitry 1112 sends and receives data through computer networks such as wide area network 104 (
A number of components of device 102 are stored in memory 1104. In particular, web browser 1120 is all or part of one or more computer processes executing within CPU 1102 from memory 1104 in this illustrative embodiment but can also be implemented using digital logic circuitry. As used herein, “logic” refers to (i) logic implemented as computer instructions and/or data within one or more computer processes and/or (ii) logic implemented in electronic circuitry. Web browser plug-ins 1122 are each all or part of one or more computer processes that cooperate with web browser 1120 to augment the behavior of web browser 1120. The manner in which behavior of a web browser is augmented by web browser plug-ins is conventional and known and is not described herein.
Operating system 1130 is all or part of one or more computer processes executing within CPU 1102 from memory 1104 in this illustrative embodiment but can also be implemented using digital logic circuitry. An operating system (OS) is a set of programs that manage computer hardware resources and provide common services for application software such as web browser 1120, web browser plug-ins 1122, and DDK generator 1140.
DDK generator 1140 is all or part of one or more computer processes executing within CPU 1102 from memory 1104 in this illustrative embodiment but can also be implemented using digital logic circuitry. DDK generator 1140 facilitates authentication of device 102 in the manner described above.
Dynamic device key 1142 is data stored persistently in memory 1104.
The above description is illustrative only and is not limiting. The present invention is defined solely by the claims which follow and their full range of equivalents. It is intended that the following appended claims be interpreted as including all such alterations, modifications, permutations, and substitute equivalents as fall within the true spirit and scope of the present invention.
This application claims priority to U.S. Provisional Application No. 61/886,813, which was filed Oct. 4, 2013 and which is fully incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61886813 | Oct 2013 | US |