Patent ID: 7783893

Claim:
A method of secure biometric authentication comprising the steps of enrollment of: extracting arrays of values from a handwritten signature of a user on a client, extracting a public key/string from the arrays of values of the handwritten signature, shuffling the arrays of values of the real handwritten signature in accordance with a secret input known only to the user—to obtain a “twisted signature”, submitting the public key/string, the twisted signature, and a username from the client to a server, where the submitted public key/string, twisted signature, and username are stored; and the steps of verification of: submitting a user name from a client (the “verification client”) to the server, locating on the server the public key/string corresponding to the username submitted during the steps of verification, generating a random number on the server, encoding the random number generated on the server using the located public key/string, sending from the server to the verification client the encoded random number generated on the server and the public key/string retained on the server during the steps of enrollment and used to encode the random number generated on the server, receiving on the verification client the encoded random number generated on the server and the public key/string retained on the server during the enrollment process and used to encode the random number generated on the server, performing fresh extraction of arrays of values of a handwritten signature at the verification client, extracting a private key on the verification client from the arrays of values of the handwritten signature obtained during verification, using the public key/string received from the server, decoding the encoded random number received from the server using the private key extracted on the verification client, shuffling the arrays of values of the handwritten signature obtained during verification in the sequence determined by the secret input used during enrollment to obtain a “twisted verification signature”, shuffling the arrays of values of the twisted verification signature in a sequence determined by the decoded random number to obtain a “twice-twisted client-side signature”, submitting the twice-twisted client-side signature from the verification client to the server, shuffling the arrays of values of the twisted signature stored on the server in the sequence determined by the random number, which was sent to the verification client during verification, to obtain a “twice-twisted server-side signature”, comparing the twice-twisted client-side signature with the twice-twisted server-side signature on the server, granting authentication or authorization request of the user if the comparison of the twice-twisted client-side signature with the twice-twisted server-side signature on the server results in a match or denying authentication or authorization request of the user if the comparison of the twice-twisted client-side signature with the twice-twisted server-side signature on the server does not result in a match.