US20160012436A1 - Encryption and tokenization architectures - Google Patents

Encryption and tokenization architectures Download PDF

Info

Publication number
US20160012436A1
US20160012436A1 US14/657,100 US201514657100A US2016012436A1 US 20160012436 A1 US20160012436 A1 US 20160012436A1 US 201514657100 A US201514657100 A US 201514657100A US 2016012436 A1 US2016012436 A1 US 2016012436A1
Authority
US
United States
Prior art keywords
string
particular sub
sub
processor
credit card
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US14/657,100
Inventor
Mahesh Sahasranaman
Robert W. Plumer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
United Parcel Service of America Inc
Original Assignee
United Parcel Service of America Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by United Parcel Service of America Inc filed Critical United Parcel Service of America Inc
Priority to US14/657,100 priority Critical patent/US20160012436A1/en
Assigned to UNITED PARCEL SERVICE OF AMERICA, INC. reassignment UNITED PARCEL SERVICE OF AMERICA, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PLUMMER, ROBERT W., SAHASRANAMAN, MAHESH
Assigned to UNITED PARCEL SERVICE OF AMERICA, INC. reassignment UNITED PARCEL SERVICE OF AMERICA, INC. CORRECTIVE ASSIGNMENT TO CORRECT THE SECOND INVENTOR'S NAME PREVIOUSLY RECORDED AT REEL: 035161 FRAME: 0985. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Assignors: PLUMER, ROBERT W., SAHASRANAMAN, MAHESH
Publication of US20160012436A1 publication Critical patent/US20160012436A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3821Electronic credentials
    • G06Q20/38215Use of certificates or encrypted proofs of transaction rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/12Payment architectures specially adapted for electronic shopping systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/22Payment schemes or models
    • G06Q20/24Credit schemes, i.e. "pay after"
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/385Payment protocols; Details thereof using an alias or single-use codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/102Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measure for e-commerce

