SECURE ATTRIBUTE VERIFICATION

For secure attribute verification, a processor generates a plurality of hashes of a seed and a previous public group index. The processor further iteratively generates a public group index for each hash. The processor generates a one-time user identifier expressed as a hash chain of identifiers each based on one of the public group indexes. The processor verifies user attributes from the one-time user identifier.

FIELD

The subject matter disclosed herein relates to attribute verification.

BACKGROUND

User attributes are often verified during transactions.

BRIEF SUMMARY

An apparatus for secure attribute verification is disclosed. The apparatus includes a processor and a memory that stores code executable by the processor. The processor generates a plurality of hashes of a seed and a previous public group index. The processor further iteratively generates a public group index for each hash. The processor generates a one-time user identifier expressed as a hash chain of identifiers each based on one of the public group indexes. The processor verifies user attributes from the one-time user identifier. A method and program product also perform the functions of the apparatus.

DETAILED DESCRIPTION

Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment, but mean “one or more but not all embodiments” unless expressly specified otherwise. The terms “including,” “comprising,” “having,” and variations thereof mean “including but not limited to,” unless expressly specified otherwise. An enumerated listing of items does not imply that any or all of the items are mutually exclusive, unless expressly specified otherwise. The terms “a,” “an,” and “the” also refer to “one or more” unless expressly specified otherwise. The term “and/or” indicates embodiments of one or more of the listed elements, with “A and/or B” indicating embodiments of element A alone, element B alone, or elements A and B taken together.

FIG. 1is a schematic block diagram illustrating one embodiment of an attribute verification system100. The attribute verification system100verifies attributes of a user115bto a server105and/or other users115a. The user115bmay communicate with the server105and/or the other user115avia an electronic device110. The electronic device may be a mobile phone, a computer, a tablet computer, and the like.

The electronic device110communicates with the server105and/or other user115avia a network120. The network120may include a mobile telephone network, the Internet, a WiFi network, a wide area network, a local area network, or combinations thereof.

The server105and/or other user115amay request that the user115bprovide one or more user attributes with which to verify the user's identify. The user attributes may include a name, an address, an identification number such as a social security number, an email address, a phone number, an employer, and the like. Unfortunately, communicating the user attributes to the server105may expose those user attributes to interception. For example, the user attributes may be intercepted in the vicinity of the electronic device105and/or during communication over the network120. As a result, providing the user attributes puts those user attributes at risk of misappropriation.

The embodiments generate a one-time user identifier of identifiers that may be communicated from the user115bvia the electronic device110and the network120to the server105and/or other user115a. The one-time user identifier is used by the server105and/or other user115ain place of providing the user attributes. The one-time user identifier protects the user attributes, even if the one-time user identifier is intercepted. As a result, the user attributes are efficiently protected by the electronic device110and/or the server105.

FIG. 2is a schematic block diagram illustrating one embodiment of verification data200. The verification data200may be used to generate the one-time user identifier and to verify the user attributes201. The verification data200maybe organized as a data structure in a memory. In the depicted embodiment, the verification data200includes the user attributes201, a seed203, a logarithm function205, a hash function207, a public group209, one or more public group indexes210, and one or more corresponding identifiers211.

The user attributes201may comprise a social security number, an email address, a phone number, an employer, and the like. The user attributes201are known to both the server105and the user115b.

The seed203may be an input to a hash215. The seed203may be a hash of one or more user attributes201. For example, the seed203may be the user's social security number or a hash of the user's social security number.

The hash function207generates a hash215of the seed203and/or a previous public group index210. In one embodiment, the hash function207generates the hash215as a unique, deterministic value from the seed203and/or previous public group index210. In one embodiment, an initial hash215is generated from only the seed203. The hash function207may be a cryptographic hash function.

The public group209may include a large corpus of words. Each of the words may be an identifier211. In one embodiment, the public group209is a dictionary. The public group209may be of a large order q. In one embodiment, q is greater than 50,000, where q is the number of identifiers211in the public group209. Each public group index210may select a unique identifier211such as a word from the public group209.

The logarithm function205may be used to calculate the public group index210. In one embodiment, each public group index210is calculated as a logarithm function205over the public group209of the hash215. The logarithm function205may generate a unique public group index210from a given hash215.

Each identifier211is generated by using the public group index210to index the public group209to retrieve a corresponding identifier211. Thus the verification data200may be used to generate one or more identifiers211from a seed203and/or a previous public group index210.

