Patented but free for non-commercial use. If users choose their own keys, they may be easy to guess. Not possible to reverse the process - except by trying every possible input. When the user types a password, the hash function is applied and compared to the stored hashed password. In theory, password cannot be recovered from the hashed version.
Client concatenates the challenge and secret, performs hash function, and returns the result.
Server compares the answer with the expected value. The seed is stored on the server. If it is correct, the user is permitted access, and the stored seed is replaced with the password typed by the user. The n th password can be generated when required using a program, or a sequence of passwords can be printed out in advance. The keys are related, but designed so that the private key cannot be derived from the public key.