IP Library Granted Patent US 10,719,828
Granted Patent B2
US 10,719,828 · App. 14/209,381 · Granted Jul 21, 2020

Homomorphic passcode encryption

Inventors: Oliver S. C. Quigley (San Francisco, CA); Jason Douglas Waddle (San Francisco, CA); Benjamin Michael Adida (Mountain View, CA); Max Joseph Guise (San Francisco, CA)
Assignee: SQUARE, INC.
G06Q20/4012G06Q20/322G06Q20/34G06Q20/382G07F7/0886G07F7/0893G07F7/1016H04L9/008H04L9/3013H04L9/3226
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,719,828
App. No.
14/209,381
Granted
Jul 21, 2020
Kind
B2
Abstract

A method of encrypting a passcode is disclosed. In one embodiment, the method includes: receiving an indication of a portion of the passcode; calculating a plaintext value based at least in part on the indication, wherein the plaintext value represents an encoded portion of the passcode; encrypting the plaintext value into ciphertext using a homomorphic encryption system; and updating a cumulative encryption string by executing a cumulative operation to aggregate the ciphertext corresponding to the encoded portion into the cumulative encryption string computed for a previous portion of the passcode, wherein the cumulative operation is dictated by a homomorphic property of the homomorphic encryption system.

Claims (81)

1. A method of encrypting a passcode, the method comprising:

presenting, by a processor of a computing device, a passcode entry interface on a display associated with the computing device;

receiving, by the processor, from a user input device of the computing device, an input as an indication of a first portion of the passcode;

calculating, by the processor, a first plaintext value based at least in part on the indication, wherein the first plaintext value represents a first encoded portion of the passcode;

encrypting, by the processor, the first plaintext value into a first ciphertext using a homomorphic encryption system that preserves a homomorphic property for multiplication;

updating, by the processor, a cumulative encryption string to aggregate the first ciphertext corresponding to the first encoded portion into the cumulative encryption string, the cumulative encryption string previously computed from at least one previously received portion of the passcode, the updating the cumulative encryption string comprising multiplying the cumulative encryption string by the first ciphertext to generate an updated cumulative encryption string in accordance with the homomorphic property of the homomorphic encryption system; and

transmitting, by the processor, over a network to a destination device, a message including the updated cumulative encryption string.

2. The method of claim 1 , wherein receiving the input as the indication includes receiving, from the user input device, a key entry corresponding to a symbol that is part of the passcode.

3. The method of claim 2 , wherein calculating the first plaintext value is based at least in part on a numeric representation of the symbol.

4. The method of claim 3 , wherein the symbol is a numeric digit and the numeric representation of the symbol is the numeric digit.

5. The method of claim 3 , wherein calculating the first plaintext value comprises:

selecting, based on a sequential position of the first portion corresponding to the indication received, a prime number from a set of prime number bases; and

calculating the selected prime number raised to the power of the numeric representation of the symbol.

6. The method of claim 5 , further comprising selecting the prime number from the set of prime number bases based at least partly on the position of the numeric digit in a sequence of digits.

7. The method of claim 6 , wherein each prime number (p) in the set of prime number bases satisfies p q ≡1 (mod N), wherein:

the homomorphic cryptography is based on ElGamal asymmetric encryption,

N is a modulus chosen to perform the ElGamal asymmetric encryption, and

q is a Sophie Germain prime associated with N such that q=(N−1)/2.

8. The method of claim 5 , further comprising receiving at least a portion of cryptography parameters, including the set of prime number bases, for the homomorphic cryptography from an external server system, wherein the cryptography parameters are associated with a hardware ID of a card reader.

9. The method of claim 5 , further comprising receiving at least a portion of cryptography parameters, including the set of prime number bases, for the homomorphic cryptography from a card reader.

10. The method of claim 1 , further comprising displaying a passcode entry interface on a touchscreen, the passcode entry interface including interactive elements labeled with symbols for composing passcodes;

