1. A method of authenticating a user for performing a transaction comprising the steps of: (a) receiving on a first authentication server data representing unique knowledge of the user; (b) receiving on the authentication server a hardware profile, the hardware profile being associated with the user; (c) comparing on a second evaluation server the received data representing unique knowledge of the user with previously stored data representing unique knowledge of the user; (d) comparing on the second evaluation server the received hardware profile with a previously stored hardware profile associated with the user; and (e) allowing the transaction to go forward if both the received data representing unique knowledge of the user and the received hardware profile are authenticated by steps (c) and (d).