I was thinking of a OTP algorithm that signs a randomly generated password.
There are two things at play here:
- The MFA portal
- Knows the public key of the user's MFA app
- The user's MFA app
- Has a private key stored
Here is a login flow:
- The user logs in and is directed to the MFA portal
- The MFA portal generates a code
- The user enters the code into their MFA app
- The MFA app signs the code using the private key
- The user enters the signed code into the MFA portal
- The MFA portal verifies the signature against the stored public key
After step 2, the user has a limited amount of time to complete step 5.
Potential Pros:
- It can work offline (if the MFA portal locks a computer or resides on a LAN device without external internet access such as a Synology NAS)
- Unlike TOTP, it won't "drift" and require re-sync
Potential Con: It is a relatively complicated process, and it requires that the user fumbles around with two codes
My question is: Why don't services provide this method? (for example DUO or Google Authenticator)