wherein receiving the input as the indication of the portion of the passcode from the user input device includes receiving a touch event on the touchscreen; and

wherein the touch event includes a location on the passcode entry interface where the touch event occurs corresponding to a key entry to the pass code entry interface.

11. The method of claim 1 , wherein encrypting using the homomorphic encryption system includes encrypting using an ElGamal encryption system.

12. The method of claim 1 , further comprising, in response to transmitting the message with the updated cumulative encryption string to the destination device, receiving, from the destination device, an indication that the destination device decrypted the updated cumulative encryption string to determine the passcode and that the passcode has been verified.

13. The method of claim 1 , further comprising requesting a public key associated with a hardware ID of the destination device from an external server; and wherein encrypting the first plaintext value includes encrypting the first plaintext value using the public key.

14. The method of claim 1 , further comprising requesting a public key from the destination device; and wherein encrypting the first plaintext value includes encrypting the first plaintext value using the public key.

15. The method of claim 1 , wherein:

multiplying the cumulative encryption string by the first cyphertext to generate the updated cumulative encryption string comprises computing a product of the first ciphertext and a cumulative product of all previous ciphertexts corresponding to all previously encrypted portions of the passcode; and

based on the homomorphic property, the updated cumulative encryption string is equivalent to a ciphertext that would result from encrypting a product of the first plaintext value and plaintext values of all of the previously encrypted portions of the passcode.

16. The method of claim 1 , wherein:

encrypting the first plaintext value includes generating a random variable by reading a pseudorandom stream using a non-buffering I/O call; and

encrypting the first plaintext value is based at least in part on the random variable.

17. An apparatus comprising:

a processor; and

a memory device storing executable instructions, that, when executed by the processor, cause the processor to:

receive, from a user input device of the computing device, an input as an indication of a first portion of a passcode;

calculate a first plaintext value based at least in part on the indication, wherein the first plaintext value represents a first encoded portion of the passcode;

encrypt the first plaintext value into a first ciphertext using a homomorphic encryption system that preserves a homomorphic property for multiplication; and

update a cumulative encryption string to aggregate the first ciphertext corresponding to the first encoded portion into the cumulative encryption string, the cumulative encryption string previously computed from at least one previously received portion of the passcode, the updating the cumulative encryption string comprising multiplying the cumulative encryption string by the first ciphertext to generate an updated cumulative encryption string in accordance with the homomorphic property of the homomorphic encryption system; and

transmit, over a network to a destination device, a message including the updated cumulative encryption string.

18. A method of encrypting a passcode, the method comprising:

receiving, by a processor of a computing device, from a user input device of the computing device, a first input as a first indication of a first portion of the passcode;

calculating, by the processor, a first plaintext value based at least in part on the first indication, wherein the first plaintext value represents a first encoded portion of the passcode;

encrypting, by the processor, the first plaintext value into a first ciphertext using a homomorphic encryption system that preserves a homomorphic property for multiplication;

receiving, by the processor, from the user input device, a second input as a second indication of a second portion of the passcode;

calculating, by the processor, a second plaintext value based at least in part on the second indication, wherein the second plaintext value represents a second encoded portion of the passcode;

encrypting, by the processor, the second plaintext value into a second ciphertext using the homomorphic encryption system;

executing, by the processor, a cumulative operation that aggregates the second ciphertext and the first ciphertext into a cumulative encryption string, the cumulative operation including determining a product of the first ciphertext and the second ciphertext to generate the cumulative encryption string in accordance with the homomorphic property of the homomorphic encryption system; and

transmitting, by the processor, over a network to a destination device, a message including the cumulative encryption string.

19. The method of claim 18 , wherein, based on the homomorphic property, the updated cumulative encryption string is equivalent to a ciphertext that would result from encrypting a product of the first plaintext value and the second plaintext value.

20. The method of claim 18 , wherein:

the user input device includes a touchscreen; and

