Задача двухфакторной авторизации - защита данных авторизации от перехвата. Происходит разделение на 2 независимых канала передачи данных, чтобы предотвратить возможный перехват на едином канале.
Можно сделать так:
1. На почту после регистрации приходит HTML-страница с JS-кодом (формулой), содержащая формулу формирования PIN-а (на основе timestamp, userid и т.д.). Этот HTML-файл можно сохранить куда угодно на любое устройство, желательно без доступа к интернету.
По желанию пользователя, можно сделать привязку к подсетям или стране при выдаче PIN-кода.
2. Запускаем HTML-ку и получаем PIN-код на экране.
3. Вводим его в поле: "PIN".