FIG. 3Ais a schematic block diagram illustrating one embodiment of one-time user identifiers220. In the depicted embodiment, the one-time user identifiers220each comprise three identifiers211. A first one-time user identifier220acomprises a user identifiers211-0-2. A second one-time user identifier220bcomprises user identifiers211-3-5. In one embodiment, a given public group index210is the previous public group index210for a subsequent verification of the user attributes201

FIG. 3Bis a schematic block diagram illustrating one alternate embodiment of one-time user identifiers220. In the depicted embodiment, the one-time user identifiers220each comprise two identifiers211. A first one-time user identifier220acomprises a user identifiers211-0-1. A second one-time user identifier220bcomprises user identifiers211-2-3. In addition, the one-time user identifier220may comprise in the range of 2-4 identifiers211.

FIG. 4is a schematic block diagram illustrating one embodiment of a computer400. The computer400may be embodied in the server105and/or the electronic device110. In the depicted embodiment, the computer400includes a processor405, a memory410, and communication hardware415. The memory410may include a semiconductor storage device, a hard disk drive, an optical storage device, or combinations thereof. The memory410may store code. The processor405may execute the code. The communication hardware415may communicate with other devices such as the network120.

FIG. 5is a schematic flow chart diagram illustrating one embodiment of an attribute verification method500. The method500may generate the one-time user identifier220and verify user attributes201from the one-time user identifier220. The method500may be performed by the computer400and/or the processor405of the electronic device110and the server105. Thus, both the electronic device110and the server105generate the one-time user identifier220.

The method500starts, and in one embodiment, the processor405receives501the user attributes201. In a certain embodiment, the user115benters the user attributes201on the electronic device110. The electronic device210may securely communicate the user attributes201to the server105. As a result, both the server105and the user115bare in possession of the same user attributes201.

The processor405further generates503the seed203. The seed203may be a user attribute201. For example, the seed203may be a Social Security number. The seed203may be generated as a hash215of one or more user attributes201. For example, the seed203may be a hash215generated by the hash function207of a Social Security number user attribute201.

The processor405further generates505a plurality of hashes215of the seed203and/or previous public group indexes210. An initial hash215may be generated from only the seed203. In one embodiment, the hash H215is generated505using Equation 1, where HF is the hash function207, S is the seed203, and y0is a previous public group index210.

The processor405may generate505a hash215for each identifier211of the one-time user identifier220. For example, if the one-time user identifiers220includes three identifiers211, the processor405generates505three hashes215, HF(s), HF(s+y0), HF(s+y1). In one embodiment, a given public group index210is the previous public group index210for a subsequent verification of the user attributes201. For example, the public group index y1210may have been calculated for a previous one-time user identifier220and stored in the verification data200.

The processor405further iteratively generates507a public group index210for each hash215. Each public group index210may be calculated as a deterministic function of the hash215. In one embodiment, each public group index210is calculated as a hard discrete logarithm function205over the public group209over the hash215. In addition, each public group index210may be calculated as a hard logarithm function205over the public group209of the hash215. In a certain embodiment, a public group index PGI210is calculated using Equation 2

The processor405may generate509each identifier211by using the public group index210to index the public group209to retrieve the corresponding identifier211. For example, the public group index210may point to a first identifier211in the public group209. In one embodiment, the identifiers I211are generated509using Equation 3, where PG is the public group209. Each identifier211is based on one of the public group indexes PGI210.

The processor405generates511the one-time user identifier220expresses a hash chain of identifiers211. For example, the one-time user identifier UI220may be generated511as shown in Equation 4, where I0=PG(gH0mod g), I1=PG(gH1mod g), I2=PG(gH2mod q).

The processor405may communicate513the one-time user identifier220from the electronic device105to the server105and/or the other user115a. Both the electronic device110and the server105generate the same one-time user identifier220. The server105and/or the other user115amay verify515the user attribute201from the one-time user identifier220. The user attribute201may be verified515by comparing the one-time user identifier220from the electronic device105with the corresponding one-time user identifier220generated by the server105. If the one-time user identifiers220match, the user attributes201are verified.

The processor405further stores517each public group index210in the verification data200. As a result, a given public group index210is available for use as the previous public group index210for a subsequent verification of the user attributes201.

The embodiments generate the one-time user identifier220expressed as a hash chain of identifiers211at both the server105and the electronic device110. The server105and electronic device110must each have knowledge of the user attributes201and previous public group indexes210in order to generate the one-time user identifier220. As a result, the user115amay securely verify the user attributes201by communicating the one-time user identifier220, improving the efficiency of the computers400and/or processors405.