Definitions

  • Various embodiments of the present invention relate generally to methods and systems for encryption and tokenization architectures for sensitive data such as credit card number.
  • PCI DSS Payment Card Industry Data Security Standard
  • Encryption can be a complex process that involves encrypting and decrypting the cardholder data through the use of tools such as asymmetric-keys.
  • asymmetric-keys For example, in public-key cryptography the encryption process involves using two keys, i.e., a public-key and a private key. The public key may be freely distributed, while its paired private key is kept secret. Typically, the public key is used for encrypting the data while the private key is used for decrypting the data. Therefore, these keys must be maintained and securely stored. Thus, every time a merchant or service provider transmits cardholder data, they must perform this encryption and decryption process. This can lead to inefficient processing of credit card payments.
  • Various embodiments of the present invention are directed to systems and methods for transmitting a character string.
  • various embodiments are directed to systems and methods for transmitting a unique token associated with a character string.
  • various embodiments provide a method of transmitting a character string comprising the step of adapting one or more processors for executing a gatekeeper module.
  • the gatekeeper module in these embodiments is adapted for: (a) storing the character string in one or more storage devices; (b) associating a unique token with the character string; and (c) associating a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string.
  • the gatekeeper module in response to receiving a request for the character string, is further adapted for accessing the character string from the one or more storage devices by using the unique token associated with the character string and transmitting the character string.
  • the gatekeeper module is further adapted for verifying that a computer device or a user making the request for the character string is authorized to receive the character string.
  • the character string is stored as encrypted data and/or stored as a record in a database.
  • the character string is a credit card number and the associated sub-string used to identify the credit card number is the last four digits of the credit card number.
  • various embodiments of the present invention provide a method for transmitting a unique token associated with a character string comprising the step of adapting one or more processors for executing a gatekeeper module.
  • the gatekeeper module is adapted for: (a) storing the character string in one or more storage devices; (b) associating the unique token with the character string; and (c) associating a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string.
  • the gatekeeper module in response to receiving a request for the unique token associated with the character string, is further adapted for accessing the unique token from the one or more storage devices using the character string and transmitting the unique token associated with the character string.
  • the gatekeeper module is also adapted for verifying that a computer device or a user making the request for the unique token is authorized to receive the unique token.
  • various embodiments provide a system for transmitting a character string comprising one or more processors and one or more storage devices coupled to the processors and adapted for storing the character string.
  • the processors of these particular embodiments are adapted to execute a gatekeeper module to (a) store the character string within the storage devices; (b) associate a unique token with the character string; and (c) associate a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string.
  • the processors in response to receiving a request for the character string, are further adapted to execute the gatekeeper module to access the character string from the storage devices by using the unique token associated with the character string and transmit the character string.
  • the processors are also adapted to execute the gatekeeper module to verify that a computer device or a user making the request for the character string is authorized to receive the character string.
  • the character string is stored as encrypted data and/or stored as a record in a database within the storage devices.
  • a method for conducting an online transaction on a website involving sensitive information comprises: (a) registering at least one entity with a gate keeper module, the registering comprising associating the at least one entity with a subscription level; (b) associating a sub-string of a character string with a unique token so that a direct link does not exist between the unique token and the character string, the character string comprising the sensitive information and the sub-string being configured to identify the character string without revealing the sensitive information; and (c) during processing of the online transaction: (i) using the unique token for intermediate steps during the processing of the online transaction; and (ii) only accessing the character string in storage memory using the unique token and the sub-string to retrieve the sensitive information and to complete the online transaction using the information for the online transaction and the sensitive information after receiving a request for the sensitive information from at least one of the at least one registered entity associated with a subscription level associated with a privilege to receive the requested sensitive information.
  • a system for conducting an online transaction on a website involving sensitive information comprises one or more processors; and one or more storage devices coupled to the one or more processors and adapted for storing a character string.
  • the one or more processors may execute a gatekeeper module to: (a) register at least one entity with the gatekeeper module, the registering comprising associating the at least one entity with a subscription level; (b) associate a unique token with a sub-string of a character string wherein a direct link does not exist between the unique token and the character string, the character string comprising the sensitive information and the sub-string being configured to identify the character string without revealing the sensitive information; and (c) during processing of the online transaction: (i) use the unique token for intermediate steps during the processing of the online transaction; and (ii) only access the character string in the one or more storage devices using the unique token and the sub-string-to retrieve the sensitive information and to complete the online transaction using the information for the online transaction and the sensitive information after receiving
  • a computer program product for conducting an online transaction on a website involving sensitive information, wherein the computer program product comprises at least one non-transitory computer-readable storage medium having computer-readable program code portions stored therein.
  • the computer-readable program code portions may comprise: (a) an executable portion configured to register at least one entity with the gatekeeper module, the registering comprising associating the at least one entity with a subscription level; (b) an executable portion configured to associate a unique token with a sub-string of a character string wherein a direct link does not exist between the unique token and the character string, the character string comprising the sensitive information and the sub-string being configured to identify the character string without revealing the sensitive information; and (c) during processing of the online transaction: (i) an executable portion configured to use the unique token for intermediate steps during the processing of the online transaction; and (ii) an executable portion configured to only access the character string in one or more storage devices using the unique token and the sub-string-to retrieve the sensitive information
  • FIG. 1 is a flowchart illustrating a process for transmitting a character string according to various embodiments of the invention.
  • FIG. 2 is a flowchart illustrating a process for transmitting a unique token associated with a character string according to various embodiments of the invention.
  • FIG. 3 is a schematic diagram illustrating a system architecture including a gatekeeper system according to various embodiments of the invention.
  • FIG. 4 is a schematic diagram illustrating a system storing a gatekeeper module according to various embodiments of the invention.
  • FIG. 5 is a flow diagram of a gatekeeper module transmitting a character string according various embodiments of the invention.
  • FIG. 6 is a flow diagram of a gatekeeper module transmitting a unique token associated with a character string according to various embodiments of the invention.
  • the present invention may be embodied as a method, a data processing system, or a computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of a computer program product on a computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. More particularly, the present invention may take the form of web-implemented computer software. Any suitable computer-readable storage medium may be utilized including hard disks, CD-ROMs, DVD-ROMs, USB flash drives, optical storage devices, or magnetic storage devices.
  • These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including computer-readable instructions for implementing the function specified in the flowchart block or blocks.
  • the computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
  • blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose hardware-based computer systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
  • Various embodiments of the present invention provide systems and methods for transmitting a character string. Such embodiments include providing a gatekeeper module that is executed on a computer to: (1) store a character string within one or more storage devices; (2) associate a unique token with the character string; (3) associate a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string; and (4) in response to receiving a request for the character string, access the character string from the one or more storage devices by using the unique token associated with the character string, and transmit the character string to a computer device or a user requesting the string.
  • FIG. 1 is an exemplary process for transmitting a character string 100 according to various embodiments of the invention.
  • the process comprises the step of adapting one or more processors (“processor”) for executing a gatekeeper module, shown as Step 101 .
  • processors may be located in one or more computer systems and may be in communication via a network (e.g., a LAN network, wireless network, or the Internet).
  • the processor executes the gatekeeper module of various embodiments to store the character string in one or more storage devices.
  • the processor may execute the gatekeeper module to store the character string in a database located on the storage devices.
  • the processor may execute the gatekeeper module in other embodiments to store the character string in a file located on a storage device.
  • the processor may execute the gatekeeper module to store the character string in other embodiments in a data warehouse, or some type of program module located on storage devices.
  • the storage devices may be internal or external hard drives, storage disks, magnetic tape, USB flash drives, or some other type of storage devices as known by those of ordinary skill in the art.
  • the processor will execute the gatekeeper module to store the string as encrypted data in various embodiments.
  • the character string may be a customer credit card number that is received by a merchant or service provider from a customer purchasing a product or service by using a credit card.
  • the merchant or service provider records the credit card number along with other information associated with the credit card and customer so that the credit card information can be submitted to the issuer of the credit card for payment.
  • a user will visit a retailer's web site via a browser located on the user's computer, browse the retailer's products, select one or more products for purchase, and in many cases, proceed to a “checkout” webpage provided by the retailer's web site to complete the purchase.
  • a “checkout” webpage provided by the retailer's web site to complete the purchase.
  • the user provides credit card information by typing in the information on the webpage to pay for the selected products.
  • a server will execute a module associated with the webpage to store the credit card information and complete the purchase.
  • a user will visit the retailer's web site multiple times to shop again.
  • the retailer may retain the user's credit card information in one or more storage devices to help facilitate a quicker checkout for the user for subsequent purchases, e.g., the user's credit card information may be automatically populated on the “checkout” webpage so that the user is not required to re-enter the information for a subsequent purchase.
  • the processor executes the gatekeeper module to receive a customer's credit card number, encrypt the number, and store the number in a database.
  • the gatekeeper module may store various other information in the database, such as credit card expiration date, credit card type, status of the credit card (e.g., active), parent system, and profile flag.
  • the processor may execute the gatekeeper module to use various encryption techniques to encrypt the credit card number and information.
  • the module may employ asymmetric-key encryption to encrypt the credit card number.
  • Asymmetric-key encryption involves the use of keys to encrypt or decrypt the information.
  • a common type of asymmetric-key encryption is known as public-key encryption. This type of encryption involves the use of two different keys, i.e., a public key and a private key. The public key is freely distributed and is typically used for encryption, while the private key is kept secured and is typically used for decryption.
  • the storage devices used to the store the character strings may be provided as a centralized repository according to various embodiments of the invention.
  • a repository may be important in the context of storing sensitive information such as credit card numbers. For example, those managing the repository can implement corrective measures more quickly by having a centralized repository to store the credit card numbers in the case of a security breach.
  • a repository centralizes the protection of the sensitive information, and therefore, raises the quality of protection because implementing protective and corrective measures is much simpler for a centralized repository as opposed to many repositories.
  • a centralized repository reduces the scope of the information that must be protected, reduces security efforts, and reduces the labor and overhead required to protect the information.
  • a centralized repository aids in the compliance with Payment Card Industry Data Security Standard (PCI DSS) guidelines used in the context of credit card information.
  • PCI DSS Payment Card Industry Data Security Standard
  • the centralized repository assists in logging compliance with PCI DSS guidelines because such logging deals with only one source of credit card information.
  • it is easier to restrict access to the repository because it is easier to pre-define and manage a list of entities that may access the repository, as well as, track and monitor those entities that have accessed the repository.
  • the processor also executes the gatekeeper module to associate a unique token with the character string.
  • the module stores the encrypted credit card number in the database and assigns a unique token to the encrypted credit card number.
  • the processor executes the gatekeeper module to create the unique token using various processes.
  • the module creates the unique token by calling a random number generator module.
  • a random number generator module typically includes an algorithm that can automatically create long runs, e.g., millions of numbers long, with good random properties. However, in many cases, the sequence created by the algorithm will eventually repeat. Therefore, once the random number generator module has provided a random number, the processor further executes the gatekeeper module to check the provided number against the existing tokens to ensure the acquired random number is unique. If the random number is unique, the processor executes the gatekeeper module to associate the random number with the encrypted credit card number in the database.
  • the processor executes the gatekeeper module to employ database primary keys used to distinguish records in a database table to provide unique tokens.
  • a record stored in the table of a database may be made a unique record with respect to other records stored in the same table by requiring that one or more fields of the record, alone or in combination, store a unique value from the same one or more fields of other records stored in the table. This is referred to as developing primary keys to one of ordinary skill in the art.
  • many commercial database applications also provide a feature that will allow a field in a database table to be defined so that a unique primary key is automatically generated and written into the field for a new record stored in the table.
  • this feature generates a unique primary key to store in a field of a table in the database when the processor executes the gatekeeper module to store the encrypted credit card number in the table.
  • the module will then use the generated primary key as the unique token associated with the credit card number.
  • the processor executes the gatekeeper module to store the unique token in the same storage as the character string. In other embodiments, the processor executes the gatekeeper module to store the unique token in separate storage. Thus, in the example, the processor executes the gatekeeper module to store the unique token in the same database as the encrypted credit card number or in a separate database.
  • the decision as to whether to store the unique tokens in the same database as the encrypted credit card numbers or in a separate database may be based on different considerations.
  • the processor may execute the gatekeeper module in various embodiments to store the unique tokens separately from the encrypted information for security reasons.
  • the processor may execute the gatekeeper module to store the unique tokens in the same database as the encrypted information to help centralize the information for management purposes.
  • One of ordinary skill in the art can think of various other reasons to store the tokens and the character strings in the same or separate storage devices in light of this disclosure.
  • the processor executes the gatekeeper module to associate the unique token with a sub-string of the character string associated with the token to identify that the token is associated with the character string without revealing the character string.
  • the processor executes the gatekeeper module to store this sub-string along with its corresponding token.
  • the processor executes the gatekeeper module to store the sub-string and token in separate storage.
  • a server executes a module associated with the web page to query the database and instead of processor returning the actual credit card numbers to the module, the processor executes the gatekeeper module to return the tokens associated with the stored credit card numbers along with the last four digits of each credit card number stored in the database. The server then executes the module to display the last four digits of each credit card on the web site to the user. As a result, the user is able to recognize each stored credit card number and choose the credit card to which he or she wishes to charge the purchase.
  • the module display the sub-strings to identify particular credit card numbers instead of the actual credit card numbers on the webpage
  • the user can view what credit card numbers are stored in the database for him or her without the module having to perform the complex process to access and transmit the actual credit card numbers to the webpage.
  • the credit card numbers stay encrypted and secured in the database.
  • encryption and decryption activities are minimized and the flow of sensitive information is reduced.
  • the processor executes the gatekeeper module to access the string from storage by using the unique token associated with the character string. Therefore, returning to the example, once the user has selected a particular credit card number to which he or she wishes to charge the purchase from the last four digits displayed on the “checkout” webpage, the module that is executed to facilitate the purchase from the webpage sends a request for the specific credit card number to the gatekeeper module.
  • the processor executes the gatekeeper module to access the actual credit card number by using the unique token associated with the requested credit card number. For example, the processor executes the gatekeeper module to query the actual credit card number from the repository by using the unique token as a search parameter of the query.
  • various computer devices and users may submit the request for the character string, and at various times. For example, once the user selects a particular credit card to which to charge the purchase, a server executes the module to facilitate the purchase to save the purchase to a database. A computer device may later batch this purchase with other purchases and submit the purchases to a credit card company for payment. In this case, the server executes the module to save the unique token for the selected credit card along with the purchase in the database and the device that executes the module to perform the batching is the device that requests the actual credit card number by using the token.
  • the processor executes the gatekeeper module of various embodiments to verify whether the device or the user requesting the character string is authorized to receive the character string.
  • the module provides formal access controls in various embodiments.
  • the gatekeeper module may include an application programming interface (API) to regulate the interaction between independent computer devices and individuals and the database storing the sensitive information according to various embodiments of the invention.
  • API application programming interface
  • a computer device or a user that makes a request to access a character string must first register with the gatekeeper module. Therefore, in the case of the credit card example, a mechanism is implemented to control who and what can access the credit card numbers in the database.
  • the device or the user subscribes with the gatekeeper module to gain access to the information stored in the database.
  • the processor will execute the gatekeeper module to give various devices and users various levels of access.
  • the computer device executing the batching module discussed above that batches up the credit card charges and submits the charges to the credit card company subscribes with the gatekeeper module to be able to request the credit card numbers.
  • Another device that records and reports a user's transaction history may only need to retrieve the sub-strings associated with the tokens to display a user's transaction history, and therefore, this device's subscription only provides access to the sub-strings.
  • the processor may execute the gatekeeper module to provide other subscription levels, such as privileges to access tokens only, according to various other embodiments.
  • the device or the user will need to provide a token, a sub-string, or some other information and sufficient credentials that allow the device or the user to perform the type of access or manipulation of the information the device or the user wants to perform.
  • the credentials may take many forms.
  • the processor may execute the gatekeeper module to provide the credentials as a key to the device upon registration with the gatekeeper module.
  • the processor may execute the gatekeeper module to provide credentials by simply checking the name of the device or the user against a record in a database table to determine whether the device or the user has privilege to perform the request.
  • One of ordinary skill in the art can think of numerous ways for the processor to execute the gatekeeper module to provide and check credentials for a device or a user to establish the device's or the user's level of access to the information in light of this disclosure.
  • the processor can execute the gatekeeper module to monitor the retention of the character strings and associated information stored in the storage devices in various embodiments. Therefore, the processor can execute the gatekeeper module to determine whether any of the sensitive information stored is out-dated and should be deleted or archived from the database. As a result, this will minimize the amount of sensitive information stored in the storage devices and also minimize the liability of storing such information.
  • the processor executes the gatekeeper module to periodically check to determine whether any of the credit card numbers have expired or whether any of the credit card numbers have not been used within a set period of time, e.g., whether a certain period of time has elapsed since the credit card number was last used to make a purchase. Therefore, if a credit card number has expired or has not been used within the set period of time, the processor executes the gatekeeper module to delete the credit card number along with any corresponding information from the database.
  • the processor may first execute the gatekeeper module to archive the credit card number and corresponding information to an external storage medium, such as a disk or tap drive, before deleting the information.
  • the processor can execute the gatekeeper module to monitor the character strings through various techniques.
  • the gatekeeper module may have a scheduling feature executed by the processor to check each record in the database at a certain time each day to determine if any credit card numbers need to be purged from the database. For example, the processor executes the scheduling feature every morning at three o'clock a.m. and filters out any records that need to be purged from the database.
  • the processor simply executes the gatekeeper module to check each credit card number stored for a user in response to the module receiving a request for a credit card number associated with the user to determine if any of the user's stored credit card numbers are out of date.
  • One of ordinary skill in the art can envision several techniques that may be employed to ensure the out-dated character strings and corresponding information are purged in light of this disclosure.
  • processor executes the gatekeeper module to transmit the character string to the device or the user requesting the string according to various embodiments of the invention.
  • the term “transmit” does not necessarily mean the gatekeeper module sends the character string to the device or the user.
  • the processor executes the gatekeeper module to grant the device or the user permission to access the character string in storage.
  • the term “transmit” is used in this disclosure to mean that the processor executes the gatekeeper module to facilitate the device or the user obtaining the character string.
  • the device or the user making the request can vary by embodiment.
  • the device may be a server executing a program module, a Graphical User Interface (GUI), or an external source such as a credit card company computer system.
  • the processor may execute the gatekeeper module to transmit the character string in various forms.
  • processor may execute the gatekeeper module to return the character string in a digital format such as in a data stream, a file, or an e-mail or to display the character string on a computer monitor.
  • the processor may also execute the gatekeeper module to encrypt or decrypt the character string, or simply return the string as standard text.
  • One of ordinary skill in the art is familiar with the numerous ways the character string can be returned from the storage devices and stored or displayed in light of this disclosure.
  • a device or a user may need to access a unique token associated with a character string. For instance, a user may visit a retailer's web site and select a product to purchase.
  • the module executed to facilitate the purchase on the web site forwards the user to a “checkout” webpage and instead of choosing an existing credit card number stored in the retailer's database, the user enters a new credit card number and completes the purchase.
  • a server executes the module to record the purchase transaction in a database so that the purchase may be later submitted to the credit card company for payment. However, in this case, the module is provided with the credit card number as opposed to a unique token associated with the credit card number. Therefore, the server executes the module to obtain a unique token for the credit card number prior to storing the purchase transaction in the database.
  • various embodiments of the present invention are directed to systems and methods for transmitting a unique token associated with a character string.
  • Such embodiments include providing a gatekeeper module that is executed on a computer to: (1) store the character string within one or more storage devices; (2) associate a unique token with the character string; (3) associate a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string; and (4) in response to receiving a request for the unique token associated with the character string, access the unique token from the one or more storage devices by using the character string, and transmit the unique token to a computer device or a user requesting the unique token.
  • an exemplary process for transmitting a unique token associated with a character string 200 includes the step of adapting one or more processors (“processor”) for executing a gatekeeper module, shown as Step 201 .
  • processors may be located in one or more computer systems and may be in communication via a network (e.g., a LAN network, a wireless network, or the Internet).
  • the processor executes the gatekeeper module of various embodiments to store the character string in one or more storage devices, as shown in Step 201 .
  • the processor executes the gatekeeper module to perform this step in the same manner as in the process for transmitting a character string 100 .
  • the processor executes the gatekeeper module to store the character string in a database, file, data warehouse, or some type of program module according to various embodiments of the invention.
  • the character string may represent sensitive information, and therefore, the processor executes the gatekeeper module to store the string as encrypted data.
  • the processor may execute the gatekeeper module to store the character string in a central repository according to various embodiments of the invention.
  • the processor further executes the gatekeeper module to associate a unique token with the character string according to various embodiments.
  • the processor executes the gatekeeper module to carry out this step in a similar manner to the process for transmitting a character string 100 discussed above.
  • the processor executes the gatekeeper module to generate a unique token through various processes such as executing a random number generator module or utilizing the primary key associated with a record stored in a database for the character string.
  • the processor executes the gatekeeper module to associate the unique token with a sub-string of the character string associated with the token in order to identify that the token is associated with the character string without revealing the character string in a manner similar to the process for transmitting a character string 100 .
  • a sub-string is the last four digits of a credit card number.
  • the processor also executes the gatekeeper module to access a unique token from storage by using the character string associated with the unique token in response to receiving a request for the unique token according to various embodiments.
  • the processor executes the gatekeeper module to encrypt and save the credit card number and related information to the database.
  • the processor executes the gatekeeper module to generate and associate a unique token with the character string.
  • a batching module is executed to send a request for the unique token associated the specific credit card number and the processor executes the gatekeeper module to access the token via the credit card number.
  • the processor executes the gatekeeper module to return the unique token associated with the credit card number to the batching module and the batching module is executed to save the purchase transaction in a database along with the token as opposed to the new credit card number.
  • the processor also executes the gatekeeper module of process 200 to verify whether the computer device or the user requesting the unique token is authorized to receive the token according to various embodiments of the invention.
  • the processor executes the gatekeeper module to provide formal access controls in various embodiments to verify that the device or the user making the request has privilege to retrieve the unique token.
  • formal access controls are similar to the controls discussed above in regard to the process for transmitting a character string 100 .
  • the processor executes the gatekeeper module to transmit the unique token to the device or the user requesting the token.
  • the term “transmit” does not necessarily mean the processor executes the gatekeeper module to send the token to the entity.
  • the processor may execute the gatekeeper module to grant the device or the user permission to access the token in storage.
  • the term “transmit” is used in this disclosure to mean that the gatekeeper module facilitates the device or the user obtaining the token.
  • the device making the request can vary by embodiment.
  • the device may be a server executing a program module, a GUI, or an external source such as a credit card company computer system.
  • the processor may execute the gatekeeper module to transmit the token in various forms.
  • the processor may execute the gatekeeper module to simply return the token in a digital format such as in a data stream, a file, or an e-mail or to display the token on a computer monitor.
  • a digital format such as in a data stream, a file, or an e-mail
  • One of ordinary skill in the art is familiar with the numerous ways information can be returned from the storage devices and stored or displayed in light of this disclosure.
  • System 3 includes a gatekeeper system 300 according to various embodiments of the invention is shown as FIG. 3 .
  • the system includes in addition to the gatekeeper system 300 , a database server 105 , and one or more application servers 100 - 103 that are connected via a network 104 (e.g., a LAN, a wireless network, the Internet, and/or a private network) to communicate with one another.
  • the gatekeeper system 300 is configured for retrieving data from, and storing data to, a database located on the database server 105 (or, alternatively, located on the gatekeeper system 300 ).
  • the system 3 may include more than one database.
  • the gatekeeper system 300 may be one or more computers or software programs running on one or more computers.
  • FIG. 4 shows a schematic diagram of a gatekeeper system 300 storing the gatekeeper module 400 according to one embodiment of the invention.
  • the system 300 includes a processor 60 that communicates with other elements within the server via a system interface or bus 61 . Also included in the system 300 is a display device/input device 64 for receiving and displaying data. This display device/input device 64 may be, for example, a keyboard or pointing device that is used in combination with a monitor.
  • the system 300 further includes memory, which includes both read only memory (ROM) 65 and random access memory (RAM) 67 .
  • the system's ROM 65 is used to store a basic input/output system 26 (BIOS), containing the basic routines that help to transfer information between elements within the system 300 .
  • BIOS basic input/output system 26
  • the system 300 can operate on one computer or on multiple computers that are networked together.
  • the system 300 includes at least one storage device 63 , such as a hard disk drive, a floppy disk drive, a CD ROM drive, a DVD ROM drive, a USB flash drive, or optical disk drive, for storing information on various computer-readable media, such as a hard disk, a removable magnetic disk, a CD-ROM disk, or a DVD-ROM disk.
  • each of these storage devices 63 is connected to the system bus 61 by an appropriate interface.
  • the storage devices 63 and their associated computer-readable media provide nonvolatile storage for a personal computer. It is important to note that the computer-readable media described above could be replaced by any other type of computer-readable media known in the art. Such media include, for example, magnetic cassettes, flash memory cards, memory sticks, digital video disks, and Bernoulli cartridges.
  • program modules of the system 300 include an operating system 80 and a gatekeeper module 400 .
  • the gatekeeper module 400 controls certain aspects of the operation of the system 300 , as is described in more detail below, with the assistance of the processor 60 and an operating system 80 .
  • a network interface 74 for interfacing and communicating via a network 104 (e.g., a LAN, a wireless network, the Internet, or a private network) with other elements of a computer network, such as application servers 100 - 103 and a database server 105 as shown in FIG. 3 .
  • a network 104 e.g., a LAN, a wireless network, the Internet, or a private network
  • application servers 100 - 103 e.g., a LAN, a wireless network, the Internet, or a private network
  • database server 105 e.g., a database server
  • the system 3 enables communication between the gatekeeper system 300 , the application servers 100 - 103 , and the database server 105 .
  • the gatekeeper system 300 includes a gatekeeper module 400 .
  • the gatekeeper module 400 may be configured to communicate information between one or more application servers 100 - 103 and a database server 105 . This module 400 is discussed in more detail below.
  • FIG. 5 illustrates a flow diagram related to a gatekeeper module 400 transmitting a character string according to various embodiments of the invention. This flow diagram may correspond to the steps carried out by a processor 60 in the system 300 shown in FIG. 4 as it executes the gatekeeper module 300 in the RAM memory 67 of the system 300 .
  • the processor 60 executes the gatekeeper module 400 to initially obtain a character string from an entity such as a computer device or a user.
  • the gatekeeper module 300 is not the only component that may be executed to receive the character string to store the string in one or more storage devices.
  • the webpage may call a dedicated module that is executed besides the gatekeeper module 400 to save the credit card number to the database.
  • One of ordinary skill in the art can envision numerous ways to set up a system to save new character strings to the database in light of this disclosure.
  • the entity from which the character string is obtained may be a GUI, a program module running on a computer system, or other component such as a third-party computer system according to various embodiments of the invention.
  • the term “obtain” is used to mean receive or access. This can be accomplished either locally or remotely and may be via a communications network (e.g., a LAN, a wireless network, the Internet, or a private network).
  • the processor 60 executes the gatekeeper module 400 to store the character string in storage if the module 400 does receive the character string, shown as Step 502 .
  • the processor 60 executes the gatekeeper module 400 to store the character string in a database.
  • the gatekeeper module 400 does not necessarily need to store the character string in a database.
  • the processor 60 may execute the gatekeeper module 400 to store the character string in a file, data warehouse, or some type of program module.
  • the storage devices may be internal or external hard drives, storage disks, magnetic tapes, USB flash drives, or some other type of storage device as known by those of ordinary skill in the art.
  • the processor 60 executes the gatekeeper module 400 to encrypt the character string (shown as Step 501 ) and to store the string as encrypted data according to various embodiments.
  • the character string may be a customer credit card number that is received by a merchant or service provider from a customer purchasing a product or service using a credit card.
  • the processor 60 executes the gatekeeper module 400 to perform the encryption process or executes a different module to perform the encryption of the information if the information does need to be encrypted.
  • the gatekeeper module 400 or other module may employ various techniques to encrypt the credit card number and information, such as asymmetric-key encryption.
  • the processor 60 executes the gatekeeper module 300 of various embodiments to obtain additional information to store in the database that is related to the credit card number.
  • Such information may include credit card expiration date, credit card type, status of the credit card (e.g., active), parent system, and profile flag.
  • the processor 60 may execute the gatekeeper module 400 to store the character string in a centralized repository according to various embodiments of the invention.
  • a repository may be important in the context of storing sensitive information such as credit card numbers, as previously discussed.
  • the processor 60 can execute the gatekeeper module 400 or other computer modules to take corrective measures more quickly in the case of a security breach because the processor only needs to implement the measures on a centralized repository.
  • the processor 60 can execute the gatekeeper module 400 or other computer modules to implement protective and corrective measures more easily since the character strings and corresponding information are stored in a centralized repository. As a result, the quality of protection is raised.
  • the processor 60 executes the gatekeeper module 400 to associate a unique token to the character string in addition to storing the character string in the database, shown as Step 503 .
  • the processor 60 executes the gatekeeper module 400 to store the encrypted credit card number in the database and also to create and to assign a unique token to the encrypted credit card number.
  • the module that is facilitating the saving of the character string to storage also associates the unique token to the string.
  • the processor 60 may execute the gatekeeper module 400 (or other module) to create the unique token using various procedures.
  • the processor 60 executes the gatekeeper module 400 to create the unique token by calling a random number generator module.
  • Random number generator modules typically include an algorithm that can automatically create long runs, e.g., millions of numbers long, with good random properties, however in many cases, the sequence created by the algorithm will eventually repeat. Therefore, once the random number generator module has provided a random number, the processor 60 executes the gatekeeper module 400 to check the provided number against the existing tokens to ensure the acquired random number is unique.
  • the processor 60 executes the gatekeeper module 400 to assign the random number to the encrypted credit card number if the random number is unique.
  • the processor 60 executes the gatekeeper module 400 to discard the random number and re-calls the random number generator module if the random number is not unique.
  • Another procedure the gatekeeper module 400 may use in various embodiments to provide unique tokens is to employ database primary keys used to distinguish records in the table of a database.
  • database primary keys used to distinguish records in the table of a database.
  • many commercial database applications include a feature that will allow a field to be defined for a table so that a unique primary key is automatically generated and written into the field for a new record stored in the table.
  • the processor 60 executes the gatekeeper module 400 to store the encrypted credit card number in a table of a database
  • the database automatically generates a unique primary key and stores the key in the designated field.
  • the processor 60 then executes the gatekeeper module 400 to use this primary key as the unique token associated with the credit card number.
  • the processor 60 executes the gatekeeper module 400 to store the unique token in the same storage as the character string. In other embodiments, the processor 60 executes the gatekeeper module 400 to store the unique token in separate storage. Thus, in the example, the processor 60 executes the gatekeeper module 400 to store the unique token in the same database as the encrypted credit card number or in a separate database.
  • the processor 60 executes the gatekeeper module 400 to associate a sub-string of the character string with the token in order to identify that the token is associated with the character string without revealing the character string, shown as Step 504 .
  • the processor 60 executes the gatekeeper module 400 to store this sub-string along with its corresponding token.
  • the processor 60 executes the gatekeeper module 400 to store the sub-string and token in separate storage.
  • the token uses a formal protected cross reference to link to the character string.
  • An example of such a sub-string is the last four digits of a credit card number.
  • a system 300 that facilitates displaying the stored credit card numbers using a sub-string in conjunction with a token
  • the user can view what credit card numbers are stored in the database for him or her without the system 300 actually having to access and transmit the credit card numbers to the display. Therefore, the credit card numbers stay encrypted and secured in the database. As a result, encryption and decryption activities are minimized and the flow of sensitive information is reduced.
  • Step 505 the processor 60 executes the gatekeeper module 400 to receive a request for the character string, and in response, the processor 60 executes the gatekeeper module 400 to access the string from storage using the unique token associated with the character string according to various embodiments (shown as Step 507 ).
  • the request can be made at various times and from various entities.
  • a user may select a particular credit card displayed on the “checkout” webpage to which to charge a purchase and may complete the transaction by selecting the “buy now” button on the page.
  • a batching module is executed to save the purchase to a database so that the module can later batch the purchase with other purchases made and submitted the purchases to the credit card company for payment.
  • the batching module is also executed to submit a request to the gatekeeper module 400 for the unique token associated with the credit card number selected by the user to save the token along with the purchase in the database.
  • the processor 60 may also execute the gatekeeper module 400 to verify whether the entity requesting the character string is authorized to receive the character string according to various embodiments of the invention, shown as Step 506 .
  • the gatekeeper module 400 is provided with formal access controls in various embodiments.
  • the gatekeeper module 400 may comprise an application programming interface (API) executed by a computer to regulate the interaction between independent entities such as computer devices and individuals and the database. Specifically, a device or a user that makes a request to access a character string must first register with the gatekeeper module 400 .
  • API application programming interface
  • Such formal controls provide a mechanism to control who and what can access the credit card numbers in the database.
  • the device or the user will subscribe with the gatekeeper module 400 to gain access to the information stored in the database.
  • various devices and users may be given various levels of access.
  • the batching module as previously discussed, will subscribe with the gatekeeper module 400 to be able to submit credit card number requests to the gatekeeper module 400 .
  • Another module that records and reports a user's transaction history, may only need to retrieve the sub-strings associated with the tokens to display a user's transaction history, and therefore, this module's subscription only provides access to the sub-strings.
  • the gatekeeper module 400 may provide various other subscription levels, such as privileges to access tokens only.
  • a device or a user will need to provide a token, a sub-string, or some other information and sufficient credentials to the gatekeeper module 400 for the device or the user to gain access to the information in the database.
  • the processor 60 will execute the gatekeeper module 400 to check the device's or the user's credentials to determine if the device or the user is allowed to perform the type of access or manipulation of the information the device or the user wants to perform.
  • the credentials may take many forms.
  • the processor 60 executes the gatekeeper module 400 to provide a key upon registration to the subscribing device or the subscribing user so that the device or the user may send the key as credentials along with a request.
  • the processor 60 executes the gatekeeper module 400 to simply check the name of the device or the user against a record in a database table when the module 400 receives the request to determine whether the device or the user has the privilege to perform the request.
  • the gatekeeper module 400 can think of numerous ways of adapting the gatekeeper module 400 to provide and check credentials for a device or a user to establish the device's or the user's level of access to the information in light of this disclosure.
  • the processor 60 also executes the gatekeeper module 400 of various embodiments to monitor the retention of the character strings and associated information stored in the database, shown as Step 509 . Therefore, the processor 60 can execute the gatekeeper module 400 to determine whether any of the sensitive information stored in the database is out-dated and should be deleted or archived from the database. As a result, this will minimize the amount of sensitive information stored in the database and also minimize the liability of storing such information.
  • the processor 60 executes the gatekeeper module 400 to periodically check to determine whether any of the credit card numbers have expired or whether any of the credit card numbers have not been used within a set period of time, e.g., whether a certain period of time has elapsed since the credit card number was last used to make a purchase. Therefore, the processor 60 executes the gatekeeper module 400 to delete a credit card number along with any corresponding information from the database if the credit card number has expired or has not been used within the set period of time, shown as Step 510 . In various embodiments, the processor 60 may also execute the gatekeeper module 400 to archive the credit card number and corresponding information first to an external storage medium, such as a disk or tap drive, before deleting the number and corresponding information from the database, shown as Step 511 .
  • an external storage medium such as a disk or tap drive
  • the processor 60 can execute the gatekeeper module 400 to monitor the character strings through various techniques.
  • the processor 60 executes the gatekeeper module 400 to check each record in the database at a certain time each day to determine if any credit card numbers need to be purged from the database, shown as Step 508 .
  • the processor 60 executes a scheduling feature of the gatekeeper module 400 to run every morning at three o'clock a.m. and filters out any records that need to be purged from the database.
  • the processor 60 executes the gatekeeper module 400 to simply monitor each credit card number stored for a user in response to receiving a request for a particular credit card number associated with the user to determine if any of the user's stored credit card numbers are out of date.
  • the gatekeeper module 400 does not monitor information retention at all and this task is preformed by another module.
  • One of ordinary skill in the art can envision several techniques in light of this disclosure that may be employed to ensure the character strings and corresponding information is purged if the information has expired.
  • the processor 60 executes the gatekeeper module 400 to transmit the character string to the device or the user requesting the character string according to various embodiments of the invention.
  • the device or the user making the request can vary.
  • the device or the user may be a program module executed on a computer, a GUI, or an external source such as a credit card company computer system.
  • the processor 60 can execute the gatekeeper module 400 to provide the character string in various forms.
  • the processor 60 executes the gatekeeper module 400 to return the character string in a digital format such as in a data stream, a file, or an e-mail or to display the string on a computer monitor.
  • the processor 60 may need to execute the gatekeeper module 400 to first decrypt the character string (shown as Step 512 ) to provide the string, such as in a standard text format.
  • the processor 60 can execute the gatekeeper module 400 to transmit the character string to the device or the user requesting the string in light of this disclosure.
  • the processor 60 also executes the gatekeeper module 400 to receive requests from devices and users to access a unique token associated with a character string.
  • FIG. 6 illustrates a flow diagram related to a gatekeeper module 400 executed by a computer to transmit a unique token associated with a character string according to various embodiments of the invention. This flow diagram may correspond to the steps carried out by a processor 60 in the system 300 shown in FIG. 4 as it executes the gatekeeper module 400 in the RAM memory 67 of the system 300 .
  • the processor 60 may execute the gatekeeper module 400 to initially obtain a character string from a device or a user.
  • the processor 60 may execute the gatekeeper module 400 to obtain the character string from various entities such as a GUI, a program module executing on a computer system, or other component such as a third-party computer system.
  • the gatekeeper module 400 is not the only component that may receive the character string in order to store the string in storage.
  • the processor 60 executes the gatekeeper module 400 to store the character string in storage in the same manner as previously discussed, shown as Step 602 .
  • the processor 60 executes the gatekeeper module 400 to store the character string in a database, though in other embodiments, the processor 60 executes the gatekeeper module 400 to store the string in a file, data warehouse, or some type of program module.
  • various types of storage devices may be used according to various embodiments of the invention.
  • the storage devices may be internal or external hard drives, storage disks, magnetic tapes, USB flash drives, or some other type of storage devices.
  • the processor 60 will execute the gatekeeper module 400 to encrypt the string (shown as Step 601 ) or will execute a different module to encrypt the string prior to storing the string.
  • the processor 60 may execute the gatekeeper module 400 of various embodiments to also obtain additional information to store in the database that is related to the character string.
  • the processor 60 may execute the gatekeeper module 400 to store the character string in a centralized repository according to various embodiments of the invention.
  • a repository may be important in the context of storing sensitive information such as credit card numbers.
  • the processor 60 executes the gatekeeper module 400 to associate a unique token to the character string, as shown in Step 603 .
  • the processor 60 executes the gatekeeper module 400 to associate the unique token with the character string in the same manner as previously discussed above.
  • the processor 60 executes the gatekeeper module 400 to create and to assign a unique token to the encrypted credit card number.
  • the gatekeeper module 400 may create the unique token using various procedures. For example, in various embodiments, the processor 60 executes the gatekeeper module 400 to create the unique token by calling a random number generator module or by employing database primary keys used to distinguish records in the table of a database.
  • the processor 60 executes the gatekeeper module 400 to store the unique token in the same storage as the character string. In other embodiments, the processor 60 executes the gatekeeper module 400 to store the unique token in separate storage. Thus, in the credit card example, the processor 60 may execute the gatekeeper module 400 to store the unique token in the same database as the encrypted credit card number or in a separate database.
  • the processor 60 executes the gatekeeper module 400 to associate a sub-string of the character string associated with the token to identify that the token is associated with the character string without revealing the character string according to various embodiments of the invention, shown as Step 604 .
  • the use of such a sub-string provides a significant advantage over previous systems because it allows a user to operate a computing device to view what character strings are stored in storage without the gatekeeper module 400 (and/or other computer module) having to access, transmit, and display the actual character string to the user.
  • the processor 60 executes the gatekeeper module 400 to store the sub-string along with its corresponding token.
  • the processor 60 executes the gatekeeper module 400 to store the sub-string and token in separate storage (e.g., databases).
  • Step 605 the processor 60 executes the gatekeeper module 400 to receive a request for the unique token, and in response, the processor 60 executes the gatekeeper module 400 to access the token from storage using the character string associated with the token according to various embodiments (shown as Step 606 ).
  • the request can be made at various times and from various entities.
  • a user visits a retailer's web site and selects one or more products to purchase.
  • the user is sent by the retailer's web site to a “checkout” webpage to complete the purchase.
  • the processor 60 executes the gatekeeper module 400 to obtain the credit card number and related information, to encrypt the card number and information, and to save the number and information to the database.
  • the processor 60 executes the gatekeeper module 400 to generate and to associate a unique token with the new card number.
  • a batching module may also be executed to receive the purchase transaction, and in conjunction to saving the purchase to a database, to send a request to the gatekeeper module 400 for the unique token associated with the new credit card number.
  • the request includes the new credit card number.
  • the processor 60 executes the gatekeeper module 400 to access the token by using the credit card number provided in the request and to transmit the token back to the batching module.
  • the batching module retrieves the unique token associated with the new credit card number, the batching module is executed to save the purchase transaction to a database along with the token as opposed to the new credit card number.
  • the processor 60 may also execute the gatekeeper module 400 to verify whether the device or the user requesting the unique token (e.g., the batching module) is authorized to receive the token according to various embodiments of the invention, shown as Step 606 .
  • the device or the user will need to provide the character string and sufficient credentials to the gatekeeper module 400 and the processor 60 will execute the module 400 to check whether the device or the user is authorized to access the unique token.
  • the processor 60 executes the gatekeeper module 400 of various embodiments to monitor the retention of the character strings and associated information stored in the database, shown as Step 609 .
  • the processor 60 will execute the gatekeeper module 400 to periodically check to determine whether any of the credit card numbers have expired or whether any of the credit card numbers have not been used within a set period of time, e.g., whether a certain period of time has elapsed since the credit card number was last used to make a purchase. Therefore, the processor 60 will execute the gatekeeper module 400 to delete a credit card number along with any corresponding information from the database if the credit card number has expired or has not been used within the set period of time, shown as Step 610 .
  • the processor 60 may also execute the gatekeeper module 400 to archive the credit card number and corresponding information first to an external storage medium, such as a disk or tap drive, before deleting the number and corresponding information from the database, shown as Step 611 .
  • the processor 60 can execute the gatekeeper module 400 to monitor the character strings through various techniques.
  • the processor 60 executes a scheduling feature of the gatekeeper module 400 to check each record in the database at a certain time each day to determine if any credit card numbers need to be purged from the database, shown as Step 608 .
  • the processor 60 executes the gatekeeper module 400 to simply monitor each credit card number stored for a user in response to receiving a request for a particular token associated with the user to determine if any of the user's stored credit card numbers are out of date.
  • the processor 60 does not execute the gatekeeper module 400 to monitor information retention at all and this task is preformed by another executed module.
  • the processor 60 executes the gatekeeper module 400 to transmit the unique token to the device or the user requesting the token according to various embodiments of the invention.
  • the device or the user making the request can vary.
  • the device may be a program module executing on a computer system, a GUI, or an external source such as a credit card company computer system.
  • the processor 60 can execute the gatekeeper module 400 to provide the token in various forms.
  • the processor 60 executes the gatekeeper module 400 to return the token in a digital format such as in a data stream, a file, or an e-mail or to display the token on a computer monitor.
  • a digital format such as in a data stream, a file, or an e-mail
  • One of ordinary skill in the art is familiar with the numerous ways the gatekeeper module 400 can provide the token to the device or the user requesting the token in light of this disclosure.

