WO2019099012A1 - Error determination in input values in non-linear format - Google Patents
Error determination in input values in non-linear format Download PDFInfo
- Publication number
- WO2019099012A1 WO2019099012A1 PCT/US2017/062032 US2017062032W WO2019099012A1 WO 2019099012 A1 WO2019099012 A1 WO 2019099012A1 US 2017062032 W US2017062032 W US 2017062032W WO 2019099012 A1 WO2019099012 A1 WO 2019099012A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- values
- weights
- value
- data processor
- computer
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
- G06F21/46—Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3234—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding or coding, e.g. Huffman coding or error correction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Definitions
- Such data may commonly include some kind of personal identifier, such as a personal identification number or a personal account number for identifying the user and/or his or her account.
- personal identifiers may include a driver license number that may be displayed on a physical card that is the person’s driver license, or a credit or debit card number on a person’s credit card.
- the person possessing the personal identifier may need to input that personal Identifier into a computer system, such as when he or she is filling out an online application form requiring a driver license number or profile identification number.
- the user may need to enter a credit or debit card number into a Web page to conduct an e-commerce transaction. To do so, the user may need to first read the personal identifier as it is displayed and correctly understand what each individual value or symbol making up the personal identifier is representing, as well as correctly understand the proper sequence of the values or symbols making up the personal identifier. Second, he or she wouid need to correctiy enter each value or symbol and the proper sequence of values and symbols making up the personal identifier into the computer system, such as by typing out the data into a graphical user interface (GUI).
- GUI graphical user interface
- the Luhn algorithm (see U.S. Patent No. 2,950,048) is typically used to check for data entry errors for personal identifiers.
- the Luhn algorithm includes a check digit at the end of the personal identifier. This check digit is determined based upon the remaining digits of the personal identifier. If the digits of the personal identifier are erroneously transposed during a data entry process, then the Luhn algorithm is designed to catch the transposition error.
- a 16 digit account identifier for a credit card may be displayed as a 4 x 4 matrix of numbers on the credit card, as shown in U.S. Patent Application No. 13/648, 142, filed on October 9, 2012.
- the 16 digit account identifier is supposed to be read from left to right, one row at a time to obtain the correct 16 digit account identifier.
- the Luhn algorithm would not be effective to catch errors if a user read and input the number one column at a time, rather than one row at a time, since if is primary designed to catch errors in transpositions of adjacent numbers in a linear format if the data entry error is not properly detected, then it may be possible that a user could enter the wrong account number, which may actually be a valid account number for someone else. This is, of course, problematic since
- transactions could be conducted by a person other than the holder of the account number that was erroneously entered by the person.
- Embodiments of the invention address the aforementioned problem and other problems.
- embodiments of the invention provide computer-implemented methods for evaluating input data entered by a user of a computer system to determine whether the input data is valid or invalid.
- One embodiment of the invention is directed to a method comprising:
- a data processor receiving, by a data processor, a first plurality of values, the first plurality of values being displayed previously in a non-linear format, the first plurality of values including a check value; determining, by the data processor, a plurality of weights comprising an arrangement of one or more specific weights, wherein the arrangement comprises varying the one or more specific weights along two or more dimensions; and applying, by the data processor, the plurality of weights to the received first plurality of values to form a second plurality of values.
- the method may also include adding, by the data processor, one or more digits of each value in the second plurality of values to form a third plurality of values; summing, by the data processor, the third plurality of values to form a total value; performing, by the data processor, a modulo operation on the total value to form a remainder value; evaluating, by the data processor, if the remainder value is equal to zero; if the remainder is equal to zero, then reporting, by the data processor, that the received first plurality of values is valid; and if the remainder is not equal to zero, then reporting, by the data processor, that the received first plurality of values is invalid.
- Another embodiment of the invention is directed to a method comprising: receiving, by a data processor, a first plurality of values forming an incomplete identifier; determining, by the data processor, a plurality of weights comprising an arrangement of one or more specific weights, wherein the arrangement comprises varying the one or more specific weights along two or more dimensions; applying, by the data processor, the plurality of weights to the received first plurality of values to form a second plurality of values; adding, by the data processor, one or more digits of each value in the second plurality of values to form a third plurality of values; summing, by the data processor, the third plurality of values to form a total value; performing, by the data processor, a modulo operation on the total value to form a remainder value; evaluating, by the data processor, if the remainder value is equal to zero; if the remainder is equal to zero, then outputting, by the data processor, a check digit value of zero; and if the remainder is not equal to zero, then out
- Another embodiment of the invention is directed to a computer comprising: at least one processor; and at least one non-transitory computer-readable storage medium storing instructions that, when executed by the at least one processor, cause the system to perform the above-described methods.
- FIG. 1 illustrates an exemplary user identification card in the form of a driver license displaying a user identification number in a two-dimensional arrangement according to embodiments of the invention.
- FIG. 2 is a block diagram of an exemplary system for validating a user identification number according to embodiments of the invention.
- FIG. 3A illustrates a two-dimensional arrangement of weights comprising four specific weights according to embodiments of the invention.
- FIG. 3B illustrates a two-dimensional arrangement of weights comprising three specific weights according to embodiments of the invention.
- FIG. 4 is a flowchart of a method for generating a check digit for a plurality of input values according to embodiments of the invention.
- FIG. 5 shows illustrations that can serve to illustrate a method for generating a check digit for a plurality of input values according to embodiments of the invention.
- FIG. 6 is a flowchart of a method for evaluating the validity of a plurality of input values according to embodiments of the invention.
- FIGS. 7A-7C show illustrations that can serve to illustrate methods for validating a plurality of input values according to embodiments of the invention.
- FIG. 8 illustrates an exemplary computer.
- FIG. 9 shows an illustration of a card in the form of a payment card with a two-dimensional account identifier.
- Embodiments of the invention provide systems and methods for validating a sequence of input values, such as a sequence of numbers making up a personal identification number.
- the personal identification number may displayed on various media, such as on driver licenses, payment cards, identification cards, health insurance cards, membership cards, etc.
- the personal identification number may also be displayed electronically on an electronic device such as a mobile phone.
- the personal identifier may be an account number such as a primary account number (PAN) for a credit or debit card account, a driver’s license number, a medical record number, an insurance number, a social security number, etc.
- PAN primary account number
- the personal identifier can be displayed on a particular medium in a non-linear arrangement.
- the personal identification number may comprise sixteen numbers that are arranged in a two-dimensional, four-by-four configuration. More complex arrangements of a personal identification number may be desirable for various purposes. For example, more complex arrangements can improve the aesthetics of how the personal identification number may be displayed, to allow for a cleaner and more concise display of the personal identification number, or to enhance security, such as by arranging the personal identification number in a complex configuration to prevent the personal identification number from being easily scanned and stolen.
- a user may read a personal identification number as it is displayed in a non-linear format on a substrate of a card or on an electronic device.
- the user may manually enter the personal identification number into an electronic device (e.g., a personal computer or mobile phone), such as by typing the values of the personal identification number into a graphical user interface of the electronic device using a keyboard in the electronic device.
- an electronic device e.g., a personal computer or mobile phone
- the user may incorrectly read the personal identification number and/or make an erroneous entry of the personal identification number after viewing the non-linear personal identification number.
- a two-dimensional four-by-four arrangement of the values in the personal identification numbers may be read row-by-row or column-by-column, and then entered into the user interface of a computer system in a linear format.
- a user may nevertheless mistakenly understand the sequence of the values in the personal identification number to be a column-by-column sequence.
- the personal identification number may be formatted to assist with validation procedures.
- a check digit may be generated for a sequence of values in a personal identification number.
- the check digit is thereafter incorporated into the personal identification number as the final digit of the personal identification number.
- the personal identification number having the check digit may be subsequently validated by a computer when the personal identification number is entered into the computer system by a user.
- the computer can detect when an improper sequence of input values have been entered by a user.
- a plurality of weight values may be applied to the personal identification number.
- the weight values may vary along dimensions corresponding to the dimensions in which the personal identification number was previously displayed. Additional computational steps may further be applied onto the personal identification number to determine whether the entered values are a valid entry or not. Exemplary validation procedures will be described in greater detail below. [0029] This approach provides for a series of procedures that may be computed by a computer so that the user may be immediately notified that an entry is invalid as soon as the entry has been made. In addition, the validation procedures may be performed prior to performing any additional resource-intensive computations, such as data base searches or payment transaction processes, thereby allowing the computer system to conserve resources such as processing power, memory, network bandwidth, etc.
- this approach increases the likelihood that the system will make a correct evaluation of whether a user entry is valid or invalid by accounting for common types of data entry errors connected to the way a personal identification number may be displayed in particular, embodiments of the invention make it more probable for a computer system to defect when input values have been shifted along additional non linear dimensions. Further, this approach makes it more likely to detect erroneous data entry errors by users, thus preventing the misuse of someone else’s account number.
- A“computer” may include any suitable computational device.
- a computer can communicate with external devices such as remote server computers and portable devices such as credit cards, debit cards, or mobile phones.
- external devices such as remote server computers and portable devices such as credit cards, debit cards, or mobile phones.
- Examples of computers include laptop computers, mobile phones, tablet computers, computer servers, data centers, wearable devices (e.g., smart watches), vehicles (e.g., cars), etc.
- A“value” may include an amount of something.
- An“identifier” can include a sequence of numbers or symbols that is used to identify something.
- An identifier may identify an entity such as a user, a user account, a computer system, or an application.
- An identifier be formed as a number of values or a string of numbers. Identifiers may be of any suitable length or combination of characters.
- A“persona! identification number” or“user identification number” can be an example of an identifier that is a sequence of one or more numbers that is used to identify a person.
- Examples of a persona! identification number include a driver license number or a profile identification number for the user of a web service.
- Another example of a personal identification number may be a primary account number such as a credit or debit card account number.
- A“non-linear format” can include an arrangement of elements that is not linear.
- Non-linear formats may be two or three dimensional.
- the non-linear formats may be positions for values that collectively form a square, rectangle, circle, polygon, etc.
- A“Latin Square” can be an arrangement of numbers, letters, or other symbols in a square configuration where no symbol appears twice in the same row or column.
- A“weight” may be a value that may indicate a relative amount of something.
- a weight may correspond with and/or be applied to a value.
- A“modulo operation” or“modulus” may include a computational operation that calculates the remainder after dividing one value by another.
- driver license and a driver license number are discussed in detail as an example of an embodiment of the invention.
- embodiments of the invention may apply to other contexts including insurance cards and numbers, payment cards and numbers, social security cards and numbers, serial numbers for machines, etc.
- FIG. 1 shows an exemplary display medium for displaying information.
- the display medium is in the form of a driver license 100A. it is understood that other types of display media, whether physical or digital, may be used to display an identifier in alternative embodiments.
- an identifier displayed on the surface of the driver license 100A may comprise a driver license number 1 10A.
- the driver license number 1 10A may be a sixteen digit number that includes a check digit 1 12A (e.g.,“6”) as its final digit. It is understood that a driver license number 1 10A may comprise other combinations of numbers and symbols in alternative embodiments.
- the check digit 1 12A may have been previously generated by a computer system as part of generating a complete driver license number 1 10A having sixteen characters.
- the driver license number 1 10A may be arranged in a two-dimensional configuration as shown in FIG. 1.
- This two-dimensional configuration may be a four-by-four arrangement of the sixteen-digit driver license number 1 10A. It may be segmented into four four-digit segments that are laid out as four rows, which are vertically aligned. It is understood that the embodiments of the invention may also be applied to other arrangements of an identifier in alternative embodiments, such as by segmenting the identifier so as to have different numbers of values in each segment, or by arranging the identifier in various geometries. For example, the four segments of the driver license number discussed above may also be arranged in a circular or diagonal configuration, rather than in a vertical column.
- Displaying the driver license number 1 10A as a four-by-four square may be desirable, because it displays the sequence of numbers in a clear, concise, and aesthetically pleasing manner.
- this arrangement of the driver license number 1 10A may also cause a user to misread the proper sequence of the values in the driver license number 1 10A.
- a user may transpose the“7” on the left-most position on the second row with the“9” that is directly below.
- a user may make a more systemic error by misreading the driver license number 1 10A as being four column segments, rather than four row segments, such that the user would read each value on a column before proceeding onto the next column.
- the correct sequence of values in the driver license number 1 10A is
- a user may misread the sequence of the values in the driver license number 1 10a as being“379204....” The latter reading is not likely to occur if the identifier is displayed as a linear arrangement of values, such as where the values are arranged in a single line. If the identifier is linear, a user would not transpose values along a vertical dimension, since the identifier is one-dimensional.
- FIG. 2 shows an exemplary data validation system 200 that is capable of generating identifiers 1 10A having a check digit 1 12A and thereafter validate the identifiers 1 10A when they are read and converted into a digital representation, such as via manual data entry by a user.
- the data validation system 200 may comprise a server system 230 for generating identifiers 1 10A and a data entry device 220 that is communicatively linked to the server system 230 via a communication channel 240.
- the server system 230 may generate a driver license number 1 10A having sixteen digits and a final check digit 1 12A.
- the driver license number 1 10A may be printed on the driver license.
- a user of the data validation system 200 may then read the displayed driver license number and enter it into the data entry device 220.
- the data entry device 220 may be a smartphone having a screen that may display a graphical user interface of a smartphone application that uses a user’s driver license number 1 10A as their login identification. A user may then use the graphical user interface to input the driver license number in order to log into the smartphone application.
- the data entry device 220 may then determine whether the input data is valid or invalid if the input data is invalid, the data entry device 220 may respond by alerting the user that the input data is invalid.
- the data entry device 220 determines that the input data submitted by the user is valid, the user may proceed with any requested interaction or subsequent process, such as allowing a user to enter his or her password into a Website.
- the data entry device 220 may then submit the credential information comprising the password to the server system 230 via the communication channel 240.
- the server system 230 may then authenticate the user based on the submitted credential information and grant the user access to contents within the smartphone applications requiring user login to access.
- a single device or computer may perform ail the functions of the server system 230 and the data entry device 220.
- the computations involved in validating input data may be performed on the server system 230 after the driver license number 110A and/or the password has been submitted to the server system 230.
- the server system 230 upon receiving the driver license number 1 10A, may proceed to validate it, and send an appropriate response back to the data entry device 220 depending on whether the received driver license number 1 10A is or is not valid.
- FIGs. 3A and 3B show exemplary sets of weights 320A, 320B comprising sequence of one or more specific weights 322A, 322B that may correspond to and be applied to various sequences of input values according to embodiments of the present invention.
- FIG. 3A shows an exemplary set of weights 320A that may be applied to the four-by-four arrangement of the driver license number 1 10A from FIG. 1.
- the number of weights in the set of weights 320A may equal the maximum row or column dimension of the array into which the driver license number 1 10A is formed.
- the weights 320A may comprise an arrangement of four specific weights 322A.
- the specific weights 322A may comprise four numbers: 1 ,
- weights 322A may be selected to be powers of 2. This may provide for greater computational efficiency since multiplying these weights 322A to various input values would simply involve performing binary shifts. For example, one input value may be 7, which is represented as 0001 1 1 in binary. Applying a weight value of 8, which is represented as 001000 in binary, would simply involve shifting the bits to the left by three to produce 1 11000, which is a binary representation for 56 It is understood that specific weights 322 may comprise other values that may or may not be powers of 2 in alternative embodiments
- the weights 320A may be arranged into a four-by-four configuration in a data structure such as a two-dimensional array. This arrangement may correspond to the arrangement in how the driver license number 1 10A may be previously displayed on the driver license 100A, where the driver license number 1 10A is displayed in a four-by-four matrix. Each weight value may respectively correspond to one value in the driver license number 1 10A.
- the specific weights 322A may be arranged into the two-dimensional array such that the same weight cannot occur twice along each row or column In the two-dimensional array. In other words, the arrangement of the specific weights 322A may form a Latin square.
- the weights 320A may be arranged as to prevent diagonal symmetry.
- diagonal symmetry in the arrangement of weights 320A may prevent the data validation system 200 from detecting an invalid entry when the user mistakes the row-by-row arrangement of the driver license number 1 10A for being a column-by-column arrangement.
- the final weight value corresponding to the check digit 1 12 of the driver license number 1 10A may be assigned a value of 1 , which may be the value of one of the four specific weights 322A.
- the driver license number 1 10A can be easily calculated and generated, as will be discussed in greater detail with respect to FIG. 4.
- FIG. 3B shows another exemplary set of weights 320B comprising three specific weights 322B arranged into a three-by-three configuration.
- the weights 320B may have a one-to-one correspondence with a nine digit identifier 310 as shown in FIG. 3B
- the arrangement of the weights 320B may also correspond to how the identifier 310 may be displayed.
- the specific weights 322B may comprise three numbers such as 1 , 2, and 4.
- the weights 320B may be arranged into a Latin square it is understood that that other specific weights 322, more or less specific weights 322, and other arrangements of specific weights 322 may be used to implement the weights 320 in alternative embodiments.
- FIG. 4 shows flowchart illustrating an exemplary method for generating a check digit for a previously generated incomplete identifier. This process can be performed by any entity (e.g., a government, a payment processor, an issuer bank, etc.) that generates a personal identifier. The process in FIG. 4 can be described with reference to the illustrations in FIG. 5. it is understood that steps S410 to S490 in FIG.
- i 4 may be performed by the server system 230 or any other device or device components within the data vaiidation system 200.
- a data processor in a computer receives a first plurality of values forming an incomplete identifier.
- an identifier 1 10 (a complete identifier) may comprise a sequence of numbers, with the final number being a check digit 1 12A.
- an incomplete identifier 510 may comprise the leading sequence of numbers not including the check digit 1 12A.
- an identifier may be a driver license number 1 10A comprising sixteen numbers with a final number being its check digit 1 12A.
- the corresponding incomplete identifier 1 10 may therefore be the first fifteen numbers of the driver license number 1 10A.
- the incomplete identifier 510 may be generated by the server system 230 in any suitable manner. This may be done by using a random generator, which may be a software application or function within a software application, to generate 15 random numbers with each number being a non-negative integer between 0 and 9, inclusive in other embodiments, the incomplete identifier 510 may be systematically generated. For example, if the identifier is a PAN for a payment card, the PAN may have a BIN (bank identification number) that identifies an issuer bank. The first six digits of the incomplete identifier may be known, and the remaining digits may be randomly or systematically selected.
- a random generator which may be a software application or function within a software application, to generate 15 random numbers with each number being a non-negative integer between 0 and 9, inclusive in other embodiments, the incomplete identifier 510 may be systematically generated.
- the identifier is a PAN for a payment card
- the PAN may have a BIN (bank identification number) that identifie
- the server system 230 may receive an incomplete identifier 510 such as the first fifteen numbers of a driver license number 1 10A.
- this may be an active step that involves loading the incomplete driver license number 510 from memory.
- this may not be an active step. Rather, the incomplete driver license number 510 may have just been generated by the server system 230, such that subsequent steps may be performed immediately using the generated incomplete driver license number 510.
- the incomplete driver license number 510 may be represented as a string of fifteen numbers.
- the incomplete driver license number 510 may be a string of sixteen numbers wherein the first fifteen numbers are the previously generated numbers and the last number in the sequence of sixteen numbers is a zero. In this way, the zero may act as a placeholder for the check digit 1 12A until the check digit 1 12A is generated.
- the incomplete driver license number 510 may be stored in a one-dimensional array having sixteen memory slots wherein the fifteen randomly generated non-negative integers may be stored in the first fifteen memory slots and the last memory slot is left empty.
- the shaded boxes in FIG. 5 may represent a memory slot that may be either empty, storing a zero placeholder value, or a generated check digit 1 12A.
- the server system 230 may determine weights 520 for the input values of the incomplete identifier.
- this may be an active step that involves generating the weights 520 as a sequence of values, such as a string of sixteen numbers having a correspondence with the numbers in the driver license number 1 10A, or a sequence of sixteen numbers arranged into a two-dimensional array. This may be performed by assigning one or more specific weights, such as the four specific weights 322A from FIG. 3A, info positions in the two-dimensional array such that none of the four specific weights 322A would repeat along any of the dimensions of the two-dimensional array.
- the specific weights 322A may further be assigned as to prevent any diagonal symmetry.
- the value of a weight on the top left position of the two-dimensional array does not need to be the same as the value of a weight on the bottom right position of the two-dimensional array.
- the value of a weight on the left-most position of the third row in the two-dimensional array does not need to be equal to the value of the weight on the third position of the first row of the two-dimensional array, and does not need to be equal to the value of the weight on the second position of the fourth row of the two-dimensional array.
- step S420 may involve loading a set of previously generated weights 520 into memory in alternative embodiments, step S420 may involve selecting an appropriate set of weights 520 for the input data. This may involve making a determination as to how the input data may have been previously displayed, such as by analyzing a scan of the input data, or taking in an input parameter that specifies the arrangement of the input data, such as the number of dimensions in how the input data was previously displayed.
- step S420 may not be an active step, and may simply involve using a set of weights 520 for subsequent steps for generating a check digit.
- the weights 520 may be used as an input data for a software function that is used to perform step S430.
- the weights 320A are applied (e.g., multiplied) to the input values to form a second plurality of values.
- the input values could be a sequence of numbers corresponding to the first fifteen digits of a driver license number 1 10A that the user may have entered into a data entry device 220.
- each weight in the set of weights 520 may have a one-to-one correspondence with a value of the input data in particular, a placeholder value of zero for the check digit 1 12A may be appended to the input data so that the final weight value, which may have a value of 1 , may correspond to the placeholder value.
- Each weight value may then be multiplied with its corresponding value in the input data to produce a plurality of product values, as illustrated in 530 in FIG. 4.
- a new data structure such as a two- dimensional array, may be created to store this plurality of product values (i.e., a second plurality of values).
- the server system 230 may add up all digits for each product value that has two or more digits to produce a third plurality of values such as a plurality of summed values 540.
- a new data structure may be created to store the plurality of summed values.
- the product value on the top left position with a value of 24 may be summed in this way such that the 2 and 4 are added together to produce a value of 8, which may be stored in the top left position of the newly constructed two-dimensional array for storing the summed values.
- a summed value after a first iteration of summing the digits of a product value may still comprise two or more digits, in which case the two or more digits of the summed value may be summed again in an additional iteration to produce another summed value. This process may be repeated until a summed value having a single digit is obtained.
- the server system 230 may then generate the check digit 1 12A for the driver license number 1 10a.
- this may comprise calculating a total value of ail of the summed values produced in step S440 and performing a modulo operation on the total value to generate a remainder value as in step S460.
- the total value of the summed values may be 74.
- steps S470 and S480 if the remainder produced by the modulo operation S460 is equal to zero, then the check value is zero.
- steps S470 and S490 if the remainder is not zero, then the check value is determined. For example, a modulo operation, which determines a remainder value when dividing a value by ten, performed on 74 may yield a remainder value of 4.
- a check digit 1 12A may then be generated by subtracting 10 by the remainder value, which produces a value of 6 as shown under 550 in FIG. 5. The check digit 1 12A is therefore determined to be 6. It is understood that other computational steps may also be used to generate a check digit 1 12A in alternative embodiments.
- the server system 230 may then generate and output a complete driver license number 1 10a using the check digit 1 12A generated under step 450.
- the check digit 1 12A may replace the placeholder value at the end of the driver license number 1 10A to form a complete identifier 560.
- a card or other user device may be created using the complete identifier.
- the complete identifier may be encoded in a memory (e.g., a magnetic stripe or chip) of a payment card or driver license.
- the complete identifier may also be printed on the user device in a predetermined format (e.g., a 4 x 4 matrix).
- FIG. 6 shows a flowchart illustrating a method for validating a set of input values.
- the validation process can be performed using any suitable computer, including a POS terminal, user ’ s mobile phone, remote server computer, etc
- FIGS. 7A to 7C show illustrations of how the validating process is performed.
- a data entry device 220 may receive input data (input values) 710, which may comprise the sequence of values in a driver license number 1 10A in one embodiment, the user may input the driver license number 1 10A into the data entry device 220 via a graphic user interface as previously discussed with respect to FIG. 2.
- the data entry device 220 may determine an appropriate set of weights 320A to be applied to the input values. In one embodiment, this may involve loading the weights 320A into memory. The memory may be present in the validating device that will be used to perform the validation process. In alternative embodiments, this step may involve evaluating the input values and selecting an appropriate set of weights 320A for the input values based on one or more attributes of the input values, such as the number of digits in the input values in one embodiment, the same weights 320A for generating the driver license number 1 10A that the user has entered into the data entry device 220 is selected for validating the driver license number 1 10A that the user has entered info the data entry device 220.
- the weights 320A may comprise one or more specific weights 322 and comprise an arrangement wherein the same specific weights 322 is not repeated along any of one or more dimensions in the arrangement of the weights 320a, as previously discussed.
- the number of weight values is equal to the number of values in the input data such that each weight value may have a one-to-one correspondence with the values of the input data.
- the weights 720 may be applied to the input values 710 to form a second plurality of values 730.
- the data entry device 220 may calculate a plurality of product values by multiplying each weight value with its corresponding input value, similar to the process at step S430 as previously discussed with respect to FIG 4.
- step S640 digits in the second plurality of values 730 may be added to form a third plurality of values 740. For example, a sum of all digits is computed for each product value produced from step S630 that has two or more digits, similar to step S440 as previously discussed with respect to FIG. 4. As result a plurality of summed values may be generated for the plurality of product values generated at step S630.
- Step S840 may be repeated until a single digit summed value is generated for each product value from step S630.
- a sum value may be formed by summing the third plurality of values.
- the data entry device 220 may determine the validity of the input values by performing a series of computational operations on the third plurality of values (i.e., the summed values) produced from step S640, such as using the operations previously described with respect to S450 in FIG. 4.
- the total value may be calculated from the summed values.
- step S660 a modulo operation may then be performed on the total value to generate a remainder value.
- step S670 a determination may then be made as to whether the remainder value is equal to zero.
- step S680 if that is the case, then the input values may be determined to be valid in step S690, if the remainder value is not equal to zero, then the input values may be determined to be invalid, and an error notification may be then displayed to the user.
- the total value of the summed values produced from step S840 is 80. A modulo operation performed on this total value thus yields a remainder value of zero. Consequently, the data entry device 220 may then determine that the input values 710 received at step S610 are valid, and may subsequently submit the input values along with a user submitted password to the server system 230 for authenticating the user’s credential information.
- this data validation method as illustrated in steps S610 to S690 may be intended to be a quick and efficient way of making a preliminary determination as to the validity of the input data and may not be able to catch all possible invalid sequences and combinations of input values. It is further understood that other procedures for validating a sequence of input data involving the use of an arrangement of weights 320A that takes into consideration one or more dimensions in the way the input data may be previously displayed may also be used to implement alternative embodiments of the invention.
- FIG. 7B shows another exemplary execution of the same methods discussed with respect to FIG. 6.
- the present example involves a different set of input data wherein the user has misread the driver license number 1 10A as being a co!umn-by-co!umn arrangement, rather than a row-by- row arrangement.
- the input data may be a sequence of numbers starting with“379204...” rather than the correct sequence for the driver license number 1 10A that should begin with“301674....”
- the shaded boxes may represent the input values that deviate from a correct sequence of input values corresponding to the driver license number 1 10A of the user.
- the resulting sequence of input values becomes a mirrored transformation of the input values from FIG. 7 A along a top-left to bottom-right diagonal of the two-dimensional arrangement of the input values, as illustrated at 710 in FIG. 5B. Accordingly, it may be desirable that the weights 320A in 720 that may be selected at step S620 are not symmetrical along the same diagonal. Otherwise, the product values computed at step S630 may add up to the same total value at step S650 regardless of whether the input values are the valid sequence of input values from FIG. 7 A or the invalid sequence of input values from FIG. 7B, thus leading to the same validity determination at step S650 for both sets of input values. However, given the diagonal asymmetry of the weights 320A in 720, the two different sets of input values from FIGS. 7 A and 7B yield different sequences of product values, different total values, and ultimately different validity determinations.
- FIG. 7C shows another exemplary execution of the same computation processes discussed with respect to FIG. 7 A.
- the Input values 710 of FIG. 7C differ from the input values used in 710 of FIG. 5A in that certain values of the present input values are swapped along a vertical dimension.
- the input value on the left-most position of the second row is swapped with the input value on the left-most position of the third row of the arrangement of input values.
- the input value on the right-most position of the first row is also swapped with the input value on the right-most position of the second row.
- the method illustrated in FIG. 7C would result in a determination that the input values 710 are invalid because the arrangement of the weights 320A determined under step S620 assign different specific weights along a vertical dimension corresponding to the dimension along which the input values have been swapped by the user. Consequently the method would compute a different set of product values that would yield a different total value under step S650, resulting in a determination that the input values 710 are invalid.
- FIG. 8 depicts a block diagram of an computer 802.
- FIG. 8 shows a number of components, and computer 802 according to embodiments of the invention may comprise any suitable combination or subset of such components.
- the computer 802 may be representative of any of the devices illustrated in FIG. 2. Additionally, the computing device 802 could be a POS terminal, a fare gate, etc.
- Computer 802 may include a processor 802A (e.g., a microprocessor) for processing functions of computer 802.
- processor 802A e.g., a microprocessor
- One exemplary function enabled by processor 802A includes processing functions of display 802G to allow a user to see information
- Processor 802A may include hardware within computer 802 that can carry out instructions embodied as code in a computer-readable medium.
- An exemplary processor may be a central processing unit (CPU).
- a processor can include a single-core processor, a plurality of single-core processors, a multi-core processor, a plurality of multi-core processors, or any other suitable combination of hardware configured to perform arithmetical, logical, and/or input/output operations of a computing device.
- Computer 802 may comprise a memory element 802C (e.g., computer readable medium).
- Memory element 802C may be present within a body of computer 802 or may be detachable from the body of computer 802.
- the body of computer 802 may be in the form of a plastic substrate, housing, or other structure.
- Memory element 802C may store data (e.g , applications, etc.) and may be in any suitable form (e.g., a magnetic stripe, a memory chip, etc.).
- Memory element 802C may comprise an integrity check application 802B which may comprise code for performing the methods described above, with respect to FIGs. 6 and 7.
- the memory element 802C may also store code for performing the methods illustrated in FIGs.
- Integrity check application 802B may be computer code or data stored on a computer readable medium (e.g. memory element 802C or secure element 802A) that may be executable by processor 802D to complete a task (e.g., provide a service). Integrity check application 802B may be an application that operates on computer 802 and that may provide a user interface for user interaction (e.g., to enter and view information).
- a computer readable medium e.g. memory element 802C or secure element 802A
- Integrity check application 802B may be an application that operates on computer 802 and that may provide a user interface for user interaction (e.g., to enter and view information).
- Computer 802 may further include input elements 802D to allow a user to input information into the device.
- Example input elements 802D include hardware and software buttons, audio detection devices (e.g., microphone), biometric readers, touch screens, and the like.
- a user may activate one or more of input elements 802D, which may pass user information to computer 802.
- one or more of input elements 802D may be utilized to navigate through various screens
- Computer 802 may further include a contactless element 802E, which may typically be implemented in the form of a semiconductor chip (or other electronic data storage element) with an associated wireless transfer (e.g., data transmission) element, such as an antenna 802F.
- Contactless element 802E may be associated with (e.g., embedded within) computer 802 Data or control instructions transmitted via a cellular network may be applied to contactless element 802E by means of a contactless element interface (not shown).
- the contactless element interface may function to permit the exchange of data and/or control instructions between the user device circuitry (and hence the cellular network) and an optional contactless element 802E
- Contactless element 802E may be capable of transferring and receiving data using a near-field communications (NFC) capability (or NFC medium) typically in accordance with a standardized protocol or data transfer mechanism (e.g., ISO
- Computer 802 may support contactless transactions using the EMV contactless communication protocol (EMV-CCP), which is based on ISO 14448, in order to interact with access devices (e.g , reader devices). This capability may typically be met by implementing NFC.
- EMV-CCP EMV contactless communication protocol
- the NFC capability of computer 802 may be enabled by an embedded NFC chip or by the addition of an external memory card or accessory that contains the NFC chip.
- NFC capability is a short-range communications capability, such as RFID, Bluetooth ® , infra-red, or other data transfer capability that can be used to exchange data between the computer 802 and an interrogation device.
- computer 802 may be capabie of communicating and transferring data and/or control instructions via both cellular network and near-field communications capability.
- Computer 802 may further include an antenna 802F for wireless data transfer (e.g., data transmission).
- Antenna 802F may be utilized by computer 802 to send and receive wireless communications.
- Antenna 802F may assist in connectivity to the Internet or other communications networks and enable data transfer functions.
- Antenna 802F may enable SMS, USSD, as well as other types of cellular
- Computer 802 may include a display 802G that may show information to a user.
- Display 802G may be any suitable screen that enables touch functionality in some embodiments, display 802G of computer 802 may display a user interface that may allow the user to select and interact with objects presented on display 802G.
- the objects may include, but may not be limited to, menus, text fields, icons, and keys/inputs on a virtual keyboard.
- Computer 802 may include a speaker 802H, which may be any suitable device that can produce sound in response to an electrical audio signal. Speaker 802H may play recorded sounds, as well as prerecorded messages to communicate with a user. In some cases, the user may be able to receive instructions by voice
- Computer 802 may include a microphone 8021, which may be any suitable device that can convert sound to an electrical signal. Microphone 8021 may be utilized to capture one or more voice segments from a user. For example, microphone 8021 may allow the user to transmit his or her voice to computer 802. in some embodiments, the user may utilize voice commands detected by microphone 8021 to provide instructions to computer 802.
- a microphone 8021 may be any suitable device that can convert sound to an electrical signal.
- Microphone 8021 may be utilized to capture one or more voice segments from a user.
- microphone 8021 may allow the user to transmit his or her voice to computer 802. in some embodiments, the user may utilize voice commands detected by microphone 8021 to provide instructions to computer 802.
- FIG. 9 shows a drawing of a payment card 900 including a personal identifier in the form of a primary account number 912, which is printed or formed on a substrate 902.
- the primary account number 912 has sixteen digits, and is formed with four stacked rows with four values in each row.
- the payment card 900 includes a magnetic stripe 920 which may encode the primary account number 912 in a linear manner.
- the payment card 900 also includes a plastic substrate, and an image 920 of the cardholder may be on the plastic substrate.
- the payment card 900 may also include a signature panel, expiration date, and CVV2 (card verification value) value on it.
- the primary account number 912 can be formed in a manner as described above.
- the payment card may also have a memory chip (not shown) that may store the account number, and other information.
- any of the software components or functions described in this application may be implemented as software code to be executed by a processor using any suitable computer language such as, for example, Java, C++ or Perl using, for example, conventional or object-oriented techniques.
- the software code may be stored as a series of instructions, or commands on a computer readable medium, such as a random access memory (RAM), a read only memory (ROM), a magnetic medium such as a hard-drive or a floppy disk, or an optical medium such as a CD-ROM. Any such computer readable medium may reside on or within a single computational apparatus, and may be present on or within different computational apparatuses within a system or network.
- RAM random access memory
- ROM read only memory
- Any such computer readable medium may reside on or within a single computational apparatus, and may be present on or within different computational apparatuses within a system or network.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
Methods, systems, and devices are provided for validating input values that may be displayed in a multi-dimensional arrangement. In embodiments, the approach involves generating identifiers having a check digit that may be used in subsequent validation procedures. The approach may further involve performing a series of validation procedures on a sequence of input values corresponding to a previously generated identifier, wherein the validation procedures involve applying a set of weights to the input values, wherein the weights may be arranged as to vary along one or more dimensions.
Description
ERROR DETERMINATION IN INPUT VALUES IN NON-LINEAR
FORMAT BACKGROUND
[0001] When interacting with computer systems, such as desktop computers, laptops, tablets, smart phones, or any other computer systems having a user interface, people often need to manually Input data Into these computer systems. In particular, such data may commonly include some kind of personal identifier, such as a personal identification number or a personal account number for identifying the user and/or his or her account. Examples of such personal identifiers may include a driver license number that may be displayed on a physical card that is the person’s driver license, or a credit or debit card number on a person’s credit card.
[0002] In either case, the person possessing the personal identifier, i.e. the user, may need to input that personal Identifier into a computer system, such as when he or she is filling out an online application form requiring a driver license number or profile identification number. In another example, the user may need to enter a credit or debit card number into a Web page to conduct an e-commerce transaction. To do so, the user may need to first read the personal identifier as it is displayed and correctly understand what each individual value or symbol making up the personal identifier is representing, as well as correctly understand the proper sequence of the values or symbols making up the personal identifier. Second, he or she wouid need to correctiy enter each value or symbol and the proper sequence of values and symbols making up the personal identifier into the computer system, such as by typing out the data into a graphical user interface (GUI).
[0003] The Luhn algorithm (see U.S. Patent No. 2,950,048) is typically used to check for data entry errors for personal identifiers. The Luhn algorithm includes a check digit at the end of the personal identifier. This check digit is determined based upon the remaining digits of the personal identifier. If the digits of the personal identifier are
erroneously transposed during a data entry process, then the Luhn algorithm is designed to catch the transposition error.
[0004] While the conventional Luhn algorithm is suitable for use with conventional personal identifiers in a linear format, they are not as effective when the personal identifiers are in a non-linear format. For example, a 16 digit account identifier for a credit card may be displayed as a 4 x 4 matrix of numbers on the credit card, as shown in U.S. Patent Application No. 13/648, 142, filed on October 9, 2012. The 16 digit account identifier is supposed to be read from left to right, one row at a time to obtain the correct 16 digit account identifier. The Luhn algorithm would not be effective to catch errors if a user read and input the number one column at a time, rather than one row at a time, since if is primary designed to catch errors in transpositions of adjacent numbers in a linear format if the data entry error is not properly detected, then it may be possible that a user could enter the wrong account number, which may actually be a valid account number for someone else. This is, of course, problematic since
transactions could be conducted by a person other than the holder of the account number that was erroneously entered by the person.
[000S] Embodiments of the invention address the aforementioned problem and other problems.
BRIEF SUMMARY [0006] To address the above mentioned problems and other problems, embodiments of the invention provide computer-implemented methods for evaluating input data entered by a user of a computer system to determine whether the input data is valid or invalid.
[0007] One embodiment of the invention is directed to a method comprising:
receiving, by a data processor, a first plurality of values, the first plurality of values being displayed previously in a non-linear format, the first plurality of values including a check value; determining, by the data processor, a plurality of weights comprising an arrangement of one or more specific weights, wherein the arrangement comprises varying the one or more specific weights along two or more dimensions; and applying,
by the data processor, the plurality of weights to the received first plurality of values to form a second plurality of values. The method may also include adding, by the data processor, one or more digits of each value in the second plurality of values to form a third plurality of values; summing, by the data processor, the third plurality of values to form a total value; performing, by the data processor, a modulo operation on the total value to form a remainder value; evaluating, by the data processor, if the remainder value is equal to zero; if the remainder is equal to zero, then reporting, by the data processor, that the received first plurality of values is valid; and if the remainder is not equal to zero, then reporting, by the data processor, that the received first plurality of values is invalid.
[0008] Another embodiment of the invention is directed to a method comprising: receiving, by a data processor, a first plurality of values forming an incomplete identifier; determining, by the data processor, a plurality of weights comprising an arrangement of one or more specific weights, wherein the arrangement comprises varying the one or more specific weights along two or more dimensions; applying, by the data processor, the plurality of weights to the received first plurality of values to form a second plurality of values; adding, by the data processor, one or more digits of each value in the second plurality of values to form a third plurality of values; summing, by the data processor, the third plurality of values to form a total value; performing, by the data processor, a modulo operation on the total value to form a remainder value; evaluating, by the data processor, if the remainder value is equal to zero; if the remainder is equal to zero, then outputting, by the data processor, a check digit value of zero; and if the remainder is not equal to zero, then outputting, by the data processor, a non-zero check digit value.
[0009] Another embodiment of the invention is directed to a computer comprising: at least one processor; and at least one non-transitory computer-readable storage medium storing instructions that, when executed by the at least one processor, cause the system to perform the above-described methods.
[0010] Embodiments of the invention may be described with reference to the Detailed Description presented below and the accompanying Drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] FIG. 1 illustrates an exemplary user identification card in the form of a driver license displaying a user identification number in a two-dimensional arrangement according to embodiments of the invention. [0012] FIG. 2 is a block diagram of an exemplary system for validating a user identification number according to embodiments of the invention.
[0013] FIG. 3A illustrates a two-dimensional arrangement of weights comprising four specific weights according to embodiments of the invention.
[0014] FIG. 3B illustrates a two-dimensional arrangement of weights comprising three specific weights according to embodiments of the invention.
[0015] FIG. 4 is a flowchart of a method for generating a check digit for a plurality of input values according to embodiments of the invention.
[0016] FIG. 5 shows illustrations that can serve to illustrate a method for generating a check digit for a plurality of input values according to embodiments of the invention.
[0017] FIG. 6 is a flowchart of a method for evaluating the validity of a plurality of input values according to embodiments of the invention.
[0018] FIGS. 7A-7C show illustrations that can serve to illustrate methods for validating a plurality of input values according to embodiments of the invention. [0019] FIG. 8 illustrates an exemplary computer.
[0020] FIG. 9 shows an illustration of a card in the form of a payment card with a two-dimensional account identifier.
DETAILED DESCRIPTION
[0021] Embodiments of the invention provide systems and methods for validating a sequence of input values, such as a sequence of numbers making up a personal identification number. The personal identification number may displayed on various
media, such as on driver licenses, payment cards, identification cards, health insurance cards, membership cards, etc. The personal identification number may also be displayed electronically on an electronic device such as a mobile phone. The personal identifier may be an account number such as a primary account number (PAN) for a credit or debit card account, a driver’s license number, a medical record number, an insurance number, a social security number, etc. The personal identifier can be displayed on a particular medium in a non-linear arrangement. For example, the personal identification number may comprise sixteen numbers that are arranged in a two-dimensional, four-by-four configuration. More complex arrangements of a personal identification number may be desirable for various purposes. For example, more complex arrangements can improve the aesthetics of how the personal identification number may be displayed, to allow for a cleaner and more concise display of the personal identification number, or to enhance security, such as by arranging the personal identification number in a complex configuration to prevent the personal identification number from being easily scanned and stolen.
In embodiments of the invention, a user may read a personal identification number as it is displayed in a non-linear format on a substrate of a card or on an electronic device. The user may manually enter the personal identification number into an electronic device (e.g., a personal computer or mobile phone), such as by typing the values of the personal identification number into a graphical user interface of the electronic device using a keyboard in the electronic device. As previously discussed, in this data input process, the user may incorrectly read the personal identification number and/or make an erroneous entry of the personal identification number after viewing the non-linear personal identification number.
[0024] An error in data entry becomes even more likely when the personal identification number may be displayed in more complex arrangements, such as in the exemplary arrangements mentioned above. Given a linear arrangement of numbers, a user may mistakenly transpose two numbers that are adjacent to each other along the sequence of numbers. In contrast, when the personal identification number is arranged in a two-dimensional format as discussed above, a user not only may mistakenly
transpose two numbers that are horizontally adjacent to each other, but also transpose numbers that are vertically adjacent to each other along a vertical dimension of the two- dimensional arrangement of the personal identification number.
[0025] Further, a two-dimensional four-by-four arrangement of the values in the personal identification numbers may be read row-by-row or column-by-column, and then entered into the user interface of a computer system in a linear format. For a given personal identification number arranged in a two-dimensional format, while the proper sequence of the values in the personal identification number may be row-by-row, a user may nevertheless mistakenly understand the sequence of the values in the personal identification number to be a column-by-column sequence.
[0026] There is therefore a need for a method and system for validating a sequence of input values for a personal identifier that is presented in a non-linear format, and that is entered by a user into a computer.
[0027] To address these challenges, the personal identification number may be formatted to assist with validation procedures. In one embodiment, a check digit may be generated for a sequence of values in a personal identification number. The check digit is thereafter incorporated into the personal identification number as the final digit of the personal identification number. The personal identification number having the check digit may be subsequently validated by a computer when the personal identification number is entered into the computer system by a user. The computer can detect when an improper sequence of input values have been entered by a user.
[0028] To validate the personal identification number having the check digit, a plurality of weight values may be applied to the personal identification number. The weight values may vary along dimensions corresponding to the dimensions in which the personal identification number was previously displayed. Additional computational steps may further be applied onto the personal identification number to determine whether the entered values are a valid entry or not. Exemplary validation procedures will be described in greater detail below.
[0029] This approach provides for a series of procedures that may be computed by a computer so that the user may be immediately notified that an entry is invalid as soon as the entry has been made. In addition, the validation procedures may be performed prior to performing any additional resource-intensive computations, such as data base searches or payment transaction processes, thereby allowing the computer system to conserve resources such as processing power, memory, network bandwidth, etc. Furthermore, this approach increases the likelihood that the system will make a correct evaluation of whether a user entry is valid or invalid by accounting for common types of data entry errors connected to the way a personal identification number may be displayed in particular, embodiments of the invention make it more probable for a computer system to defect when input values have been shifted along additional non linear dimensions. Further, this approach makes it more likely to detect erroneous data entry errors by users, thus preventing the misuse of someone else’s account number.
[0030] Some descriptions of some terms may be useful to describe embodiments of the invention.
[0031] A“computer” may include any suitable computational device. A computer can communicate with external devices such as remote server computers and portable devices such as credit cards, debit cards, or mobile phones. Examples of computers include laptop computers, mobile phones, tablet computers, computer servers, data centers, wearable devices (e.g., smart watches), vehicles (e.g., cars), etc.
[0032] A“value” may include an amount of something.
[0033] An“identifier” can include a sequence of numbers or symbols that is used to identify something. An identifier may identify an entity such as a user, a user account, a computer system, or an application. An identifier be formed as a number of values or a string of numbers. Identifiers may be of any suitable length or combination of characters.
[0034] A“persona! identification number” or“user identification number” can be an example of an identifier that is a sequence of one or more numbers that is used to identify a person. Examples of a persona! identification number include a driver license
number or a profile identification number for the user of a web service. Another example of a personal identification number may be a primary account number such as a credit or debit card account number.
[0035] A“non-linear format” can include an arrangement of elements that is not linear. Non-linear formats may be two or three dimensional. The non-linear formats may be positions for values that collectively form a square, rectangle, circle, polygon, etc.
[0036] A“Latin Square” can be an arrangement of numbers, letters, or other symbols in a square configuration where no symbol appears twice in the same row or column.
[0037] A“weight” may be a value that may indicate a relative amount of something. In some embodiments, a weight may correspond with and/or be applied to a value.
[0038] A“modulo operation” or“modulus” may include a computational operation that calculates the remainder after dividing one value by another.
[0039] In the foregoing description, a driver license and a driver license number are discussed in detail as an example of an embodiment of the invention. However, embodiments of the invention may apply to other contexts including insurance cards and numbers, payment cards and numbers, social security cards and numbers, serial numbers for machines, etc.
[0040] FIG. 1 shows an exemplary display medium for displaying information. In one embodiment, the display medium is in the form of a driver license 100A. it is understood that other types of display media, whether physical or digital, may be used to display an identifier in alternative embodiments. [0041] In one embodiment, an identifier displayed on the surface of the driver license 100A may comprise a driver license number 1 10A. in one embodiment, the driver license number 1 10A may be a sixteen digit number that includes a check digit 1 12A (e.g.,“6”) as its final digit. It is understood that a driver license number 1 10A may
comprise other combinations of numbers and symbols in alternative embodiments. The check digit 1 12A may have been previously generated by a computer system as part of generating a complete driver license number 1 10A having sixteen characters.
[0042] In one embodiment, the driver license number 1 10A may be arranged in a two-dimensional configuration as shown in FIG. 1. This two-dimensional configuration may be a four-by-four arrangement of the sixteen-digit driver license number 1 10A. It may be segmented into four four-digit segments that are laid out as four rows, which are vertically aligned. It is understood that the embodiments of the invention may also be applied to other arrangements of an identifier in alternative embodiments, such as by segmenting the identifier so as to have different numbers of values in each segment, or by arranging the identifier in various geometries. For example, the four segments of the driver license number discussed above may also be arranged in a circular or diagonal configuration, rather than in a vertical column.
[0043] Displaying the driver license number 1 10A as a four-by-four square may be desirable, because it displays the sequence of numbers in a clear, concise, and aesthetically pleasing manner. However, this arrangement of the driver license number 1 10A may also cause a user to misread the proper sequence of the values in the driver license number 1 10A. For example, a user may transpose the“7” on the left-most position on the second row with the“9” that is directly below. In another example, a user may make a more systemic error by misreading the driver license number 1 10A as being four column segments, rather than four row segments, such that the user would read each value on a column before proceeding onto the next column. For example, although the correct sequence of values in the driver license number 1 10A is
“301674...,” a user may misread the sequence of the values in the driver license number 1 10a as being“379204....” The latter reading is not likely to occur if the identifier is displayed as a linear arrangement of values, such as where the values are arranged in a single line. If the identifier is linear, a user would not transpose values along a vertical dimension, since the identifier is one-dimensional.
[0044] FIG. 2 shows an exemplary data validation system 200 that is capable of generating identifiers 1 10A having a check digit 1 12A and thereafter validate the
identifiers 1 10A when they are read and converted into a digital representation, such as via manual data entry by a user. In one embodiment, the data validation system 200 may comprise a server system 230 for generating identifiers 1 10A and a data entry device 220 that is communicatively linked to the server system 230 via a communication channel 240.
[0045] In one embodiment, the server system 230 may generate a driver license number 1 10A having sixteen digits and a final check digit 1 12A. The driver license number 1 10A may be printed on the driver license. A user of the data validation system 200 may then read the displayed driver license number and enter it into the data entry device 220. In one embodiment, the data entry device 220 may be a smartphone having a screen that may display a graphical user interface of a smartphone application that uses a user’s driver license number 1 10A as their login identification. A user may then use the graphical user interface to input the driver license number in order to log into the smartphone application.
[0046] Upon entering the driver license number 1 10A, the data entry device 220 may then determine whether the input data is valid or invalid if the input data is invalid, the data entry device 220 may respond by alerting the user that the input data is invalid.
[0047] On the other hand, if the data entry device 220 determines that the input data submitted by the user is valid, the user may proceed with any requested interaction or subsequent process, such as allowing a user to enter his or her password into a Website. The data entry device 220 may then submit the credential information comprising the password to the server system 230 via the communication channel 240. The server system 230 may then authenticate the user based on the submitted credential information and grant the user access to contents within the smartphone applications requiring user login to access.
[0048] It is understood that other implementations of the data validation system 200 comprising more or fewer devices, other types of devices, and/or other
configurations of these devices may be possible in alternative embodiments. For example, in alternative embodiments, a single device or computer may perform ail the functions of the server system 230 and the data entry device 220. Alternatively, the
computations involved in validating input data may be performed on the server system 230 after the driver license number 110A and/or the password has been submitted to the server system 230. In this scenario, the server system 230, upon receiving the driver license number 1 10A, may proceed to validate it, and send an appropriate response back to the data entry device 220 depending on whether the received driver license number 1 10A is or is not valid.
[0049] FIGs. 3A and 3B show exemplary sets of weights 320A, 320B comprising sequence of one or more specific weights 322A, 322B that may correspond to and be applied to various sequences of input values according to embodiments of the present invention. FIG. 3A shows an exemplary set of weights 320A that may be applied to the four-by-four arrangement of the driver license number 1 10A from FIG. 1. In one embodiment, the number of weights in the set of weights 320A may equal the maximum row or column dimension of the array into which the driver license number 1 10A is formed.
[0050] In one embodiment, the weights 320A may comprise an arrangement of four specific weights 322A. The specific weights 322A may comprise four numbers: 1 ,
2 4, 8. These specific weights 322A may be selected to be powers of 2. This may provide for greater computational efficiency since multiplying these weights 322A to various input values would simply involve performing binary shifts. For example, one input value may be 7, which is represented as 0001 1 1 in binary. Applying a weight value of 8, which is represented as 001000 in binary, would simply involve shifting the bits to the left by three to produce 1 11000, which is a binary representation for 56 It is understood that specific weights 322 may comprise other values that may or may not be powers of 2 in alternative embodiments
[0051] In one embodiment, the weights 320A may be arranged into a four-by-four configuration in a data structure such as a two-dimensional array. This arrangement may correspond to the arrangement in how the driver license number 1 10A may be previously displayed on the driver license 100A, where the driver license number 1 10A is displayed in a four-by-four matrix. Each weight value may respectively correspond to one value in the driver license number 1 10A.
[0052] The specific weights 322A may be arranged into the two-dimensional array such that the same weight cannot occur twice along each row or column In the two-dimensional array. In other words, the arrangement of the specific weights 322A may form a Latin square. In addition, the weights 320A may be arranged as to prevent diagonal symmetry. As will be discussed in greater detail with respect to FIG. 5, diagonal symmetry in the arrangement of weights 320A may prevent the data validation system 200 from detecting an invalid entry when the user mistakes the row-by-row arrangement of the driver license number 1 10A for being a column-by-column arrangement. In addition, the final weight value corresponding to the check digit 1 12 of the driver license number 1 10A may be assigned a value of 1 , which may be the value of one of the four specific weights 322A. As a consequence, the driver license number 1 10A can be easily calculated and generated, as will be discussed in greater detail with respect to FIG. 4.
[00S3] FIG. 3B shows another exemplary set of weights 320B comprising three specific weights 322B arranged into a three-by-three configuration. The weights 320B may have a one-to-one correspondence with a nine digit identifier 310 as shown in FIG. 3B The arrangement of the weights 320B may also correspond to how the identifier 310 may be displayed. The specific weights 322B may comprise three numbers such as 1 , 2, and 4. In addition, the weights 320B may be arranged into a Latin square it is understood that that other specific weights 322, more or less specific weights 322, and other arrangements of specific weights 322 may be used to implement the weights 320 in alternative embodiments. For example, given that diagonal asymmetry may not be possible for a three-by-three arrangement of the specific weights 322B using only three unique weights 322B, additional specific weights may be introduced to allow for diagonal asymmetry in the three-by-three arrangement of specific weights 322B.
[0054] FIG. 4 shows flowchart illustrating an exemplary method for generating a check digit for a previously generated incomplete identifier. This process can be performed by any entity (e.g., a government, a payment processor, an issuer bank, etc.) that generates a personal identifier. The process in FIG. 4 can be described with reference to the illustrations in FIG. 5. it is understood that steps S410 to S490 in FIG.
i
4 may be performed by the server system 230 or any other device or device components within the data vaiidation system 200.
[00S5] In step S410, a data processor in a computer receives a first plurality of values forming an incomplete identifier. As previously discussed an identifier 1 10 (a complete identifier) may comprise a sequence of numbers, with the final number being a check digit 1 12A. Accordingly, an incomplete identifier 510 may comprise the leading sequence of numbers not including the check digit 1 12A. For example, an identifier may be a driver license number 1 10A comprising sixteen numbers with a final number being its check digit 1 12A. The corresponding incomplete identifier 1 10 may therefore be the first fifteen numbers of the driver license number 1 10A.
[0056] In one embodiment, the incomplete identifier 510 may be generated by the server system 230 in any suitable manner. This may be done by using a random generator, which may be a software application or function within a software application, to generate 15 random numbers with each number being a non-negative integer between 0 and 9, inclusive in other embodiments, the incomplete identifier 510 may be systematically generated. For example, if the identifier is a PAN for a payment card, the PAN may have a BIN (bank identification number) that identifies an issuer bank. The first six digits of the incomplete identifier may be known, and the remaining digits may be randomly or systematically selected.
[0057] In a more specific illustration, at step S410, the server system 230 may receive an incomplete identifier 510 such as the first fifteen numbers of a driver license number 1 10A. In one embodiment, this may be an active step that involves loading the incomplete driver license number 510 from memory. In alternative embodiments, this may not be an active step. Rather, the incomplete driver license number 510 may have just been generated by the server system 230, such that subsequent steps may be performed immediately using the generated incomplete driver license number 510.
[0058] In one embodiment, the incomplete driver license number 510 may be represented as a string of fifteen numbers. In alternative embodiments, the incomplete driver license number 510 may be a string of sixteen numbers wherein the first fifteen numbers are the previously generated numbers and the last number in the sequence of
sixteen numbers is a zero. In this way, the zero may act as a placeholder for the check digit 1 12A until the check digit 1 12A is generated. In alternative embodiments, the incomplete driver license number 510 may be stored in a one-dimensional array having sixteen memory slots wherein the fifteen randomly generated non-negative integers may be stored in the first fifteen memory slots and the last memory slot is left empty. In one embodiment, the shaded boxes in FIG. 5 may represent a memory slot that may be either empty, storing a zero placeholder value, or a generated check digit 1 12A.
[0059] At step S420, the server system 230 may determine weights 520 for the input values of the incomplete identifier. In one embodiment, this may be an active step that involves generating the weights 520 as a sequence of values, such as a string of sixteen numbers having a correspondence with the numbers in the driver license number 1 10A, or a sequence of sixteen numbers arranged into a two-dimensional array. This may be performed by assigning one or more specific weights, such as the four specific weights 322A from FIG. 3A, info positions in the two-dimensional array such that none of the four specific weights 322A would repeat along any of the dimensions of the two-dimensional array. The specific weights 322A may further be assigned as to prevent any diagonal symmetry. For example, the value of a weight on the top left position of the two-dimensional array does not need to be the same as the value of a weight on the bottom right position of the two-dimensional array. Similarly, the value of a weight on the left-most position of the third row in the two-dimensional array does not need to be equal to the value of the weight on the third position of the first row of the two-dimensional array, and does not need to be equal to the value of the weight on the second position of the fourth row of the two-dimensional array.
[0060] In another embodiment, step S420 may involve loading a set of previously generated weights 520 into memory in alternative embodiments, step S420 may involve selecting an appropriate set of weights 520 for the input data. This may involve making a determination as to how the input data may have been previously displayed, such as by analyzing a scan of the input data, or taking in an input parameter that specifies the arrangement of the input data, such as the number of dimensions in how the input data was previously displayed. In a further embodiment, step S420 may not
be an active step, and may simply involve using a set of weights 520 for subsequent steps for generating a check digit. For example, the weights 520 may be used as an input data for a software function that is used to perform step S430.
[0061] At step S430, the weights 320A are applied (e.g., multiplied) to the input values to form a second plurality of values. The input values could be a sequence of numbers corresponding to the first fifteen digits of a driver license number 1 10A that the user may have entered into a data entry device 220. In one embodiment, each weight in the set of weights 520 may have a one-to-one correspondence with a value of the input data in particular, a placeholder value of zero for the check digit 1 12A may be appended to the input data so that the final weight value, which may have a value of 1 , may correspond to the placeholder value. Each weight value may then be multiplied with its corresponding value in the input data to produce a plurality of product values, as illustrated in 530 in FIG. 4. in one embodiment, a new data structure, such as a two- dimensional array, may be created to store this plurality of product values (i.e., a second plurality of values).
[0062] At step S440, the server system 230 may add up all digits for each product value that has two or more digits to produce a third plurality of values such as a plurality of summed values 540. in one embodiment, a new data structure may be created to store the plurality of summed values. In one example of how this calculation may be performed, the product value on the top left position with a value of 24 may be summed in this way such that the 2 and 4 are added together to produce a value of 8, which may be stored in the top left position of the newly constructed two-dimensional array for storing the summed values. In some embodiment, a summed value after a first iteration of summing the digits of a product value may still comprise two or more digits, in which case the two or more digits of the summed value may be summed again in an additional iteration to produce another summed value. This process may be repeated until a summed value having a single digit is obtained.
[0063] The server system 230 may then generate the check digit 1 12A for the driver license number 1 10a. In one embodiment, in step S450, this may comprise calculating a total value of ail of the summed values produced in step S440 and
performing a modulo operation on the total value to generate a remainder value as in step S460. For example, given the summed values produced by step S440 as illustrated on FIG. 5, the total value of the summed values may be 74.
[0064] In steps S470 and S480, if the remainder produced by the modulo operation S460 is equal to zero, then the check value is zero. In steps S470 and S490, if the remainder is not zero, then the check value is determined. For example, a modulo operation, which determines a remainder value when dividing a value by ten, performed on 74 may yield a remainder value of 4. A check digit 1 12A may then be generated by subtracting 10 by the remainder value, which produces a value of 6 as shown under 550 in FIG. 5. The check digit 1 12A is therefore determined to be 6. It is understood that other computational steps may also be used to generate a check digit 1 12A in alternative embodiments.
[006S] The server system 230 may then generate and output a complete driver license number 1 10a using the check digit 1 12A generated under step 450. In one embodiment, the check digit 1 12A may replace the placeholder value at the end of the driver license number 1 10A to form a complete identifier 560.
[0066] Once the complete identifier is formed, a card or other user device may be created using the complete identifier. The complete identifier may be encoded in a memory (e.g., a magnetic stripe or chip) of a payment card or driver license. The complete identifier may also be printed on the user device in a predetermined format (e.g., a 4 x 4 matrix).
[0067] FIG. 6 shows a flowchart illustrating a method for validating a set of input values. The validation process can be performed using any suitable computer, including a POS terminal, user’s mobile phone, remote server computer, etc FIGS. 7A to 7C show illustrations of how the validating process is performed.
[0068] At step S610, a data entry device 220 may receive input data (input values) 710, which may comprise the sequence of values in a driver license number 1 10A in one embodiment, the user may input the driver license number 1 10A into the
data entry device 220 via a graphic user interface as previously discussed with respect to FIG. 2.
[0069] At step S620, the data entry device 220 may determine an appropriate set of weights 320A to be applied to the input values. In one embodiment, this may involve loading the weights 320A into memory. The memory may be present in the validating device that will be used to perform the validation process. In alternative embodiments, this step may involve evaluating the input values and selecting an appropriate set of weights 320A for the input values based on one or more attributes of the input values, such as the number of digits in the input values in one embodiment, the same weights 320A for generating the driver license number 1 10A that the user has entered into the data entry device 220 is selected for validating the driver license number 1 10A that the user has entered info the data entry device 220. The weights 320A may comprise one or more specific weights 322 and comprise an arrangement wherein the same specific weights 322 is not repeated along any of one or more dimensions in the arrangement of the weights 320a, as previously discussed. In addition, the number of weight values is equal to the number of values in the input data such that each weight value may have a one-to-one correspondence with the values of the input data.
[0070] At step S630, the weights 720 may be applied to the input values 710 to form a second plurality of values 730. For example, the data entry device 220 may calculate a plurality of product values by multiplying each weight value with its corresponding input value, similar to the process at step S430 as previously discussed with respect to FIG 4.
[0071] At step S640, digits in the second plurality of values 730 may be added to form a third plurality of values 740. For example, a sum of all digits is computed for each product value produced from step S630 that has two or more digits, similar to step S440 as previously discussed with respect to FIG. 4. As result a plurality of summed values may be generated for the plurality of product values generated at step S630.
Step S840 may be repeated until a single digit summed value is generated for each product value from step S630.
[0072] At step S650, a sum value may be formed by summing the third plurality of values. Illustratively, the data entry device 220 may determine the validity of the input values by performing a series of computational operations on the third plurality of values (i.e., the summed values) produced from step S640, such as using the operations previously described with respect to S450 in FIG. 4. In one embodiment, the total value may be calculated from the summed values.
[0073] In step S660, a modulo operation may then be performed on the total value to generate a remainder value. In step S670, a determination may then be made as to whether the remainder value is equal to zero. In step S680, if that is the case, then the input values may be determined to be valid in step S690, if the remainder value is not equal to zero, then the input values may be determined to be invalid, and an error notification may be then displayed to the user. For example, with reference to FIG. 7A, the total value of the summed values produced from step S840 is 80. A modulo operation performed on this total value thus yields a remainder value of zero. Consequently, the data entry device 220 may then determine that the input values 710 received at step S610 are valid, and may subsequently submit the input values along with a user submitted password to the server system 230 for authenticating the user’s credential information.
[0074] It is understood that this data validation method as illustrated in steps S610 to S690 may be intended to be a quick and efficient way of making a preliminary determination as to the validity of the input data and may not be able to catch all possible invalid sequences and combinations of input values. It is further understood that other procedures for validating a sequence of input data involving the use of an arrangement of weights 320A that takes into consideration one or more dimensions in the way the input data may be previously displayed may also be used to implement alternative embodiments of the invention.
[0075] FIG. 7B shows another exemplary execution of the same methods discussed with respect to FIG. 6. In contrast to the example in FIG. 7A, the present example involves a different set of input data wherein the user has misread the driver license number 1 10A as being a co!umn-by-co!umn arrangement, rather than a row-by-
row arrangement. As a result, the input data may be a sequence of numbers starting with“379204...” rather than the correct sequence for the driver license number 1 10A that should begin with“301674....” In one embodiment, the shaded boxes may represent the input values that deviate from a correct sequence of input values corresponding to the driver license number 1 10A of the user.
[0076] As a result of the user mistake described above, the resulting sequence of input values becomes a mirrored transformation of the input values from FIG. 7 A along a top-left to bottom-right diagonal of the two-dimensional arrangement of the input values, as illustrated at 710 in FIG. 5B. Accordingly, it may be desirable that the weights 320A in 720 that may be selected at step S620 are not symmetrical along the same diagonal. Otherwise, the product values computed at step S630 may add up to the same total value at step S650 regardless of whether the input values are the valid sequence of input values from FIG. 7 A or the invalid sequence of input values from FIG. 7B, thus leading to the same validity determination at step S650 for both sets of input values. However, given the diagonal asymmetry of the weights 320A in 720, the two different sets of input values from FIGS. 7 A and 7B yield different sequences of product values, different total values, and ultimately different validity determinations.
[0077] FIG. 7C shows another exemplary execution of the same computation processes discussed with respect to FIG. 7 A. In contrast to FIG. 7A, the Input values 710 of FIG. 7C differ from the input values used in 710 of FIG. 5A in that certain values of the present input values are swapped along a vertical dimension. In particular, the input value on the left-most position of the second row is swapped with the input value on the left-most position of the third row of the arrangement of input values. Similarly, the input value on the right-most position of the first row is also swapped with the input value on the right-most position of the second row.
[0078] Due to user error, the method illustrated in FIG. 7C would result in a determination that the input values 710 are invalid because the arrangement of the weights 320A determined under step S620 assign different specific weights along a vertical dimension corresponding to the dimension along which the input values have been swapped by the user. Consequently the method would compute a different set of
product values that would yield a different total value under step S650, resulting in a determination that the input values 710 are invalid.
[0079] FIG. 8 depicts a block diagram of an computer 802. FIG. 8 shows a number of components, and computer 802 according to embodiments of the invention may comprise any suitable combination or subset of such components. The computer 802 may be representative of any of the devices illustrated in FIG. 2. Additionally, the computing device 802 could be a POS terminal, a fare gate, etc.
[0080] Computer 802 may include a processor 802A (e.g., a microprocessor) for processing functions of computer 802. One exemplary function enabled by processor 802A includes processing functions of display 802G to allow a user to see information
(e.g., interfaces, contact information, messages, etc.). Processor 802A may include hardware within computer 802 that can carry out instructions embodied as code in a computer-readable medium.
[0081] An exemplary processor may be a central processing unit (CPU). As used herein, a processor can include a single-core processor, a plurality of single-core processors, a multi-core processor, a plurality of multi-core processors, or any other suitable combination of hardware configured to perform arithmetical, logical, and/or input/output operations of a computing device.
[0082] Computer 802 may comprise a memory element 802C (e.g., computer readable medium). Memory element 802C may be present within a body of computer 802 or may be detachable from the body of computer 802. The body of computer 802 may be in the form of a plastic substrate, housing, or other structure. Memory element 802C may store data (e.g , applications, etc.) and may be in any suitable form (e.g., a magnetic stripe, a memory chip, etc.). [0083] Memory element 802C may comprise an integrity check application 802B which may comprise code for performing the methods described above, with respect to FIGs. 6 and 7. The memory element 802C may also store code for performing the methods illustrated in FIGs. 4 and 5, if personal identifiers are created. Integrity check application 802B may be computer code or data stored on a computer readable medium
(e.g. memory element 802C or secure element 802A) that may be executable by processor 802D to complete a task (e.g., provide a service). Integrity check application 802B may be an application that operates on computer 802 and that may provide a user interface for user interaction (e.g., to enter and view information).
[0084] Computer 802 may further include input elements 802D to allow a user to input information into the device. Example input elements 802D include hardware and software buttons, audio detection devices (e.g., microphone), biometric readers, touch screens, and the like. A user may activate one or more of input elements 802D, which may pass user information to computer 802. In some cases, one or more of input elements 802D may be utilized to navigate through various screens
[008S] Computer 802 may further include a contactless element 802E, which may typically be implemented in the form of a semiconductor chip (or other electronic data storage element) with an associated wireless transfer (e.g., data transmission) element, such as an antenna 802F. Contactless element 802E may be associated with (e.g., embedded within) computer 802 Data or control instructions transmitted via a cellular network may be applied to contactless element 802E by means of a contactless element interface (not shown). In some cases, the contactless element interface may function to permit the exchange of data and/or control instructions between the user device circuitry (and hence the cellular network) and an optional contactless element 802E
[0086] Contactless element 802E may be capable of transferring and receiving data using a near-field communications (NFC) capability (or NFC medium) typically in accordance with a standardized protocol or data transfer mechanism (e.g., ISO
14448/NFC) Computer 802 may support contactless transactions using the EMV contactless communication protocol (EMV-CCP), which is based on ISO 14448, in order to interact with access devices (e.g , reader devices). This capability may typically be met by implementing NFC. The NFC capability of computer 802 may be enabled by an embedded NFC chip or by the addition of an external memory card or accessory that contains the NFC chip. NFC capability is a short-range communications capability, such as RFID, Bluetooth®, infra-red, or other data transfer capability that can be used to
exchange data between the computer 802 and an interrogation device. Thus, computer 802 may be capabie of communicating and transferring data and/or control instructions via both cellular network and near-field communications capability.
[0087] Computer 802 may further include an antenna 802F for wireless data transfer (e.g., data transmission). Antenna 802F may be utilized by computer 802 to send and receive wireless communications. Antenna 802F may assist in connectivity to the Internet or other communications networks and enable data transfer functions.
Antenna 802F may enable SMS, USSD, as well as other types of cellular
communications, such as voice call and data communications. [0088] Computer 802 may include a display 802G that may show information to a user. Display 802G may be any suitable screen that enables touch functionality in some embodiments, display 802G of computer 802 may display a user interface that may allow the user to select and interact with objects presented on display 802G. The objects may include, but may not be limited to, menus, text fields, icons, and keys/inputs on a virtual keyboard.
[0089] Computer 802 may include a speaker 802H, which may be any suitable device that can produce sound in response to an electrical audio signal. Speaker 802H may play recorded sounds, as well as prerecorded messages to communicate with a user. In some cases, the user may be able to receive instructions by voice
communications played by speaker 802H to which the user may respond (e.g., by returning voice command, activating input elements, etc.).
[0090] Computer 802 may include a microphone 8021, which may be any suitable device that can convert sound to an electrical signal. Microphone 8021 may be utilized to capture one or more voice segments from a user. For example, microphone 8021 may allow the user to transmit his or her voice to computer 802. in some embodiments, the user may utilize voice commands detected by microphone 8021 to provide instructions to computer 802.
[0091] FIG. 9 shows a drawing of a payment card 900 including a personal identifier in the form of a primary account number 912, which is printed or formed on a
substrate 902. The primary account number 912 has sixteen digits, and is formed with four stacked rows with four values in each row. The payment card 900 includes a magnetic stripe 920 which may encode the primary account number 912 in a linear manner. The payment card 900 also includes a plastic substrate, and an image 920 of the cardholder may be on the plastic substrate. The payment card 900 may also include a signature panel, expiration date, and CVV2 (card verification value) value on it. The primary account number 912 can be formed in a manner as described above. The payment card may also have a memory chip (not shown) that may store the account number, and other information.
[0092] The above description is illustrative and is not restrictive. Many variations of the invention may become apparent to those skilled in the art upon review of the disclosure. The scope of the invention may, therefore, be determined not with reference to the above description, but instead may be determined with reference to the pending claims along with their full scope or equivalents.
[0093] It may be understood that the present invention as described above can be implemented in the form of control logic using computer software in a modular or integrated manner. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art may know and appreciate other ways and/or methods to implement the present invention using hardware and a combination of hardware and software.
[0094] Any of the software components or functions described in this application, may be implemented as software code to be executed by a processor using any suitable computer language such as, for example, Java, C++ or Perl using, for example, conventional or object-oriented techniques. The software code may be stored as a series of instructions, or commands on a computer readable medium, such as a random access memory (RAM), a read only memory (ROM), a magnetic medium such as a hard-drive or a floppy disk, or an optical medium such as a CD-ROM. Any such computer readable medium may reside on or within a single computational apparatus, and may be present on or within different computational apparatuses within a system or network.
[0095] One or more features from any embodiment may be combined with one or more features of any other embodiment without departing from the scope of the invention.
[0096] A recitation of "a", "an" or "the" is intended to mean "one or more" unless specifically indicated to the contrary.
Claims
WHAT IS CLAIMED IS: 1. A method comprising:
receiving, by a data processor, a first plurality of values, the first plurality of values being displayed previously in a non-linear format, the first plurality of values including a check value;
determining, by the data processor, a plurality of weights comprising an arrangement of one or more specific weights, wherein the arrangement comprises varying the one or more specific weights along two or more dimensions; and
applying, by the data processor, the plurality of weights to the received first plurality of values to form a second plurality of values 2. The method of claim 1 , further comprising:
adding, by the data processor, one or more digits of each value in the second plurality of values to form a third plurality of values;
summing, by the data processor, the third plurality of values to form a total value;
performing, by the data processor, a modulo operation on the total value to form a remainder value;
evaluating, by the data processor, if the remainder value is equal to zero; if the remainder is equal to zero, then reporting, by the data processor, that the received first plurality of values is valid; and
if the remainder is not equal to zero, then reporting, by the data processor, that the received first plurality of values is invalid
3. The method of claim 1 , wherein the arrangement comprises varying the one or more specific weights along a first dimension and a second dimension
4. The method of claim 1 , wherein the plurality of weights are arranged as to form a Latin square
5. The method of claim 1 , wherein the plurality of weights comprises at least three specific weights.
6. The method of claim 1 , wherein a first number of values in the first
2 plurality of values corresponds to a second number of weights in the plurality of weights.
1 7. The method of claim 1 , wherein the first plurality of values comprise
Ί sixteen values previously displayed in a four-by-four arrangement.
8. A computer comprising:
at least one processor; and
3 at least one non-transitory computer-readable storage medium storing
4 instructions that, when executed by the at least one processor, cause the system to:
5 receive a first plurality of values, the first plurality of values being
6 displayed previously in a non-linear format, the first plurality of values including a check
/ value;
8 determine a plurality of weights comprising an arrangement of one or
9 more specific weights, wherein the arrangement comprises varying the one or more0 specific weights along two or more dimensions; and
1 apply the plurality of weights to the received first plurality of values to form2 a second plurality of values.
1 9. The computer of claim 8, further comprising instructions that, when
2 executed by the at least one processor, cause the system to:
3 add one or more digits of each value in the second plurality of values to
4 form a third plurality of values;
5 sum the third plurality of values to form a total value;
6 perform a modulo operation on the total value to form a remainder value;
7 evaluate if the remainder value is equal to zero;
8 if the remainder is equal to zero, then report that the received first plurality 9 of values is valid; and
0 if the remainder is not equal to zero, then report that the received first1 plurality of values is invalid.
10. The computer of claim 8, wherein the arrangement comprises varying the one or more specific weights along a horizontal dimension and a vertical dimension.
1 1. The computer of claim 8, wherein the plurality of weights are arranged as to form a Latin square.
12. The computer of claim 8, wherein the plurality of weights comprises at least three specific weights.
13. The computer of claim 8, wherein a first number of values in the first plurality of values corresponds to a second number of weights in the plurality of weights.
14. The computer of claim 8, wherein the first plurality of values comprise sixteen values previously displayed in a four-by-four arrangement.
15 . The computer of claim 8, wherein the check digit is a last value of the first plurality of values.
16. A method comprising:
receiving, by a data processor, a first plurality of values forming an incomplete identifier;
determining, by the data processor, a plurality of weights comprising an arrangement of one or more specific weights, wherein the arrangement comprises varying the one or more specific weights along two or more dimensions;
applying, by the data processor, the plurality of weights to the received first plurality of values to form a second plurality of values;
adding, by the data processor, one or more digits of each value in the second plurality of values to form a third plurality of values;
summing, by the data processor, the third plurality of values to form a total value;
3 performing, by the data processor, a modulo operation on the total value4 to form a remainder value;
5 evaluating, by the data processor, if the remainder value is equal to zero;6 if the remainder is equal to zero, then outputting, by the data processor, a7 check digit value of zero; and
8 if the remainder is not equal to zero, then outputting, by the data
9 processor, a non-zero check digit value.
1 17. The method of claim 16, wherein the arrangement comprises
varying the one or more specific weights along a horizontal dimension and a vertical
3 dimension.
1 18. The method of claim 16, wherein the non-zero check value is equa
2 to ten subtracted by the remainder value.
1 19. The method of claim 16, further comprising:
2 forming a complete identifier by obtaining the incomplete identifier and
3 appending the incomplete identifier to the check digit value.
1 20. The method of claim 19, further comprising:
D creating, a card with the complete identifier printed on the card, the
3 complete identifier being in a non-linear format.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2017/062032 WO2019099012A1 (en) | 2017-11-16 | 2017-11-16 | Error determination in input values in non-linear format |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2017/062032 WO2019099012A1 (en) | 2017-11-16 | 2017-11-16 | Error determination in input values in non-linear format |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2019099012A1 true WO2019099012A1 (en) | 2019-05-23 |
Family
ID=66538772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2017/062032 WO2019099012A1 (en) | 2017-11-16 | 2017-11-16 | Error determination in input values in non-linear format |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2019099012A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12093147B1 (en) | 2020-11-24 | 2024-09-17 | Wells Fargo Bank, N.A. | Computer-based system for automatic repair of transaction information |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003021440A1 (en) * | 2001-09-01 | 2003-03-13 | Bermai, Inc. | Decoding architecture for low density parity check codes |
US20050251724A1 (en) * | 2003-02-28 | 2005-11-10 | Wataru Matsumoto | Method and apparatus for generating check matrix |
US20090313678A1 (en) * | 2008-06-16 | 2009-12-17 | International Business Machines Corporation | Authenticating serialized commodities |
US20110251911A1 (en) * | 2010-04-12 | 2011-10-13 | Junger Peter J | Systems and/or methods for determining item serial number structure and intelligence |
US20120198572A1 (en) * | 2011-01-27 | 2012-08-02 | Echostar Technologies L.L.C. | Determining Fraudulent Use of Electronic Devices Utilizing Matrix Codes |
-
2017
- 2017-11-16 WO PCT/US2017/062032 patent/WO2019099012A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003021440A1 (en) * | 2001-09-01 | 2003-03-13 | Bermai, Inc. | Decoding architecture for low density parity check codes |
US20050251724A1 (en) * | 2003-02-28 | 2005-11-10 | Wataru Matsumoto | Method and apparatus for generating check matrix |
US20090313678A1 (en) * | 2008-06-16 | 2009-12-17 | International Business Machines Corporation | Authenticating serialized commodities |
US20110251911A1 (en) * | 2010-04-12 | 2011-10-13 | Junger Peter J | Systems and/or methods for determining item serial number structure and intelligence |
US20120198572A1 (en) * | 2011-01-27 | 2012-08-02 | Echostar Technologies L.L.C. | Determining Fraudulent Use of Electronic Devices Utilizing Matrix Codes |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12093147B1 (en) | 2020-11-24 | 2024-09-17 | Wells Fargo Bank, N.A. | Computer-based system for automatic repair of transaction information |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11196730B2 (en) | Methods and systems for network-enabled account creation using optical detection | |
US9892407B2 (en) | Method and system for secure user identification | |
US20100242104A1 (en) | Methods and systems for secure authentication | |
CN104584086B (en) | PIN is verified | |
EP1599786B1 (en) | Virtual keyboard | |
US20140101741A1 (en) | Method and system for mobile device based authenticationservices environment | |
US10965671B2 (en) | Authenticating a user | |
US20160127134A1 (en) | User authentication system and method | |
US10108958B2 (en) | Method for processing a payment, and system and electronic device for implementing the same | |
US20140157382A1 (en) | Observable authentication methods and apparatus | |
KR101010977B1 (en) | Electronic liquidation server and method for user authentication | |
US20130312073A1 (en) | Methods and systems for authentication of multiple sign-in accounts | |
EP2936277B1 (en) | Method and apparatus for information verification | |
WO2010133096A1 (en) | Transcation card processing system and method for enhancing security | |
US20110295740A1 (en) | System And Method For Secure Transactions | |
Eminagaoglu et al. | A two-factor authentication system with QR codes for web and mobile applications | |
US10650357B2 (en) | Method and apparatus for conducting secure financial and informational transactions via portable smart devices | |
US20170103395A1 (en) | Authentication systems and methods using human readable media | |
KR101460220B1 (en) | Password authentification method, and apparatus for password authentification | |
KR20130027313A (en) | Method and system for authenticating using input pattern | |
WO2019099012A1 (en) | Error determination in input values in non-linear format | |
CN110622193A (en) | Portable device with local authentication data | |
CN112352237A (en) | System and method for authentication code entry | |
US20200242712A1 (en) | Method, apparatus and system for self-service contract for mobile payments | |
CN115392909A (en) | Payment method, payment device, electronic equipment and computer readable storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17932287 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 17932287 Country of ref document: EP Kind code of ref document: A1 |