Patent ID: 6944765

Claim:
A method for a provider of software to authenticate users of the software, comprising the steps of: constructing a puzzle in response to information received from a user, the puzzle including the information, wherein the constructing step comprises the steps of deriving a value from the information to produce a derived value, exponentiating the derived value to produce an exponentiated value, and combining the exponentiated value with a portion of the derived value; sending the puzzle to the user; returning a solution to the puzzle to the provider; storing the information and a random number; performing a hash function on the information and the random number to generate a fist hash result; and encrypting the first hash result; wherein the deriving step comprises the steps of partitioning the encrypted hash result into first and second components, performing a hash function on a concatenation of the first component and the random number to generate a second hash result, appending a plurality of zero values to the second component to produce a lengthened second component, performing an exclusive-OR operation between the lengthened second component and the second hash result to generate an exclusive-OR result, and concatenating the first component and the exclusive-OR result to produce the derived value.