receiving the first input as the first indication includes receiving, via the touchscreen, a key entry corresponding to a symbol that is part of the passcode.

21. The method of claim 20 , wherein calculating the first plaintext value is based at least in part on a numeric representation of the symbol.

22. The method of claim 20 , wherein calculating the first plaintext value comprises:

selecting, based on a sequential position of a respective portion of the passcode corresponding to a respective indication received, a prime number from a set of prime number bases; and

calculating the selected prime number raised to the power of the numeric representation of the symbol.

23. The method of claim 18 , further comprising requesting a public key from the destination device; and wherein encrypting the first plaintext value includes encrypting the first plaintext value using the public key.

24. An electronic device comprising:

a processor; and

one or more computer-readable media storing instructions which, when executed by the processor, cause the processor to perform operations comprising:

receiving, by a processor of a computing device, from a user input device of the computing device, a first input as a first indication of a first portion of the passcode;

calculating, by the processor, a first plaintext value based at least in part on the first indication, wherein the first plaintext value represents a first encoded portion of the passcode;

encrypting, by the processor, the first plaintext value into a first ciphertext using a homomorphic encryption system that preserves a homomorphic property for at least one cumulative operation;

receiving, by the processor, from the user input device, a second input as a second indication of a second portion of the passcode;

calculating, by the processor, a second plaintext value based at least in part on the second indication, wherein the second plaintext value represents a second encoded portion of the passcode;

encrypting, by the processor, the second plaintext value into a second ciphertext using the homomorphic encryption system;

executing, by the processor, the cumulative operation to aggregate the second ciphertext and the first ciphertext into a cumulative encryption string by performing the cumulative operation on the first ciphertext and the second ciphertext to generate the cumulative encryption string in accordance with the homomorphic property of the homomorphic encryption system; and

transmitting, by the processor, over a network to a destination device, a message including the cumulative encryption string.

25. The electronic device as recited in claim 24 , wherein:

the operation of executing the cumulative operation includes computing a product of the second ciphertext and the first ciphertext, and

based on the homomorphic property, the cumulative encryption string is equivalent to a ciphertext that would result from encrypting a product of the first plaintext value and the second plaintext value.

26. The electronic device as recited in claim 24 , wherein:

the user input device includes a touchscreen; and

the operation of receiving the input as the first indication includes receiving, via the touchscreen, a key entry corresponding to a symbol that is part of the passcode.

27. The electronic device as recited in claim 24 , wherein the operation of calculating the plaintext value is based at least in part on a numeric representation of the symbol.

28. The electronic device as recited in claim 24 , the operation of calculating the plaintext value comprises:

selecting, based on a sequential position of a respective portion of the passcode corresponding to a respective indication received, a prime number from a set of prime number bases; and

calculating the selected prime number raised to the power of the numeric representation of the symbol.

29. The electronic device as recited in claim 24 , the operations further comprising requesting a public key from the destination device; and wherein encrypting the plaintext value includes encrypting the plaintext value using the public key.

Assignments (3)
CHANGE OF NAME Recorded Jan 24, 2022
From: SQUARE, INC.
To: BLOCK, INC.
Reel/Frame 058823/0357 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF MAX GUISE TO MAX JOSEPH GUISE AND TO ATTACH THE CORRECT ASSIGNMENT DOCUMENT FOR JASON DOUGLAS WADDLE PREVIOUSLY RECORDED ON REEL 041840 FRAME 0685. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded May 5, 2020
From: QUIGLEY, OLIVER S.C.; WADDLE, JASON DOUGLAS; ADIDA, BENJAMIN MICHAEL; GUISE, MAX JOSEPH
To: SQUARE, INC.
Reel/Frame 052579/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2017
From: QUIGLEY, OLIVER S. C.; WADDLE, JASON DOUGLAS; ADIDA, BENJAMIN MICHAEL; GUISE, MAX
To: SQUARE, INC.
Reel/Frame 041840/0685 →