Disclaimer - автор находится в поисках формата, который заставит его писать посты на регулярной основе
Про Telegram
На этой неделе я потерял доступ к Telegram. Справедливости ради, ненадолго и проблема была в моих ботах, которые немножко сошли с ума, однако факт остается фактом - сутки я не имел возможности получить доступ к своему аккунту потому что Telegram при попытке ввода номера телефона сообщал мне “Too many attempts”.
Недолгий гуглеж подсказал, что проблема либо в самописных ботах, либо во взломе. Второй вариант по здравому размышлению я откинул сразу, т.к. подозрительных смсок и звонков на эту симку мне не приходило, да и активность аккаунта после блокировки была нулевой, так что я просто отрубил всех своих ботов и через сутки смог залогиниться
Что полезного я вынес из этого?
- С ботами в Telegram надо быть крайне аккуратным
- Поддержка в Telegram отсутствует просто как явление. Будьте к этому готовы когда завязываете рабочую переписку на этот мессенджер.
- Если Telegram говорит тебе “To many attempts”, но не указывает сколько надо подождать - просто забей на сутки.
- Никогда. Ни при каких условиях НЕ ТЕРЯЙТЕ ДОСТУПА К СИМКЕ, на который зарегистрирован Telegram.
Про второй фактор
Концепция второго фактора в представлении не нуждается. Почти каждый из нас так или иначе сталкивался с кнопкой включить 2FA или пользовался сервисом, который использует 2FA по умолчанию, однако обычно это означает смски или письма в качестве второго фактора. Положа руку на сердце, до этой недели я вторыми факторами вообще не пользовался, там меня к этому не принуждал сервис. Почему? Ну потому что раздолбай, а еще потому, что смски, равно как и отправка писем на почту в качестве второго фактора по моему опыту оказывается крайне ненадежной штукой, привязанной к фазе луны, надежности мобильной связи, блокировкам почтовых провайдеров и еще тысяче и одной проблеме внешнего мира.
Про то, что существуют приложения, которые специально предназначены для 2FA я слышал, но как они работают я как-то до этой недели не вдавался в подробности, ну просто потому что. Однако после проблем с Telegram я настроил в нем второй фактор (который там по сути является просто паролем) и сильно призадумался какие еще есть варианты. Пошел выяснять как же работают специальные 2FA приложения и наткнулся на TOTP
TOTP расшифровывается как Time-based One-Time Password. Суть метода отражена в названии. Второй фактор фактически генерируется, основываясь на текущем моменте времени и постоянно меняется (как правило раз в 30 секунд). Фактически секрет генерируется на стороне клиента и сервер вообще ничего и никуда не пытается передавать в момент аутентификации.
Когда пользователь включает двухфакторную аутентификацию, происходит следующее:
- Сервер создает секретный ключ и отдает его пользователю (или в виде QR кода или просто в открытом виде)
- Приложение 2FA (или даже хардварный ключ) получает тем или иным способом себе на вход ключ и следуя алгоритму, на основе ключа и момента времени, не получая никакой дополнительный информации по сети генерирует одноразовый пароль
- Пользователь вводит пароль из приложения, сервер генерирует на своей стороне пароль, сверяет и авторизует пользователя
В чем бонусы?
- В момент аутентификации одноразовый пароль вообще ни в каком виде не отправляется сервером никуда
- Пароль постоянно меняется и актуальный одноразовый пароль, даже если он вдруг как-то оказался у злоумышленника (например кто-то мониторит ваш буфер обмена или и вовсе клавиатуру) через 30 секунд пароль станет бесполезен
В чем минусы?
- Не слишком широкое распространение такого формата второго фактора
- На стороне клиента и на стороне сервера в каком-то виде надо хранить секретный ключ
Какие есть приложения для этого?
На самом деле их на удивление много, я бы даже сказал, что приложений больше, чем сервисов, которые поддерживают такой вид 2FA, однако тут при выборе я придерживаюсь следующих принципов:
- Не нужно TOTP генерить в том же менеджере паролей, который вы используете для хранения статических паролей
- Приложение должно быть на всех тех платформах, которые вы используете
- В данном случае приемлемо использовать SAAS, однако SAAS не должен принадлежать ни одной корпорации добра
В конечном итоге, я лично для себя выбрал Authy, не в последнюю очередь за то, что у них есть масса понятных любому инструкций по включению 2FA для разных сервисов.
Таким вещам я научился на этой неделе.