Secure and efficient one-time cryptographic system and method
By using hash functions to generate and store one-time passwords in a one-time password authentication system, the security risks of identifier storage and transmission are resolved, and efficient and secure user authentication is achieved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2023-08-17
- Publication Date
- 2026-03-24
AI Technical Summary
In existing one-time password authentication systems, the storage and transmission of identifiers pose security risks, and the encryption operation is time-consuming, making it difficult to efficiently generate and authenticate one-time passwords in large-capacity systems.
By combining user identifiers and intent identifiers to generate a hash, using a hash function to generate a one-time password, and storing it in association with the hash, the transmission and storage of identifiers are reduced, and the hash value is used for authentication comparison.
It improves system security and efficiency, reduces the overhead of encryption operations, prevents cybercriminals from impersonating users, and increases the speed and efficiency of the authentication process.
Smart Images

Figure CN121729686A_ABST
Abstract
Description
[0001] Cross Reference to Related Applications
[0002] None. BACKGROUND
[0003] Passwords are commonly used for authentication in computer systems and web services. To access a service or resource, a user can provide a password, along with a username, to a computer system. The computer system can verify the correctness of the password corresponding to the username in order to authenticate the user. If the user is successfully authenticated, the user can be granted access to the service or resource. For example, a username and password can be used to access an email account.
[0004] A one-time password (also referred to as an "OTP" or "OTP code") is a type of password. While a conventional password can be valid for a relatively long period of time (e.g., six months) or even indefinitely, a one-time password can be valid for, e.g., a single use. However, the term "one-time password" is often used to refer to a more general limited-use password, rather than a password that is valid for exactly one use. As such, a one-time password can refer to a password that is valid for, e.g., five uses, or can be valid for a relatively short period of time (e.g., 15 minutes), or can be valid until some date in the near future.
[0005] A one-time password can be used as a form of single-factor authentication. As an example, a user can attempt to log in to a computer system by providing an email address. The computer system can generate a one-time password and transmit the one-time password to the email address. The user can subsequently access their email, read the one-time password, and provide the one-time password to the computer system. As long as the one-time password is correct, the computer system can verify the one-time password and authenticate the user.
[0006] A one-time password can also be used for multi-factor authentication, e.g., in combination with a traditional password. For example, a user can attempt to log in to a computer system by providing a username and password. The computer system can verify that the password is correct and, as long as the password is correct, can generate a one-time password that can be sent to a phone number associated with the user in a text message. The computer system can then prompt the user to enter the one-time password. The user can read the one-time password from their phone and enter the one-time password into the computer system, at which point the computer system can verify the one-time password and authenticate the user. In this way, the computer system can determine that the user knows their username and traditional password and possesses a phone associated with the user. As such, the use of one-time passwords can enable a more secure multi-factor authentication technique than traditional password-based authentication.
[0007] In a conventional one-time password authentication system, after a one-time password is generated, the one-time password is typically stored in some data structure (e.g., a "one-time password table") so that the computer system can retrieve the one-time password at a later time, e.g., when the one-time password is received from the user, in order to authenticate the user. Typically, the one-time password is stored in association with an identifier. When the one-time password is generated, the computer system can also generate the identifier and provide the identifier to the user. When the user (or a user device operated by the user) provides the one-time password to the computer system, the user or user device can also provide the identifier to the computer system. The computer system can use the identifier to look up the corresponding one-time password in the table and verify that the one-time password matches the provided one-time password.
[0008] This conventional one-time password authentication system has several security risks. If a network criminal or other malicious entity obtains the one-time password table, they can impersonate any legitimate user corresponding to the identifiers stored in the one-time password table using the identifiers. The network criminal can request "legitimate" one-time passwords from the computer system by impersonating users using the identifiers, which can enable the network criminal to access services or resources that the network criminal should not be able to access.
[0009] There are some techniques that can be used to secure such conventional one-time password systems. For example, the one-time passwords and identifiers can be stored in encrypted form. In this way, even if a network criminal obtains the encrypted one-time password table or the encrypted identifiers, they can not be able to decrypt and determine the one-time passwords or identifiers. In this case, the identifiers and one-time passwords must be encrypted during one-time password generation and decrypted during one-time password authentication. This can be a problem because encryption and decryption operations are typically time-consuming. For large volume one-time password authentication systems (e.g., associated with popular web services), it can not be feasible to perform such encryption and decryption operations and still generate and authenticate one-time passwords in a timely manner for a large number of users.
[0010] Embodiments, alone and in combination, solve these and other problems. SUMMARY
[0011] Embodiments of the present disclosure relate to novel methods and systems for generating, providing, and storing one-time passwords, and methods and systems for using the one-time passwords to authenticate users. After successfully authenticating those users, services can be provided to the users (or "client devices" operated by those users).
[0012] A client device can transmit a service request to a server computer, which service request can contain one or more data elements that can include a user identifier (e.g., data identifying a user) and an intent identifier (e.g., data identifying a user intent, such as data identifying a particular service that the user is attempting to access). The server computer can combine the one or more data elements in some manner (e.g., via concatenation) and hash the resulting combination using a hash function, thereby generating a hash. The server computer can generate a one-time password and store the one-time password in a data structure in association with the hash, such that the hash can be used later to "look up" or otherwise identify the one-time password.
[0013] The server computer can provide the one-time password to the user, e.g., by transmitting the one-time password to the client device or by transmitting the one-time password to another client device associated with the user. For example, if the user attempts to log in to a web service (such as a video-on-demand streaming service) using their laptop computer ("first client device"), the server computer can transmit the one-time password to the laptop computer, or can transmit the one-time password to a smartphone ("second client device") associated with the user, e.g., via a text message.
[0014] To complete the authentication process, the user device can transmit the one or more data elements to the server computer along with the one-time password. The server computer can combine the data elements and hash the resulting combination, thereby generating a second hash. The server computer can then use the second hash to look up the one-time password in the data structure and compare the one-time password to the one-time password received from the user. If the one-time passwords match, the computer system can authenticate the user. The server computer can then provide the service to the user, e.g., via the client device. This service can correspond to the intent identifier provided by the user. For example, if the user intent was to change their password for an online bank account, the server computer can cause the user to do so via the client device.
[0015] In more detail, one embodiment is directed to a method performed by a server computer. The server computer can receive, from a client device, a service request that includes one or more first data elements. The one or more first data elements can include a first user identifier. The server computer can hash the one or more first data elements using a hash function to form a first hash. The server computer can generate a first one-time password. The server computer can store the first one-time password in association with the first hash. The server computer can transmit the first one-time password to the first client device or a second client device. The server computer can receive, from the first client device or the second client device, a second one-time password and one or more second data elements. The one or more second data elements can include a second user identifier. The server computer can hash the one or more second data elements using the hash function to form a second hash. The server computer can use the second hash to determine the first one-time password. The server computer can compare the first one-time password to the second one-time password. Based on this comparison, the server computer can provide a service associated with the service request to the first client device.
[0016] Another embodiment is directed to a method performed by a client device. The client device can transmit a service request that includes one or more data elements. The one or more data elements can include a user identifier. A server computer can form a first hash using a hash function and the one or more data elements. The server computer can further generate a one-time password and can store the one-time password in association with the first hash. The client device can receive the one-time password from the server computer. The client device can transmit the one-time password and the one or more data elements to the server computer. The server computer can form a second hash using the hash function and the one or more data elements. The server computer can use the second hash to determine the stored one-time password. The server computer can compare the stored one-time password to the one-time password. The client device can receive a service provided by the server computer and corresponding to the service request. The server computer can provide the service to the client device based on comparing the stored one-time password to the one-time password.
[0017] Some other embodiments are directed to systems configured to perform these and other methods. For example, an embodiment is directed to a server computer comprising a processor and a non-transitory computer-readable medium coupled to the processor, the non-transitory computer-readable medium comprising code or instructions executable by the processor for performing one of the methods described above.
[0018] These and other embodiments of the present disclosure are described in detail below in the detailed description.
[0019] Terminology
[0020] A “server computer” can refer to a computer or cluster of computers. A server computer can be a powerful computing system, such as a large mainframe. A server computer can also include a cluster of smaller computers that act in concert to perform large computational tasks. In one example, a server computer can include a database server coupled to a web server. A server computer can include one or more computing devices and can use any of a variety of computing structures, arrangements, and compilations to service requests from one or more client devices.
[0021] A “client device” can include a device that accesses services available to a server computer. A server computer can be on another computer system, whereby a client device can access services by way of a network, such as the Internet. A client device can include a “client computer,” and the term “client” can refer to a program or computer hardware or software that accesses services available to a server computer, or can alternatively refer to an entity, such as a “user,” that owns and / or operates a client device. For example, a client can include a web browser operating on a client device. A client device can include a “user device.”
[0022] A “user” can refer to an entity that uses something for some purpose. An example of a user is a person that uses a “user device” or “mobile device.” A user device can refer to any device operated by a user, such as a smartphone, smartcard, wearable device, laptop, tablet, desktop computer, and the like.
[0023] “Memory” can refer to any suitable device or devices that can store electronic data. Suitable memory can include non-transitory computer-readable media that store instructions that are executable by a processor to implement a desired method. Examples of memory include one or more memory chips, disk drives, and the like. Such memory can operate using any suitable electrical, optical, and / or magnetic modes of operation.
[0024] A “processor” can refer to any suitable data computing device or devices. A processor can include one or more microprocessors that work together to accomplish desired functions. A processor can include a CPU that includes at least one high-speed data processor adequate to execute program components for executing user and / or system-generated requests. A CPU can be a microprocessor, such as AMD’s Athlon, Duron, and / or Opteron; IBM and / or Motorola’s PowerPC; IBM’s and Sony’s Cell processor; Intel's Celeron, Itanium, Pentium, Xenon, and / or XScale; and / or similar processors.
[0025] An“identifier” can refer to data that can be used to identify something. For example, a“device identifier” can refer to data that can be used to identify a device (such as an alphanumeric code), and a“user identifier” can refer to an identifier that can be used to identify a user (such as a given name).
[0026] A“one-time password” can refer to a password that has some limitation on its user. For example, as the name suggests, a one-time password can be a password that is valid for exactly one use. However, a one-time password can also refer to a password that can be used, for example, three times, five times, etc., or that can be valid for a certain period of time (e.g., 15 minutes, one day). As such, the qualifier“one-time” should not be interpreted literally in all cases.
[0027] A“hash function” can refer to a function that takes data of arbitrary size or length as input and produces data of fixed size or length as output. The output of a hash function can be referred to as a“hash value” or a“hash.” A hash function can be“collision-resistant” if it has a reduced likelihood of“hash collisions,” which can occur when two different inputs produce the same hash value. A hash function can be“secure” or“cryptographically secure” if it is difficult or impossible to determine the input to the hash function based on the output of the hash function.
[0028] A“data structure” can refer to any structure that can be used to store data. A“database,” a“data lake,” and a“data table” are examples of data structures. Generally, the term data structure can refer to a virtual structure used to store data as opposed to a physical structure. However, the term data structure can also refer to physical hardware used to store data. In some cases, a term such as“database” can refer to physical hardware or a data structure implemented using that hardware.
[0029] A“database” can refer to a structured collection of data that is saved or stored in a computer or other device. Alternatively, a database can refer to a device that saves such a structured collection of data. A“data record” can refer to a unit of data that is stored in a database. Data stored in a database can be in the form of a“data table,” an arrangement of data in rows, columns, or more complex structures. A data table can include“key-value” pairs, where a“value” (e.g., a numerical value, a string, or any other data) is associated with a corresponding“key” (e.g., a label that corresponds to those values). A database can be parsed (e.g., searched or queried) or sorted based on values corresponding to keys, for example, using a query language such as SQL.
[0030] A "hash table" can refer to a type of data table that uses hashing. In a hash table, the key in a key-value pair can include a hash value. As an example, for a phone book hash table, the key can include a hash value derived from those names using a hash function, rather than including a name. A value (e.g., a phone number) can be retrieved from a hash table by generating a hash based on some data (e.g., a name), then using the generated hash to resolve the hash table to find a corresponding record, then retrieving the value corresponding to that key and that record.
[0031] "Authentication" can refer to a process or action that proves or shows something as authentic, genuine, or valid. To authenticate a user can refer to a process of verifying the identity of a user, e.g., a process of verifying that a user is the person they claim to be.
[0032] A "cookie," "HTTP cookie," "web cookie," "browser cookie," and the like can refer to data that is generated by a web page and stored on a device, typically in association with a browser application operating on the device. BRIEF DESCRIPTION OF DRAWINGS
[0033] Figure 1 An example service system that can be used to provide services to users of client devices is shown.
[0034] Figure 2A An issuance phase of an example method for authenticating a user as part of a service request, in accordance with some embodiments, is shown.
[0035] Figure 2B An authentication phase of an example method for authenticating a user as part of a service request, in accordance with some embodiments, is shown.
[0036] Figure 3 An example client device, in accordance with some embodiments, is shown.
[0037] Figure 4 An example server computer, in accordance with some embodiments, is shown. DETAILED DESCRIPTION
[0038] As outlined above, embodiments of the present disclosure relate to novel methods and systems for one-time password authentication. Broadly, the authentication methods can include both an issuance phase and an authentication phase. During the issuance phase, a server computer (which can also be referred to as an "authentication computer" or a "one-time password management computer") can combine data elements received from a client device, such as a user identifier and an intent identifier, and use the resulting combination to generate a hash. The server computer can generate a one-time password and store that one-time password in a data structure, such as a hash table, using the hash as a key. The one-time password can be issued to the client device (or another client device).
[0039] Later, during the authentication phase, the client device can provide the data elements (e.g., the user identifier and the intent identifier) and the one-time password to the server computer. The server computer can again combine the data elements and hash the resulting combination to generate a hash, which is then used to identify the stored one-time password. The server computer can then compare the stored one-time password to the received one-time password in order to authenticate the user. Both the combination of multiple data elements to derive a hash value and the use of the hash value instead of a traditional key or identifier provide advantages over conventional one-time password authentication systems, as described in more detail below. In authenticating the user, the server computer can provide a service to the user, either directly or by enabling the user to receive a service from another server computer (e.g., from a "second server computer"), such as by providing access data that can enable the user to access a service provided by the other server computer.
[0040] Before describing embodiments of the present disclosure in more detail, some features and characteristics of one-time passwords, user identifiers, and intent identifiers according to embodiments are described below in order to facilitate a better understanding of the methods and systems according to embodiments.
[0041] In some embodiments, a one-time password can be associated with one or more "one-time password types," which can be labels, classifications, or other data elements that define a "type" corresponding to a given one-time password in some way. For example, a one-time password type can indicate that the corresponding one-time password is a single-use password and is only valid for a single authentication attempt. A different one-time password type can indicate that the corresponding one-time password is a "time-limited access" one-time password that is only valid during a specified time period. As another example, a one-time password type can indicate that the one-time password is an "escalated" or "privileged" one-time password, which indicates that the corresponding one-time password can be used to access a "privileged" service (described in more detail below) that would not normally be accessible with a "non-escalated" or "non-privileged" one-time password. Figure 1 In some embodiments, a one-time password can be associated with one or more "one-time password types," which can be labels, classifications, or other data elements that define a "type" corresponding to a given one-time password in some way. For example, a one-time password type can indicate that the corresponding one-time password is a single-use password and is only valid for a single authentication attempt. A different one-time password type can indicate that the corresponding one-time password is a "time-limited access" one-time password that is only valid during a specified time period. As another example, a one-time password type can indicate that the one-time password is an "escalated" or "privileged" one-time password, which indicates that the corresponding one-time password can be used to access a "privileged" service (described in more detail below) that would not normally be accessible with a "non-escalated" or "non-privileged" one-time password.
[0042] One-time password types can include data such as an alphanumeric code that identifies the type of one-time password. For example, a code such as "000:1" can indicate a single-use password, a code such as "000:3" can indicate a one-time password that is valid for three uses, a code such as "012:5" can indicate a one-time password that is valid for five minutes, a code such as "012:15" can indicate a one-time password that is valid for fifteen minutes, and a code such as "145:1" can indicate a boosted one-time password that is valid for a single use. A one-time password can have multiple corresponding one-time password types, and thus can correspond to multiple data elements or alphanumeric codes that indicate those types. For example, a one-time password with the type "145:1 / 012:15" can indicate that the one-time password is a boosted one-time password that is valid for a single use within the next fifteen minutes. It should be understood that the above alphanumeric codes are provided by way of example only, and that a wide variety of data can be used as one-time password types, including a wide variety of codes that conform to any suitable format.
[0043] In some embodiments, a one-time password can be stored in a data structure in association with its respective one-time password type and any other data that can facilitate authentication based on the one-time password. For example, if a user attempts to use a one-time password to authenticate and access a privileged service, an authentication computer (e.g., a server computer) can verify that the corresponding one-time password type indicates that the one-time password is valid for accessing the privileged service.
[0044] Examples of other data that can be stored in association with a one-time password include dynamic data such as a counter. The counter can include a number or other data that indicates the number of times the one-time password has been used. During authentication, an authentication computer can check the counter against, for example, the one-time password type to verify that the one-time password is still valid. After each authentication attempt (or each successful authentication attempt), the computer system can increment the counter so that it accurately reflects the total number of authentication attempts or the total number of authentications.
[0045] Another example of data that can be associated with (or stored in association with) a one-time password is a timestamp. The timestamp can indicate the time at which the one-time password was generated or issued and / or transmitted to the user device. During authentication, a computer system can use the timestamp and the current time to assess how much time has passed since the one-time password was generated (or issued). The computer system can compare this elapsed time to, for example, the time indicated by the one-time password type in order to determine whether the one-time password is still valid. As an alternative, the timestamp can correspond to the time at which the one-time password expires. During authentication, the timestamp can be compared to the current time to determine whether the one-time password is still valid.
[0046] It should be appreciated that these examples of other data that can be associated with or stored in association with one-time passwords are intended only as non-limiting examples, and other types of data can become apparent upon reading this disclosure.
[0047] Some methods according to embodiments can include a server computer combining data elements, such as a user identifier and a device identifier, and using the resulting combination to generate a hash value as part of a one-time password-based authentication process. In this regard, user identifiers and intent identifiers according to embodiments are described in greater detail below.
[0048] As defined above in the Terminology section, a user identifier can include data that can be used to identify a user. As an example, a user identifier can include a username, such as "John Doe 85," that can be generated by the corresponding user or generated and assigned to the user by a computer system, such as a server computer or another entity. Another example of a user identifier is an account number, such as a 16-digit payment account number associated with a credit card. Yet another example of a user identifier is a user email address, such as "John Doe@example.com." Other examples of user identifiers include a phone number and biometric data, such as a biometric generated by a user (e.g., a thumb scan or iris scan generated using a client device) or a biometric template derived from such biometric data. Another example of a user identifier is a cookie that can be stored on a user's browser and that can identify that user. There are a wide variety of user identifiers, and the user identifiers described above are intended only as non-limiting examples. In some embodiments, a user identifier can refer to one or more user identifiers, e.g., a "first user identifier" can include both a username and a phone number.
[0049] An "intent identifier" can include a data element, such as an alphanumeric string or code, that identifies a user's intent with respect to a service or service system in some manner. For example, an intent identifier such as "intent: ResetPassword" can indicate that a user is attempting to access a service in order to reset their password. Examples of intent identifiers include a "user registration intent identifier" (e.g., indicating that a user is attempting to register as a user of a service or service system), a "password recovery intent identifier" (e.g., indicating that a user is attempting to reset or recover their password), a "contact update intent identifier" (e.g., indicating that a user wants to update their contact information that is stored in association with a service or service system), a login intent identifier (e.g., indicating that a user wants to log in to a service system for access to general services provided by that service system, e.g., in order to watch a movie or television program provided by a video-on-demand streaming service), or a privileged service intent identifier (e.g., indicating that a user is attempting to access one or more privileged services). In some embodiments, a contact update intent identifier can include an email update intent identifier (indicating, e.g., that a user wants to update an email address associated with their account) and / or a phone number intent identifier (indicating, e.g., that a user wants to update a phone number associated with their account). In some embodiments, a privileged service intent identifier can include a key management intent identifier, which can indicate that a user wants to remove, add, or modify cryptographic keys used by a server computer or service system to perform its functions. For example, an administrator user can access a secure messaging service in order to update cryptographic keys used, e.g., to encrypt and decrypt messages, in the event that those cryptographic keys are compromised or otherwise no longer secure. There are a wide variety of intent identifiers corresponding to a wide variety of possible intents or services, and the intent identifiers described above are intended only as non-limiting examples. In some embodiments, an intent identifier can include one or more of the intent identifiers described above. For example, an intent identifier can include both a login intent identifier and a phone number update intent identifier indicating that a user is attempting to log in to their account and change a phone number associated with their account.
[0050] Having described one-time passwords, associated data, user identifiers, and intent identifiers according to embodiments, it is now described where systems according to embodiments can be useful. Figure 1 An example service system 108 is shown. Figure 1 It is intended to generally describe how authentication, particularly authentication based on one-time passwords, can be used to grant users (e.g., user 102) access to one or more services (e.g., non-privileged services 116 and / or privileged services 118) provided by service system 108. In the description that follows, Figure 1Both a service system according to embodiments of the present disclosure and a conventional service system are described in order to contrast embodiments of the present disclosure with conventional systems, thereby highlighting some of the advantages provided by embodiments of the present disclosure.
[0051] The service system 108 can include a network of computers, servers, and other devices associated with one or more services. Some of these services can include "primary services," e.g., services with which the service system 108 is primarily associated. For example, for a service system 108 associated with a video-on-demand streaming service, the primary services can include streaming video to client devices (e.g., the first client device 104 and the second client device 106) associated with the service system 108. As another example, for a service system 108 associated with an online bank, the primary services can include services associated with the online bank, e.g., viewing checking and savings account balances, paying credit card bills, etc. Figure 1 Two client devices (the first client device 104 and the second client device 106) are shown as being owned and / or operated by the user 102, however, it should be understood that a user such as the user 102 can own and / or operate any number of client devices. As another example, for a service system 108 associated with an online bank, these primary services can include services associated with the online bank, e.g., viewing checking and savings account balances, paying credit card bills, etc. However, while a service system 108 can be associated with a relatively small set of primary services, many service systems provide a variety of services in addition to their primary services. For example, in addition to the primary services of enabling users to stream television programs and movies to their client devices, a video streaming service system can also provide services that enable users to change their passwords or update their contact information.
[0052] Services provided by a service system such as the service system 108 can be divided into non-privileged services 116 and privileged services 118. The non-privileged services 116 can include services that are accessible by a user such as the user 102 without any "privileges" or with a small or minimal set of privileges. For example, a "contact information update service" can enable the user 102 to update contact information associated with their account (which can be stored in, e.g., the user repository 120). It should be understood that, in general, even a "non-privileged" service 116 can require some set of privileges to access; for example, the user 102 can need to log into their account in order to request a change to their contact information, whereby the user 102 can be "privileged" in the sense that they are an existing account holder, but the user can be "non-privileged" because the user 102 can access the contact information update service without needing to be an administrator or other privileged user.
[0053] Privileged services 118 can include services that a user needs a certain stronger set of privileges to access, such services 118 can be inaccessible to many of the users of the service system 108. For example, a video streaming service system can have a privileged "content control" service that enables an administrator (or other privileged user) to remove videos from the service, for example, in the event that the service loses the right to stream those videos, or in the event that those videos do not meet the content standards of the service. As another example, the service system 108 can have a privileged "user record access" service that can enable an administrator (or other privileged user) to access stored personally identifiable information corresponding to a particular user (e.g., stored in the user repository 120). Such a service can be privileged in order to protect the privacy of the user.
[0054] As such, many service systems, such as the example service system 108, can implement some form of access control in addition to password or one-time password based authentication. In some cases, a user, such as the user 102, can have a "privilege level" or "command level" that can indicate which services the user is permitted to access. For example, the user 102 can be able to access services that have a privilege level less than or equal to the privilege level of the user 102, and can not be able to access services that have a higher privilege level. The privilege level of the user 102 can be associated with a user record, for example, stored in a user repository, such as the user repository 120. When the user 102 attempts to access a particular service, the example service system 108 (or a computer component of such a service system 108) can access the user record corresponding to that user 102 in the user repository 120 in order to determine whether the user 102 is permitted to access the service. In some cases, accessing "more privileged" services can require more forms of authentication and / or different forms of authentication. For example, accessing a high privilege service can require three-factor authentication, while accessing a low privilege service can only require single-factor authentication.
[0055] Services provided by the service system 108 can be provided by one or more service provider computers (which can be more generally referred to as "server computers") 112 associated with the service system 108. However, in order to access such services, the user 102 can need to be authenticated by the service system 108. To this end, the user 102 can communicate with an authentication computer 114 (which can also be more generally referred to as a "server computer") via a client device, such as the first client device 104 and / or the second client device 106. In some embodiments, the client device and the authentication computer 114 can perform a one-time password based authentication process in order to authenticate the user 102 and enable the user 102 to access services provided by the service system 108.
[0056] Generally in larger systems, communication between computers and devices external to the system (e.g., first client device 104 and second client device 106) is arbitrated by gateways, firewalls, load balancers, reverse proxies, etc. (e.g., 110) or combinations thereof. Such systems can direct network traffic to their intended recipients, filter out unwanted or malicious service requests, balance load between servers such as service provider computers 112, and / or perform other similar functions. However, in some service systems, client devices can communicate directly with an authentication computer. As such, it should be understood that phrases such as "first client device 104 transmits a service request to authentication computer 114" are intended to describe both "direct" transmissions between first client device 104 and authentication computer 114 and "semi-direct" transmissions (e.g., via one or more internet relays and / or gateways 110), or some combination thereof.
[0057] Generally, in one-time password based authentication, service system 108 (or an element of the service system such as authentication computer 114) can generate a one-time password and transmit the one-time password to a client device operated by user 102. Authentication computer 114 can store the one-time password in a data structure such as one-time password database 122. Later, user 102 can then provide the one-time password back to service system 108 as a credential in order to complete authentication and access one or more services provided by the service system. Authentication computer 114 can retrieve the stored one-time password and compare the stored one-time password to the one-time password received from the client device. If the one-time passwords match, authentication computer 114 can authenticate user 102 and enable user to access services provided by, for example, service provider computers 112.
[0058] For service systems 108 in which one-time passwords are used as a form of multi-factor authentication, a one-time password can be transmitted to a client device other than the client device making the authentication request or service request. For example, if user 102 uses first client device 104 to initiate a service request, authentication computer 114 can transmit a one-time password to second client device 106. In this way, if user 102 is able to provide the one-time password back to the service system (e.g., via first client device 104), it indicates that user 102 has possession of second client device 106. If second client device 106 is known to be possessed or operated by user 102, possession of second client device 106 can indicate that user 102 is more likely to be the person they claim to be, and thus transmitting a one-time password to second client device 106 instead of first client device 104 can provide a stronger form of authentication.
[0059] As described above in the BACKGROUND, in conventional one-time password authentication systems, an identifier is typically generated in addition to a one-time password. The one-time password can be stored in a one-time password database, such as in the one-time password database 122 in association with this identifier, allowing the authentication computer 114 to later identify the one-time password, for example when comparing a stored one-time password with a received one-time password when authenticating the user 102. This one-time password can be provided to the client device. When the client device transmits the one-time password back to the service system to complete authentication, the client device can also transmit the identifier. Using the received identifier, the authentication computer 114 can retrieve the corresponding one-time password from the one-time password database 122 and compare this corresponding one-time password with the received password in order to authenticate the user 102.
[0060] This use of an identifier presents a security risk, as it requires the authentication computer 114 to securely store and transmit the identifier to the client device, and further requires the client device to securely store the identifier. If a network criminal, for example, gains access to the identifier by stealing it from the first client device 104, the second client device 106, or the authentication computer 114, or intercepting it during communication between the service system 108 and either client device, the network criminal can impersonate the user 102 or otherwise misuse the identifier.
[0061] For example, if a network criminal acquires a valid identifier, they can be able to use the identifier to request or otherwise acquire a valid one-time password, enabling the network criminal to use the one-time password to authenticate themselves as the user 102 and potentially gain access to resources, services, or data intended for the user 102. If a network criminal is able to generate valid one-time passwords (in addition to having access to an illicitly acquired identifier), the network criminal can be able to deceive the service system 108, for example accepting a one-time password generated for one purpose for a different purpose. In this way, a network criminal can impersonate an administrator, for example, using a stolen identifier (corresponding to the administrator, for example) and a one-time password generated for a non-privileged service (such as changing contact information) to access a privileged service, such as gaining access to personally identifiable information from the user repository 120. Thus, in conventional one-time password authentication systems, sensitive information needs to be protected when stored or transmitted to the user device. This can create additional security overhead, increase the complexity of one-time password authentication, and decrease the speed and efficiency of one-time password generation and authentication.
[0062] In contrast, in some embodiments of the present disclosure, no additional information, such as a new identifier generated by the authentication computer 114, needs to be securely transmitted to the first client device 104 or the second client device 106 and securely stored. Instead, as described below, a hash can be derived from data received from the client device in an authentication or service request, such as a user identifier and an intent identifier. This information can include non-private information, or information that is already known to the first client device 104, the second client device 106, and / or the authentication computer 114. Such a hash can be derived when a one-time password is issued to the client device and when the client device uses the one-time password during authentication, so there can be no need to store these hashes during this time. This is advantageous because it reduces security risks and overhead. A network criminal cannot obtain a hash and use the hash to impersonate the user 102 or otherwise compromise the service system 108.
[0063] In more detail, in some embodiments, a client device, such as the first client device 104, can send a service request that includes one or more data elements to a server computer, such as the authentication computer 114. The one or more data elements can include both a user identifier, such as a username or email address associated with the user 102, and an intent identifier. The intent identifier can specify an intent of the user 102 and can indicate which of the non-privileged service 116 and the privileged service 118 the user 102 is attempting to access. In addition to generating a one-time password, the authentication computer 114 can also combine and hash the user identifier, and optionally the intent identifier, to form a hash. The server computer can store the one-time password in association with the hash, for example, in the one-time password database 122. The server computer can store the one-time password in any appropriate data structure, such as a hash table stored in the one-time password database 122.
[0064] This is in contrast to conventional one-time password authentication systems that do not store one-time passwords in hash tables or other hash-based data structures. Unlike conventional one-time password authentication systems that store one-time passwords in plaintext, it is not possible for a network criminal to determine potentially sensitive information, such as a user identifier and an intent identifier, from corresponding hash values of that potentially sensitive information, even if the network criminal is able to obtain such hash values from the one-time password database 1122, because those hash values cannot be reversed to reconstruct the user identifier and the intent identifier.
[0065] Moreover, hashing is generally faster and more efficient than encryption and decryption, thereby providing speed and efficiency over conventional one-time password authentication systems that use encryption or decryption. Additionally, in conventional systems, if the cryptographic key used to encrypt the identifier and one-time password is stolen by a cyber criminal, those cyber criminals can decrypt and obtain the identifier and one-time password. In contrast, in embodiments, as long as the underlying hash function is secure, cyber criminals cannot determine any of the data elements (e.g., user identifier and intent identifier) used to generate the hash value.
[0066] After generating the one-time password and storing the one-time password in the one-time password database 122, the authentication computer (server computer) 114 can provide the one-time password to the first client device 104 or the second client device 106. For example, the authentication computer 114 can send the one-time password to an email address associated with the user 102 that the user 102 can access via the first client device 104 or the second client device 106.
[0067] In some embodiments, upon receiving the one-time password (or at some time thereafter), the user 102 can then transmit the one-time password back to the server computer (e.g., the authentication computer 114) along with one or more data elements (e.g., the user identifier and the intent identifier). The server computer can combine and hash the one or more data elements to form a hash, and then use the hash to look up the one-time password in the one-time password database 122. The server computer can then compare the received one-time password to the stored one-time password. If the received one-time password and the stored one-time password match, the server computer can authenticate the user 102, thereby enabling the user 102 to access the requested service via the first client device 104 and / or the second client device 106.
[0068] How the user 102 is granted access to a service can depend on how the service system 108 is designed. In smaller service systems 108 that can include a single server that performs both authentication functions and provides services, the server computer, such as the authentication computer 114, can also be the service provider computer 112 and itself can provide the requested service. In larger systems, the server computer can transmit access data, such as a cookie or a session key, which can enable the first client device 104 or the second client device 106 to communicate with a second server computer, e.g., the service provider computer 112, in order to receive the requested service. Thus, it should be understood that phrases such as "the server computer provides the service associated with the service request to the first client device 104" are intended to encompass both the server computer that directly provides the service and the server computer that performs actions that enable the service to be provided to the first client device 104, e.g., by transmitting access data to the first client device 104, thereby enabling the first client device 104 to receive the service from another server computer.
[0069] In many service systems, such as the example service system 108, it is generally preferred to control access to services in order to prevent users from accessing privileged services 118 that can not be permitted to be accessed by the user. Generally, it is preferred that a one-time password generated to access a particular service cannot be used to access other services (even other services of a similar privilege level) in order to control access to services. As described above, other access control methods and systems can be implemented in addition to one-time password based authentication, such as assigning privilege levels to users and services. Implementing such systems can add security overhead, thereby increasing the difficulty of one-time password implementations and the time required to authenticate a user using one-time passwords.
[0070] However, by using intent identifiers, embodiments of the present disclosure can provide an efficient "built-in" form of access control. As described above, in some embodiments, a server computer, e.g., the authentication computer 114, can use an intent identifier received from a user 102 (e.g., in conjunction with a user identifier) to generate a hash that can be stored in association with a generated one-time password. Such an intent identifier can correspond to the service that the user is attempting to access, e.g., a (non-privileged) password recovery service can have a different intent identifier than a (privileged) user repository access service.
[0071] Using intent identifiers in this manner is an efficient and built-in form of access control, as it prevents a one-time password corresponding to one service from being used to access other services. A user 102 can be issued a valid one-time password corresponding to a particular service request, but the user cannot use the one-time password to access other services because the intent identifier used in issuing the password and in authenticating the user will be different and will yield different hashes, thereby preventing authentication of the user 102 if the user 102 attempts to switch intent identifiers during authentication.
[0072] This is particularly useful if a network criminal has managed to impersonate an administrator or other privileged user but not necessarily obtain the full set of credentials required to access privileged services. In this case, the network criminal can attempt a workaround in which the network criminal requests a one-time password for a non-privileged service and then attempts to use the one-time password to access a privileged service. However, using the method according to embodiments, the network criminal will not be able to use a one-time password generated for a non-privileged service to access a privileged service because the hash derived from the intent identifier can not match even in the case of the same user identifier. In contrast, in a conventional system, another form of access control logic would be required to prevent the network criminal from using the one-time password for any service.
[0073] Furthermore, embodiments of the present disclosure generally promote system independence, as the hash value can be derived (in whole or in part) from information provided by the user 102, such as the user identifier and the intent identifier. As such, the authentication computer 114 does not need to access other information to derive the hash value, such as information stored in the user store 120. As such, the user store 120 and the one-time password database 122 can be "loosely coupled" or even "uncoupled," i.e., information stored in one does not affect (or minimally affects) the functionality or security of the other.
[0074] This loose coupling can provide further security benefits. If the one-time password data structure (e.g., stored in the one-time password database 122) or the user store 120 is compromised by a network criminal, the network criminal cannot access or determine any data stored in the other data structure. Furthermore, system independence makes it easier to implement, maintain, or modify individual subsystems of the service system 108. Changes made to the user store 120 (or other subsystems) do not require changes to the one-time password database 122 or the authentication computer 114, thus making it easier to modify or upgrade individual elements of the service system 108. The user store 120 or other subsystems can be completely removed and replaced without interrupting the functionality of the authentication computer 114.
[0075] Both a conventional service system and a service system according to embodiments of the present disclosure have been described with reference to Figure 2A and Figure 2B diagrams to describe a method for authenticating a user 202 using a one-time password. This authentication process can be associated with a "service request" associated with the user 202, such as a request to access a service provided by a service system, such as an example service system 108 from Figure 1 When the one-time password based authentication is successful, the user 202 can be able to access the service.
[0076] The one-time password authentication method can generally be divided into an issuance phase (described with reference to Figure 2A ) and an authentication phase (described with reference to Figure 2B ). The issuance phase can generally include the server computer 208 generating a first one-time password 218 and issuing the first one-time password 218 to the user 202. The authentication phase can generally include the server computer 208 receiving a second one-time password 222 from the user 202, authenticating the user 202 by, for example, verifying that the second one-time password 222 matches the first one-time password 218. The server computer 208 can optionally provide a service to the user 202. In some cases, the server computer 208 providing a service to the user 202 can include enabling the user 202 to access the service, rather than directly providing the service, for example, by enabling the user 202 to receive the service from a second server computer 210 (which can for example include a service provider computer as depicted in Figure 1 ).
[0077] With reference to Figure 2A , at step S230, a first client device 204 (e.g., a user device operated by a user, such as a laptop, tablet, smartphone, desktop computer, video game console, smart television, etc.) can collect or receive (e.g., at step S232) any data needed to form or otherwise generate a service request. Such a service request can include one or more first data elements 212, which can include a first user identifier and a first intent identifier. As such, at step S230, the first client device 204 can collect or receive some or all of these one or more first data elements 212.
[0078] In some embodiments, the first client device 204 can receive the first user identifier via user input generated by the user 202 of the first client device 204. For example, using a touchscreen or keyboard on a smartphone first client device 204, the user 202 can enter the first user identifier, such as an email address. In some other embodiments, the first client device 204 can access the first user identifier via a browser or another application operating on the first client device 204. For example, if the user 202 is using a browser operating on the first client device 204 to attempt to access a service, the browser can securely store the email address (or another suitable first user identifier) of the user 202, and the first client device 204 can be able to access that email address from the browser. There are a wide variety of possible first user identifiers, including the examples described further above. In some embodiments, the first user identifier can include one or more of a username, an account number, a user email address, a user phone number, a biometric, or a cookie.
[0079] Similarly, in some embodiments, the first client device 204 can also derive the first intent identifier from, for example, input generated by the user 202 of the first client device 204 or from data stored by the first client device 204, such as data associated with a browser or another application operating on the first client device 204, such as an application associated with the requested service, e.g., a video-on-demand streaming application, a mobile banking application, etc. As an example, the user 202 can use a mouse connected to a laptop first client device 204 to click on a "forgot my password" button on a web page associated with the service system. Thereby, the first client device 204 (or a browser operating on the first client device 204) can infer that the user's intent is password reset and can determine a corresponding first intent identifier, which can take the form of, for example, a string such as "ResetPassword" or another suitable alphanumeric string, code, or other data. As another example, the user 202 can use a touchscreen of a smartphone first client device 204 to click on a "user registration" button on a video-on-demand streaming application operating on the first client device 204. Thereby, the first client device 204 (or the application operating on the first client device 204) can determine a first intent identifier, such as "userRegistration" or any other suitable data that can be used to identify that the user 202 is attempting to register as a user of the service. There are a wide variety of possible intent identifiers, such as the examples provided above. In some embodiments, the first intent identifier can include one or more of: a "user registration intent identifier," a "password recovery intent identifier," a "contact update intent identifier," a "login intent identifier," or a "privileged service intent identifier." In some embodiments, the contact update intent identifier can include an email update intent identifier and / or a phone number update intent identifier. In some embodiments, the privileged service intent identifier can include a key management intent identifier indicating, for example, that the user 202 wants to remove, add, or modify a cryptographic key used by the server computer 208 (or an associated service system). In some embodiments, the first intent identifier can include a "user registration intent identifier." In some embodiments, the first intent identifier can include a "password recovery intent identifier." In some embodiments, the first intent identifier can include a "contact update intent identifier." In some embodiments, the first intent identifier can include a "login intent identifier." In some embodiments, the first intent identifier can include a "privileged service intent identifier." Figure 2A In the example, the one or more first data elements 212 include a first user identifier "JohnDoe@example.com" and a first intent identifier "userRegistration."
[0080] In some embodiments, the one or more first data elements 212 can additionally include one or more first dynamic data elements, which can include, for example, a first counter. Dynamic data elements, such as the first counter, can provide additional security and can be useful in situations in which the first client device 204 is periodically or repeatedly authenticated to the server computer 208. For example, the server computer 208 can track (as a security feature) the number of times that the first client device 204 requests issuance of a one-time password, and dynamic data such as the first counter can reflect the number of times that the first client device 204 has requested a one-time password from the server computer 208. As an alternative, a “one-time password” generated by the server computer 208 can include, for example, a limited-use password that is valid for three uses. The first counter can indicate the number of times that the one-time password, such as the one-time password 218, has been used. Later, during authentication, the server computer 208 can evaluate the first counter (e.g., to verify that the first counter matches a counter stored on the server computer 208) and increment the first counter. If the first counter exceeds a predetermined number of uses (e.g., three), the server computer 208 can be unable to authenticate the user 202.
[0081] At step S232, the first client device 204 can generate or otherwise form a service request that includes the one or more first data elements 212. The service request can take any form that is capable of transmitting or otherwise communicating the one or more first data elements 212 to the server computer 208. The form of the service request can be determined by, for example, an application or browser operating on the first client device 204, and can be formatted in any appropriate manner as, for example, a list of first data elements, such as an ordered list of one or more first user identifiers, one or more first intent identifiers, and one or more first dynamic data elements.
[0082] At step S234, the first client device 204 can transmit the service request to the server computer 208, which can include, for example, an authentication computer, such as from Figure 1authentication computer 114 (sometimes also referred to as a "one-time password management computer"). The first client device 204 can use any suitable means to transmit the service request including the one or more first data elements 212 to the server computer 208. For example, if the first client device 204 is operating a browser application, the HTTP "POST" or "GET" method can be used to transmit the service request to the server computer 208. As another example, if the first client device 204 is operating a secure online banking application, the secure online banking application can establish a secure and encrypted communication channel with the server computer 208, and the first client device 204 can transmit the service request to the server computer 208 via the secure and encrypted communication channel. The first client device 204 can transmit the service request directly or via any number of relays, routers, firewalls, gateways, reverse proxies, etc.
[0083] Upon receiving the service request from the first client device 204, the server computer 208 can combine (e.g., concatenate) the one or more first data elements 212, generating a first combination 214 at step S236. This first combination 214 can depend on the number of first data elements included in the one or more first data elements 212. For example, in some embodiments, the one or more first data elements 212 can include a single first user identifier, whereby the first combination 214 can include the single first user identifier. In other embodiments, the one or more first data elements 212 can include the first user identifier and a first intent identifier, whereby the first combination 214 can include a combination of the first user identifier and the first intent identifier. In other embodiments, the one or more first data elements 212 can include the first user identifier, the first intent identifier, and one or more first dynamic data elements including a first counter, whereby the first combination 214 can include a combination of the first user identifier, the first intent identifier, the first counter, and the one or more other first dynamic data elements.
[0084] As Figure 2AAs depicted, the exemplary first combination 214 includes the concatenation of the user identifier “JohnDoe@example.com” and the intent identifier “userRegistration”, i.e., “JohnDoe@example.com+userRegistration”. However, the server computer 208 can generate the first combination 214 in a wide variety of ways at step S236, and a brief list of examples is provided below. As described above, the server computer 208 can generate the first combination 214 by concatenating one or more first data elements 212. As another example, one or more first data elements 212 can be combined by interleaving the alphanumeric characters defining each first data element in the first data elements 212. As yet another example, one or more first data elements 212 can be combined by performing a bitwise XOR operation between the bits defining each first data element in the one or more first data elements 212. Other combination techniques will become apparent to those skilled in the art upon reading this disclosure.
[0085] At step S238, server computer 208 can generate a first hash 216 by hashing one or more first data elements 212. In some embodiments, hashing one or more first data elements 212 may include hashing a first combination 214. Server computer 208 may use any suitable hash function to hash one or more first data elements 212 or the first combination 214. In some embodiments, the hash function may include an MD hash function, a SHA hash function, a BLAKE hash function, a MAC-based hash function, or a CRC-based hash function. Later (e.g., in step S242), server computer 208 may store a first one-time password 218 in association with the first hash 216 in a one-time password data structure 220 (e.g., a hash table).
[0086] At step S240, the server computer 208 may generate a first one-time password 218 (or more generally, a "one-time password" 218). The one-time password 218 may be referred to as the first one-time password 218 in order to distinguish it from one-time passwords received from the first client device 204 or the second client device 206 (e.g., in...). Figure 2B At step S250, this one-time password can be referred to as the "second one-time password" 222. Typically, one-time passwords such as the first one-time password 218 consist of six digits (e.g., 123456, etc.). Figure 2AA one-time password such as the first one-time password 218 can include a number, an alphanumeric string, or any other appropriate data (e.g., a QR code). In embodiments of the present disclosure, however, a one-time password such as the first one-time password 218 can include a number, an alphanumeric string, or any other appropriate data (e.g., a QR code). The server computer 208 can generate the first one-time password 218 at step S240 using any appropriate means. For example, the server computer 208 can randomly generate a number or alphanumeric string and use the random number or alphanumeric string as the first one-time password 218. Randomly generating a one-time password can make it more difficult for cyber criminals to generate their own illegitimate one-time passwords.
[0087] Generating the first one-time password 218 can also include generating supplemental data associated with the first one-time password 218. For example, the server computer 208 can generate a timestamp associated with the first one-time password 218. This timestamp can indicate the time at which the server computer 208 generated the first one-time password 218, which can be useful when later authenticating the user 202 using a received one-time password. For example, if the first one-time password 218 is only valid for fifteen minutes, the server computer 208 can check the current time against the timestamp when the second one-time password 222 (which can be the same as the first one-time password 218) is received from the first client device 204 in order to determine whether the second one-time password 222 is still valid. Other examples of data that can be generated with the first one-time password 218 include a first one-time password type or data indicating a first one-time password type, such as the alphanumeric code described above.
[0088] In some embodiments, the server computer 208 can generate the first one-time password 218 based on an intent corresponding to the first intent identifier received in the service request received by the server computer 208 at step S232. In some cases, it can be preferable to have different authentication criteria when attempting to access different services (e.g., privileged services versus non-privileged services). As such, the server computer 208 can determine an intent (e.g., indicating which service the user 202 is attempting to access) based on the first intent identifier, and generate the first one-time password 218 based on the intent. For example, if the server computer 208 determines that the user 202 is attempting to access a low-security or low-privilege service, the server computer 208 can generate the first one-time password 218 having a corresponding low-security one-time password type. The first one-time password 218 can include, for example, a shorter alphanumeric string, and can be valid for a longer period of time and / or a higher number of uses. In contrast, if the server computer 208 determines that the user 202 is attempting to access a high-security or high-privilege service, the server computer 208 can generate the first one-time password 218 having a corresponding high-security one-time password type. This first one-time password 218 can include, for example, a longer alphanumeric string, and can be valid for a shorter period of time and / or for a single use.
[0089] At step S242, the server computer 208 can store the first one-time password 218 in association with the first hash 216 in a one-time password data structure 220, which can be stored, for example, in a one-time password database (such as the one-time password database 122 of Figure 1 In some embodiments, the server computer 208 can store the one-time password record in a key-value table, where the first one-time password 218 comprises the value associated with the one-time password record, and the first hash 216 comprises the key associated with the one-time password record. In some embodiments, the one-time password data structure 220 can comprise a hash table. Storing the first one-time password 218 in the one-time password data structure 220 can enable the server computer 208 to retrieve the one-time password 218 at a later time and compare it to the received second one-time password 222 in order to authenticate the user 202.
[0090] In some embodiments, the first one-time password 218 can be stored in addition to other data, such as a one-time password type, a timestamp, an expiration limit (e.g., indicating a duration for which the one-time password is valid), a maximum use count (e.g., indicating a total number of times the one-time password 218 can be used before expiring), or any other appropriate data. When authenticating the user 202, the server computer 208 can use this data to determine whether a received one-time password is still valid.
[0091] As described above with reference to the service system 108 Figure 1 Storing the one-time password in a hash table is more secure than storing in plaintext, as used in many conventional one-time password authentication systems, because the non-invertible hash can prevent a cybercriminal or other malicious entity from gaining access to potentially sensitive data such as a user identifier or intent identifier. Additionally, storing the one-time password in a hash table is more efficient than encryption storage techniques used in some conventional one-time password authentication systems, because this eliminates the need to perform computationally expensive encryption and decryption operations. Furthermore, the use of hashing enables the method according to embodiments to be used with a wide variety of user identifiers, intent identifiers, and other data.
[0092] Additionally, as described above, storing the one-time password in association with the hash value generated using the intent identifier, in addition to the user identifier and other data, provides an efficient and built-in form of access control. A user such as the user 202 cannot use the one-time password for multiple different services (with corresponding different intent identifiers) because this can result in a hash mismatch, resulting in authentication failure. This contrasts with some conventional one-time password authentication systems in which a one-time password can be associated with a single identifier, and further forms of access control can be required to prevent a user from using a one-time password generated for one service to access other services. Furthermore, the use of a hash function eliminates the need to generate, issue, store, and protect potentially sensitive information, because the hash can be generated during the issuance phase (e.g., as described above) and during the authentication phase (further described below), thereby eliminating the need for the server computer 208 to store potentially sensitive information such as a user identifier or intent identifier during this time.
[0093] At step S242, the server computer 208 can transmit the first one-time password 218 to the first client device 204 or the second client device 206. Typically, in one-time password authentication, a one-time password such as the first one-time password 218 can be sent to a client device other than the client device that initiated the service request or authentication request. For example, if the user 202 attempts to log in to a video-on-demand streaming service using their laptop (e.g., the first client device 204), the video-on-demand streaming service can send a text message containing the one-time password to the user’s smartphone (e.g., the second client device 206). In this way, the video-on-demand streaming service can verify that the user 202 has access to both client devices associated with the user 202. However, the first one-time password 218 can also be transmitted directly back to the first client device 204. If required, the first one-time password 218 can be transmitted in encrypted form.
[0094] Later, during an (described below with reference to Figure 2B authentication phase, the user 202 can provide a second one-time password 222 back to the server computer 208. If the user is attempting to authenticate with the server computer 208 legitimately, this second one-time password 222 can be the first one-time password 218 received from the server computer 208 at step S244. The server computer 208 can compare the second one-time password 222 to the first one-time password 218 stored in the one-time password data structure 220 to authenticate the user 202. If the second one-time password 222 matches the first one-time password 218, the user 202 can be authenticated.
[0095] At any time during the issuance phase, the server computer 208 can access the one-time password data structure 220 and manage (e.g., evaluate, add, or remove) the one-time passwords or one-time password data records stored therein. For example, the server computer 208 can periodically evaluate the one-time passwords in the one-time password data structure 220 to determine whether those one-time passwords have expired or are no longer valid, e.g., by evaluating the associated timestamps, the associated expiration limits, the current time, etc. If the server computer 208 determines that a one-time password has expired, the server computer 208 can remove that one-time password (and any associated data, such as the timestamp and expiration limit) from the one-time password data structure 220. This can be useful because it can free up memory and one-time passwords, enabling that memory and one-time passwords to be used for other users.
[0096] Having issued the first one-time password 218 to the user 202 by the first client device 204 or the second client device 206, the server computer 208 and one or more client devices can perform the below-described authentication phase with reference to Figure 2B If the user 202 is successfully authenticated during the authentication phase, the server computer 208 (which in some embodiments can include the first server computer 208) and / or the second server computer 210 can provide services to the first client device 204 and / or the second client device 206 (e.g., at step S260).
[0097] If desired, at step S246, the user 202 can retrieve the second one-time password 222 from the second client device 206. This step can be performed, for example, if the server computer 208 transmits the first one-time password 218 to the second client device 206 instead of the first client device 204. For example, if the server computer transmits the first one-time password 218 to the smartphone second client device 206 in a text message, the user 202 can retrieve the second one-time password 222 from the second client device 206 by reading the second one-time password 222 from the display of the second client device 206. Ideally (i.e., in terms of successful authentication of the user 202, but not for the method generally according to the embodiments), the second one-time password 222 comprises the first one-time password 218. However, for any reason, the second one-time password 222 can not match the first one-time password 218 (e.g., transmission error, user mistyped, etc.). The terms first one-time password 218 and second one-time password 222 are generally intended to distinguish between a one-time password generated by the server computer 208 and stored in the one-time password data structure 220 (i.e., the first one-time password 218), and a one-time password received from the first client device 204 (or the second client device 206) and compared to the first one-time password 218 for authenticating the user 202 (i.e., the second one-time password 222).
[0098] Similar to step S230, at step S248, the first client device 204 can collect or receive one or more second data elements 224 that can later be provided to the server computer 208 along with the second one-time password 222 in order to authenticate the user 202. The one or more second data elements 224 can include a second user identifier and a second intent identifier associated with the service request that can be collected by the first client device 204 at step S248. In addition, in some embodiments, the one or more second data elements 224 can include one or more second dynamic data elements including a second counter.
[0099] In some embodiments, the second user identifier can include one or more of a username, an account identifier, a user email address, a user phone number, a cookie, or a biometric feature. In some embodiments, the first client device 204 can receive the second user identifier via input generated by the user 202 of the first client device 204 (e.g., via a touchscreen, keyboard, or other input device). Alternatively, the first client device 204 can retrieve the second user identifier from an application such as a browser operating on the first client device 204. In some embodiments, the second intent identifier can include one or more of a user registration intent identifier, a password recovery intent identifier, a contact update intent identifier, a login intent identifier, or a privileged service intent identifier. In some embodiments, the contact update intent identifier can include an email update intent identifier and / or a phone number update intent identifier. In some embodiments, the privileged service intent identifier can include a key management intent identifier. The first client device 204 can receive the second intent identifier via input generated by the user 202 of the first client device 204 or, for example, via a browser or other application running on the first client device 204.
[0100] Ideally (in the context of a successful one-time password-based authentication, but not for the embodiment as a whole), the one or more second data elements 224 include the one or more first data elements 212, the second user identifier includes the first user identifier, and the second intent identifier includes the first intent identifier. If this is the case, the server computer 208 can generate (e.g., at step S252) the second combination 226 that is the same as the first combination 214 generated at the issuance stage (e.g., at step S236), which can enable the server computer 208 to identify the relevant first one-time password 218 stored in the one-time password data structure 220, thereby enabling the server computer 208 to successfully authenticate the user 202 by comparing the first one-time password 218 to the second one-time password 222.
[0101] At step S250, a client device (e.g., the first client device 204 or the second client device 206) can transmit the second one-time password 222 and the one or more second data elements 224 to the server computer 208. As described above, the one or more second data elements 224 can include a second user identifier and a second intent identifier. The first client device 204 or the second client device 206 can transmit the one or more second data elements 224 and the second one-time password 222 to the server computer 208 using any suitable means, e.g., via a browser or via another application operating on the first client device 204 or the second client device 206.
[0102] Upon receiving the one or more second data elements 224 and the second one-time password 222 from the first client device 204 (or the second client device 206), the server computer 208 can combine (e.g., concatenate) the one or more second data elements 224 at step S252, thereby generating a second combination 226. The second combination 226 can depend on the number of second data elements included in the one or more second data elements 224. For example, the one or more second data elements 224 can include a single second user identifier, whereby the second combination 226 can include the single second user identifier. In other embodiments, the one or more second data elements 224 can include the second user identifier and a second intent identifier, whereby the second combination 226 can include a combination of the second user identifier and the second intent identifier. In other embodiments, the one or more second data elements 224 can include the second user identifier, the second intent identifier, and one or more second dynamic data elements including a second counter, whereby the second combination 226 can include a combination of the second user identifier, the second intent identifier, the second counter, and the one or more other second dynamic data elements. In some embodiments, combining the one or more second data elements 224 can include concatenating the one or more second data elements 224. However, other combination methods (such as the methods described above with reference to Figure 2A the first combination 214.
[0103] At step S254, the server computer 208 can generate a second hash 228 by hashing the one or more second data elements 224. In some embodiments, hashing the one or more second data elements 224 can include hashing the second combination 226. The server computer 208 can use any appropriate hash function to hash the second combination 226 or the one or more second data elements 224. In some embodiments, the hash function can include an MD hash function, an SHA hash function, a BLAKE hash function, a MAC-based hash function, or a CRC-based hash function. In some embodiments, the second hash 228 can include the first hash 216, for example, if the second combination 226 is identical to the first combination 214, which can occur, for example, if the one or more second data elements 224 are identical to the one or more first data elements 212.
[0104] At step S256, the server computer 208 can use the second hash 228 to determine the first one-time password 218 (also referred to as the "stored one-time password"). In some embodiments, the server computer 208 can use the second hash 228 as a key to identify a one-time password record stored in the one-time password data structure 220. The server computer 208 can then use the one-time password data record to determine the first one-time password 218. The server computer 208 can also determine or retrieve any other data that can be used to authenticate the user 202, such as a counter, an expiration limit, a timestamp, etc., as described above.
[0105] In some embodiments, if the server computer 208 does not identify the first one-time password 218 stored in the one-time password data structure 220, the server computer 208 can terminate the authentication phase. In some embodiments, the server computer 208 can transmit an error message to the first client device 204 or the second client device 206 indicating that the authentication phase failed.
[0106] At step S258, the server computer 208 can attempt to authenticate the user 202, for example, by comparing the first one-time password 218 (also referred to as the "stored one-time password") with the second one-time password 222 (also referred to as the "received one-time password" or more generally as the "one-time password"). If the one-time passwords match, the server computer 208 can successfully authenticate the user 202. During step S258, the server computer 208 can also perform other verification operations in order to authenticate the user 202. For example, if the first one-time password 218 is only valid for a certain number of uses (e.g., three), the server computer 208 can compare the value of a counter (e.g., the second counter or the first counter) to the total number of uses. If the value of the counter exceeds the total number of uses, the server computer 208 can reject the authentication attempt and transmit an error message, error code, or other indicator (to the first client device 204 or the second client device 206) indicating this, e.g., stating or indicating that the provided one-time password has expired.
[0107] At step S260, based on comparing the first one-time password 218 to the second one-time password 222, the server computer 208 can provide a service associated with the service request to the first client device 204 or the second client device 206. In this way, the client device (and, by extension, the user 202) can receive the service provided by the server computer. In some embodiments, the server computer 208 can comprise a first server computer 208 that can not directly provide the service to the first client device 204 or the second client device 206. Instead, the first server computer 208 can transmit access data, thereby enabling the client device to access the service provided by a second server computer 210. The second server computer 210 can provide the service in response to receiving the access data from the first client device 204 or the second client device 206.
[0108] At any time during the authentication phase, the server computer 208 can access the one-time password data structure 220 and manage (e.g., evaluate, add, or remove) the one-time passwords or one-time password data records stored therein. For example, once the first one-time password 218 has been compared to the second one-time password 222, the server computer 208 can evaluate whether the first one-time password 218 is still valid, and if not, the server computer 208 can delete the first one-time password 218 from the one-time password data structure 220.
[0109] The client device can be better understood with reference to Figure 3 which illustrates an exemplary client device 300 that includes a processor 302, a communication interface 304, a user interface 306, and a computer- readable medium 308. The computer-readable medium 308 can be non-transitory and coupled to the processor 302. The computer-readable medium 308 can contain data, code, and / or software modules that can be used by the client device 300 to implement some of the methods according to the embodiments. These data, code, and / or software modules can include a communication module 310, a browser 312, a service application 314, a user identifier 316, an intent identifier 318, a dynamic data element 320, and a one-time password 322. It should be understood that the selection of particular software modules is primarily for the purpose of explaining some of the methods, steps, or operations according to the embodiments, and Figure 3 A large number of configurations of the effective client device 300 are shown, only one of which is illustrated.
[0110] The processor 302 can include any suitable one or more data computation devices. The processor 302 is capable of interpreting code and executing instructions stored on the computer-readable medium 308. The processor 302 can include a central processing unit (CPU) operating on a reduced instruction set, and can include a single core or multiple cores. The processor 302 can also include an arithmetic logic unit (ALU) and a cache memory.
[0111] The communication interface 304 can include any interface that the client device 300 can use to communicate with other devices or computers, such as a server computer. Examples of communication interfaces include wired interfaces, such as USB, Ethernet, or Firewire, and wireless interfaces, such as Bluetooth or Wi-Fi receivers. The client device 300 can have multiple communication interfaces 304. As an example, the client device 300 can communicate over a wireless cellular interface as well as a USB port.
[0112] The client device 300 can also include a user interface 306, which can include an interface by which the client device 300 can receive user input. For example, the user interface can include a touchscreen or keyboard, enabling a user to input, for example, a user identifier 316, an intent identifier 318, or a one-time password 322 to the client device 300.
[0113] The communication module 310 can include code, software, or instructions that can be interpreted and executed by the processor 302. This software can be used by the client device 300 to communicate with other computers, devices, and entities, such as with a server computer or other computers and devices in a service system, such as the service system 108 in Figure 1 Specifically, the client device 300 can use the communication module 310 to transmit a service request (including, for example, a user identifier 316, an intent identifier 318, and dynamic data elements 320) to a server computer, receive a one-time password from the server computer, and transmit the one-time password to the server computer.
[0114] The browser 312 can include a web browser (an application that can be used to access websites). The browser 312 can be used by the client device 300 to access web-based services provided by a server computer, and can be used by the client device 300 to communicate with the server computer (e.g., in conjunction with the communication module 310).
[0115] The service applications 314 can include applications used by the client device 300 (e.g., in conjunction with the communication module 310 and / or the browser 312) to communicate with server computers. For example, for a server computer associated with an online banking service, the service applications 314 can include an online banking application used by a user operating the client device 300 to access the service.
[0116] For example, as described above, the user identifiers 316 can be provided by the client device 300 to a server computer during a one-time password based authentication method. These user identifiers 316 can be stored on the computer readable medium 308. In some cases, these user identifiers 316 can be stored in association with the browser 312 or the service applications 314, e.g., as a cookie associated with the browser 312. Likewise, the intent identifiers 318 can be provided by the client device 300 to a server computer during authentication, and can be stored on the computer readable medium 308, e.g., in association with the browser 312 or the service applications 314. Similarly, the dynamic data elements 320 can include data elements, such as counters or timestamps, that can be provided to a server computer during authentication, and can be stored on the computer readable medium 308, e.g., in association with the browser 312 or the service applications 314. The computer readable medium 308 can likewise store the one-time password 322, which can be provided to a server computer to authenticate a user of the client device 300, and can be stored in association with the browser 312 or the service applications 314. If desired, the user identifiers 316, the intent identifiers 318, the dynamic data elements 320, and the one-time password 322 can be stored in a secure memory.
[0117] The server computer can be better understood with reference to Figure 4 which illustrates an example server computer 400 including a processor 402, a communication interface 404, and a computer readable medium 406. The computer readable medium 406 can be non-transitory and coupled to the processor 402. The computer readable medium 406 can contain data, code, and / or software modules that can be used by the server computer 400 to implement some of the methods according to the embodiments. These data, code, and / or software modules can include a communication module 408, a combination module 410, a hash module 412, a one-time password generation module 414, a one-time password data structure 416, a data structure management module 418, a one-time password comparison module 420, and a service module 422. It should be understood that the selection of particular software modules is primarily for the purpose of explaining some of the methods, steps, or operations according to the embodiments, and Figure 4 Only one of a large number of configurations of the effective server computer 400 is shown.
[0118] The processor 402 can include any suitable data computing device or devices. The processor 402 is capable of interpreting code and executing instructions stored on the computer-readable medium 406. The processor 402 can include a central processing unit (CPU) operating on a reduced instruction set, and can include a single-core or multi-core processor. The processor 402 can also include an arithmetic logic unit (ALU) and a cache memory.
[0119] The communication interface 404 can include any interface that the server computer 400 can use to communicate with other devices or computers, such as client devices. Examples of communication interfaces include wired interfaces, such as USB, Ethernet, or Firewire, and wireless interfaces, such as Bluetooth or Wi-Fi receivers. The server computer 400 can have multiple communication interfaces 404. As an example, the server computer 400 can communicate over an Ethernet interface as well as a USB port.
[0120] The communication module 408 can include code, software, or instructions that can be interpreted and executed by the processor 402. This software can be used by the server computer 400 to communicate with other computers, devices, and entities, such as client devices or other computers and devices in a service system, such as the service system 108 in Figure 1 . In particular, the server computer 400 can use the communication module 408 to receive a service request from a client device, including one or more data elements, such as a user identifier, an intent identifier, and a dynamic data element. Further, the server computer 400 can use the communication module 408 to transmit a one-time password to the client device and receive the one-time password from the client device.
[0121] The combination module 410 can include code, software, or instructions that can be interpreted and executed by the processor 402. This software can be used by the server computer 400 to combine data elements received from a client device, such as a user identifier and an intent identifier, using techniques such as concatenation. Likewise, the hash module 412 can include code, software, or instructions that can be interpreted or executed by the processor 402 for generating a hash using a hash function and combined data elements (which can be generated using the combination module 410). The one-time password generation module 414 can include code or instructions that can be executed by the processor 402 for generating a one-time password, which can include a software routine or method for generating a random number.
[0122] The one-time password data structure 416 can include a data structure, such as a database, data table, or hash table, for storing generated one-time passwords in association with respective hashes of the generated one-time passwords. The server computer 400 can use the data structure management module 418 to manage the one-time password data structure 416, for example, to identify, add, or remove one-time passwords from the one-time password data structure 416. Although the one-time password data structure 416 is shown as being stored on the computer-readable medium 406, in some embodiments, the one-time password data structure 416 can be implemented external to the computer-readable medium 406, for example, in an external one-time password database, such as the one-time password database 122 in Figure 1 The server computer 400 can use the one-time password comparison module 420 to compare a received one-time password to a stored one-time password in the one-time password data structure 416, for example, for authenticating a user of a client device. In some cases, the server computer 400 can use the service module 422 to provide a service to the user via the user’s client device. For example, the server computer 400 can use the service module 422 to stream video data to the client device as part of a video on-demand streaming service.
[0123] Any of the computer systems mentioned herein can utilize any suitable number of subsystems. In some embodiments, a computer system includes a single computer device, where the subsystems can be departments of the computer device. In other embodiments, a computer system can include multiple computer devices, each of which can be a subsystem with internal departments.
[0124] A computer system can include a number of components or subsystems, for example, connected together by an external interface or by an internal interface. In some embodiments, a computer system, subsystem, or device can communicate over a network. In such cases, a computer can be considered a client, and another computer can be considered a server, where each computer can be part of a same computer system. A client and a server can each include multiple systems, subsystems, or components.
[0125] It should be understood that any of the embodiments of the present application can be implemented in the form of control logic using hardware (e.g. an application specific integrated circuit or field programmable gate array) and / or using computer software with a associated central processing unit such as a processor or using a combination of hardware and software. As used herein, a processor includes a single core processor, a plurality of core processor on a same integrated chip, or multiple processing units on a single circuit board or networked. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and / or methods to implement embodiments of the present application using hardware and a combination of hardware and software.
[0126] Any of the software components or functions described in this application can be implemented as software code to be executed by a processor using any suitable computer language such as, for example, Java, C, C++, C#, Objective-C, Swift, or scripting language such as Perl or Python using, for example, conventional or object-oriented techniques. The software code can be stored as a series of instructions or commands on a computer readable medium for storage and / or transmission, such as a
[0127] Such a computer readable medium can be any medium, or combination of media, able to store such software code for instruction execution by a computer. A computer readable medium can be, by way of example, but not limited to, ROM, RAM, magnetically readable medium such as hard disks, optical readable medium such as CD ROMs, and / or flash memory. The computer readable medium can be resident within a single computer system or distributed among multiple computer systems. The computer readable medium can be a computer disc, hard drive, or other storage device.
[0128] Any of the methods described herein can be totally or partially performed with a computer system including, for example, a processor, a storage medium and possibly an input device and / or an output device. For example, the methods can be partially or totally implemented in software instructions. The software instructions can be stored in a computer readable medium, for example, a hard disk, a CD, a RAM, a floppy disk, a USB key, a flash memory, a register, an optical storage, a magnetic storage or any other storage medium known in the art. The software instructions can be executed by one or more processors.
[0129] Specific details of particular embodiments can be combined in any suitable manner without departing from the spirit and scope of embodiments of the invention. However, other embodiments of the invention can involve every combination of one or more of the individual aspects or particular combinations of these individual aspects. The above description of exemplary embodiments of the invention has been presented for the purpose of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form described, and many modifications and variations are possible in light of the teaching above. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application to thereby enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular purpose contemplated.
[0130] The above description is illustrative and not restrictive. Many variations of the invention will become apparent to those of skill in the art upon reading the foregoing disclosure. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the pending claims along with their full scope or equivalents.
[0131] One or more features of any embodiment can be combined with one or more features of any other embodiment without departing from the scope of the invention.
[0132] The recitation "one" or "the" is intended to mean "one or more" unless specifically indicated to the contrary. The use of "or" is intended to mean "inclusive or" and not "exclusive or" unless specifically indicated to the contrary.
[0133] All patents, patent applications, publications, and descriptions mentioned herein are incorporated by reference in their entirety for all purposes. None is admitted to be prior art.
Claims
1. A method comprising: A server computer receives a service request from a first client device, which includes one or more first data elements, wherein the one or more first data elements include a first user identifier. The server computer uses a hash function to hash the one or more first data elements to form a first hash. The server computer generates the first one-time password; The first one-time password is stored by the server computer in association with the first hash; The server computer sends the first one-time password to the first client device or the second client device; The server computer receives a second one-time password and one or more second data elements from the first client device or the second client device, wherein the one or more second data elements include a second user identifier; The server computer uses the hash function to hash the one or more second data elements to form a second hash. The server computer uses the second hash to determine the first one-time password; The server computer compares the first one-time password with the second one-time password. as well as Based on the comparison between the first one-time password and the second one-time password, the server computer provides the service associated with the service request to the first client device.
2. The method of claim 1, wherein the one or more first data elements include one or more first dynamic data elements, the one or more first dynamic data elements include a first counter, and wherein the one or more second data elements include one or more second dynamic data elements, the one or more second dynamic data elements including a second counter.
3. The method as described in claim 1, wherein the hash function includes MD hash function, SHA hash function, BLAKE hash function, MAC-based hash function, or CRC-based hash function.
4. The method of claim 1, wherein the first one-time password comprises an alphanumeric string, and wherein generating the first one-time password comprises randomly generating the alphanumeric string by the server computer.
5. The method of claim 1, wherein: Before hashing the one or more first data elements, the method further includes having the server computer combine the one or more first data elements to generate a first combination, wherein hashing the one or more first data elements includes hashing the first combination; and Before hashing the one or more second data elements, the method further includes combining the one or more second data elements by the server computer to generate a second combination, wherein hashing the one or more second data elements includes hashing the second combination.
6. The method of claim 5, wherein: Combining the one or more first data elements includes concatenating the one or more first data elements by the server computer; and Combining the one or more second data elements includes concatenating the one or more second data elements by the server computer.
7. The method of claim 1, wherein storing the first one-time password in association with the first hash comprises the server computer storing the one-time password record in a key-value table, wherein the first one-time password comprises a value associated with the one-time password record, and the first hash comprises a key associated with the one-time password record.
8. The method of claim 7, wherein using the second hash to determine the first one-time password comprises: The server computer uses the second hash as a key to identify the one-time password record; as well as The server computer uses the one-time password record to determine the first one-time password.
9. The method of claim 1, wherein the one or more first data elements include a first intent identifier associated with the service request, and wherein the one or more second data elements include a second intent identifier associated with the service request.
10. The method of claim 9, wherein the method further comprises the server computer determining an intent based on the first intent identifier, and wherein the server computer generates the first one-time password based on the first intent identifier.
11. The method of claim 9, wherein the one or more first data elements and the one or more second data elements are identical.
12. The method of claim 9, wherein the first user identifier and / or the second user identifier comprises one or more of the following: username; Account identifier; User email address; User's phone number; cookie; or Biological characteristics.
13. The method of claim 9, wherein the first intent identifier and / or the second intent identifier comprises one or more of the following: User registration intent identifier; Password recovery intent identifier; Contact update intent identifier; Login intent identifier; or Privileged service intent identifier.
14. The method of claim 13, wherein the one-time password is sent to the second client device.
15. The method of claim 14, wherein the first client device is a laptop computer and the second client device is a mobile phone.
16. A server computer, comprising: processor; as well as A non-transitory computer-readable medium coupled to the processor, the non-transitory computer-readable medium including code or instructions executable by the processor to perform a method comprising: Receive a service request from a first client device, which includes one or more first data elements, wherein the one or more first data elements include a first user identifier; Use a hash function to hash the one or more first data elements to form a first hash; Generate the first one-time password; The first one-time password is stored in association with the first hash; Send the first one-time password to the first client device or the second client device; Receive a second one-time password and one or more second data elements from the first client device or the second client device, wherein the one or more second data elements include a second user identifier; The hash function is used to hash the one or more second data elements to form a second hash; The second hash is used to determine the first one-time password; Compare the first one-time password with the second one-time password; and Based on comparing the first one-time password with the second one-time password, the service associated with the service request is provided to the first client device.
17. A method comprising: A service request comprising one or more data elements is sent from a client device to a server computer, wherein the one or more data elements include a user identifier, wherein the server computer uses a hash function and the one or more data elements to form a first hash, wherein the server computer generates a one-time password, and wherein the server computer stores the one-time password in association with the first hash; The one-time password is received by the client device from the server computer; The client device sends the one-time password and the one or more data elements to the server computer, wherein the server computer uses the hash function and the one or more data elements to form a second hash, wherein the server computer uses the second hash to determine the stored one-time password, and wherein the server computer compares the stored one-time password with the one-time password. as well as The client device receives a service provided by the server computer and corresponding to the service request, wherein the server computer provides the service to the client device based on comparing a stored one-time password with the one-time password.
18. The method of claim 17, wherein the server computer includes a first server computer, and wherein receiving the service provided by the server computer includes: The client device receives access data from the first server computer that enables the client device to access the service. as well as The client device sends the access data to the second server computer in order to access the service.
19. The method of claim 17, further comprising, before sending the service request to the server computer: The user identifier is accessed by the client device via a browser or another application operating on the client device.
20. The method of claim 17, further comprising, before sending the service request to the server computer: The user identifier is received by the client device via user input generated by the user of the client device.