Add two-factor authentication using a passphrase

This pull request adds two-factor authentication.  It works by asking for a passphrase, derive a key from the passphrase and then uses it to encrypt the challenge given to the YubiKey.