Abstract

Various embodiments of the present invention are directed to methods, systems and computer program products for conducting an online transaction on a website involving sensitive information. Such embodiments provide methods, systems and computer program products to: (a) register at least one entity with a gate keeper module, the registering comprising associating the entity with a subscription level; (b) associate a sub-string of a character string with a unique token so that a direct link does not exist between the unique token and the character string; and (c) during processing of the online transaction: (i) using the unique token for intermediate steps during the processing of the online transaction; and (ii) only accessing the character string in storage memory to complete the online transaction after receiving a request from at least one registered entity associated with a subscription level associated with a privilege to receive the requested sensitive information.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application is a continuation of U.S. application Ser. No. 12/203,415, filed Sep. 3, 2008, which claims priority to U.S. Provisional Application Ser. No. 60/982,128, filed Oct. 23, 2007, the contents of which are incorporated herein by reference in their entireties.
  • FIELD OF THE INVENTION
  • Various embodiments of the present invention relate generally to methods and systems for encryption and tokenization architectures for sensitive data such as credit card number.
  • BACKGROUND OF THE INVENTION
  • In today's world of information storage, there are many circumstances wherein information must be securely stored and used. For example, many merchants and service providers accept credit cards for the payment of goods and services they sell. In order to accept a credit card for payment, a merchant or service provider will record a purchaser's credit card number along with other information, and submit the number and information for payment to the issuer of the credit card, such as Visa. In many cases this information is encrypted due to the sensitivity of the information and the threat of a third-party illegally obtaining the information, e.g., a hacker breaking into a merchant's computer system and illegally copying this information.
  • In addition, major credit card companies have developed guidelines to help merchant and service providers prevent credit card fraud, hacking, and various other security issues. These guidelines are known as the Payment Card Industry Data Security Standard (PCI DSS). Therefore, any merchant or service provider processing, storing, or transmitting credit card numbers must adhere to these standards or risk losing the ability to process credit card payments. These guidelines involve twelve requirements for compliance. For example, the guidelines require that any cardholder data stored must be protected. In addition, any transmission of cardholder data across open, public networks must be encrypted.
  • Encryption can be a complex process that involves encrypting and decrypting the cardholder data through the use of tools such as asymmetric-keys. For example, in public-key cryptography the encryption process involves using two keys, i.e., a public-key and a private key. The public key may be freely distributed, while its paired private key is kept secret. Typically, the public key is used for encrypting the data while the private key is used for decrypting the data. Therefore, these keys must be maintained and securely stored. Thus, every time a merchant or service provider transmits cardholder data, they must perform this encryption and decryption process. This can lead to inefficient processing of credit card payments.
  • As a result, a need exists in the art to better utilize sensitive information, yet minimize the transferring of such information. Such an improvement will also lead to better efficiency because the need for encrypting and decrypting will be reduced to use such information.
  • BRIEF SUMMARY OF THE INVENTION
  • Various embodiments of the present invention are directed to systems and methods for transmitting a character string. In addition, various embodiments are directed to systems and methods for transmitting a unique token associated with a character string.
  • In particular, various embodiments provide a method of transmitting a character string comprising the step of adapting one or more processors for executing a gatekeeper module. The gatekeeper module in these embodiments is adapted for: (a) storing the character string in one or more storage devices; (b) associating a unique token with the character string; and (c) associating a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string. In addition, in response to receiving a request for the character string, the gatekeeper module is further adapted for accessing the character string from the one or more storage devices by using the unique token associated with the character string and transmitting the character string.
  • In various embodiments, the gatekeeper module is further adapted for verifying that a computer device or a user making the request for the character string is authorized to receive the character string. In addition, in various embodiments, the character string is stored as encrypted data and/or stored as a record in a database. Furthermore, in various embodiments, the character string is a credit card number and the associated sub-string used to identify the credit card number is the last four digits of the credit card number.
  • As another example, various embodiments of the present invention provide a method for transmitting a unique token associated with a character string comprising the step of adapting one or more processors for executing a gatekeeper module. In these embodiments, the gatekeeper module is adapted for: (a) storing the character string in one or more storage devices; (b) associating the unique token with the character string; and (c) associating a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string. In addition, in response to receiving a request for the unique token associated with the character string, the gatekeeper module is further adapted for accessing the unique token from the one or more storage devices using the character string and transmitting the unique token associated with the character string. In various embodiments, the gatekeeper module is also adapted for verifying that a computer device or a user making the request for the unique token is authorized to receive the unique token.
  • Furthermore, various embodiments provide a system for transmitting a character string comprising one or more processors and one or more storage devices coupled to the processors and adapted for storing the character string. The processors of these particular embodiments are adapted to execute a gatekeeper module to (a) store the character string within the storage devices; (b) associate a unique token with the character string; and (c) associate a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string. In addition, in response to receiving a request for the character string, the processors are further adapted to execute the gatekeeper module to access the character string from the storage devices by using the unique token associated with the character string and transmit the character string.
  • In various embodiments, the processors are also adapted to execute the gatekeeper module to verify that a computer device or a user making the request for the character string is authorized to receive the character string. In addition, in various embodiments, the character string is stored as encrypted data and/or stored as a record in a database within the storage devices.
  • Other embodiments provide a system for transmitting a unique token associated with a character string comprising one or more processors and one or more storage devices coupled to the processors and adapted for storing the character string. The processors of these particular embodiments are adapted to execute a gatekeeper module to: (a) store the character string within the storage devices; (b) associate a unique token with the character string; and (c) associate a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string. In addition, in response to receiving a request for the unique token, the processors are further adapted to execute the gatekeeper module to access the unique token from the storage devices by using the character string associated with the unique token and transmit the unique token. In various embodiments, the processors are also adapted to execute the gatekeeper module to verify that a computer device or a user making the request for the unique token is authorized to receive the unique token.
  • In various embodiments, a method for conducting an online transaction on a website involving sensitive information is provided. In such embodiments, the method comprises: (a) registering at least one entity with a gate keeper module, the registering comprising associating the at least one entity with a subscription level; (b) associating a sub-string of a character string with a unique token so that a direct link does not exist between the unique token and the character string, the character string comprising the sensitive information and the sub-string being configured to identify the character string without revealing the sensitive information; and (c) during processing of the online transaction: (i) using the unique token for intermediate steps during the processing of the online transaction; and (ii) only accessing the character string in storage memory using the unique token and the sub-string to retrieve the sensitive information and to complete the online transaction using the information for the online transaction and the sensitive information after receiving a request for the sensitive information from at least one of the at least one registered entity associated with a subscription level associated with a privilege to receive the requested sensitive information.
  • In various embodiments, a system for conducting an online transaction on a website involving sensitive information is provided. In such embodiments, the system comprises one or more processors; and one or more storage devices coupled to the one or more processors and adapted for storing a character string. The one or more processors may execute a gatekeeper module to: (a) register at least one entity with the gatekeeper module, the registering comprising associating the at least one entity with a subscription level; (b) associate a unique token with a sub-string of a character string wherein a direct link does not exist between the unique token and the character string, the character string comprising the sensitive information and the sub-string being configured to identify the character string without revealing the sensitive information; and (c) during processing of the online transaction: (i) use the unique token for intermediate steps during the processing of the online transaction; and (ii) only access the character string in the one or more storage devices using the unique token and the sub-string-to retrieve the sensitive information and to complete the online transaction using the information for the online transaction and the sensitive information after receiving a request for the sensitive information from at least one of the at least one registered entity associated with a subscription level associated with a privilege to receive the requested sensitive information.
  • In yet other embodiments, a computer program product for conducting an online transaction on a website involving sensitive information, wherein the computer program product comprises at least one non-transitory computer-readable storage medium having computer-readable program code portions stored therein, is provided. In such embodiments, the computer-readable program code portions may comprise: (a) an executable portion configured to register at least one entity with the gatekeeper module, the registering comprising associating the at least one entity with a subscription level; (b) an executable portion configured to associate a unique token with a sub-string of a character string wherein a direct link does not exist between the unique token and the character string, the character string comprising the sensitive information and the sub-string being configured to identify the character string without revealing the sensitive information; and (c) during processing of the online transaction: (i) an executable portion configured to use the unique token for intermediate steps during the processing of the online transaction; and (ii) an executable portion configured to only access the character string in one or more storage devices using the unique token and the sub-string-to retrieve the sensitive information and to complete the online transaction using the information for the online transaction and the sensitive information after receiving a request for the sensitive information from at least one of the at least one registered entity associated with a subscription level associated with a privilege to receive the requested sensitive information.
  • BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
  • Having thus described the invention in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:
  • FIG. 1 is a flowchart illustrating a process for transmitting a character string according to various embodiments of the invention.
  • FIG. 2 is a flowchart illustrating a process for transmitting a unique token associated with a character string according to various embodiments of the invention.
  • FIG. 3 is a schematic diagram illustrating a system architecture including a gatekeeper system according to various embodiments of the invention.
  • FIG. 4 is a schematic diagram illustrating a system storing a gatekeeper module according to various embodiments of the invention.
  • FIG. 5 is a flow diagram of a gatekeeper module transmitting a character string according various embodiments of the invention.
  • FIG. 6 is a flow diagram of a gatekeeper module transmitting a unique token associated with a character string according to various embodiments of the invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • The present invention will now be described more fully with reference to the accompanying drawings, in which some, but not all embodiments of the invention are shown. Indeed, this invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Like numbers refer to like elements throughout.
  • As will be appreciated by one skilled in the art, the present invention may be embodied as a method, a data processing system, or a computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of a computer program product on a computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. More particularly, the present invention may take the form of web-implemented computer software. Any suitable computer-readable storage medium may be utilized including hard disks, CD-ROMs, DVD-ROMs, USB flash drives, optical storage devices, or magnetic storage devices.
  • The present invention is described below with reference to block diagrams and flowchart illustrations of methods, apparatuses (i.e., systems) and computer program products according to an embodiment of the invention. It will be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, respectively, can be implemented by computer program instructions. These computer program instructions may be loaded onto a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create a means for implementing the functions specified in the flowchart block or blocks.
  • These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including computer-readable instructions for implementing the function specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
  • Accordingly, blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose hardware-based computer systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
  • Transmitting a Character String
  • Various embodiments of the present invention provide systems and methods for transmitting a character string. Such embodiments include providing a gatekeeper module that is executed on a computer to: (1) store a character string within one or more storage devices; (2) associate a unique token with the character string; (3) associate a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string; and (4) in response to receiving a request for the character string, access the character string from the one or more storage devices by using the unique token associated with the character string, and transmit the character string to a computer device or a user requesting the string.
  • FIG. 1 is an exemplary process for transmitting a character string 100 according to various embodiments of the invention. The process comprises the step of adapting one or more processors (“processor”) for executing a gatekeeper module, shown as Step 101. These processors may be located in one or more computer systems and may be in communication via a network (e.g., a LAN network, wireless network, or the Internet).
  • Thus, the processor executes the gatekeeper module of various embodiments to store the character string in one or more storage devices. For example, the processor may execute the gatekeeper module to store the character string in a database located on the storage devices. The processor may execute the gatekeeper module in other embodiments to store the character string in a file located on a storage device. Furthermore, the processor may execute the gatekeeper module to store the character string in other embodiments in a data warehouse, or some type of program module located on storage devices.
  • In addition, various types of storage devices may be used according to various embodiments of the invention. For instance, the storage devices may be internal or external hard drives, storage disks, magnetic tape, USB flash drives, or some other type of storage devices as known by those of ordinary skill in the art.
  • In many cases the character string represents sensitive information, and therefore, the processor will execute the gatekeeper module to store the string as encrypted data in various embodiments. For example, the character string may be a customer credit card number that is received by a merchant or service provider from a customer purchasing a product or service by using a credit card. In this context, the merchant or service provider records the credit card number along with other information associated with the credit card and customer so that the credit card information can be submitted to the issuer of the credit card for payment.
  • Furthermore, the storing of credit card information has become even more predominate in the advent of online shopping via the Internet. For example, a user will visit a retailer's web site via a browser located on the user's computer, browse the retailer's products, select one or more products for purchase, and in many cases, proceed to a “checkout” webpage provided by the retailer's web site to complete the purchase. Once on the “checkout” webpage, the user provides credit card information by typing in the information on the webpage to pay for the selected products. A server will execute a module associated with the webpage to store the credit card information and complete the purchase. In addition, in many instances a user will visit the retailer's web site multiple times to shop again. As a result, the retailer may retain the user's credit card information in one or more storage devices to help facilitate a quicker checkout for the user for subsequent purchases, e.g., the user's credit card information may be automatically populated on the “checkout” webpage so that the user is not required to re-enter the information for a subsequent purchase.
  • Other types of sensitive information may also be stored in the storage devices as encrypted data. For example, many organizations store social security numbers for various reasons and will encrypt the social security numbers for security purposes. However, the credit card example is utilized throughout this document to illustrate the various embodiments of the present invention. Thus, it should be understood that the credit card example is used for illustration purposes only and in no way should limit the specific kind of sensitive data that may be used with the claimed invention.
  • Returning to the example, in various embodiments, the processor executes the gatekeeper module to receive a customer's credit card number, encrypt the number, and store the number in a database. In addition to the credit card number, the gatekeeper module may store various other information in the database, such as credit card expiration date, credit card type, status of the credit card (e.g., active), parent system, and profile flag. In various embodiments, the processor may execute the gatekeeper module to use various encryption techniques to encrypt the credit card number and information. For example, the module may employ asymmetric-key encryption to encrypt the credit card number. Asymmetric-key encryption involves the use of keys to encrypt or decrypt the information. A common type of asymmetric-key encryption is known as public-key encryption. This type of encryption involves the use of two different keys, i.e., a public key and a private key. The public key is freely distributed and is typically used for encryption, while the private key is kept secured and is typically used for decryption.
  • Lastly, the storage devices used to the store the character strings may be provided as a centralized repository according to various embodiments of the invention. Such a repository may be important in the context of storing sensitive information such as credit card numbers. For example, those managing the repository can implement corrective measures more quickly by having a centralized repository to store the credit card numbers in the case of a security breach. In addition, such a repository centralizes the protection of the sensitive information, and therefore, raises the quality of protection because implementing protective and corrective measures is much simpler for a centralized repository as opposed to many repositories. Thus, a centralized repository reduces the scope of the information that must be protected, reduces security efforts, and reduces the labor and overhead required to protect the information.
  • Furthermore, a centralized repository aids in the compliance with Payment Card Industry Data Security Standard (PCI DSS) guidelines used in the context of credit card information. For example, the centralized repository assists in logging compliance with PCI DSS guidelines because such logging deals with only one source of credit card information. In addition, it is easier to restrict access to the repository because it is easier to pre-define and manage a list of entities that may access the repository, as well as, track and monitor those entities that have accessed the repository. It is also easier to restrict physical access to the credit card information because the centralized repository can be housed on one system, e.g., one server or bank of servers, and access to this system can be restricted.
  • In various embodiments, the processor also executes the gatekeeper module to associate a unique token with the character string. Returning to the example, the module stores the encrypted credit card number in the database and assigns a unique token to the encrypted credit card number.
  • The processor executes the gatekeeper module to create the unique token using various processes. For example, in various embodiments, the module creates the unique token by calling a random number generator module. Such a module typically includes an algorithm that can automatically create long runs, e.g., millions of numbers long, with good random properties. However, in many cases, the sequence created by the algorithm will eventually repeat. Therefore, once the random number generator module has provided a random number, the processor further executes the gatekeeper module to check the provided number against the existing tokens to ensure the acquired random number is unique. If the random number is unique, the processor executes the gatekeeper module to associate the random number with the encrypted credit card number in the database.
  • In other embodiments, the processor executes the gatekeeper module to employ database primary keys used to distinguish records in a database table to provide unique tokens. For example, a record stored in the table of a database may be made a unique record with respect to other records stored in the same table by requiring that one or more fields of the record, alone or in combination, store a unique value from the same one or more fields of other records stored in the table. This is referred to as developing primary keys to one of ordinary skill in the art. In addition, many commercial database applications also provide a feature that will allow a field in a database table to be defined so that a unique primary key is automatically generated and written into the field for a new record stored in the table. Thus, in the example, this feature generates a unique primary key to store in a field of a table in the database when the processor executes the gatekeeper module to store the encrypted credit card number in the table. The module will then use the generated primary key as the unique token associated with the credit card number.
  • In various embodiments, the processor executes the gatekeeper module to store the unique token in the same storage as the character string. In other embodiments, the processor executes the gatekeeper module to store the unique token in separate storage. Thus, in the example, the processor executes the gatekeeper module to store the unique token in the same database as the encrypted credit card number or in a separate database.
  • The decision as to whether to store the unique tokens in the same database as the encrypted credit card numbers or in a separate database may be based on different considerations. For example, the processor may execute the gatekeeper module in various embodiments to store the unique tokens separately from the encrypted information for security reasons. In other instances, the processor may execute the gatekeeper module to store the unique tokens in the same database as the encrypted information to help centralize the information for management purposes. One of ordinary skill in the art can think of various other reasons to store the tokens and the character strings in the same or separate storage devices in light of this disclosure.
  • In addition, in various embodiments, the processor executes the gatekeeper module to associate the unique token with a sub-string of the character string associated with the token to identify that the token is associated with the character string without revealing the character string. In various embodiments, the processor executes the gatekeeper module to store this sub-string along with its corresponding token. In other embodiments, the processor executes the gatekeeper module to store the sub-string and token in separate storage. Thus, there is nothing identifiable in the token to link the token to the corresponding character string directly. Instead, the token uses a formal protected cross reference to link to the character string.
  • An example of such a sub-string is the last four digits of a credit card number. Therefore, if a user visiting a retailer's web site proceeds to the “checkout” webpage to purchase a product, the user can request to see what credit cards the merchant has on file for the user, e.g., what credit card numbers are stored in the retailer's database. In various embodiments, a server executes a module associated with the web page to query the database and instead of processor returning the actual credit card numbers to the module, the processor executes the gatekeeper module to return the tokens associated with the stored credit card numbers along with the last four digits of each credit card number stored in the database. The server then executes the module to display the last four digits of each credit card on the web site to the user. As a result, the user is able to recognize each stored credit card number and choose the credit card to which he or she wishes to charge the purchase.
  • The use of such a sub-string provides a significant advantage over previous processes. This is because to show the user what credit card numbers are stored in the database in previous processes, a module would need to be executed to query the database for the credit card numbers, encrypt the credit card numbers if the numbers were decrypted to be queried from the database, send the numbers to the webpage for displaying, and decrypt the numbers to display them to the user. This complex process is required to be performed in this fashion to ensure the security of the information from such threats as hackers, as well as, to be in compliance with the PCI DSS guidelines.
  • However, by having the module display the sub-strings to identify particular credit card numbers instead of the actual credit card numbers on the webpage, the user can view what credit card numbers are stored in the database for him or her without the module having to perform the complex process to access and transmit the actual credit card numbers to the webpage. As a result, the credit card numbers stay encrypted and secured in the database. Thus, encryption and decryption activities are minimized and the flow of sensitive information is reduced.
  • Accordingly, in response to the gatekeeper module receiving a request for a character string, the processor executes the gatekeeper module to access the string from storage by using the unique token associated with the character string. Therefore, returning to the example, once the user has selected a particular credit card number to which he or she wishes to charge the purchase from the last four digits displayed on the “checkout” webpage, the module that is executed to facilitate the purchase from the webpage sends a request for the specific credit card number to the gatekeeper module. In response, the processor executes the gatekeeper module to access the actual credit card number by using the unique token associated with the requested credit card number. For example, the processor executes the gatekeeper module to query the actual credit card number from the repository by using the unique token as a search parameter of the query.
  • In various embodiments, various computer devices and users may submit the request for the character string, and at various times. For example, once the user selects a particular credit card to which to charge the purchase, a server executes the module to facilitate the purchase to save the purchase to a database. A computer device may later batch this purchase with other purchases and submit the purchases to a credit card company for payment. In this case, the server executes the module to save the unique token for the selected credit card along with the purchase in the database and the device that executes the module to perform the batching is the device that requests the actual credit card number by using the token. This also provides an advantage over previous processes because in a process that involves multiple transactions, a number of computer devices executing the modules involved in the transactions may only need a reference to the credit card number as opposed to the actual credit card number. In this case, these devices will use the token to process transactions unless there is a specific reason the device needs the actual credit card number, such as submitting the purchase information to the credit card company for payment.
  • In addition, the processor executes the gatekeeper module of various embodiments to verify whether the device or the user requesting the character string is authorized to receive the character string. Thus, the module provides formal access controls in various embodiments. For example, the gatekeeper module may include an application programming interface (API) to regulate the interaction between independent computer devices and individuals and the database storing the sensitive information according to various embodiments of the invention. Specifically, a computer device or a user that makes a request to access a character string must first register with the gatekeeper module. Therefore, in the case of the credit card example, a mechanism is implemented to control who and what can access the credit card numbers in the database.
  • In various embodiments, the device or the user subscribes with the gatekeeper module to gain access to the information stored in the database. As a result, the processor will execute the gatekeeper module to give various devices and users various levels of access. For example, the computer device executing the batching module discussed above that batches up the credit card charges and submits the charges to the credit card company subscribes with the gatekeeper module to be able to request the credit card numbers. Another device that records and reports a user's transaction history may only need to retrieve the sub-strings associated with the tokens to display a user's transaction history, and therefore, this device's subscription only provides access to the sub-strings. In turn, the processor may execute the gatekeeper module to provide other subscription levels, such as privileges to access tokens only, according to various other embodiments.
  • Thus, the device or the user will need to provide a token, a sub-string, or some other information and sufficient credentials that allow the device or the user to perform the type of access or manipulation of the information the device or the user wants to perform. In various embodiments, the credentials may take many forms. For example, the processor may execute the gatekeeper module to provide the credentials as a key to the device upon registration with the gatekeeper module. In other embodiments, the processor may execute the gatekeeper module to provide credentials by simply checking the name of the device or the user against a record in a database table to determine whether the device or the user has privilege to perform the request. One of ordinary skill in the art can think of numerous ways for the processor to execute the gatekeeper module to provide and check credentials for a device or a user to establish the device's or the user's level of access to the information in light of this disclosure.
  • In addition, the processor can execute the gatekeeper module to monitor the retention of the character strings and associated information stored in the storage devices in various embodiments. Therefore, the processor can execute the gatekeeper module to determine whether any of the sensitive information stored is out-dated and should be deleted or archived from the database. As a result, this will minimize the amount of sensitive information stored in the storage devices and also minimize the liability of storing such information.
  • Thus, returning to the example wherein the database is storing the credit card numbers of users who have visited a retailer's web site to purchase goods from the retailer, the processor executes the gatekeeper module to periodically check to determine whether any of the credit card numbers have expired or whether any of the credit card numbers have not been used within a set period of time, e.g., whether a certain period of time has elapsed since the credit card number was last used to make a purchase. Therefore, if a credit card number has expired or has not been used within the set period of time, the processor executes the gatekeeper module to delete the credit card number along with any corresponding information from the database. In various embodiments, the processor may first execute the gatekeeper module to archive the credit card number and corresponding information to an external storage medium, such as a disk or tap drive, before deleting the information.
  • The processor can execute the gatekeeper module to monitor the character strings through various techniques. In one embodiment, the gatekeeper module may have a scheduling feature executed by the processor to check each record in the database at a certain time each day to determine if any credit card numbers need to be purged from the database. For example, the processor executes the scheduling feature every morning at three o'clock a.m. and filters out any records that need to be purged from the database. In another embodiment, the processor simply executes the gatekeeper module to check each credit card number stored for a user in response to the module receiving a request for a credit card number associated with the user to determine if any of the user's stored credit card numbers are out of date. One of ordinary skill in the art can envision several techniques that may be employed to ensure the out-dated character strings and corresponding information are purged in light of this disclosure.
  • Finally, processor executes the gatekeeper module to transmit the character string to the device or the user requesting the string according to various embodiments of the invention. It should be understood that the term “transmit” does not necessarily mean the gatekeeper module sends the character string to the device or the user. For example, in various embodiments, the processor executes the gatekeeper module to grant the device or the user permission to access the character string in storage. Thus, the term “transmit” is used in this disclosure to mean that the processor executes the gatekeeper module to facilitate the device or the user obtaining the character string.
  • As previously discussed, the device or the user making the request can vary by embodiment. For example, the device may be a server executing a program module, a Graphical User Interface (GUI), or an external source such as a credit card company computer system. In addition, the processor may execute the gatekeeper module to transmit the character string in various forms. For example, processor may execute the gatekeeper module to return the character string in a digital format such as in a data stream, a file, or an e-mail or to display the character string on a computer monitor. The processor may also execute the gatekeeper module to encrypt or decrypt the character string, or simply return the string as standard text. One of ordinary skill in the art is familiar with the numerous ways the character string can be returned from the storage devices and stored or displayed in light of this disclosure.
  • Transmitting a Unique Token Associated With a Character String
  • In many instances, a device or a user may need to access a unique token associated with a character string. For instance, a user may visit a retailer's web site and select a product to purchase. The module executed to facilitate the purchase on the web site forwards the user to a “checkout” webpage and instead of choosing an existing credit card number stored in the retailer's database, the user enters a new credit card number and completes the purchase. A server executes the module to record the purchase transaction in a database so that the purchase may be later submitted to the credit card company for payment. However, in this case, the module is provided with the credit card number as opposed to a unique token associated with the credit card number. Therefore, the server executes the module to obtain a unique token for the credit card number prior to storing the purchase transaction in the database.
  • Accordingly, various embodiments of the present invention are directed to systems and methods for transmitting a unique token associated with a character string. Such embodiments include providing a gatekeeper module that is executed on a computer to: (1) store the character string within one or more storage devices; (2) associate a unique token with the character string; (3) associate a sub-string of the character string with the unique token to identify that the unique token is associated with the character string without revealing the character string; and (4) in response to receiving a request for the unique token associated with the character string, access the unique token from the one or more storage devices by using the character string, and transmit the unique token to a computer device or a user requesting the unique token.
  • As displayed in FIG. 2, an exemplary process for transmitting a unique token associated with a character string 200 according to various embodiments of the invention includes the step of adapting one or more processors (“processor”) for executing a gatekeeper module, shown as Step 201. These processors may be located in one or more computer systems and may be in communication via a network (e.g., a LAN network, a wireless network, or the Internet).
  • The processor executes the gatekeeper module of various embodiments to store the character string in one or more storage devices, as shown in Step 201. The processor executes the gatekeeper module to perform this step in the same manner as in the process for transmitting a character string 100. For example, the processor executes the gatekeeper module to store the character string in a database, file, data warehouse, or some type of program module according to various embodiments of the invention. In addition, in various embodiments, the character string may represent sensitive information, and therefore, the processor executes the gatekeeper module to store the string as encrypted data. Lastly, the processor may execute the gatekeeper module to store the character string in a central repository according to various embodiments of the invention.
  • The processor further executes the gatekeeper module to associate a unique token with the character string according to various embodiments. The processor executes the gatekeeper module to carry out this step in a similar manner to the process for transmitting a character string 100 discussed above. Thus, the processor executes the gatekeeper module to generate a unique token through various processes such as executing a random number generator module or utilizing the primary key associated with a record stored in a database for the character string.
  • In addition, in various embodiments, the processor executes the gatekeeper module to associate the unique token with a sub-string of the character string associated with the token in order to identify that the token is associated with the character string without revealing the character string in a manner similar to the process for transmitting a character string 100. An example of such a sub-string is the last four digits of a credit card number.
  • In various embodiments, the processor also executes the gatekeeper module to access a unique token from storage by using the character string associated with the unique token in response to receiving a request for the unique token according to various embodiments. Returning to the example, once the user has entered the credit card information on the “checkout” webpage and completed the transaction, the processor executes the gatekeeper module to encrypt and save the credit card number and related information to the database. In addition, the processor executes the gatekeeper module to generate and associate a unique token with the character string. In conjunction, a batching module is executed to send a request for the unique token associated the specific credit card number and the processor executes the gatekeeper module to access the token via the credit card number. The processor executes the gatekeeper module to return the unique token associated with the credit card number to the batching module and the batching module is executed to save the purchase transaction in a database along with the token as opposed to the new credit card number.
  • As in the case of the process for transmitting a character string 100, the processor also executes the gatekeeper module of process 200 to verify whether the computer device or the user requesting the unique token is authorized to receive the token according to various embodiments of the invention. Thus, the processor executes the gatekeeper module to provide formal access controls in various embodiments to verify that the device or the user making the request has privilege to retrieve the unique token. These formal access controls are similar to the controls discussed above in regard to the process for transmitting a character string 100.
  • Furthermore, in various embodiments, the processor executes the gatekeeper module to transmit the unique token to the device or the user requesting the token. Again, it should be understood that the term “transmit” does not necessarily mean the processor executes the gatekeeper module to send the token to the entity. For example, in various embodiments, the processor may execute the gatekeeper module to grant the device or the user permission to access the token in storage. Thus, the term “transmit” is used in this disclosure to mean that the gatekeeper module facilitates the device or the user obtaining the token.
  • As previously discussed, the device making the request can vary by embodiment. For example, the device may be a server executing a program module, a GUI, or an external source such as a credit card company computer system. In addition, the processor may execute the gatekeeper module to transmit the token in various forms. For example, the processor may execute the gatekeeper module to simply return the token in a digital format such as in a data stream, a file, or an e-mail or to display the token on a computer monitor. One of ordinary skill in the art is familiar with the numerous ways information can be returned from the storage devices and stored or displayed in light of this disclosure.
  • System Architecture
  • System 3 includes a gatekeeper system 300 according to various embodiments of the invention is shown as FIG. 3. As may be understood from this figure, in various embodiments, the system includes in addition to the gatekeeper system 300, a database server 105, and one or more application servers 100-103 that are connected via a network 104 (e.g., a LAN, a wireless network, the Internet, and/or a private network) to communicate with one another. In one embodiment of the invention, the gatekeeper system 300 is configured for retrieving data from, and storing data to, a database located on the database server 105 (or, alternatively, located on the gatekeeper system 300). In alternative embodiments, the system 3 may include more than one database. In other embodiments, the gatekeeper system 300 may be one or more computers or software programs running on one or more computers.
  • FIG. 4 shows a schematic diagram of a gatekeeper system 300 storing the gatekeeper module 400 according to one embodiment of the invention. The system 300 includes a processor 60 that communicates with other elements within the server via a system interface or bus 61. Also included in the system 300 is a display device/input device 64 for receiving and displaying data. This display device/input device 64 may be, for example, a keyboard or pointing device that is used in combination with a monitor. The system 300 further includes memory, which includes both read only memory (ROM) 65 and random access memory (RAM) 67. The system's ROM 65 is used to store a basic input/output system 26 (BIOS), containing the basic routines that help to transfer information between elements within the system 300. Alternatively, the system 300 can operate on one computer or on multiple computers that are networked together.
  • In addition, the system 300 includes at least one storage device 63, such as a hard disk drive, a floppy disk drive, a CD ROM drive, a DVD ROM drive, a USB flash drive, or optical disk drive, for storing information on various computer-readable media, such as a hard disk, a removable magnetic disk, a CD-ROM disk, or a DVD-ROM disk. As will be appreciated by one of ordinary skill in the art, each of these storage devices 63 is connected to the system bus 61 by an appropriate interface. The storage devices 63 and their associated computer-readable media provide nonvolatile storage for a personal computer. It is important to note that the computer-readable media described above could be replaced by any other type of computer-readable media known in the art. Such media include, for example, magnetic cassettes, flash memory cards, memory sticks, digital video disks, and Bernoulli cartridges.
  • A number of program modules may be stored by the various storage devices and within RAM 67. For example, as shown in FIG. 4, program modules of the system 300 include an operating system 80 and a gatekeeper module 400. The gatekeeper module 400 controls certain aspects of the operation of the system 300, as is described in more detail below, with the assistance of the processor 60 and an operating system 80.
  • Also located within the system 300 is a network interface 74, for interfacing and communicating via a network 104 (e.g., a LAN, a wireless network, the Internet, or a private network) with other elements of a computer network, such as application servers 100-103 and a database server 105 as shown in FIG. 3. It will be appreciated by one of ordinary skill in the art that one or more of the system's components 300 may be located geographically remotely from other system components. Furthermore, one or more of the components may be combined, and additional components performing functions described herein may be included in the system 300.
  • Exemplary System Operation
  • As mentioned above, the system 3 according to various embodiments enables communication between the gatekeeper system 300, the application servers 100-103, and the database server 105. In particular, in various embodiments, the gatekeeper system 300 includes a gatekeeper module 400. The gatekeeper module 400 may be configured to communicate information between one or more application servers 100-103 and a database server 105. This module 400 is discussed in more detail below.
  • Gatekeeper Module
  • FIG. 5 illustrates a flow diagram related to a gatekeeper module 400 transmitting a character string according to various embodiments of the invention. This flow diagram may correspond to the steps carried out by a processor 60 in the system 300 shown in FIG. 4 as it executes the gatekeeper module 300 in the RAM memory 67 of the system 300.
  • In various embodiments, the processor 60 executes the gatekeeper module 400 to initially obtain a character string from an entity such as a computer device or a user. However, it should be understood that the gatekeeper module 300 is not the only component that may be executed to receive the character string to store the string in one or more storage devices. For example, when the “checkout” webpage previously discussed receives a new credit card number from a user, the webpage may call a dedicated module that is executed besides the gatekeeper module 400 to save the credit card number to the database. One of ordinary skill in the art can envision numerous ways to set up a system to save new character strings to the database in light of this disclosure.
  • In addition, the entity from which the character string is obtained may be a GUI, a program module running on a computer system, or other component such as a third-party computer system according to various embodiments of the invention. The term “obtain” is used to mean receive or access. This can be accomplished either locally or remotely and may be via a communications network (e.g., a LAN, a wireless network, the Internet, or a private network).
  • Accordingly, the processor 60 executes the gatekeeper module 400 to store the character string in storage if the module 400 does receive the character string, shown as Step 502. In various embodiments, the processor 60 executes the gatekeeper module 400 to store the character string in a database. However, it should be understood by those of ordinary skill in the art that the gatekeeper module 400 does not necessarily need to store the character string in a database. For example, in various embodiments, the processor 60 may execute the gatekeeper module 400 to store the character string in a file, data warehouse, or some type of program module.
  • In addition, various types of storage devices may be used according to various embodiments of the invention. For instance, the storage devices may be internal or external hard drives, storage disks, magnetic tapes, USB flash drives, or some other type of storage device as known by those of ordinary skill in the art.
  • In many cases the character string represents sensitive information, and therefore, the processor 60 executes the gatekeeper module 400 to encrypt the character string (shown as Step 501) and to store the string as encrypted data according to various embodiments. For example, the character string may be a customer credit card number that is received by a merchant or service provider from a customer purchasing a product or service using a credit card.
  • In various embodiments, the processor 60 executes the gatekeeper module 400 to perform the encryption process or executes a different module to perform the encryption of the information if the information does need to be encrypted. Thus, the gatekeeper module 400 or other module may employ various techniques to encrypt the credit card number and information, such as asymmetric-key encryption.
  • In addition, the processor 60 executes the gatekeeper module 300 of various embodiments to obtain additional information to store in the database that is related to the credit card number. Such information may include credit card expiration date, credit card type, status of the credit card (e.g., active), parent system, and profile flag.
  • Lastly, the processor 60 may execute the gatekeeper module 400 to store the character string in a centralized repository according to various embodiments of the invention. Such a repository may be important in the context of storing sensitive information such as credit card numbers, as previously discussed. For example, the processor 60 can execute the gatekeeper module 400 or other computer modules to take corrective measures more quickly in the case of a security breach because the processor only needs to implement the measures on a centralized repository. In addition, the processor 60 can execute the gatekeeper module 400 or other computer modules to implement protective and corrective measures more easily since the character strings and corresponding information are stored in a centralized repository. As a result, the quality of protection is raised.
  • In various embodiments, the processor 60 executes the gatekeeper module 400 to associate a unique token to the character string in addition to storing the character string in the database, shown as Step 503. Thus returning to the example, the processor 60 executes the gatekeeper module 400 to store the encrypted credit card number in the database and also to create and to assign a unique token to the encrypted credit card number. Again, it should be apparent to one of ordinary skill in the art that in other embodiments other computer modules, besides the gatekeeper module 400, may perform this task in light of this disclosure. Preferably, the module that is facilitating the saving of the character string to storage also associates the unique token to the string.
  • The processor 60 may execute the gatekeeper module 400 (or other module) to create the unique token using various procedures. For example, in various embodiments, the processor 60 executes the gatekeeper module 400 to create the unique token by calling a random number generator module. Random number generator modules typically include an algorithm that can automatically create long runs, e.g., millions of numbers long, with good random properties, however in many cases, the sequence created by the algorithm will eventually repeat. Therefore, once the random number generator module has provided a random number, the processor 60 executes the gatekeeper module 400 to check the provided number against the existing tokens to ensure the acquired random number is unique. The processor 60 executes the gatekeeper module 400 to assign the random number to the encrypted credit card number if the random number is unique. The processor 60 executes the gatekeeper module 400 to discard the random number and re-calls the random number generator module if the random number is not unique.
  • Another procedure the gatekeeper module 400 may use in various embodiments to provide unique tokens is to employ database primary keys used to distinguish records in the table of a database. As previously discussed, many commercial database applications include a feature that will allow a field to be defined for a table so that a unique primary key is automatically generated and written into the field for a new record stored in the table. Thus, in the example, when the processor 60 executes the gatekeeper module 400 to store the encrypted credit card number in a table of a database, the database automatically generates a unique primary key and stores the key in the designated field. The processor 60 then executes the gatekeeper module 400 to use this primary key as the unique token associated with the credit card number.
  • In various embodiments, the processor 60 executes the gatekeeper module 400 to store the unique token in the same storage as the character string. In other embodiments, the processor 60 executes the gatekeeper module 400 to store the unique token in separate storage. Thus, in the example, the processor 60 executes the gatekeeper module 400 to store the unique token in the same database as the encrypted credit card number or in a separate database.
  • In addition, in various embodiments, the processor 60 executes the gatekeeper module 400 to associate a sub-string of the character string with the token in order to identify that the token is associated with the character string without revealing the character string, shown as Step 504. In various embodiments, the processor 60 executes the gatekeeper module 400 to store this sub-string along with its corresponding token. In other embodiments, the processor 60 executes the gatekeeper module 400 to store the sub-string and token in separate storage. Thus, there is nothing identifiable in the token to link the token to the corresponding character string directly. Instead, the token uses a formal protected cross reference to link to the character string. An example of such a sub-string is the last four digits of a credit card number.
  • The use of such a sub-string provides a significant advantage over previous systems. This is because for a previous system to show a user what credit card numbers are stored in the database, the previous system is required to query the database to obtain the credit card numbers, encrypt the credit card numbers if the credit card numbers were decrypted in order to be queried from the database, send the encrypted credit card numbers to a display, such as a webpage, and decrypt the credit card numbers in order to display the numbers to the user. This complex system is required to ensure the security of the information from such threats as hackers, as well as, be in compliance with the PCI DSS guidelines.
  • However, in a system 300 that facilitates displaying the stored credit card numbers using a sub-string in conjunction with a token, instead of the actual credit card numbers, the user can view what credit card numbers are stored in the database for him or her without the system 300 actually having to access and transmit the credit card numbers to the display. Therefore, the credit card numbers stay encrypted and secured in the database. As a result, encryption and decryption activities are minimized and the flow of sensitive information is reduced.
  • In Step 505, the processor 60 executes the gatekeeper module 400 to receive a request for the character string, and in response, the processor 60 executes the gatekeeper module 400 to access the string from storage using the unique token associated with the character string according to various embodiments (shown as Step 507). The request can be made at various times and from various entities.
  • For example, a user may select a particular credit card displayed on the “checkout” webpage to which to charge a purchase and may complete the transaction by selecting the “buy now” button on the page. As previously discussed, a batching module is executed to save the purchase to a database so that the module can later batch the purchase with other purchases made and submitted the purchases to the credit card company for payment. In addition, the batching module is also executed to submit a request to the gatekeeper module 400 for the unique token associated with the credit card number selected by the user to save the token along with the purchase in the database. This provides an advantage over previous systems because by system modules using the unique token instead of the actual credit card number, the credit card number is not exposed to needless risk and the system is not required to perform the complex processing of encrypting and decrypting the credit card information to facilitate the transaction.
  • In addition, the processor 60 may also execute the gatekeeper module 400 to verify whether the entity requesting the character string is authorized to receive the character string according to various embodiments of the invention, shown as Step 506. Thus, the gatekeeper module 400 is provided with formal access controls in various embodiments. For example, the gatekeeper module 400 may comprise an application programming interface (API) executed by a computer to regulate the interaction between independent entities such as computer devices and individuals and the database. Specifically, a device or a user that makes a request to access a character string must first register with the gatekeeper module 400. Such formal controls provide a mechanism to control who and what can access the credit card numbers in the database.
  • In various embodiments, the device or the user will subscribe with the gatekeeper module 400 to gain access to the information stored in the database. As a result, various devices and users may be given various levels of access. For example, the batching module, as previously discussed, will subscribe with the gatekeeper module 400 to be able to submit credit card number requests to the gatekeeper module 400. Another module, that records and reports a user's transaction history, may only need to retrieve the sub-strings associated with the tokens to display a user's transaction history, and therefore, this module's subscription only provides access to the sub-strings. In addition, the gatekeeper module 400 may provide various other subscription levels, such as privileges to access tokens only.
  • Thus, a device or a user will need to provide a token, a sub-string, or some other information and sufficient credentials to the gatekeeper module 400 for the device or the user to gain access to the information in the database. The processor 60 will execute the gatekeeper module 400 to check the device's or the user's credentials to determine if the device or the user is allowed to perform the type of access or manipulation of the information the device or the user wants to perform. In various embodiments, the credentials may take many forms. For example, the processor 60 executes the gatekeeper module 400 to provide a key upon registration to the subscribing device or the subscribing user so that the device or the user may send the key as credentials along with a request. In other embodiments, the processor 60 executes the gatekeeper module 400 to simply check the name of the device or the user against a record in a database table when the module 400 receives the request to determine whether the device or the user has the privilege to perform the request. One of ordinary skill in the art can think of numerous ways of adapting the gatekeeper module 400 to provide and check credentials for a device or a user to establish the device's or the user's level of access to the information in light of this disclosure.
  • In addition, the processor 60 also executes the gatekeeper module 400 of various embodiments to monitor the retention of the character strings and associated information stored in the database, shown as Step 509. Therefore, the processor 60 can execute the gatekeeper module 400 to determine whether any of the sensitive information stored in the database is out-dated and should be deleted or archived from the database. As a result, this will minimize the amount of sensitive information stored in the database and also minimize the liability of storing such information.
  • Thus, the processor 60 executes the gatekeeper module 400 to periodically check to determine whether any of the credit card numbers have expired or whether any of the credit card numbers have not been used within a set period of time, e.g., whether a certain period of time has elapsed since the credit card number was last used to make a purchase. Therefore, the processor 60 executes the gatekeeper module 400 to delete a credit card number along with any corresponding information from the database if the credit card number has expired or has not been used within the set period of time, shown as Step 510. In various embodiments, the processor 60 may also execute the gatekeeper module 400 to archive the credit card number and corresponding information first to an external storage medium, such as a disk or tap drive, before deleting the number and corresponding information from the database, shown as Step 511.
  • The processor 60 can execute the gatekeeper module 400 to monitor the character strings through various techniques. In one embodiment, the processor 60 executes the gatekeeper module 400 to check each record in the database at a certain time each day to determine if any credit card numbers need to be purged from the database, shown as Step 508. For example, the processor 60 executes a scheduling feature of the gatekeeper module 400 to run every morning at three o'clock a.m. and filters out any records that need to be purged from the database. In another embodiment, the processor 60 executes the gatekeeper module 400 to simply monitor each credit card number stored for a user in response to receiving a request for a particular credit card number associated with the user to determine if any of the user's stored credit card numbers are out of date. In other embodiments, the gatekeeper module 400 does not monitor information retention at all and this task is preformed by another module. One of ordinary skill in the art can envision several techniques in light of this disclosure that may be employed to ensure the character strings and corresponding information is purged if the information has expired.
  • At Step 513, the processor 60 executes the gatekeeper module 400 to transmit the character string to the device or the user requesting the character string according to various embodiments of the invention. As previously discussed, the device or the user making the request can vary. For example, the device or the user may be a program module executed on a computer, a GUI, or an external source such as a credit card company computer system. In addition, the processor 60 can execute the gatekeeper module 400 to provide the character string in various forms. In various embodiments, the processor 60 executes the gatekeeper module 400 to return the character string in a digital format such as in a data stream, a file, or an e-mail or to display the string on a computer monitor. In addition, the processor 60 may need to execute the gatekeeper module 400 to first decrypt the character string (shown as Step 512) to provide the string, such as in a standard text format. One of ordinary skill in the art is familiar with the numerous ways the processor 60 can execute the gatekeeper module 400 to transmit the character string to the device or the user requesting the string in light of this disclosure.
  • In many instances, the processor 60 also executes the gatekeeper module 400 to receive requests from devices and users to access a unique token associated with a character string. FIG. 6 illustrates a flow diagram related to a gatekeeper module 400 executed by a computer to transmit a unique token associated with a character string according to various embodiments of the invention. This flow diagram may correspond to the steps carried out by a processor 60 in the system 300 shown in FIG. 4 as it executes the gatekeeper module 400 in the RAM memory 67 of the system 300.
  • As previously discussed, in various embodiments, the processor 60 may execute the gatekeeper module 400 to initially obtain a character string from a device or a user. For example, the processor 60 may execute the gatekeeper module 400 to obtain the character string from various entities such as a GUI, a program module executing on a computer system, or other component such as a third-party computer system. However, it should be understood that the gatekeeper module 400 is not the only component that may receive the character string in order to store the string in storage.
  • Accordingly, if the gatekeeper module 400 does receive the character string, the processor 60 executes the gatekeeper module 400 to store the character string in storage in the same manner as previously discussed, shown as Step 602. Thus, in various embodiments, the processor 60 executes the gatekeeper module 400 to store the character string in a database, though in other embodiments, the processor 60 executes the gatekeeper module 400 to store the string in a file, data warehouse, or some type of program module. In addition, various types of storage devices may be used according to various embodiments of the invention. For instance, the storage devices may be internal or external hard drives, storage disks, magnetic tapes, USB flash drives, or some other type of storage devices.
  • In many cases the character string represents sensitive information, and therefore, the processor 60 will execute the gatekeeper module 400 to encrypt the string (shown as Step 601) or will execute a different module to encrypt the string prior to storing the string. In addition, the processor 60 may execute the gatekeeper module 400 of various embodiments to also obtain additional information to store in the database that is related to the character string.
  • Lastly, the processor 60 may execute the gatekeeper module 400 to store the character string in a centralized repository according to various embodiments of the invention. As previously discussed, such a repository may be important in the context of storing sensitive information such as credit card numbers.
  • In various embodiments, the processor 60 executes the gatekeeper module 400 to associate a unique token to the character string, as shown in Step 603. The processor 60 executes the gatekeeper module 400 to associate the unique token with the character string in the same manner as previously discussed above. Thus, in regard to the credit card example, the processor 60 executes the gatekeeper module 400 to create and to assign a unique token to the encrypted credit card number. The gatekeeper module 400 may create the unique token using various procedures. For example, in various embodiments, the processor 60 executes the gatekeeper module 400 to create the unique token by calling a random number generator module or by employing database primary keys used to distinguish records in the table of a database.
  • In various embodiments, the processor 60 executes the gatekeeper module 400 to store the unique token in the same storage as the character string. In other embodiments, the processor 60 executes the gatekeeper module 400 to store the unique token in separate storage. Thus, in the credit card example, the processor 60 may execute the gatekeeper module 400 to store the unique token in the same database as the encrypted credit card number or in a separate database.
  • In addition, as previously discussed, the processor 60 executes the gatekeeper module 400 to associate a sub-string of the character string associated with the token to identify that the token is associated with the character string without revealing the character string according to various embodiments of the invention, shown as Step 604. The use of such a sub-string provides a significant advantage over previous systems because it allows a user to operate a computing device to view what character strings are stored in storage without the gatekeeper module 400 (and/or other computer module) having to access, transmit, and display the actual character string to the user. In various embodiments, the processor 60 executes the gatekeeper module 400 to store the sub-string along with its corresponding token. In other embodiments, the processor 60 executes the gatekeeper module 400 to store the sub-string and token in separate storage (e.g., databases).
  • In Step 605, the processor 60 executes the gatekeeper module 400 to receive a request for the unique token, and in response, the processor 60 executes the gatekeeper module 400 to access the token from storage using the character string associated with the token according to various embodiments (shown as Step 606). The request can be made at various times and from various entities.
  • For example, a user visits a retailer's web site and selects one or more products to purchase. The user is sent by the retailer's web site to a “checkout” webpage to complete the purchase. Once on the “checkout” webpage, the user enters a new credit card number along with information on the “checkout” webpage to which to charge the purchase instead of using a credit card number previously stored. Since this is a new credit card number, the processor 60 executes the gatekeeper module 400 to obtain the credit card number and related information, to encrypt the card number and information, and to save the number and information to the database. In addition, the processor 60 executes the gatekeeper module 400 to generate and to associate a unique token with the new card number.
  • As previously discussed, a batching module may also be executed to receive the purchase transaction, and in conjunction to saving the purchase to a database, to send a request to the gatekeeper module 400 for the unique token associated with the new credit card number. The request includes the new credit card number. As a result, the processor 60 executes the gatekeeper module 400 to access the token by using the credit card number provided in the request and to transmit the token back to the batching module. Once the batching module retrieves the unique token associated with the new credit card number, the batching module is executed to save the purchase transaction to a database along with the token as opposed to the new credit card number.
  • The processor 60 may also execute the gatekeeper module 400 to verify whether the device or the user requesting the unique token (e.g., the batching module) is authorized to receive the token according to various embodiments of the invention, shown as Step 606. Thus, in order for a device or a user to gain access to the token, the device or the user will need to provide the character string and sufficient credentials to the gatekeeper module 400 and the processor 60 will execute the module 400 to check whether the device or the user is authorized to access the unique token.
  • As previously mentioned the processor 60 executes the gatekeeper module 400 of various embodiments to monitor the retention of the character strings and associated information stored in the database, shown as Step 609. Thus, the processor 60 will execute the gatekeeper module 400 to periodically check to determine whether any of the credit card numbers have expired or whether any of the credit card numbers have not been used within a set period of time, e.g., whether a certain period of time has elapsed since the credit card number was last used to make a purchase. Therefore, the processor 60 will execute the gatekeeper module 400 to delete a credit card number along with any corresponding information from the database if the credit card number has expired or has not been used within the set period of time, shown as Step 610. In various embodiments, the processor 60 may also execute the gatekeeper module 400 to archive the credit card number and corresponding information first to an external storage medium, such as a disk or tap drive, before deleting the number and corresponding information from the database, shown as Step 611.
  • The processor 60 can execute the gatekeeper module 400 to monitor the character strings through various techniques. In one embodiment, the processor 60 executes a scheduling feature of the gatekeeper module 400 to check each record in the database at a certain time each day to determine if any credit card numbers need to be purged from the database, shown as Step 608. In another embodiment, the processor 60 executes the gatekeeper module 400 to simply monitor each credit card number stored for a user in response to receiving a request for a particular token associated with the user to determine if any of the user's stored credit card numbers are out of date. In other embodiments, the processor 60 does not execute the gatekeeper module 400 to monitor information retention at all and this task is preformed by another executed module.
  • At Step 612, the processor 60 executes the gatekeeper module 400 to transmit the unique token to the device or the user requesting the token according to various embodiments of the invention. As previously discussed, the device or the user making the request can vary. For example, the device may be a program module executing on a computer system, a GUI, or an external source such as a credit card company computer system. In addition, the processor 60 can execute the gatekeeper module 400 to provide the token in various forms. In various embodiments, the processor 60 executes the gatekeeper module 400 to return the token in a digital format such as in a data stream, a file, or an e-mail or to display the token on a computer monitor. One of ordinary skill in the art is familiar with the numerous ways the gatekeeper module 400 can provide the token to the device or the user requesting the token in light of this disclosure.
  • Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these inventions pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the inventions are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.

