На самом деле, как оказалось, это уже совсем не новая штука. Я просто задался вопросом как можно сделать двухфакторную аутентификацию. Про ключ и пароль я знаю давно, но тут есть минус, ключ нужно как-то хранить и при компрометации ключа его нужно делать еще раз.