As computing as become increasing pervasive in both economic and personal life, the importance of securing computing information has become paramount. Headlines over the past several years have highlighted the dangers of weak computer security, which may lead to information theft, malicious computer use via the installation of malware, and other problems.
Many computer resources are protected via a combination of account name and password. After authentication information matching a valid account name and password for an account is provided, access to certain computer resources associated with an account may be granted. If a nefarious actor were to obtain a valid account name and password for a computer account, those computer resources are at risk of malicious use. Account names and passwords can be compromised. For example, passwords may be recorded by a user, and then the recordings obtained by a nefarious actor. Therefore, improved methods of protecting this information are desired.
In the drawings, which are not necessarily drawn to scale, like numerals may describe similar components in different views. Like numerals having different letter suffixes may represent different instances of similar components. The drawings illustrate generally, by way of example, but not by way of limitation, various embodiments discussed in the present document.
The following description and the drawings sufficiently illustrate specific embodiments to enable those skilled in the art to practice them. Other embodiments may incorporate structural, logical, electrical, process, and other changes. Portions and features of some embodiments may be included in, or substituted for, those of other embodiments. Embodiments set forth in the claims encompass all available equivalents of those claims.
As discussed above, account name and/or password information may be obtained in nefarious ways, leading to compromised computer data. The disclosed embodiments solve this technical problem by providing a technical solution that provides a configurable method of enforcing particular time delays between characters of an account name or a password. A user or an administrator may invoke a user interface that provides for configuration of particular delay criteria between characters in an account name or password. If no delay information is configured for a particular account name or password, delay criteria are automatically assigned to the account name or password by the system. Since the user did not configure these delays the user is informed of the system assigned delay criterion, for example, via a user interface that is displayed after the successful login.
Additionally, the delay requirements between characters may be selectively enforced based on time/date information or a location. Thus, for example, a first set of delays may be enforced when a login is performed for an account from a first location, such as a location near their home or workplace, and a second set of delay criteria may be enforced when a second login is performed from a second location, for example, when traveling.
The present disclosure thus provides a technical solution to the technical problem of compromised authentication credentials by introducing additional requirements for an entered password to be authenticated. The enforced delays provided by the disclosed embodiments may be varied by time/date or location, adding an additional level of unpredictability that may work to prevent a password obtained at a first time or location from successfully facilitating a login from a second time or location.
The delay criterion specifies an allowable delay range. As shown in interface 200, a starting delay of the range is configured via edit box 206a, while an ending value of the delay range is configured via edit box 206b. Thus, for example, if an acceptable delay between two characters is between 2-3 seconds, edit box 206a may be configured with a value of two (2) while edit box 206b is configured with a value of three (3). To configure an open ended range, either edit box 206a (delay less than) or edit box 206b (delay greater than) may be left blank. While the example embodiment shown in
While
Once the delay criterion is configured, the add button 210a adds the delay after the character specified in 208 to a list of delay criterion evaluated when the delay profile is applied. The list of delay criterion applied by a particular delay profile is displayed in the list box 216. To delete a delay criterion from the list, the delete key 210b may be used.
The disclosed embodiments may provide delay profiles such as those configured via interface 200 that are applied conditionally based on at least one or more of time, date, or location. To set these conditions, a user may select button 212. An ok button 214a accepts the delay profile defined by the fields of user interface 200 and a cancel button 214b ignores any data entered in the user interface 200.
The user interface 300 includes radio buttons 302a-b. Selecting radio button 302a applies the delay profile unconditionally. Selecting radio button 302b causes the delay profile identified by 301 to be applied according to time and or location conditions. Time conditions may be applied to the delay profile when checkbox 304a is selected, while location conditions may be applied to the delay profile when checkbox 304b is selected. The time conditions may be defined via button 308. Location conditions may be defined via button 312. List box 310 displays location condition information for this delay profile (e.g. 301).
The user interface 400 is configured to accept input defining a start time 405a and end time 405b to apply the delay profile identified as 402. User interface 400 also is configured to accept input defining a recurrence pattern 408 for application of the delay profile (e.g. 402). The recurrence pattern 408 may be defined as weekly (via radio button 410a), weekly (via radio button 410b), monthly (via radio button 410c), or yearly (via radio button 410d). The recurrence pattern 408 may also be defined to recur a particular number 415 of weeks, and/or to recur on selected days of the week via checkboxes 420.
The recurrence of application of the delay profile (e.g. 402) may be defined to start on a particular date (via 425) and have no end date (via radio button 430a), end after a particular number of occurrences (defined by 440), or end by a particular date (defined by 450).
In some aspects, the delay profiles displayed by user interface 600 may be synchronized between client and server devices to provide for authentication of the client by the server. For example, the user interfaces of
The device profile includes a device identifier 712, profile identifier 714, and a priority 716. The device identifier 712 uniquely identifies a device. The device identifier 712 may be, in various aspects, a station address, UUID, or IP address of a device. The profile identifier 714 uniquely identifies an delay profile. The priority 716 defines a priority of evaluation of the delay profile identified by the profile identifier 714 (for example, as defined by an order of the profile in the list box 604 discussed above).
The delay profile table 720 includes a profile identifier 722, delay from field 723, delay to field 724, position field 725, time/date criterion field 726, location criterion field 727. The profile identifier 722 uniquely identifies a delay profile. The delay from field 723 stores a lower bound of a delay range, for example, as may be entered via the user interface 200, field 206a. If the delay from field 723 is set to a zero value, the delay range may have no lower bound. The delay to field 724 stores an upper bound of the delay range, for example, as may be entered via the user interface 200, field 206b. If the delay to field 724 is set to a zero value, this may indicate the delay has no upper bound. The position field 725 stores a character position in an account name or password after which the delay criterion is applied. For example, the position field 725 may be populated via edit box 208 of user interface 200. The time/data criterion field 726 may store data indicating any one or more of the fields described with respect to
The user table 730 includes an account identifier 732, account name 734 and password identifier 736. The user table 730 may define authentication information for users of a system implementing the disclosed embodiments. The account identifier 732 may be cross referenced with account identifier 702. The account name field 734 defines an account name, and the password id 736 defines a password id for the account identified by the user account identified via the account name 734. The password table 740 includes a password identifier 742 and a password 744. The password identifier 742 may be cross referenced with the password id 736. The present embodiments may apply one or more delay profiles as discussed above to one or more of data stored in the account name field 734 or password field 744.
The embodiments disclosed herein may be implemented by one or more of the computing device 802b and/or server 805. For example, in some aspects, one or more delay profiles discussed above may be configured on, and operate within, a single device, such as the computing device 802b.
In some other aspects, the disclosed embodiments may be implemented on the server device 805. In these embodiments, an account name or password may be entered at the client device 802a. The entered account name and/or password may then be provided to the server device 805 via a network. Additionally, information defining delays between entered characters of the account name and/or password may also be provided to the server device 805 via the network (e.g. information such as the delay values 104a-d shown in
While the example embodiment shown in
In operation 1110, a sequence of characters is received. In some aspects, the sequence of characters is received from a user interface, such as the user interface 1000 discussed above with respect to
Also received is data defining an elapsed time between entry of at least two characters in the sequence of characters. As discussed above with respect to the example of
Operation 1120 determines whether a delay criterion for the sequence of characters is available. In some aspects, operation 1120 may consult a database to determine if a delay criterion is defined for one or more of an account name or password for an account. For example, operation 1120 may search the account profile table 700 and/or the device profile table 710 for an account id or device id appropriate for the sequence of characters. If the profile identifier 704 or 714 respectively identifies a delay profile, then a delay criterion is available. If a delay profile is specified for the sequence of characters, process 1100 moves from operation 1130 to operation 1135, where credentials are authenticated. The credentials include the sequence of characters. The authentication is based on the delay criterion for the sequence of characters. For example, operation 1135 determines whether delays defined by the delay data meets the requirements specified in the delay profile indicating the delay criterion.
If no delay profile or delay criterion is defined for the sequence of characters in decision operation 1130, process 1100 moves to block 1140, where authentication proceeds based on the sequence of characters. For example, if the sequence of characters defines an account name, then authentication of the account name is attempted. If the sequence of characters defines a password, then authentication based on the password is attempted.
If the authentication is successful, process 1100 moves from decision operation 1150 to 1160, which sets the delay criterion to a default or system assigned value. In some aspects, the system assigned value may define a single delay criterion between two characters. For example, the system assigned value may set a delay criterion to require a delay between a second and third character of at least four (4) seconds. If the authentication is not successful, processing moves to block 1165 where access to the account is denied.
In operation 1170, a user interface is displayed indicating the system assigned value(s). For example, as shown in
As discussed above for example with respect to
In operation 1205, a configuration defining a delay criterion for a delay between at least two characters of a password for an account is provided. In other words, providing a configuration such as this may include maintaining a data store such as the profile table 720 described above with respect to
Profiles such as those described above in the example of
In operation 1210, a user interface is provided. The user interface is configured to set the delay criterion (of the configuration described above with respect to operation 1205) for the account based on input received in the user interface. The input sets a user configurable value for the delay. For example, as described above with respect to
Decision operation 1215 determines whether a user configurable value was received for a particular account. For example, in some aspects, the user interface discussed above with respect to operation 1210 may be configured to set a flag or other indication when a user-configured value is provided for the particular account. For example, in some aspects, the account profile table 700 may be searched to determine if the particular account is identified and associated with a profile. If not, decision operation 1215 may determine that no user configurable value was received. Otherwise, if an identifier of the account exists in the account profile table 700 and is associated with a profile, then decision operation 1215 determines that a user configurable value was received.
If the user configurable value was provided, process 1200 moves to block 1220, where the delay criterion for the account is set according to the user configured value. For example, if delay criterion were entered via the user interface 200, they may be stored in a datastore, such as one or more of the tables described above with respect to
If no user configured value was provided, a system assigned value is assigned to the delay criterion in operation 1225. In various embodiments, the system assigned criterion may itself by configurable by a systems administrator. In some aspects, the system may determine a random system assigned value, such that the same values are not used for many accounts. In some aspects, both the delay value, and the position within characters of the password may be randomly determined. In some aspects, the position within characters of the password may be randomly determined based on a number of characters included in the password. Thus, for example, a long password may be assigned a random delay criterion between a second to the last character in the password and the last character, where this position wouldn't exist for a different user with a different, and shorter password. Thus, the system may dynamically adjust a range from which a random number is chosen based on a length of the password.
In operation 1230, a notification conveying the system assigned value is provided. For example, operation 1230 may display a user interface equivalent to or similar to the user interface 900, described above with respect to
Turning to
In operation 1260, a delay criterion is enforced when authenticating the account. For example, the delays indicated by the authentication request may be compared to one or more delays defined by a delay profile associated with the account. For example, in some aspects of operation 1260, a delay indicated in the authentication request may be compared to a delay range indicated by field 723 and 724 of the delay profile as defined by table 720. An ordinal position of the delay indicated in the authentication request may determine which delay range in the delay profile is applied, based on the position field 725.
As discussed above for example with respect to
Examples, as described herein, may include, or may operate on, logic or a number of components, modules, or mechanisms (all referred to hereinafter as “modules”). Modules are tangible entities (e.g., hardware) capable of performing specified operations and may be configured or arranged in a certain manner. In an example, circuits may be arranged (e.g., internally or with respect to external entities such as other circuits) in a specified manner as a module. In an example, the whole or part of one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware processors may be configured by firmware or software (e.g., instructions, an application portion, or an application) as a module that operates to perform specified operations. In an example, the software may reside on a machine readable medium. In an example, the software, when executed by the underlying hardware of the module, causes the hardware to perform the specified operations.
Accordingly, the term “module” is understood to encompass a tangible entity, be that an entity that is physically constructed, specifically configured (e.g., hardwired), or temporarily (e.g., transitorily) configured (e.g., programmed) to operate in a specified manner or to perform part or all of any operation described herein. Considering examples in which modules are temporarily configured, each of the modules need not be instantiated at any one moment in time. For example, where the modules comprise a general-purpose hardware processor configured using software, the general-purpose hardware processor may be configured as respective different modules at different times. Software may accordingly configure a hardware processor, for example, to constitute a particular module at one instance of time and to constitute a different module at a different instance of time.
Machine (e.g., computer system) 1300 may include a hardware processor 1302 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a hardware processor core, or any combination thereof), a main memory 1304 and a static memory 1306, some or all of which may communicate with each other via an interlink (e.g., bus) 1308. The machine 1300 may further include a display unit 1310, an alphanumeric input device 1312 (e.g., a keyboard), and a user interface (UI) navigation device 1314 (e.g., a mouse). In an example, the display unit 1310, input device 1312 and UI navigation device 1314 may be a touch screen display. The machine 1300 may additionally include a storage device (e.g., drive unit) 1316, a signal generation device 1318 (e.g., a speaker), a network interface device 1320, and one or more sensors 1321, such as a global positioning system (GPS) sensor, compass, accelerometer, or other sensor. The machine 1300 may include an output controller 1328, such as a serial (e.g., universal serial bus (USB), parallel, or other wired or wireless (e.g., infrared(IR), near field communication (NFC), etc.) connection to communicate or control one or more peripheral devices (e.g., a printer, card reader, etc.).
The storage device 1316 may include a machine readable medium 1322 on which is stored one or more sets of data structures or instructions 1324 (e.g., software) embodying or utilized by any one or more of the techniques or functions described herein. The instructions 1324 may also reside, completely or at least partially, within the main memory 1304, within static memory 1306, or within the hardware processor 1302 during execution thereof by the machine 1300. In an example, one or any combination of the hardware processor 1302, the main memory 1304, the static memory 1306, or the storage device 1316 may constitute machine readable media.
While the machine readable medium 1322 is illustrated as a single medium, the term “machine readable medium” may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) configured to store the one or more instructions 1324.
The term “machine readable medium” may include any medium that is capable of storing, encoding, or carrying instructions for execution by the machine 1300 and that cause the machine 1300 to perform any one or more of the techniques of the present disclosure, or that is capable of storing, encoding or carrying data structures used by or associated with such instructions. Non-limiting machine readable medium examples may include solid-state memories, and optical and magnetic media. Specific examples of machine readable media may include: non-volatile memory, such as semiconductor memory devices (e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)) and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; Random Access Memory (RAM); Solid State Drives (SSD); and CD-ROM and DVD-ROM disks. In some examples, machine readable media may include non-transitory machine readable media. In some examples, machine readable media may include machine readable media that is not a transitory propagating signal.
The instructions 1324 may further be transmitted or received over a communications network 1326 using a transmission medium via the network interface device 1320. The machine 1300 may communicate with one or more other machines utilizing any one of a number of transfer protocols (e.g., frame relay, internet protocol (IP), transmission control protocol (TCP), user datagram protocol (UDP), hypertext transfer protocol (HTTP), etc.). Example communication networks may include a local area network (LAN), a wide area network (WAN), a packet data network (e.g., the Internet), mobile telephone networks (e.g., cellular networks), Plain Old Telephone (POTS) networks, and wireless data networks (e.g., Institute of Electrical and Electronics Engineers (IEEE) 802.11 family of standards known as Wi-Fi®, IEEE 802.16 family of standards known as WiMax®), IEEE 802.15.4 family of standards, a Long Term Evolution (LTE) family of standards, a Universal Mobile Telecommunications System (UMTS) family of standards, peer-to-peer (P2P) networks, among others. In an example, the network interface device 1320 may include one or more physical jacks (e.g., Ethernet, coaxial, or phone jacks) or one or more antennas to connect to the communications network 1326. In an example, the network interface device 1320 may include a plurality of antennas to wirelessly communicate using at least one of single-input multiple-output (SIMO), multiple-input multiple-output (MIMO), or multiple-input single-output (MISO) techniques. In some examples, the network interface device 1320 may wirelessly communicate using Multiple User MIMO techniques.
Examples, as described herein, may include, or may operate on, logic or a number of components, modules, or mechanisms. Modules are tangible entities (e.g., hardware) capable of performing specified operations and may be configured or arranged in a certain manner. In an example, circuits may be arranged (e.g., internally or with respect to external entities such as other circuits) in a specified manner as a module. In an example, the whole or part of one or more computer systems (e.g., a standalone, client, or server computer system) or one or more hardware processors may be configured by firmware or software (e.g., instructions, an application portion, or an application) as a module that operates to perform specified operations. In an example, the software may reside on a machine-readable medium. In an example, the software, when executed by the underlying hardware of the module, causes the hardware to perform the specified operations.
Accordingly, the term “module” is understood to encompass a tangible entity, be that an entity that is physically constructed, specifically configured (e.g., hardwired), or temporarily (e.g., transitorily) configured (e.g., programmed) to operate in a specified manner or to perform part or all of any operation described herein. Considering examples in which modules are temporarily configured, each of the modules need not be instantiated at any one moment in time. For example, where the modules comprise a general-purpose hardware processor configured using software, the general-purpose hardware processor may be configured as respective different modules at different times. Software may accordingly configure a hardware processor, for example, to constitute a particular module at one instance of time and to constitute a different module at a different instance of time.
Various embodiments may be implemented fully or partially in software and/or firmware. This software and/or firmware may take the form of instructions contained in or on a non-transitory computer-readable storage medium. Those instructions may then be read and executed by one or more processors to enable performance of the operations described herein. The instructions may be in any suitable form, such as but not limited to source code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. Such a computer-readable medium may include any tangible non-transitory medium for storing information in a form readable by one or more computers, such as but not limited to read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory; etc.