Claims (28)

1-28. (canceled)
29. A method for conducting an online transaction on a website involving sensitive information, the method comprising:
associating a plurality of unique tokens with corresponding sub-strings of a plurality of character strings associated with a user, wherein direct links do not exist between the plurality of unique tokens and the plurality of character strings, the plurality of character strings comprising the sensitive information and the sub-strings being configured to identify the character strings without revealing the character strings;
after a particular sub-string of the plurality of sub-strings is selected to facilitate the online transaction:
saving a record for the online transaction comprising information for the online transaction and the unique token corresponding to the particular sub-string;
using the unique token corresponding to the particular sub-string for intermediate steps during processing of the online transaction; and
retrieving a character string corresponding to the particular sub-string, from a storage memory using the unique token corresponding to the particular sub-string and the particular sub-string to complete the online transaction using the saved record.
30. The method of claim 29, wherein the online transaction is a purchase on the website and the character strings are credit card numbers.
31. The method of claim 30, wherein the each of the plurality of sub-strings comprises a last four digits of the credit card number.
32. The method of claim 29, wherein each of the plurality of character strings is stored as encrypted data.
33. The method of claim 29, wherein each of the plurality of character strings is stored as a record in a database within the storage memory.
34. The method of claim 29, further comprising:
verifying that a computer device or a user retrieving the sensitive information is authorized to access the character string corresponding to the particular sub-string.
35. The method of claim 29, further comprising:
receiving a request to display the particular sub-string of the plurality of sub-strings, the request comprising the unique token corresponding to the particular sub-string; and
displaying the particular sub-string without revealing the sensitive information.
36. The method of claim 29, further comprising:
using the unique token corresponding to the particular sub-string to access and retrieve the particular sub-string without accessing the character string corresponding to the particular sub-string.
37. A data processing system for conducting an online transaction on a website involving sensitive information, the data processing system comprising a processor and one or more storage devices embodying computer-readable program instructions that, when executed by the processor, cause the data processing system to:
associate a plurality of unique tokens with corresponding sub-strings of a plurality of character strings associated with a user, wherein direct links do not exist between the plurality of unique tokens and the plurality of character strings, the plurality of character strings comprising the sensitive information and the sub-strings being configured to identify the character strings without revealing the character strings;
after a particular sub-string of the plurality of sub-strings is selected to facilitate the online transaction:
save a record for the online transaction comprising information for the online transaction and the unique token corresponding to the particular sub-string;
use the unique token corresponding to the particular sub-string for intermediate steps during processing of the online transaction; and
retrieve a character string corresponding to the particular sub-string from a storage memory using the unique token corresponding to the particular sub-string and the particular sub-string to complete the online transaction using the saved record.
38. The data processing system of claim 37, wherein the online transaction is a purchase on the website and the character strings are credit card numbers.
39. The data processing system of claim 38, wherein each of the plurality of sub-strings comprises a last four digits of the credit card number.
40. The data processing system of claim 37, wherein each of the plurality of character strings is stored as encrypted data.
41. The data processing system of claim 37, wherein each of the plurality of character strings is stored as a record in a database within the storage memory.
42. The data processing system of claim 37, wherein the computer-readable program instructions, when executed by the processor, further cause the data processing system to:
verify that a computer device or a user retrieving the sensitive information is authorized to access the character string corresponding to the particular sub-string.
43. The data processing system of claim 37, wherein the computer-readable program instructions, when executed by the processor, further cause the data processing system to:
receive a request to display the particular sub-string of the plurality of sub-strings, the request comprising the unique token corresponding to the particular sub-string; and
display the particular sub-string without revealing the sensitive information.
44. The data processing system of claim 37, wherein the computer-readable program instructions, when executed by the processor, further cause the data processing system to:
use the unique token corresponding to the particular sub-string to access and retrieve the particular sub-string without accessing the character string corresponding to the particular sub-string.
45. A computer program product for conducting an online transaction on a website involving sensitive information, the computer program product comprising a computer-readable storage embodying computer-readable program instructions that, when executed, cause a processor to:
associate a plurality of unique tokens with corresponding sub-strings, of a plurality of character strings associated with a user, wherein direct links do not exist between the plurality of unique tokens and the plurality of character strings, the plurality of character strings comprising the sensitive information and the sub-strings being configured to identify the character strings without revealing the character strings;
after a particular sub-string of the plurality of sub-strings is selected to facilitate the online transaction:
save a record for the online transaction comprising information for the online transaction and the unique token corresponding to the particular sub-string;
use the unique token corresponding to the particular sub-string for intermediate steps during processing of the online transaction; and
retrieve a character string corresponding to the particular sub-string from a storage memory using the unique token corresponding to the particular sub-string and the particular sub-string to complete the online transaction using the saved record.
46. The computer program product of claim 45, wherein the online transaction is a purchase on the website and the character strings are credit card numbers.
47. The computer program product of claim 46, wherein each of the plurality of sub-strings comprises a last four digits of the credit card number.
48. The computer program product of claim 45, wherein each of the plurality of character strings is stored as encrypted data.
49. The computer program product of claim 45, wherein each of the plurality of character strings is stored as a record in a database within the storage memory.
50. The computer program product of claim 45, wherein the computer-readable program instructions, when executed by a processor, further cause the processor to:
verify that a computer device or a user retrieving the sensitive information is authorized to access the character string corresponding to the particular sub-string.
51. The computer program product of claim 45, wherein the computer-readable program instructions, when executed, further cause the processor to:
receive a request to display the particular sub-string of the plurality of sub-strings, the request comprising the unique token corresponding to the particular sub-string; and
display the particular sub-string without revealing the sensitive information.
52. The computer program product of claim 45, wherein the computer-readable program instructions, when executed, further cause the processor to:
use the unique token corresponding to the particular sub-string to access and retrieve the particular sub-string without accessing the character string corresponding to the particular sub-string.
53. The method of claim 29, wherein each of the plurality of unique tokens comprises a database primary key from a database table.
54. The data processing system of claim 37, wherein each of the plurality of unique tokens comprises a database primary key from a database table.
55. The computer program product of claim 45, wherein each of the plurality of unique tokens comprises a database primary key from a database table.
US14/657,100 2007-10-23 2015-03-13 Encryption and tokenization architectures Abandoned US20160012436A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/657,100 US20160012436A1 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US98212807P 2007-10-23 2007-10-23
US12/203,415 US8549279B1 (en) 2007-10-23 2008-09-03 Encryption and tokenization architectures
US13/969,059 US20160005034A9 (en) 2007-10-23 2013-08-16 Encryption and tokenization architectures
US14/657,100 US20160012436A1 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/969,059 Continuation US20160005034A9 (en) 2007-10-23 2013-08-16 Encryption and tokenization architectures

