This disclosure relates generally to computing devices, and, more specifically, to user authentication.
Mobile devices, such as smart phones, typically present an authentication screen on a touch-sensitive display in order to allow a user to authenticate prior to granting access to the device. Such a screen may ask a user, for example, to enter a four-digit pin, which is used to establish that a user is authorized to access the device. Once a user has successfully authenticated, the device may present a menu that depicts applications installed on the device. If the user wants to execute a particular application, the user can select the application to cause the mobile device to initiate execution of the application.
The present disclosure describes embodiments in which a user is presented with a lock screen that allows the user to authenticate and request performance of an action in response to a successful authentication. In some embodiments, the lock screen is presented to authenticate a user attempting to access a device. In such an embodiment, the user may perform a gesture (e.g., on a touch-sensitive display) to authenticate and extend the gesture to cause a particular application to be opened upon authentication. In one embodiment, the lock screen depicts a group of icons corresponding to applications available for execution, and the user performs the gesture over the icons and extends the gesture to the application to be opened. In some embodiments, the lock screen is presented to authenticate a user attempting to access an application. In such an embodiment, the user may perform a gesture to authenticate and extend the gesture to cause the application to display particular content (e.g., menus, files, data, etc.) responsive to a successful authentication. In some embodiments, the lock screen may be presented on a client device attempting to access a service provided by a server.
This disclosure includes references to “one embodiment” or “an embodiment.” The appearances of the phrases “in one embodiment” or “in an embodiment” do not necessarily refer to the same embodiment. Particular features, structures, or characteristics may be combined in any suitable manner consistent with this disclosure.
Within this disclosure, different entities (which may variously be referred to as “units,” “circuits,” other components, etc.) may be described or claimed as “configured” to perform one or more tasks or operations. This formulation—[entity] configured to [perform one or more tasks]—is used herein to refer to structure (i.e., something physical, such as an electronic circuit). More specifically, this formulation is used to indicate that this structure is arranged to perform the one or more tasks during operation. A structure can be said to be “configured to” perform some task even if the structure is not currently being operated. A “network interface configured to communicate over a network” is intended to cover, for example, an integrated circuit that has circuitry that performs this function during operation, even if the integrated circuit in question is not currently being used (e.g., a power supply is not connected to it). Thus, an entity described or recited as “configured to” perform some task refers to something physical, such as a device, circuit, memory storing program instructions executable to implement the task, etc. This phrase is not used herein to refer to something intangible. Thus, the “configured to” construct is not used herein to refer to a software entity such as an application programming interface (API).
The term “configured to” is not intended to mean “configurable to.” An unprogrammed FPGA, for example, would not be considered to be “configured to” perform some specific function, although it may be “configurable to” perform that function and may be “configured to” perform the function after programming.
Reciting in the appended claims that a structure is “configured to” perform one or more tasks is expressly intended not to invoke 35 U.S.C. § 112(f) for that claim element. Accordingly, none of the claims in this application as filed are intended to be interpreted as having means-plus-function elements. Should Applicant wish to invoke Section 112(f) during prosecution, it will recite claim elements using the “means for” [performing a function] construct.
As used herein, the terms “first,” “second,” etc. are used as labels for nouns that they precede, and do not imply any type of ordering (e.g., spatial, temporal, logical, etc.) unless specifically stated. For example, in a password that has multiple portions, the terms “first” portion and “second” portion can be used to refer to any portion of a password. In other words, the first and second portions are not limited to the initial two portions of a password.
As used herein, the term “based on” is used to describe one or more factors that affect a determination. This term does not foreclose the possibility that additional factors may affect a determination. That is, a determination may be solely based on specified factors or based on the specified factors as well as other, unspecified factors. Consider the phrase “determine A based on B.” This phrase specifies that B is a factor is used to determine A or that affects the determination of A. This phrase does not foreclose that the determination of A may also be based on some other factor, such as C. This phrase is also intended to cover an embodiment in which A is determined based solely on B. As used herein, the phrase “based on” is thus synonymous with the phrase “based at least in part on.”
As the number of applications available to mobile devices continues to increase, the time required to authenticate and locate a particular application for execution continues to increase. In many instances, a user spends a considerable amount of time navigating through several menus before finding a desired application. Additionally, users often search for different applications throughout a given day and may forget which menu includes a desired application. To assist the user, operating systems on the mobile device may allow a user to directly open an application in response to receiving a notification; however, a user may desire to open that application when no notification has been provided.
The present disclosure describes embodiments in which a user can quickly and efficiently open applications, files, particular menus of an application, etc. from a lock screen used to authenticate a user. As will be described in greater detail below, in various embodiments, a lock screen displays an arrangement of elements (e.g., application icons in some embodiments) that allows a user to perform a gesture connecting the elements to form a passcode. The user may extend this gesture to include one or more additional elements (e.g., an icon of an application to be opened) so that the device or system provides access to the user and opens an application associated with the additional element. In doing so, the user does not have to navigate through several menus looking for an application after unlocking the device or system.
Turning now to
Authentication portion 120A, in one embodiment, is a portion of gesture 120 used to authenticate a user. Accordingly, when a user account is initially created, the user may be asked to perform an initial gesture, which serves as a user's passcode/password and is stored in memory in order to verify subsequent access requests. In embodiments in which screen 100A is presented on a touch-sensitive display, the user may perform this gesture by dragging a finger on the display while maintaining continuous pressure on the display throughout the gesture. For example, in
Extension portion 120B, in one embodiment, is an extension of a gesture 120 that is used to convey an instruction for what is to occur upon a user being successfully authenticated. In an embodiment in which a touch-sensitive display is used, extension portion 120B may be performed by continuing to maintain pressure on the display after performance of authentication portion 120A and moving the finger on to one or more additional dots 110 such that portions 120A and 120B form a single contiguous gesture. As noted above, in some embodiments, extension portion 120B may be used to open a particular application, a particular file, a particular menu within an application, etc. In various embodiments, the manner in which extension portion 120B is performed controls which action is performed responsive to portion 120B. For example, if screen 100A is a screen for unlocking a smartphone, dot 110A may be associated with opening the Twitter™ application stored in the smartphone while dot 110F may be associated with opening the Facebook™ application. Thus, selecting dot 110F as shown in
In some embodiments, screen 100A may also be implemented differently than shown in
Turning now to
Similar to authentication portion 120A discussed above, authentication portion 150A, in one embodiment, is used to authenticate a user. Accordingly, when a user is attempting to authenticate the sequence of icons selected in portion 150A may be compared against those selected previously by an authorized user. For example, if screen 100B is presented on a touch-sensitive display, the user may authenticate by dragging a finger over icons 140A, 140D, 140E, 140H, and 140F as shown in
In the illustrated embodiment, a user selects an application to open upon authentication by extending gesture 150 to that application's icon 140. For example, as shown, performing extension portion 150B to icon 140E corresponding to the music application causes the music application to be opened upon successful verification of authentication portion 150A. In some embodiments, if the user wants to select the icon 140 corresponding to the last icon in authentication portion 150A (e.g., icon 140F corresponding to the Vine™ application in
In some embodiments, the arrangement of icons 140 on screen 100B are periodically altered in order to change the manner in which gesture 150 is performed. For example, icon 140D might be swapped with icon 140B altering performance of gesture 150 such that the user would move right horizontally from icon 140A rather than down vertically as depicted in
In some embodiments, screen 100B may be implemented differently than shown in
Turning now to
Similar to authentication portions 120A and 150A discussed above, authentication portion 180A, in one embodiment, is used to authenticate a user. Accordingly, when a user is attempting to authenticate, the sequence of numbers selected in portion 180A may be compared against those selected previously by an authorized user. For example, if screen 100C is a number pad presented on a touch-sensitive display, the user may authenticate by tapping a finger on the numbers: 1, 4, 9, and 2. As the user selects numbers, in various embodiments, screen 100C may indicate the selected numbers by displaying them above the number pad, highlighting selected numbers.
In some embodiments, a user chooses the particular action to occur upon authentication by extending PIN 180 to include additional elements shown as extension portion 180B. For example, as shown, a user may select the number ‘2’ to extend PIN 180 in order to open the Twitter™ application stored in the smartphone. In some embodiments, the actions taken responsive to an extension portion 180B may be defined by a user—e.g., the user may associate the number ‘2’ with the Twitter™ application. As with the previous figures, in various embodiments, extension portion 180B may be appended to the beginning or the end of PIN 180.
In some embodiments, screen 100C may be implemented differently than shown in
In some embodiments, presentation of a screen 100 A-C and the corresponding authentication are performed by the same computing device (e.g., a user's smartphone) as will be described below with respect to
Turning now to
CPU 210, in one embodiment, is a processing unit configured to execute program instructions stored in a non-transitory computer readable medium such as memory 240 in order to implement functionality described herein. CPU 210 may include multiple processor cores, which may each be multi-threaded. In some embodiments, CPU 210 is configured to perform techniques to improve efficiency such as super-threading, hyper-threading, virtualization, and the like. Furthermore, CPU 210 may include specialized hardware for encrypting and decrypting files using AES encryption (or any known form of encryption/decryption). In various embodiments, CPU 210 uses a cache hierarchy that includes an L1 cache and an L2 cache.
Display 220, in one embodiment, is an interface configured to present content to a user such as one of screens 100A-100C. Display 220 may be any suitable form of display such as a liquid crystal display (LCD), a light-emitting diode display (LED), a plasma display panel (PDP), or the like. In some embodiments, display 220 is a touch-sensitive display configured to implement functionality of input interface 230.
Input interface 230, in one embodiment, is an interface configured to receive input from a user such as a gesture 120, gesture 150, or PIN 180. Although various examples have been given with regards to a touch-sensitive display, input interface 230 may be any suitable form of interface such as a mouse, keyboard, joystick, stylus, camera, etc. For example, instead of drawing gesture 120 using a finger, a user may draw gesture 120 holding down a mouse button and moving a pointer over dots 110.
Memory 240, in one embodiment, is a non-transitory computer readable medium configured to store program instructions executable to implement functionality described herein such as program instructions for handler 250, OS 254, and/or applications 256. Memory 240 may be implemented using any suitable form of physical memory media, such as hard disk storage, floppy disk storage, removable disk storage, flash memory, random access memory (RAM-SRAM, EDO RAM, SDRAM, DDR SDRAM, RAMBUS RAM, etc.), read only memory (PROM, EEPROM, etc.), and so on.
Handler 250, in one embodiment, is a set of program instructions executable to implement functionality described herein with respect to screens 100A-100C. Accordingly, as will be described in greater detail below with respect to
OS 254, in one embodiment, is an operating system executable to manage various aspects of computing device 200A including controlling access to device 200A. In various embodiments, handler 250 interfaces with OS 254 (or is even a part of OS 254) in order to facilitate authenticating a user requesting access to device 200A. Accordingly, in response to receiving an indication that a user desires to access device 200A, handler 250 may generate a lock screen 100 and request that OS 254 cause display 220 to present the lock screen 100 to the user. OS 254 may collect information from interface 230 about an input 120, 150, or 180 and present this information to handler 250 to authenticate a user and determine whether an extension portion 120B, 150B, or 180B has been performed. Handler 250 may then instruct OS 254 to unlock a device 200A in response to a successful authentication and perform a particular action corresponding to the performed extension portion 120B, 150B, or 180B.
Applications 256, in one embodiment, are various applications, which may be installed on device 200A or accessible from device 200A. In an embodiment in which a lock screen 100 is presented to access device 200A, execution of applications 256 may be initiated in response to performance of an extension portion 120B, 150B, or 180B. Accordingly, applications 256 may correspond to the icons 140A-I depicted in
Turning now to
As with discussed above with computing device 200A, in one embodiment, client device 200B is configured to present a lock screen 100 via display 220 and collect information about an input 120, 150, or 180 via input interface 230. Rather than perform authentication, client device 200B, in the illustrated embodiment, communicates collected information over network 260 to server system 270, which may perform authentication via handler 250. As discussed above, in some embodiments, this information may be collected to facilitate obtaining access to client device 200B. In other embodiments, this information may be collected to facilitate accessing an application, which may be located at device 200B or at server system 270 as descried below. Client device 200B may correspond to any suitable computing device such as those listed above with respect to computing device 200A.
Network 260 may be any suitable form of computer network, which allows a client device 200B and a server system 270 to exchange data. Accordingly, network 260 may include a combination of wired and wireless technologies that include optical fiber, Ethernet, cellular, radio, and the like. Network 260 may be implemented through bridges, repeaters, switches, routers, modems, and firewalls. Network 260 may be a local area network, wide area network, enterprise private network, virtual private network, and/or the like.
Server system 270, in one embodiment, is configured to authenticate a user and determine whether an extension portion 120B, 150B, or 180B is present in a received input 120, 150, or 180. In the illustrated embodiment, server system 270 implements this functionality by executing handler 250 on CPU 280. In various embodiments, server system 270 also provides one or more services accessible to a user of client device 200B responsive to a successful authentication via a lock screen 100. For example, server system 270 may use database 290 to implement a database server, a file server, a mail server, a print server, a web server, a game server, and/or an application server. In some embodiments, these services may be accessible to an application executing on client device 200B. For example, a banking application executing on device 200B may retrieve an account balance stored in database 290 in response to a successful authentication of a user and an extension portion 120B, 150B, or 180B being provided to request display of the account balance. In other embodiments, these services may be accessible be an application executing on server system 270. For example, a user may log into a banking website via a browser executing on client device 200B, and server system 270 may present an account balance stored in database 290 in response to a successful authentication of a user and an extension portion 120B, 150B, or 180B requesting display of the account balance. In some embodiments, functionality provided by server system 270 may be provided as part of a software as a service (SaaS). For example, in some embodiments, server system 270 may deliver an application to client devices 200B that uses an authentication service provided by server system 270. In some embodiments, system 270 may provide access to content, such as virtual machine executing on server system 270.
Turning now to
In processing a received input 120, 150, or 180, handler 250 may perform any of various suitable techniques to perform a comparison for an input in order to authenticate a user. For example, in one embodiment, authentication information 251 may include a string identifying the locations of elements on a screen that are selected by an authorized user in an authentication portion 120A, 150A, or 180A. In response to receiving an access request specifying an input 120, 150, or 180, handler 250 compares this string with a string identifying selected elements in the authentication portion of the input 120, 150, or 180. In another embodiment, authentication information 251 includes a hash value calculated from locations of elements selected by an authorized user in an authentication portion 120A, 150A, or 180A. In response to receiving an access request including an input 120, 150, or 180, handler 250 may compute a corresponding hash value from the authentication portion 120A, 150A, or 180A and compare that hash value with the hash value included in authentication portion 251. Handler 250 may perform any suitable hashing algorithm such as any member of the secure hash algorithm (SHA) family, the BLAKE2 algorithm, or the MD5 algorithm. In some embodiments, authentication information 251 may include information associated with several distinct users.
Handler 250 may also employee any of various techniques to discern the existence of an extension portion 120B, 150B, or 180B in an input 120, 150, or 180. In one embodiment, authentication information 251 may include the length of an authentication portion 120A, 150A, or 180A; thus, handler 250 may determine whether an extension portion 120B, 150B, or 180B exists when in input 120, 150, or 180 exceeds the length. In another embodiment, handler 250 may identify an extension portion 120B, 150B, or 180B in response to detecting that a user has paused between performing an authentication portion and an extension portion. In response to detecting that an extension portion 120B, 150B, or 180B exists, handler 250 may examine extension map 252 to determine the appropriate action to take based on the performed extension portion. If the authentication is successful, handler 250 may indicate the successful authentication via a result 300 and identify the requested action 340 based on the appropriate action indicated map 252.
Turning now to
Method 400 begins in step 410 with a lock screen (e.g., one of screens 100A-C) being sent to a display (e.g., display 220), which displays the screen to a user. In step 420, a user input (e.g., one inputs 120, 150, or 180) is received corresponding to a passcode. In step 430, a determination is made whether the input is of an authorized user. In some embodiments, step 430 includes comparing a portion of the input (e.g., an authorization portion 120A, 150A, or 180A) with an input previously provided by an authorized user. If the input is not of an authorized user, method 400 proceeds to step 435 where an indication of a failed authentication is sent to the display. Otherwise, method 400 proceeds to step 440 where a determination is made whether an extension is present in the input (e.g., an extension portion 120B, 150B, or 180B). If an extension is not present, a computing device is unlocked and a home screen is presented at step 445. If an extension is present, the computing device is unlocked an application requested by the extension is opened on the device at step 450.
Turning now to
In step 510, a two-dimensional matrix of elements (e.g., dots 110, icons 140, or numbers in grid 170) is presented on a display of the computing device (e.g., display 220). In some embodiments, step 510 includes using a pseudo random number generator to select an ordering for elements in the two-dimensional matrix and presenting the elements in the selected ordering in the two-dimensional matrix.
In step 515, a continuous gesture performed by the user on the display over the two-dimensional matrix of elements is detected. The gesture may include a first portion of a first set of selected elements (e.g., authentication portion 120A, 150A, or 180A) and second portion of a second set of selected elements (e.g., extension portion 120B, 150B, or 180B). In some embodiments, step 515 includes identifying a transition from the first portion of the gesture to the second portion of the gesture by detecting a pause in movement of the user's finger. In one embodiment, the first portion is a beginning portion of the gesture, and the second portion is an ending portion of the gesture.
In step 520, the user is authenticated based on the selected first set of elements. In some embodiments, step 520 includes comparing the selected first set of elements with a third set of elements (e.g., as indicated by authentication information 251) selected by a gesture performed by an authorized user of the computing device. In some embodiments, step 520 includes calculating a first hash value based on locations of the first set of elements in the two-dimensional matrix, calculating a second hash value based on locations of the third set of elements in the two-dimensional matrix, and comparing the first and second hash values.
In step 525, execution of a particular application identified based on the second set of elements is initiated. In some embodiments, the elements include icons for applications executable by the computing device, and the second set of elements includes an icon for the particular application.
Turning now to
Although specific embodiments have been described above, these embodiments are not intended to limit the scope of the present disclosure, even where only a single embodiment is described with respect to a particular feature. Examples of features provided in the disclosure are intended to be illustrative rather than restrictive unless stated otherwise. The above description is intended to cover such alternatives, modifications, and equivalents as would be apparent to a person skilled in the art having the benefit of this disclosure.
The scope of the present disclosure includes any feature or combination of features disclosed herein (either explicitly or implicitly), or any generalization thereof, whether or not it mitigates any or all of the problems addressed herein. Accordingly, new claims may be formulated during prosecution of this application (or an application claiming priority thereto) to any such combination of features. In particular, with reference to the appended claims, features from dependent claims may be combined with those of the independent claims and features from respective independent claims may be combined in any appropriate manner and not merely in the specific combinations enumerated in the appended claims.