This page looks best with JavaScript enabled

Чему я научился за 5-ю неделю 2023

 ·  ☕ 4 min read

Disclaimer - автор находится в поисках формата, который заставит его писать посты на регулярной основе

Про Telegram

На этой неделе я потерял доступ к Telegram. Справедливости ради, ненадолго и проблема была в моих ботах, которые немножко сошли с ума, однако факт остается фактом - сутки я не имел возможности получить доступ к своему аккунту потому что Telegram при попытке ввода номера телефона сообщал мне “Too many attempts”.

Too many attempts

Недолгий гуглеж подсказал, что проблема либо в самописных ботах, либо во взломе. Второй вариант по здравому размышлению я откинул сразу, т.к. подозрительных смсок и звонков на эту симку мне не приходило, да и активность аккаунта после блокировки была нулевой, так что я просто отрубил всех своих ботов и через сутки смог залогиниться

Что полезного я вынес из этого?

  1. С ботами в Telegram надо быть крайне аккуратным
  2. Поддержка в Telegram отсутствует просто как явление. Будьте к этому готовы когда завязываете рабочую переписку на этот мессенджер.
  3. Если Telegram говорит тебе “To many attempts”, но не указывает сколько надо подождать - просто забей на сутки.
  4. Никогда. Ни при каких условиях НЕ ТЕРЯЙТЕ ДОСТУПА К СИМКЕ, на который зарегистрирован Telegram.

Про второй фактор

Концепция второго фактора в представлении не нуждается. Почти каждый из нас так или иначе сталкивался с кнопкой включить 2FA или пользовался сервисом, который использует 2FA по умолчанию, однако обычно это означает смски или письма в качестве второго фактора. Положа руку на сердце, до этой недели я вторыми факторами вообще не пользовался, там меня к этому не принуждал сервис. Почему? Ну потому что раздолбай, а еще потому, что смски, равно как и отправка писем на почту в качестве второго фактора по моему опыту оказывается крайне ненадежной штукой, привязанной к фазе луны, надежности мобильной связи, блокировкам почтовых провайдеров и еще тысяче и одной проблеме внешнего мира.
Про то, что существуют приложения, которые специально предназначены для 2FA я слышал, но как они работают я как-то до этой недели не вдавался в подробности, ну просто потому что. Однако после проблем с Telegram я настроил в нем второй фактор (который там по сути является просто паролем) и сильно призадумался какие еще есть варианты. Пошел выяснять как же работают специальные 2FA приложения и наткнулся на TOTP
TOTP расшифровывается как Time-based One-Time Password. Суть метода отражена в названии. Второй фактор фактически генерируется, основываясь на текущем моменте времени и постоянно меняется (как правило раз в 30 секунд). Фактически секрет генерируется на стороне клиента и сервер вообще ничего и никуда не пытается передавать в момент аутентификации.

Когда пользователь включает двухфакторную аутентификацию, происходит следующее:

  1. Сервер создает секретный ключ и отдает его пользователю (или в виде QR кода или просто в открытом виде)
  2. Приложение 2FA (или даже хардварный ключ) получает тем или иным способом себе на вход ключ и следуя алгоритму, на основе ключа и момента времени, не получая никакой дополнительный информации по сети генерирует одноразовый пароль
  3. Пользователь вводит пароль из приложения, сервер генерирует на своей стороне пароль, сверяет и авторизует пользователя

В чем бонусы?

  • В момент аутентификации одноразовый пароль вообще ни в каком виде не отправляется сервером никуда
  • Пароль постоянно меняется и актуальный одноразовый пароль, даже если он вдруг как-то оказался у злоумышленника (например кто-то мониторит ваш буфер обмена или и вовсе клавиатуру) через 30 секунд пароль станет бесполезен

В чем минусы?

  • Не слишком широкое распространение такого формата второго фактора
  • На стороне клиента и на стороне сервера в каком-то виде надо хранить секретный ключ

Какие есть приложения для этого?
На самом деле их на удивление много, я бы даже сказал, что приложений больше, чем сервисов, которые поддерживают такой вид 2FA, однако тут при выборе я придерживаюсь следующих принципов:

  1. Не нужно TOTP генерить в том же менеджере паролей, который вы используете для хранения статических паролей
  2. Приложение должно быть на всех тех платформах, которые вы используете
  3. В данном случае приемлемо использовать SAAS, однако SAAS не должен принадлежать ни одной корпорации добра

В конечном итоге, я лично для себя выбрал Authy, не в последнюю очередь за то, что у них есть масса понятных любому инструкций по включению 2FA для разных сервисов.

Таким вещам я научился на этой неделе.


2k600
WRITTEN BY
2k600
Путевые заметки о всяком и об IT