Publications (1)

Publication Number Publication Date
US20160012436A1 true US20160012436A1 (en) 2016-01-14

Family

ID=49230004

Family Applications (11)

Application Number Title Priority Date Filing Date
US12/203,415 Active 2031-01-31 US8549279B1 (en) 2007-10-23 2008-09-03 Encryption and tokenization architectures
US13/969,059 Abandoned US20160005034A9 (en) 2007-10-23 2013-08-16 Encryption and tokenization architectures
US14/657,154 Active US10026080B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,100 Abandoned US20160012436A1 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,181 Active US10026081B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,135 Abandoned US20160012437A1 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,172 Active US10096023B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,086 Active US10147088B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,065 Active US10402822B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,049 Active US10102525B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US16/515,587 Abandoned US20190362343A1 (en) 2007-10-23 2019-07-18 Encryption and tokenization architectures

Family Applications Before (3)

Application Number Title Priority Date Filing Date
US12/203,415 Active 2031-01-31 US8549279B1 (en) 2007-10-23 2008-09-03 Encryption and tokenization architectures
US13/969,059 Abandoned US20160005034A9 (en) 2007-10-23 2013-08-16 Encryption and tokenization architectures
US14/657,154 Active US10026080B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures

Family Applications After (7)

Application Number Title Priority Date Filing Date
US14/657,181 Active US10026081B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,135 Abandoned US20160012437A1 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,172 Active US10096023B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,086 Active US10147088B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,065 Active US10402822B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US14/657,049 Active US10102525B2 (en) 2007-10-23 2015-03-13 Encryption and tokenization architectures
US16/515,587 Abandoned US20190362343A1 (en) 2007-10-23 2019-07-18 Encryption and tokenization architectures

