GENERATING A RANDOM VERIFICATION CODE FOR A TRANSACTION
A device receives, from a user device, a request to generate a verification code for a transaction associated with a user of the user device, and receives user profile information associated with a transaction card to be used for the transaction. The device generates a random verification code for the transaction based on the request and the user profile information, and authenticates the random verification code, based on the user profile information, to generate an authenticated random verification code. The device provides the authenticated random verification code to the user device, and receives transaction information, including the authenticated random verification code, from a merchant device associated with the transaction. The device validates the transaction based on the transaction information, and provides, to the merchant device associated with the transaction, information indicating that the transaction is validated.
A user utilizing a transaction card (e.g., a credit card, a debit card, and/or the like) to make an online purchase is required to provide transaction card information, such as a transaction card number, a cardholder name on the transaction card, mailing address information of the cardholder, and a card verification value (CVV), which may be accessed from a front side or a back side of the transaction card. If this transaction card information is misappropriated by a person other than the cardholder, the person may utilize the transaction card to make illicit purchases until the cardholder discovers that the transaction card information was misappropriated and reports the misappropriation.
SUMMARYAccording to some implementations, a device may include one or more memories, and one or more processors configured to receive, from a user device, a request to generate a verification code for a transaction associated with a user of the user device, and receive user profile information associated with a transaction card to be used for the transaction. The one or more processors may generate a random verification code for the transaction based on the request and the user profile information, and may authenticate the random verification code, based on the user profile information, to generate an authenticated random verification code. The one or more processors may provide the authenticated random verification code to the user device, and may receive transaction information, including the authenticated random verification code, from a merchant device associated with the transaction. The one or more processors may validate the transaction based on the transaction information, and may provide, to the merchant device associated with the transaction, information indicating that the transaction is validated.
According to some implementations, a non-transitory computer-readable medium may store instructions that include one or more instructions that, when executed by one or more processors of a device, cause the one or more processors to receive user profile information associated with generating a verification code for a transaction card to be used for a transaction. The transaction and the transaction card may be associated with a user of a user device, and the user profile information may include one or more of information identifying the transaction card, information identifying an account associated with the transaction card, information indicating that the verification code is to be used for the transaction, information indicating that the verification code is to be used for a particular time period, or information indicating the particular time period. The one or more instructions may cause the one or more processors to receive, from the user device, a request to generate the verification code for the transaction, and generate a random verification code for the transaction based on the request and the user profile information. The one or more instructions may cause the one or more processors to authenticate the random verification code, based on the user profile information, to generate an authenticated random verification code, and provide the authenticated random verification code to the user device. The one or more instructions may cause the one or more processors to receive transaction information, including the authenticated random verification code, from a merchant device associated with the transaction, and validate the transaction based on the transaction information. The one or more instructions may cause the one or more processors to provide, to the merchant device associated with the transaction, information indicating that the transaction is validated, and provide, to the user device, information confirming that the transaction is complete.
According to some implementations, a method may include receiving, by a device and from a user device, a request to generate a verification code for a transaction associated with a user of the user device, wherein a transaction card, associated with the user, may be used for the transaction and may not include the verification code. The method may include generating, by the device, the verification code for the transaction based on the request and based on user profile information, wherein the user profile information may be associated with the transaction card, and wherein the user profile information may include information indicating that the verification code is valid for the transaction for a particular time period. The method may include authenticating, by the device and based on the user profile information, the verification code to generate an authenticated verification code, and providing, by the device, the authenticated verification code to the user device. The method may include receiving, by the device and from a merchant device associated with the transaction, transaction information that includes the authenticated verification code, and determining, by the device and based on the transaction information, that the verification code is being utilized for the transaction within the particular time period. The method may include validating, by the device, the transaction based on determining that the verification code is being utilized for the transaction within the particular time period, and providing, by the device and to the merchant device associated with the transaction, information indicating that the transaction is validated.
The following detailed description of example implementations refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements.
By the time the cardholder discovers that transaction card information has been misappropriated, the person who misappropriated the transaction card information may have illegally used the transaction card to obtain goods, services, and/or money. When the cardholder discovers the misappropriation, the cardholder is required to contact an issuing financial institution and report the misappropriation. The cardholder must physically contact the issuing financial institution via telephone, which may be burdensome and time consuming.
Some implementations described herein provide a transaction platform that generates a random verification code for a transaction. For example, the transaction platform may receive, from a user device, a request to generate a verification code for a transaction associated with a user of the user device, and may receive user profile information associated with a transaction card to be used for the transaction. The transaction platform may generate a random verification code for the transaction based on the request and the user profile information, and may authenticate the random verification code, based on the user profile information, to generate an authenticated random verification code. The transaction platform may provide the authenticated random verification code to the user device, and may receive transaction information, including the authenticated random verification code, from a merchant device associated with the transaction. The transaction platform may validate the transaction based on the transaction information, and may provide, to the merchant device, information indicating that the transaction is validated.
As further shown in
As further shown in
As shown in
As further shown in
Instead, as further shown in
As shown in
As further shown in
In some implementations, the random number generator may include one or more of a pseudorandom number generator, a hardware random number generator, a cryptographically-secure pseudorandom number generator, and/or a random number generator that uses external entropy. In some implementations, the verification code may include three digits, four digits, a user-configurable number of digits, alphanumeric characters, and/or the like.
The pseudorandom number generator may generate a sequence of numbers whose properties approximate properties of sequences of random numbers. A sequence generated by the pseudorandom number generator is not truly random, because it is completely determined by an initial value, called a seed (which may include truly random values) of the pseudorandom number generator. Although sequences that are closer to truly random may be generated using hardware random number generators, pseudorandom number generators may quickly generate numbers and are reproducible.
The hardware random number generator may generate random numbers from a physical process, rather than a computer program. The hardware random number generator may be based on microscopic phenomena that generate low-level, statistically random noise signals. The hardware random number generator may include a transducer to convert some aspect of a physical phenomenon to an electrical signal, an amplifier and other electronic circuitry to increase an amplitude of random fluctuations to a measurable level, and some type of analog to digital converter to convert output into a digital number, often a simple binary digit. The hardware random number generator may generate a series of random numbers by repeatedly sampling a randomly varying signal.
The cryptographically-secure pseudorandom number generator may include properties that make the generator suitable for use in cryptography. In some implementations, the cryptographically-secure pseudorandom number generator may utilize entropy obtained from a high-quality source to generate random numbers. For example, the cryptographically-secure pseudorandom number generator may use a randomness application program interface (API) of an operating system. From an information-theoretic point of view, an amount of randomness that can be generated by the cryptographically-secure pseudorandom number generator may be equal to an entropy provided by a system.
The random number generator that uses external entropy may gather data from one or more external entropy sources and may utilize the gathered data to generate random number data. For example, a random number generator that uses external entropy may include CryptGenRandom, which is a cryptographically secure pseudorandom number generator function. As another example, a random number generator that uses external entropy may include Fortuna, which is a cryptographically secure pseudorandom number generator system that includes a generator (e.g., that produces an indefinite quantity of pseudorandom data), an entropy accumulator (e.g., that collects genuinely random data from various sources and uses the data to reseed the generator when enough new randomness has arrived), and a seed file (e.g., that stores enough state to enable the system to start generating random numbers). As yet another example, a random number generator that uses external entropy may include the Yarrow generator, which is a cryptographic pseudorandom number generator system that includes an entropy accumulator, a reseed mechanism, a generation mechanism, and a reseed control.
In this way, the transaction platform may utilize one or more random number generators to generate the verification code. In some implementations, the transaction platform may select which one or more of the random number generators to utilize based on the request to generate the verification code, the user profile information, and/or the like. In some implementations, the transaction platform may utilize multiple random number generators, may weight results of the multiple random number generators, and may combine the results to obtain a final result (e.g., the verification code).
As further shown in
As shown in
As further shown in
In some implementations, the user device and the merchant device may utilize one or more encryption techniques to encrypt and provide secure communications between the user device and the merchant device. In some implementations, the one or more encryption techniques may include a Rivest-Shamir-Adleman (RSA) encryption technique, a Diffie-Hellman encryption technique, a digital signature algorithm (DSA) encryption technique, an ElGamal encryption technique, an elliptic-curve cryptography (ECC) encryption technique, an elliptic curve digital signature algorithm (ECDSA) encryption technique, an efficient and compact subgroup trace representation (XTR) encryption technique, and/or the like.
The RSA encryption technique may include a type of public-key cryptosystem. A public-key cryptosystem employs a public encryption key (e.g., an encryption key that can be used by anyone) to encrypt the data, and employs a private decryption key (e.g., a decryption key that is kept secret) such that only someone who has the private key can decrypt the data. In some implementations, a user of the RSA encryption technique may create and then publish a public key based on two large prime numbers, along with an auxiliary value. The prime numbers are kept secret. Anyone can use the public key to encrypt a message, but (with currently published methods) if the public key is large enough, only someone with knowledge of the prime numbers can decode the message.
The Diffie-Hellman encryption technique may include a method of securely exchanging cryptographic keys in which two parties that have no prior knowledge of each other can jointly establish a shared secret key over an insecure channel, and the key can then be used to encrypt subsequent communications using a symmetric key cipher. For example, in a Diffie-Hellman key encryption technique, each party may generate a public/private key pair and distribute the public key. After obtaining an authentic copy of each of the public keys, the parties can compute a shared secret offline. The shared secret can be used, for instance, as the key for a symmetric cipher.
The DSA encryption technique may utilize the Federal Information Processing Standard (FIPS) for digital signatures. The DSA encryption technique may be used by a signatory to generate a digital signature on data and by a verifier to verify an authenticity of the signature. In this case, each signatory may have a public key and a private key. The private key is used in the signature generation process and the public key is used in the signature verification process. For both signature generation and signature verification, the data (i.e., a message) is reduced by means of a secure hash algorithm (e.g., the Secure Hash Algorithm (SHA) specified in FIPS 180-1). An adversary, who does not know the private key of the signatory, cannot generate the correct signature of the signatory. However, by using the signatory's public key, anyone can verify a correctly signed message.
The ElGamal encryption technique may include an asymmetric key encryption technique for public-key cryptography that is based on the Diffie-Hellman encryption technique. The ElGamal encryption technique may provide an additional layer of security by asymmetrically encrypting keys previously used for symmetric message encryption.
The ECC encryption technique may include a form of public-key cryptography based on an algebraic structure of elliptic curves over finite fields. For elliptic curve-based protocols, finding a discrete logarithm of a random elliptic curve element with respect to a publicly known base point is assumed to be infeasible. This is known as the elliptic curve discrete logarithm problem (ECDLP). The security of elliptic curve cryptography depends on the ability to compute a point multiplication and the inability to compute a multiplicand given an original and product points. The ECC encryption technique may require smaller keys compared to non-ECC cryptography to provide equivalent security.
The ECDSA encryption technique may include a technique that is a variant of the DSA encryption technique and that employs the ECC encryption technique. The ECDSA encryption technique utilizes a discrete logarithm problem of classical computers for computation hardness.
The XTR encryption technique may include a technique that makes use of traces to represent and calculate powers of elements of a subgroup of a finite field. For example, the XTR encryption technique may include an algorithm for public-key encryption that represents elements of a subgroup of a multiplicative group of a finite field. Unlike many cryptographic protocols that are based on a generator of a full multiplicative group of a finite field, the XTR encryption technique uses a generator of a relatively small subgroup of some prime order of a subgroup. From a security point of view, the XTR encryption technique relies on the difficulty of solving discrete logarithm related problems in a multiplicative group of a finite field.
In this way, the user device and merchant device may utilize one or more of the aforementioned encryption techniques to provide secure communications between the user device and the merchant device. In some implementations, the user device and/or the merchant device may select which one or more of the encryption techniques to utilize based on an amount of the transaction, preferences provided by the user of the user device, preferences provided by the merchant, and/or the like.
In some implementations, the transaction platform may establish secure communications with the merchant device. In such implementations, the transaction platform and/or the merchant device may utilize the one or more encryption techniques, described elsewhere herein, to encrypt and provide secure communications between the transaction platform and merchant device.
As further shown in
In some implementations, the authenticated verification code may be associated with the user and accessible to the transaction platform by associating the authenticated verification code with a record associated with an account of the user once the verification code is generated and/or authenticated. In such implementations, the record may be similar to records utilized by existing systems to associate a CVV with a transaction card or an account, such that the transaction platform may dynamically configure or update the record. The authenticated verification code may then be validated in a manner similar to a manner in which a CVV is validated, but based on the dynamically configured or updated record.
As further shown in
As shown in
As shown in
In some implementations, the browser may include a browser extension, a browser plugin, and/or the like that automatically requests the verification code from the transaction platform whenever a verification code field (e.g., a CVV field) appears in a transaction form. In such implementations, the browser extension and/or browser plugin may automatically populate the transaction form (e.g., a CVV field) with the authenticated verification code.
As shown in
As shown in
In this way, several different stages of the process for generating a random verification code for a transaction are automated, which may remove human subjectivity and waste from the process, and which may improve speed and efficiency of the process and conserve computing resources (e.g., processing resources, memory resources, and/or the like). Furthermore, implementations described herein use a rigorous, computerized process to perform tasks or roles that were not previously performed or were previously performed using subjective human intuition or input. For example, currently there does not exist a technique to generate a random verification code for a transaction. Finally, automating the process for generating a random verification code for a transaction conserves computing resources (e.g., processing resources, memory resources, and/or the like) that would otherwise be wasted in attempting to generate a random verification code for a transaction.
As indicated above,
User device 210 includes one or more devices capable of receiving, generating, storing, processing, and/or providing information, such as information described herein. For example, user device 210 may include a mobile phone (e.g., a smart phone, a radiotelephone, etc.), a laptop computer, a tablet computer, a desktop computer, a handheld computer, a gaming device, a wearable communication device (e.g., a smart wristwatch, a pair of smart eyeglasses, etc.), or a similar type of device. In some implementations, user device 210 may receive information from and/or transmit information to transaction platform 220 and/or merchant device 240.
Transaction platform 220 includes one or more devices that generate a random verification code for a transaction associated with user device 210 and/or merchant device 240. In some implementations, transaction platform 220 may be designed to be modular such that certain software components may be swapped in or out depending on a particular need. As such, transaction platform 220 may be easily and/or quickly reconfigured for different uses. In some implementations, transaction platform 220 may receive information from and/or transmit information to one or more user devices 210 and/or merchant devices 240.
In some implementations, as shown, transaction platform 220 may be hosted in a cloud computing environment 222. Notably, while implementations described herein describe transaction platform 220 as being hosted in cloud computing environment 222, in some implementations, transaction platform 220 may not be cloud-based (i.e., may be implemented outside of a cloud computing environment) or may be partially cloud-based.
Cloud computing environment 222 includes an environment that hosts transaction platform 220. Cloud computing environment 222 may provide computation, software, data access, storage, etc. services that do not require end-user knowledge of a physical location and configuration of system(s) and/or device(s) that hosts transaction platform 220. As shown, cloud computing environment 222 may include a group of computing resources 224 (referred to collectively as “computing resources 224” and individually as “computing resource 224”).
Computing resource 224 includes one or more personal computers, workstation computers, server devices, or other types of computation and/or communication devices. In some implementations, computing resource 224 may host transaction platform 220. The cloud resources may include compute instances executing in computing resource 224, storage devices provided in computing resource 224, data transfer devices provided by computing resource 224, etc. In some implementations, computing resource 224 may communicate with other computing resources 224 via wired connections, wireless connections, or a combination of wired and wireless connections.
As further shown in
Application 224-1 includes one or more software applications that may be provided to or accessed by user device 210 and/or merchant device 240. Application 224-1 may eliminate a need to install and execute the software applications on user device 210 and/or merchant device 240. For example, application 224-1 may include software associated with transaction platform 220 and/or any other software capable of being provided via cloud computing environment 222. In some implementations, one application 224-1 may send/receive information to/from one or more other applications 224-1, via virtual machine 224-2.
Virtual machine 224-2 includes a software implementation of a machine (e.g., a computer) that executes programs like a physical machine. Virtual machine 224-2 may be either a system virtual machine or a process virtual machine, depending upon use and degree of correspondence to any real machine by virtual machine 224-2. A system virtual machine may provide a complete system platform that supports execution of a complete operating system (“OS”). A process virtual machine may execute a single program, and may support a single process. In some implementations, virtual machine 224-2 may execute on behalf of a user (e.g., a user of user device 210 and/or merchant device 240, or an operator of transaction platform 220), and may manage infrastructure of cloud computing environment 222, such as data management, synchronization, or long-duration data transfers.
Virtualized storage 224-3 includes one or more storage systems and/or one or more devices that use virtualization techniques within the storage systems or devices of computing resource 224. In some implementations, within the context of a storage system, types of virtualizations may include block virtualization and file virtualization. Block virtualization may refer to abstraction (or separation) of logical storage from physical storage so that the storage system may be accessed without regard to physical storage or heterogeneous structure. The separation may permit administrators of the storage system flexibility in how the administrators manage storage for end users. File virtualization may eliminate dependencies between data accessed at a file level and a location where files are physically stored. This may enable optimization of storage use, server consolidation, and/or performance of non-disruptive file migrations.
Hypervisor 224-4 may provide hardware virtualization techniques that allow multiple operating systems (e.g., “guest operating systems”) to execute concurrently on a host computer, such as computing resource 224. Hypervisor 224-4 may present a virtual operating platform to the guest operating systems, and may manage the execution of the guest operating systems. Multiple instances of a variety of operating systems may share virtualized hardware resources.
Network 230 includes one or more wired and/or wireless networks. For example, network 230 may include a cellular network (e.g., a fifth generation (5G) network, a long-term evolution (LTE) network, a third generation (3G) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a telephone network (e.g., the Public Switched Telephone Network (PSTN)), a private network, an ad hoc network, an intranet, the Internet, a fiber optic-based network, and/or the like, and/or a combination of these or other types of networks.
Merchant device 240 includes a device that conducts and completes a transaction at a time and place of the transaction. For example, merchant device 240 may include a point-of-sale (PoS) device, a mobile phone, a laptop computer, a tablet computer, a desktop computer, a handheld computer, a wearable communication device, or a similar type of device. Merchant device 240 may calculate an amount owed by a customer, may indicate that amount, may prepare an invoice for the customer, and may indicate options for the customer to make payment. Merchant device 240 may be point at which a customer makes a payment to a merchant in exchange for goods or after provision of a service. After receiving payment, merchant device 240 may issue a printed or an electronic receipt for the transaction.
The number and arrangement of devices and networks shown in
Bus 310 includes a component that permits communication among the components of device 300. Processor 320 is implemented in hardware, firmware, or a combination of hardware and software. Processor 320 is a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or another type of processing component. In some implementations, processor 320 includes one or more processors capable of being programmed to perform a function. Memory 330 includes a random access memory (RAM), a read only memory (ROM), and/or another type of dynamic or static storage device (e.g., a flash memory, a magnetic memory, and/or an optical memory) that stores information and/or instructions for use by processor 320.
Storage component 340 stores information and/or software related to the operation and use of device 300. For example, storage component 340 may include a hard disk (e.g., a magnetic disk, an optical disk, a magneto-optic disk, and/or a solid state disk), a compact disc (CD), a digital versatile disc (DVD), a floppy disk, a cartridge, a magnetic tape, and/or another type of non-transitory computer-readable medium, along with a corresponding drive.
Input component 350 includes a component that permits device 300 to receive information, such as via user input (e.g., a touch screen display, a keyboard, a keypad, a mouse, a button, a switch, and/or a microphone). Additionally, or alternatively, input component 350 may include a sensor for sensing information (e.g., a global positioning system (GPS) component, an accelerometer, a gyroscope, and/or an actuator). Output component 360 includes a component that provides output information from device 300 (e.g., a display, a speaker, and/or one or more light-emitting diodes (LEDs)).
Communication interface 370 includes a transceiver-like component (e.g., a transceiver and/or a separate receiver and transmitter) that enables device 300 to communicate with other devices, such as via a wired connection, a wireless connection, or a combination of wired and wireless connections. Communication interface 370 may permit device 300 to receive information from another device and/or provide information to another device. For example, communication interface 370 may include an Ethernet interface, an optical interface, a coaxial interface, an infrared interface, a radio frequency (RF) interface, a universal serial bus (USB) interface, a Wi-Fi interface, a cellular network interface, and/or the like.
Device 300 may perform one or more processes described herein. Device 300 may perform these processes based on processor 320 executing software instructions stored by a non-transitory computer-readable medium, such as memory 330 and/or storage component 340. A computer-readable medium is defined herein as a non-transitory memory device. A memory device includes memory space within a single physical storage device or memory space spread across multiple physical storage devices.
Software instructions may be read into memory 330 and/or storage component 340 from another computer-readable medium or from another device via communication interface 370. When executed, software instructions stored in memory 330 and/or storage component 340 may cause processor 320 to perform one or more processes described herein. Additionally, or alternatively, hardwired circuitry may be used in place of or in combination with software instructions to perform one or more processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.
The number and arrangement of components shown in
As shown in
As further shown in
As further shown in
As further shown in
As further shown in
As further shown in
As further shown in
As further shown in
Process 400 may include additional implementations, such as any single implementation or any combination of implementations described below and/or described with regard to any other process described herein.
In some implementations, the user profile information may include information identifying the transaction card, information identifying an account associated with the transaction card, information indicating that the verification code is to be used for the transaction, information indicating that the verification code is to be used for a particular time period, and/o information indicating the particular time period. In some implementations, the transaction platform may utilize a random number generator to generate the random verification code, wherein the random number generator may include a pseudorandom number generator, a hardware random number generator, a cryptographically-secure pseudorandom number generator, and/or a random number generator that uses external entropy. In some implementations, the user device may include a mobile device, and the transaction platform may receive the request to generate the verification code from a mobile device application associated with the mobile device, and may provide the authenticated random verification code to the mobile device via the mobile device application or a text message.
In some implementations, the user device may include a computer device, and the transaction platform may receive the request to generate the verification code from a browser application associated with the computer device, and may provide the authenticated random verification code to the computer device via the browser application, a browser extension, a browser plugin, or an email. In some implementations, the user device may include a mobile device, and the transaction platform may receive the request to generate the verification code from a call initiated by the mobile device, and may provide the authenticated random verification code to the mobile device via an interactive voice response to the call. In some implementations, the user device may include a smart device, and the transaction platform may receive the request to generate the verification code from the smart device based on a voice command provided to the smart device, and may provide the authenticated random verification code to the smart device via a voice response. In some implementations, the verification code may include a card verification value.
Although
Some implementations described herein provide a transaction platform that generates a random verification code for a transaction. For example, the transaction platform may receive, from a user device, a request to generate a verification code for a transaction associated with a user of the user device, and may receive user profile information associated with a transaction card to be used for the transaction. The transaction platform may generate a random verification code for the transaction based on the request and the user profile information, and may authenticate the random verification code, based on the user profile information, to generate an authenticated random verification code. The transaction platform may provide the authenticated random verification code to the user device, and may receive transaction information, including the authenticated random verification code, from a merchant device associated with the transaction. The transaction platform may validate the transaction based on the transaction information, and may provide, to the merchant device, information indicating that the transaction is validated.
The foregoing disclosure provides illustration and description, but is not intended to be exhaustive or to limit the implementations to the precise form disclosed. Modifications and variations are possible in light of the above disclosure or may be acquired from practice of the implementations.
As used herein, the term component is intended to be broadly construed as hardware, firmware, or a combination of hardware and software.
Certain user interfaces have been described herein and/or shown in the figures. A user interface may include a graphical user interface, a non-graphical user interface, a text-based user interface, or the like. A user interface may provide information for display. In some implementations, a user may interact with the information, such as by providing input via an input component of a device that provides the user interface for display. In some implementations, a user interface may be configurable by a device and/or a user (e.g., a user may change the size of the user interface, information provided via the user interface, a position of information provided via the user interface, etc.). Additionally, or alternatively, a user interface may be pre-configured to a standard configuration, a specific configuration based on a type of device on which the user interface is displayed, and/or a set of configurations based on capabilities and/or specifications associated with a device on which the user interface is displayed.
It will be apparent that systems and/or methods, described herein, may be implemented in different forms of hardware, firmware, or a combination of hardware and software. The actual specialized control hardware or software code used to implement these systems and/or methods is not limiting of the implementations. Thus, the operation and behavior of the systems and/or methods were described herein without reference to specific software code—it being understood that software and hardware may be designed to implement the systems and/or methods based on the description herein.
Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the disclosure of possible implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. Although each dependent claim listed below may directly depend on only one claim, the disclosure of possible implementations includes each dependent claim in combination with every other claim in the claim set.
No element, act, or instruction used herein should be construed as critical or essential unless explicitly described as such. Also, as used herein, the articles “a” and “an” are intended to include one or more items, and may be used interchangeably with “one or more.” Furthermore, as used herein, the term “set” is intended to include one or more items (e.g., related items, unrelated items, a combination of related and unrelated items, etc.), and may be used interchangeably with “one or more.” Where only one item is intended, the term “one” or similar language is used. Also, as used herein, the terms “has,” “have,” “having,” or the like are intended to be open-ended terms. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.
Claims
1. A device, comprising:
- one or more memories; and
- one or more processors configured to: receive, from a user device, a request to generate a verification code for a transaction associated with a user of the user device; receive user profile information associated with a transaction card to be used for the transaction; generate, using a random number generator, a random verification code for the transaction based on the request and the user profile information; authenticate the random verification code, based on the user profile information, to generate an authenticated random verification code; update a dynamically updatable record associated with an account of the user to associate the authenticated random verification code with the account; provide the authenticated random verification code to the user device; receive transaction information, including the authenticated random verification code, from a merchant device associated with the transaction; validate the transaction based on the authenticated random verification code and the updated record; and provide, to the merchant device associated with the transaction, information indicating that the transaction is validated.
2. The device of claim 1, wherein the user profile information includes one or more of:
- information identifying the transaction card,
- information identifying the account,
- information indicating that the verification code is to be used for the transaction,
- information indicating that the verification code is to be used for a particular time period, or
- information indicating the particular time period.
3. The device of claim 1, wherein
- the random number generator includes one or more of: a pseudorandom number generator, a hardware random number generator, a cryptographically-secure pseudorandom number generator, or a random number generator that uses external entropy.
4. The device of claim 1, wherein the user device is a mobile device,
- wherein the one or more processors, when receiving from the user device the request to generate the verification code, are configured to: receive the request from a mobile device application associated with the mobile device; and
- wherein the one or more processors, when providing the authenticated random verification code to the user device, are configured to: provide the authenticated random verification code to the mobile device via the mobile device application or a text message.
5. The device of claim 1, wherein the user device is a computer device,
- wherein the one or more processors, when receiving from the user device the request to generate the verification code, are configured to: receive the request from a browser application associated with the computer device; and
- wherein the one or more processors, when providing the authenticated random verification code to the user device, are configured to: provide the authenticated random verification code to the computer device via the browser application, a browser extension, a browser plugin, or an email.
6. The device of claim 1, wherein the user device is a mobile device,
- wherein the one or more processors, when receiving from the user device the request to generate the verification code, are configured to: receive the request from a call initiated by the mobile device; and
- wherein the one or more processors, when providing the authenticated random verification code to the user device, are configured to: provide the authenticated random verification code to the mobile device via an interactive voice response to the call.
7. The device of claim 1, wherein the user device is a smart device,
- wherein the one or more processors, when receiving from the user device the request to generate the verification code, are configured to: receive the request from the smart device based on a voice command provided to the smart device; and
- wherein the one or more processors, when providing the authenticated random verification code to the user device, are configured to: provide the authenticated random verification code to the smart device via a voice response.
8. A non-transitory computer-readable medium storing instructions, the instructions comprising:
- one or more instructions that, when executed by one or more processors of a device, cause the one or more processors to: receive user profile information associated with generating a verification code for a transaction card to be used for a transaction, the transaction and the transaction card being associated with a user of a user device, the user profile information including one or more of: information identifying the transaction card, information identifying an account associated with the transaction card, information indicating that the verification code is to be used for the transaction, information indicating that the verification code is to be used for a particular time period, or information indicating the particular time period; receive, from the user device, a request to generate the verification code for the transaction; generate, using a random number generator, a random verification code for the transaction based on the request and the user profile information; authenticate the random verification code, based on the user profile information, to generate an authenticated random verification code; update a dynamically updatable record associated with the account to associate the authenticated random verification code with the account; provide the authenticated random verification code to the user device; receive transaction information, including the authenticated random verification code, from a merchant device associated with the transaction; validate the transaction based on the authenticated random verification code and the updated record; provide, to the merchant device associated with the transaction, information indicating that the transaction is validated; and provide, to the user device, information confirming that the transaction is complete.
9. The non-transitory computer-readable medium of claim 8, wherein the verification code is a card verification value.
10. The non-transitory computer-readable medium of claim 8, wherein
- the random number generator includes one or more of: a pseudorandom number generator, a hardware random number generator, a cryptographically-secure pseudorandom number generator, or a random number generator that uses external entropy.
11. The non-transitory computer-readable medium of claim 8, wherein the user device is a mobile device, and
- wherein the one or more instructions, that cause the one or more processors to provide the authenticated random verification code to the user device, cause the one or more processors to: provide the authenticated random verification code to the mobile device via a mobile device application or a text message application associated with the mobile device.
12. The non-transitory computer-readable medium of claim 8, wherein the user device is a computer device, and
- wherein the one or more instructions, that cause the one or more processors to provide the authenticated random verification code to the user device, cause the one or more processors to: provide the authenticated random verification code to the computer device via a browser application, a browser extension, a browser plugin, or an email associated with the computer device.
13. The non-transitory computer-readable medium of claim 8, wherein the user device is a mobile device, and
- wherein the one or more instructions, that cause the one or more processors to provide the authenticated random verification code to the user device, cause the one or more processors to: provide the authenticated random verification code to the mobile device via an interactive voice response to a call with the mobile device.
14. The non-transitory computer-readable medium of claim 8, wherein the user device is a smart device, and
- wherein the one or more instructions, that cause the one or more processors to provide the authenticated random verification code to the user device, cause the one or more processors to: provide the authenticated random verification code to the smart device via a voice response to a voice command provided to the smart device.
15-20. (canceled)
21. A method comprising:
- receiving, by a transaction device and from a user device, a request to generate a verification code for a transaction associated with a user of the user device;
- receiving, by the transaction device, user profile information associated with a transaction card to be used for the transaction;
- generating, by the transaction device and using a random number generator, a random verification code for the transaction based on the request and the user profile information;
- authenticating, by the transaction device and based on the user profile information, the random verification code, to generate an authenticated random verification code;
- updating, by the transaction device, a dynamically updatable record associated with an account of the user to associate the authenticated random verification code with the account;
- providing, by the transaction device, the authenticated random verification code to the user device;
- receiving, by the transaction device, transaction information, including the authenticated random verification code, from a merchant device associated with the transaction;
- validating, by the transaction device, the transaction based on the authenticated random verification code and the updated record; and
- providing, by the transaction device and to the merchant device associated with the transaction, information indicating that the transaction is validated.
22. The method of claim 21, wherein the user profile information includes information indicating that the random verification code is valid for the transaction for a particular time period, and
- wherein validating the transaction further comprises: validating the transaction based on the particular time period having not yet elapsed.
23. The method of claim 21, wherein the user device is a mobile device, and
- wherein receiving the request to generate the verification code comprises: receiving the request from a mobile device application associated with the mobile device.
24. The method of claim 21, wherein the user device is a computer device, and
- wherein receiving the request to generate the verification code comprises: receiving the request from a browser application associated with the computer device.
25. The method of claim 21, wherein the user device is a mobile device, and
- wherein receiving the request to generate the verification code comprises: receiving the request from a call initiated by the mobile device.
26. The method of claim 21, wherein the user device is a smart device, and
- wherein receiving the request to generate the verification code comprises: receiving the request from the smart device based on a voice command provided to the smart device.
Type: Application
Filed: May 15, 2018
Publication Date: Nov 21, 2019
Inventors: Joshua EDWARDS (Philadelphia, PA), Abdelkadar M'Hamed BENKREIRA (Washington, DC), Michael MOSSOBA (Arlington, VA)
Application Number: 15/980,175