Приватность. Часть 2 — токены и двухфакторная аутентификация

Доброго Времени суток моим читателям!


Токены (Web)

Продолжаем вчерашнюю тему про пароли. У внимательных читателей должен был появиться вопрос — почему же при входе на мой любимый сайтик (например уютный vk.com), меня не просят каждый раз вводить пароль? На это внимательному читателю я отвечу так — а замечали ли вы, что при первом входе (или при очередном входе после полного выхода с сайта, например того же ВК) вы получаете сообщение «выполнен вход с устройства Х», а в настройках вашего профиля вы можете увидеть список этих самых «устройств» (по сути мобильных клиентов или сочетаний компьютер+браузер)?))

Ну если не замечали — обратите следующий раз внимание. Дело в том, что при очередном таком входе, после подтверждения того, что вы это вы, система генерирует долговременный ключ для опознания вас — токен. И передает его вашему браузеру, а тот в свою очередь сохраняет его и им пользуется. Точно так же ведёт себя и мобильный клиент. Сервер же хранит этот набор токенов, ассоциированный с этими устройствами. Когда вы делаете выход с сайта, ваш клиент (браузер или мобильное приложение ) посылает ему команду на утилизацию токена — «забудь и выброси». При следующем входе он будет сгенерирован заново и храниться пока вы опять не попросите.

С другой стороны вы можете сами управлять ими — как раз в том пункте вашего профиля (на примере ВК), где вы видите список авторизованных устройств, вы можете для каждого нажать кнопочку «выйти» (или нечто похожее по смыслу). Это даёт команду серверу забыть токен, ассоциированный с выбранным устройством. Когда в следующий раз это устройство попробует воспользоваться токеном для входа, сервер сообщит ему что токен более не валиден и клиент (например браузер) запросит у вас новые данные для входа (логин и пароль). Вот так это работает.

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

У читателей может возникнуть вопрос — да кому же нужен мой профиль от ВК?)
Все довольно просто — целенаправленно никому, если только вы не завели себе врагов, которые планируют на вас целенаправленную хакерскую атаку. Однако в сети работает достаточно большое число вредоносного программного обеспечения, которое пытается украсть подобные данные в автоматизированном режиме у всех, кто ему попадется. После чего эти данные используются для того, чтобы рассылать с ваших страниц спам, вымогать у ваших знакомых и друзей деньги под предлогом «скинь 100 рублей, срочно надо, потом все объясню», а так же анализировать историю и данные вашего профиля — вдруг вы делились с кем то ценной информацией (номера телефонов, адреса, данные банковских карт и тп), которую можно использовать или продать кому-то.
Поверьте, способы использовать полученные сведения найдутся, было бы что использовать и продавать)))
Успехов вам, берегите себя!


Двух факторная аутентификация

Доброго всем времени суток. Продолжаем наше погружение в мир приватности данных. Поговорим теперь о такой штуке как двух факторная аутентификация. Что же это за страшный зверь такой? Наверняка многим из вас эти слова не знакомы. Ничего страшного!) Сейчас разберемся.

Итак, процесс вашего входа в любую систему состоит из трёх основных этапов — идентификация, аутентификация и авторизация:

  • Идентификация — это когда вы представляетесь системе — кто вы есть. Простейший случай — ввод логина. Система ищет вас в базе пользователей чтобы понимать, нужно ли продолжать процедуру.
  • Аутентификация — процесс подтверждения того что вы это вы. То есть вы должны системе предоставить некое средство для опознания и подтверждения вашей личности. Самый простой пример это пароль. Чуть сложней — биометрика (отпечатки пальцев, сетчатка глаза и пр).
  • Авторизация — наделение вас списком прав и привилегий в системе уже в процессе входа. То есть вы были опознаны и теперь вам включают все полагающиеся права и возможности согласно настойкам вашей учетной записи — будь то вы пользователь, модератор, администратор и т.д. Зачастую этот процесс происходит не после а совместно с процессом идентификации таким образом что при вводе неправильного логина и /или пароля вы получали бы одинаковую ошибку. Делается это затем, чтобы усложнить «угадывание» правильного имени учетной записи.

Вопрос авторизации нас сейчас не интересует, так как выполняется уже после входа в систему. 

Нас интересует процесс Аутентификации (теперь вам должно быть уже понятней о чем мы ведем речь) и что же такое «двух факторная аутентификация». Как говорилось выше- аутентификация это предъявление некоторого фактора, известного только вам и системе для того чтобы подтвердить вашу личность. В общем случае аутентификация всегда одно факторная — пароль. Или ключ. Или отпечаток. Или карточка при входе в здание. Но один фактор это не очень надежно — ведь это все что отделяет злоумышленника от вашей учетной записи. Одна дверь. 

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

Наиболее распространенный и удобный вариант — двух факторная аутентификация. Это, как любят говорить математики, «необходимо и достаточно» для обеспечения должного уровня защищенности. Благо в настоящий момент любая мало-мальски серьезная платформа поддерживает подключение второго фактора аутентификации.