Country Status (1)

Country Link
US (11) US8549279B1 (en)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8763142B2 (en) * 2009-04-07 2014-06-24 Princeton Payment Solutions Tokenized payment processing schemes
US9147189B2 (en) * 2009-08-20 2015-09-29 Gilbarco Inc. Secure reports for electronic payment systems
US8788429B2 (en) * 2009-12-30 2014-07-22 First Data Corporation Secure transaction management
US20120036048A1 (en) 2010-08-06 2012-02-09 Diy Media, Inc. System and method for distributing multimedia content
US9536366B2 (en) 2010-08-31 2017-01-03 Democracyontheweb, Llc Systems and methods for voting
US8762284B2 (en) * 2010-12-16 2014-06-24 Democracyontheweb, Llc Systems and methods for facilitating secure transactions
US9615428B2 (en) 2011-02-01 2017-04-04 John Joseph King Arrangement for an outdoor light enabling motion detection
US20130027212A1 (en) * 2011-07-29 2013-01-31 John Joseph King Visual indicator for a wireless garage door opener keypad unit and a method of implementing a visual indicator
US20130027181A1 (en) * 2011-07-29 2013-01-31 John Joseph King Wireless garage door opener keypad unit and a method of implementing a garage door opener keypad uint
US9105021B2 (en) 2012-03-15 2015-08-11 Ebay, Inc. Systems, methods, and computer program products for using proxy accounts
US9092776B2 (en) * 2012-03-15 2015-07-28 Qualcomm Incorporated System and method for managing payment in transactions with a PCD
US9749366B1 (en) 2012-09-14 2017-08-29 Amazon Technologies, Inc. Aggregated social network
WO2014060090A1 (en) * 2012-10-15 2014-04-24 Giesecke & Devrient Gmbh Loading and disbursement of an electronic sum of money
US11080701B2 (en) 2015-07-02 2021-08-03 Royal Bank Of Canada Secure processing of electronic payments
US11210648B2 (en) 2012-10-17 2021-12-28 Royal Bank Of Canada Systems, methods, and devices for secure generation and processing of data sets representing pre-funded payments
CA3126471A1 (en) 2012-10-17 2014-04-17 Royal Bank Of Canada Virtualization and secure processing of data
KR101677405B1 (en) 2012-11-20 2016-11-17 이베이 인크. Environment and methods for enabling electronic transactions
US9092777B1 (en) * 2012-11-21 2015-07-28 YapStone, Inc. Credit card tokenization techniques
US9226373B2 (en) 2013-10-30 2015-12-29 John Joseph King Programmable light timer and a method of implementing a programmable light timer
CN105825371A (en) * 2015-01-07 2016-08-03 阿里巴巴集团控股有限公司 Method and device for processing service
US11354651B2 (en) 2015-01-19 2022-06-07 Royal Bank Of Canada System and method for location-based token transaction processing
CN113379401A (en) 2015-01-19 2021-09-10 加拿大皇家银行 Secure processing of electronic payments
US11599879B2 (en) 2015-07-02 2023-03-07 Royal Bank Of Canada Processing of electronic transactions
EP3267373A1 (en) * 2016-07-08 2018-01-10 Klarna AB Income margin determination
US10162288B2 (en) * 2016-09-23 2018-12-25 Clover Technologies Group, Llc System and method of remanufacturing a toner container
US10992460B2 (en) 2019-04-23 2021-04-27 Advanced New Technologies Co., Ltd. Blockchain-based advertisement monitoring method and apparatus, and electronic device
CN110868400B (en) * 2019-10-21 2023-04-25 上海百事通信息技术股份有限公司 Data transmission method, device, storage medium and terminal
CN110830451B (en) * 2019-10-21 2022-03-29 上海百事通信息技术股份有限公司 Data transmission method, device, storage medium and terminal
CN110881028B (en) * 2019-10-24 2023-04-28 上海百事通信息技术股份有限公司 Data transmission control method and device, storage medium and terminal
US11809493B2 (en) * 2021-01-19 2023-11-07 Micro Focus Llc System and method for tokenization of data
KR20220170183A (en) * 2021-06-22 2022-12-29 공주대학교 산학협력단 Method, Computing Device and Computer-readable Medium for Classification of Encrypted Data Using Neural Network

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960411A (en) * 1997-09-12 1999-09-28 Amazon.Com, Inc. Method and system for placing a purchase order via a communications network
US6070165A (en) * 1997-12-24 2000-05-30 Whitmore; Thomas John Method for managing and accessing relational data in a relational cache
US6134551A (en) * 1995-09-15 2000-10-17 Intel Corporation Method of caching digital certificate revocation lists
US6243451B1 (en) * 1997-10-09 2001-06-05 Alcatel Usa Sourcing, L.P. Service management access point
US20020116341A1 (en) * 2000-04-11 2002-08-22 Hogan Edward J. Method and system for conducting secure payments over a computer network
US20040133513A1 (en) * 2002-11-01 2004-07-08 Mccoy Randal Identity protection technique in matching consumers with electronic billers
US20040139011A1 (en) * 2002-11-01 2004-07-15 Kozee Casey W. Technique for identifying probable payees of a consumer
US20040255143A1 (en) * 2001-08-14 2004-12-16 Kevin Wemyss Data integrity
US20070130070A1 (en) * 2005-12-02 2007-06-07 Credigy Technologies, Inc. System and method for an anonymous exchange of private data
US20070162292A1 (en) * 2006-01-10 2007-07-12 International Business Machines Corporation System and method for negotiating retailer access to consumer-owned content via negotiated electronic agreements in a retail environment
US20080104709A1 (en) * 2006-09-29 2008-05-01 Verus Card Services System and method for secure data storage
US20090119222A1 (en) * 1996-07-22 2009-05-07 O'neil Kevin P E-Bazaar featuring personal information security
US20100023416A1 (en) * 2006-05-31 2010-01-28 Lee Floyd Business portal
US7899706B1 (en) * 2006-05-11 2011-03-01 Sprint Communications Company L.P. Systems and methods for dynamic privacy management

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826245A (en) * 1995-03-20 1998-10-20 Sandberg-Diment; Erik Providing verification information for a transaction
US5978918A (en) * 1997-01-17 1999-11-02 Secure.Net Corporation Security process for public networks
US5961593A (en) * 1997-01-22 1999-10-05 Lucent Technologies, Inc. System and method for providing anonymous personalized browsing by a proxy system in a network
US5903881A (en) * 1997-06-05 1999-05-11 Intuit, Inc. Personal online banking with integrated online statement and checkbook user interface
US5883810A (en) * 1997-09-24 1999-03-16 Microsoft Corporation Electronic online commerce card with transactionproxy number for online transactions
US6636833B1 (en) 1998-03-25 2003-10-21 Obis Patents Ltd. Credit card system and method
US20010044785A1 (en) * 2000-01-05 2001-11-22 Stolfo Salvatore J. Method and system for private shipping to anonymous users of a computer network
US6748367B1 (en) * 1999-09-24 2004-06-08 Joonho John Lee Method and system for effecting financial transactions over a public network without submission of sensitive information
SG89314A1 (en) * 2000-01-18 2002-06-18 Cazh Pte Ltd Secure network electronic transactions and payments system
US20020111907A1 (en) * 2000-01-26 2002-08-15 Ling Marvin T. Systems and methods for conducting electronic commerce transactions requiring micropayment
US20010034717A1 (en) * 2000-02-15 2001-10-25 Whitworth Brian L. Fraud resistant credit card using encryption, encrypted cards on computing devices
US7627531B2 (en) * 2000-03-07 2009-12-01 American Express Travel Related Services Company, Inc. System for facilitating a transaction
US6802007B1 (en) * 2000-04-24 2004-10-05 International Business Machines Corporation Privacy and security for smartcards in a method, system and program
AU2001257280C1 (en) * 2000-04-24 2009-01-15 Visa International Service Association Online payer authentication service
US20040078276A1 (en) * 2000-12-22 2004-04-22 Kotaro Shimogori System for electronic merchandising and shopping
US7292999B2 (en) * 2001-03-15 2007-11-06 American Express Travel Related Services Company, Inc. Online card present transaction
EP1265202A1 (en) 2001-06-04 2002-12-11 Orbis Patents Limited Business-to-business commerce using financial transaction numbers
US20030040973A1 (en) * 2001-08-24 2003-02-27 International Business Machines Corporation Multi-level remote order entry system and method
US7103576B2 (en) * 2001-09-21 2006-09-05 First Usa Bank, Na System for providing cardless payment
AUPS169002A0 (en) * 2002-04-11 2002-05-16 Tune, Andrew Dominic An information storage system
US7707120B2 (en) * 2002-04-17 2010-04-27 Visa International Service Association Mobile account authentication service
US7730321B2 (en) * 2003-05-09 2010-06-01 Emc Corporation System and method for authentication of users and communications received from computer systems
US20040024702A1 (en) * 2002-07-31 2004-02-05 Comverse, Ltd. CATV billing system
US20060081702A1 (en) 2003-01-27 2006-04-20 Gopal Nandakumar System and method for universal consumer cards
EP1599999B1 (en) * 2003-03-04 2007-08-29 Gamelogic Inc. Conditional access system and method
US7472827B2 (en) * 2004-05-17 2009-01-06 American Express Travel Related Services Company, Inc. Limited use PIN system and method
EP1599008B1 (en) 2004-05-19 2008-03-05 Alcatel Lucent Method of providing a signing key for digitally signing, verifying or encrypting data
US7979351B1 (en) * 2004-05-25 2011-07-12 American Express Travel Related Services Company, Inc. Prepaid transaction card activation system and method
JP2008504612A (en) 2004-06-25 2008-02-14 ペッパーコイン インコーポレイテッド Payment processing system
US20060020542A1 (en) * 2004-07-21 2006-01-26 Litle Thomas J Method and system for processing financial transactions
US7097108B2 (en) 2004-10-28 2006-08-29 Bellsouth Intellectual Property Corporation Multiple function electronic cards
EP1880361A4 (en) * 2005-05-11 2010-05-05 First Data Corp Anti-fraud presentation instruments, systems and methods
US20060282372A1 (en) * 2005-06-09 2006-12-14 Endres Timothy G Method to secure credit card information stored electronically
US7578438B2 (en) * 2005-07-15 2009-08-25 Revolution Money Inc. System and method for user selection of fraud detection rules
US20070288377A1 (en) * 2006-04-26 2007-12-13 Yosef Shaked System and method for authenticating a customer's identity and completing a secure credit card transaction without the use of a credit card number
US8769275B2 (en) * 2006-10-17 2014-07-01 Verifone, Inc. Batch settlement transactions system and method
US20080208697A1 (en) * 2007-02-23 2008-08-28 Kargman James B Secure system and method for payment card and data storage and processing via information splitting
US20080243534A1 (en) 2007-03-26 2008-10-02 Serdar Mutlu Identity verification method
US8204825B2 (en) * 2007-07-16 2012-06-19 American Express Travel Related Services Company, Inc. System, method and computer program product for processing payments
US8355982B2 (en) * 2007-08-16 2013-01-15 Verifone, Inc. Metrics systems and methods for token transactions
WO2009044226A1 (en) 2007-10-03 2009-04-09 Gmx Sas System and method for secure management of transactions

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134551A (en) * 1995-09-15 2000-10-17 Intel Corporation Method of caching digital certificate revocation lists
US20090119222A1 (en) * 1996-07-22 2009-05-07 O'neil Kevin P E-Bazaar featuring personal information security
US5960411A (en) * 1997-09-12 1999-09-28 Amazon.Com, Inc. Method and system for placing a purchase order via a communications network
US6243451B1 (en) * 1997-10-09 2001-06-05 Alcatel Usa Sourcing, L.P. Service management access point
US6070165A (en) * 1997-12-24 2000-05-30 Whitmore; Thomas John Method for managing and accessing relational data in a relational cache
US20020116341A1 (en) * 2000-04-11 2002-08-22 Hogan Edward J. Method and system for conducting secure payments over a computer network
US20040255143A1 (en) * 2001-08-14 2004-12-16 Kevin Wemyss Data integrity
US20040139011A1 (en) * 2002-11-01 2004-07-15 Kozee Casey W. Technique for identifying probable payees of a consumer
US20040133513A1 (en) * 2002-11-01 2004-07-08 Mccoy Randal Identity protection technique in matching consumers with electronic billers
US20070130070A1 (en) * 2005-12-02 2007-06-07 Credigy Technologies, Inc. System and method for an anonymous exchange of private data
US20070162292A1 (en) * 2006-01-10 2007-07-12 International Business Machines Corporation System and method for negotiating retailer access to consumer-owned content via negotiated electronic agreements in a retail environment
US7899706B1 (en) * 2006-05-11 2011-03-01 Sprint Communications Company L.P. Systems and methods for dynamic privacy management
US20100023416A1 (en) * 2006-05-31 2010-01-28 Lee Floyd Business portal
US20080104709A1 (en) * 2006-09-29 2008-05-01 Verus Card Services System and method for secure data storage

