A communications device for implementing an electronic payment process, the communications device comprising:
- a receiver unit operable to:
- receive a secure limited use key (SLUK) from a financial institution, wherein the SLUK is generated by the financial institution using (A) a first limited use key (LUK) generated using a first key associated with the financial institution, an identifier which identifies a user of the communications device, and a variable code, and (B) a subset of the characters of a passcode associated with the user of the communications device, wherein each character in the subset is identified by its character position in the passcode, wherein the character position in the passcode of each of the characters in the subset is determined by a predetermined algorithm on the basis of a second key associated with the user of the communications device, the identifier which identifies the user of the communications device, and the variable code, wherein the second key is a secret key, and wherein the SLUK is generated by wrapping the first LUK using each of the characters in the subset, and
- receive the variable code from the financial institution;
- a storage unit operable to store the received SLUK, the variable code, the second key associated with the user of the communications device, and the identifier which identifies the user of the communications device, wherein the second key associated with the user of the communications device is an Advanced Standards Encryption (AES) 128 bit secret key;
- a controller operable to, in response to an operation by a user to initiate an electronic payment at a point of sale (POS) device, generate the character position in the passcode of each character in the subset based on at least a cryptographic random number (CRN) generated in response to the second key, wherein the character position in the passcode of each character in the subset is determined by the predetermined algorithm on the basis of the second key, the identifier of the user of the communications device, and the variable code, as stored in the storage unit;
- generating the character position in the passcode of each character in the subset comprises the steps of:
- step(i) generating the cryptographic random number (CRN) by providing the second key, the identifier of the user of the communications device, and variable code as inputs to a Format Preserving Encryption (FPE) function:
- step(ii) determining whether the generated CRN has a number of characters greater than or equal to the number of characters of the passcode associated with the user of the communications device, wherein if the generated CRN has a number of characters greater than or equal to the number of characters of the passcode, then the predetermined algorithm proceeds to a determination of whether the generated CRN has at least a predetermined number of unique characters, and wherein if the generated CRN does not have a number of characters greater than or equal to the number of characters of the passcode, then the predetermined algorithm repeats the step (ii);
- and
- a user interface operable to indicate to the user of the communications device the character position in the passcode of each character in the subset as generated by the controller and to receive an input from the user indicative of each character in the subset.