Стоит сделать небольшое отступление и чуть подробней остановиться на этих самых вторых факторах. Принято (и это является логичным решением), чтобы второй фактор кардинально отличался от первого по своей природе. То есть не стоит делать просто два пароля. Это всего лишь усилит вашу защиту в 2 раза. Наша же цель — усиление на порядок.

В случае, когда мы говорим про персональный компьютер, хорошими вариантами дополнительных средств аутентификации являются биометрические данные (отпечатки пальцев, скан сетчатки глаза, снимок формы лица и тп). В сети такие варианты к сожалению не очень полезны и удобны, поэтому там применяются другие решения — подтверждение входа по коду из SMS, использование аппаратного электронного ключа, криптографического сертификата или программного обеспечения, генерирующего одноразовые пин коды. В силу простоты использования и при этом высокого уровня надежности, полярностью пользуются первый и последний варианты- смс и специальные приложения с пин кодами. В случае с смс все понятно — вы ввели пароль, у вас попросили еще дополнительно ввести код из смс. Ну и вы ждете смс-ку с этим кодом на свой телефон. В чем преимущество с точки зрения защиты вашей учетной записи? Ну во первых коды одноразовые. Во вторых они приходят к вам через  сеть сотовой связи, а контролировать сразу две сети на предмет перехвата данных злоумышленнику крайне тяжело. Это под силу только спец службам.

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

В случае если ее нет (вы в глухом помещении где телефон не ловит, или еще что то такое) или например все же вы по каким-то причинам не можете доверять этой самой мобильной сети, такой вариант вам не подойдет. Зато отлично подойдет вариант с приложением генерирующим такие ключи.

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

 

 

 

 

 

 

 

 


Я настоятельно рекомендую этот вариант — он не сильно усложняет вашу жизнь, зато уровень защищенности ваших приложений и сервисов от взлома увеличивается на несколько порядков. Одноразовые коды из Google Authenticator нельзя перехватить по сети — ведь они не передаются ни через мобильную связь, ни через интернет. Их генерирует ваш телефон. Их бесполезно запоминать — каждую минуту ваш телефон будет генерировать новый код из 6 символов. 

Как выглядит процесс авторизации например в том же ВК с использованием этого приложения?

  1. Открываем сайт вк
  2. Вводим логин/email/номер телефона и пароль
  3. Вас просят ввести дополнительный код подтверждения- открываем Google Authenticator, находим в списке ваших приложений ВК (должен быть заранее настроен), вводим код который он нам выдает на страницу ВК
  4. Мы залогинились!

Как видите, у вас добавился всего 1 шаг — посмотреть в свой телефон. Зато злоумышленнику недостаточно теперь украсть ваш пароль, ему нужно выкрасть Ваш смартфон — а это как минимум сложней, а как максимум нельзя провернуть незаметно!

К сожалению не все приложения поддерживают Google Authenticator — например для своих сервисов компания Яндекс выпустила собственное приложение «Яндекс.Ключ» — принцип действия аналогичный, отличается интерфейс и вместо регулярной генерации коротких цифровых кодов, оно генерирует одноразовые индивидуальные пароли для Яндекс приложений (почта, диск, музыка и тп).

Так же существует огромное множество другие аналогичных систем, для схожих и отличающихся задач- RSA Secure, Duo и тд, но две описанные выше системы с вероятностью 90% покроют 90% ваших задач)

Что касается меня- что для чего использую я:

Google Authenticator

  • Amazon Web Services
  • Dropbox
  • Trello
  • Evernote
  • Vk.com
  • Gmail, Google Drive, Google Docs и прочие сервисы компании Google
  • GitHub
  • Hetzner DE

Яндекс.Ключ

  • Yandex Mail
  • Yandex Disk
  • Yandex Music

DUO

  • Рабочий VPN
  • Панель управления моим блогом на Wordpress

Кстати, что касается применения Google Authenticator для сервисов Google — в большинстве случаев вам даже не придется вводить код. Если ваш телефон в этот момент подключен к сети Интернет, у вас всплывет интерактивное уведомление с вопросом «разрешить вход?». DUO действует схожим образом.

 

Что делать если я потеряю свой смартфон или он сломается или случится что то еще — спросите Вы. Я не смогу больше никуда войти?

Нет это не так. Во первых, как уже ранее писалось в заметке про токены, будучи единожды залогинены в системе, вы остаетесь там до тех пор пока сами не нажмете кнопку «выход» (в подавляющем большинстве случаев). Во вторых, при настройке средств двух факторной аутентификации на подобии Google Authenticator, вам будет предложено сгенерировать и сохранить т.н. резервные коды — обычно это 10 6-ти значных пин кодов, на случае «если что вдруг».  

Они одноразовые. То есть, предположим вы разбили свой телефон (трагедия) — вы просто открываете сохраненные у вас на компьютере файлики с резервными кодами для нужного сайта и используете первый из них так, словно вы сгенерировали бы его при помощи телефона. После чего удаляете — отныне он бесполезен. Итак, вы в системе- вы можете отключить систему двух факторной аутентификации или перенастроить ее на новый телефон куда вы уже установили Google Authenticator! Бинго!

Кстати я свои резервные коды, как и пароли, храню в KeePass о котором уже писалось ранее.

 

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