Also Published As

Publication number Publication date
US10096023B2 (en) 2018-10-09
US20160012437A1 (en) 2016-01-14
US20160012440A1 (en) 2016-01-14
US20160012434A1 (en) 2016-01-14
US20140164250A1 (en) 2014-06-12
US10402822B2 (en) 2019-09-03
US8549279B1 (en) 2013-10-01
US20160005034A9 (en) 2016-01-07
US10147088B2 (en) 2018-12-04
US20160012438A1 (en) 2016-01-14
US20160012524A1 (en) 2016-01-14
US20190362343A1 (en) 2019-11-28
US10026080B2 (en) 2018-07-17
US20190362342A1 (en) 2019-11-28
US10102525B2 (en) 2018-10-16
US20160012439A1 (en) 2016-01-14
US10026081B2 (en) 2018-07-17
US20160012435A1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
US20190362343A1 (en) Encryption and tokenization architectures
US20210192497A1 (en) Methods, apparatus and computer program products for securely accessing account data
US9984252B2 (en) Methods and systems for facilitating personal data propagation
TW381241B (en) Electronic wallet based on distributed network
US8296323B2 (en) Personal data subscriber systems and methods
CN104040933B (en) The difference client-side encryption of the information from client
US20100057621A1 (en) Payment processing system secure healthcare data trafficking
US20200151707A1 (en) Card storage handler for tracking of card data storage across service provider platforms
EP2389659B1 (en) Personal data manager systems and methods
US11935039B2 (en) Encryption and tokenization architectures
US20230205743A1 (en) Security control framework for an enterprise data management platform
US11757638B2 (en) Account assertion
WO2021160981A1 (en) Methods and apparatus for controlling access to personal data
US20230418979A1 (en) Data resolution using user domain names

Legal Events

Date Code Title Description
AS Assignment

Owner name: UNITED PARCEL SERVICE OF AMERICA, INC., GEORGIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SAHASRANAMAN, MAHESH;PLUMMER, ROBERT W.;REEL/FRAME:035161/0985

Effective date: 20080910

AS Assignment

Owner name: UNITED PARCEL SERVICE OF AMERICA, INC., GEORGIA

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE SECOND INVENTOR'S NAME PREVIOUSLY RECORDED AT REEL: 035161 FRAME: 0985. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNORS:SAHASRANAMAN, MAHESH;PLUMER, ROBERT W.;REEL/FRAME:035679/0342

Effective date: 20080910

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION