A method of authenticating anonymous users while reducing potential for "middleman"
fraud includes the step of constructing a puzzle in response to information received
from a software user. The puzzle includes the received information. The puzzle
is sent to the user by a software provider. The user solves the puzzle and returns
the solution to the provider. The puzzle includes a portion of a value derived
from an encrypted "cookie" and an exponentiation of the derived value. The cookie
includes information about the user.