Totp authenticator как пользоваться приложением
Почему SMS — не лучший выбор для двухфакторной аутентификации, и какие существуют альтернативы.
18 октября 2018
За последние пару лет идея двухфакторной аутентификации, о которой так долго говорили гики, сильно продвинулась в массы. Однако до сих пор в большинстве случаев речь идет о двухфакторной аутентификации при помощи одноразовых паролей, приходящих в SMS. А это, к сожалению, не очень-то надежный вариант. Вот что может пойти не так:
- Пароль в SMS можно подсмотреть, если у вас включен показ уведомлений на экране блокировки.
- Даже если показ уведомлений отключен, можно извлечь SIM-карту из смартфона, установить в другой смартфон и принять SMS с паролем.
- SMS с паролем может перехватить пробравшийся в смартфон троян.
- Также с помощью различных махинаций (убеждение, подкуп, сговор и так далее) можно заполучить новую SIM-карту с номером жертвы в салоне сотовой связи. Тогда SMS будут приходить на эту карту, а телефон жертвы просто не будет связываться с сетью.
- Наконец, SMS с паролем может быть перехвачена через фундаментальную уязвимость в протоколе SS7, по которому эти SMS передаются.
Надо заметить, что даже самый трудоемкий и высокотехнологичный из перечисленных методов перехвата пароля в SMS — с помощью взлома протокола SS7 — уже был использован на практике. Так что речь не о теоретической возможности возникновения неприятностей, а о вполне практической угрозе.
В общем, пароли в SMS — это не очень-то безопасно, а иногда даже и очень небезопасно. Поэтому есть смысл озаботиться поиском альтернативных вариантов двухэтапной аутентификации, о чем мы сегодня и поговорим.
Одноразовые коды в файле или на бумажке
Работает это очень просто: по запросу сервис генерирует и показывает на экране десяток одноразовых кодов, которые в дальнейшем могут быть использованы для подтверждения входа в него. Дальше вы просто распечатываете или переписываете эти коды на бумагу и кладете в сейф. Или, что еще проще, сохраняете в зашифрованных записях в менеджере паролей.
В общем, не так важно, будете ли вы хранить эти коды на теплой ламповой бумаге или в бездушном цифровом виде — важно сохранить их так, чтобы они а) не потерялись и б) не могли быть украдены.
Приложения для двухфакторной аутентификации
У единожды сгенерированного набора одноразовых кодов есть один недостаток: рано или поздно он закончится, и вполне может так получиться, что вы останетесь без кода в самый неподходящий момент. Поэтому есть способ лучше: можно генерировать одноразовые коды на лету с помощью небольшого и, как правило, очень простого приложения — аутентификатора.
Как работают приложения-аутентификаторы
Работают приложения для двухфакторной аутентификации очень просто. Вот что придется сделать:
- устанавливаете на смартфон приложение для двухфакторной аутентификации;
- заходите в настройки безопасности сервиса, который среди опций для двухфакторной аутентификации предлагает использовать такие приложения;
- выбираете двухфакторную аутентификацию с помощью приложения;
- сервис покажет вам QR-код, который можно отсканировать прямо в 2FA-приложении;
- сканируете код приложением — и оно начинает каждые 30 секунд создавать новый одноразовый код.
Коды создаются на основе ключа, который известен только вам и серверу, а также текущего времени, округленного до 30 секунд. Поскольку обе составляющие одинаковы и у вас, и у сервиса, коды генерируются синхронно. Этот алгоритм называется OATH TOTP (Time-based One-time Password), и в подавляющем большинстве случаев используется именно он.
Также существует альтернатива — алгоритм OATH HOTP (HMAC-based One-time Password). В нем вместо текущего времени используется счетчик, увеличивающийся на 1 при каждом новом созданном коде. Но этот алгоритм редко встречается в реальности, поскольку при его использовании гораздо сложнее обеспечить синхронное создание кодов на стороне сервиса и приложения. Проще говоря, есть немалый риск, что в один не очень прекрасный момент счетчик собьется и ваш одноразовый пароль не сработает.
Так что можно считать OATH TOTP де-факто индустриальным стандартом (хотя формально это даже не стандарт, на чем создатели этого алгоритма очень настаивают в его описании).
Совместимость приложений для двухфакторной аутентификации и сервисов
Подавляющее большинство приложений для двухфакторной аутентификации работает по одному и тому же алгоритму, так что для всех сервисов, которые поддерживают аутентификаторы, можно использовать любое из них — какое вам больше нравится.
Как и в любом добротном правиле, в этом тоже есть определенное количество исключений. Некоторые сервисы по каким-то причинам, ведомым только им одним, предпочитают делать свои собственные приложения для двухфакторной аутентификации, которые работают только с ними. Более того, сами сервисы не работают ни с какими другими приложениями, кроме своих собственных.
Особенно это распространено среди крупных издателей компьютерных игр — например, существуют несовместимые со сторонними сервисами приложения Blizzard Authenticator, Steam Mobile с встроенным аутентификатором Steam Guard, Wargaming Auth и так далее. Для этих сервисов придется ставить именно эти приложения.
Также по этому странному пути пошла Adobe, разработавшая Adobe Authenticator, который работает только с аккаунтами AdobeID. Но при этом вы можете использовать для защиты AdobeID и другие аутентификаторы, так что вообще непонятно, ради чего было городить огород.
Поэтому просто выбирайте приложение-аутентификатор, которое вам больше нравится по набору дополнительных функций — оно будет работать с большинством сервисов, которые вообще поддерживают 2FA-приложения.
Лучшие приложения для двухфакторной аутентификации
Несмотря на то что базовая функция у всех этих приложений одна и та же — создание одноразовых кодов по одному и тому же алгоритму, некоторые аутентификаторы обладают дополнительными функциями или особенностями интерфейса, которые могут показаться вам удобными. Перечислим несколько самых интересных вариантов.
1. Google Authenticator
Поддерживаемые платформы: Android, iOS
Как отмечают буквально все публикации, Google Authenticator — это самое простое в использовании из всех существующих приложений для двухфакторной аутентификации. У него даже настроек нет. Все, что можно сделать, — это добавить новый токен (так называется генератор кодов для отдельного аккаунта) или удалить один из имеющихся. А чтобы скопировать код в буфер обмена, достаточно коснуться его пальцем на сенсорном экране смартфона или планшета. Все!
Однако у такой простоты есть и недостаток: если вам что-то не нравится в интерфейсе или хочется от аутентификатора чего-то большего — придется устанавливать другое приложение.
+ Очень просто использовать.
2. Duo Mobile
Поддерживаемые платформы: Android, iOS
Duo Mobile также крайне прост в использовании, минималистичен и лишен дополнительных настроек. По сравнению с Google Authenticator у него есть одно преимущество: по умолчанию Duo Mobile скрывает коды — чтобы увидеть код, надо нажать на конкретный токен. Если вы, как и я, испытываете дискомфорт каждый раз, когда открываете аутентификатор и показываете всем окружающим кучу кодов от всех своих аккаунтов сразу, то вам эта особенность Duo Mobile наверняка понравится.
+ По умолчанию скрывает коды.
3. Microsoft Authenticator
Поддерживаемые платформы: Android, iOS
В Microsoft тоже не стали усложнять и сделали свой аутентификатор на вид очень минималистичным. Но при этом Microsoft Authenticator заметно функциональнее, чем Google Authenticator. Во-первых, хоть по умолчанию все коды показываются, но каждый из токенов можно отдельно настроить так, чтобы при запуске приложения код был скрыт.
Во-вторых, Microsoft Authenticator упрощает вход в аккаунты Microsoft. В этом случае после ввода пароля достаточно будет нажать в приложении кнопку подтверждения входа — и все, можно даже не вводить одноразовый код.
+ Можно настроить, чтобы коды скрывались.
+ Дополнительные возможности для входа в аккаунты Microsoft.
4. FreeOTP
Поддерживаемые платформы: Android, iOS
Есть четыре причины, по которым вам может понравиться этот аутентификатор, разработанный Red Hat. Во-первых, это ваш выбор, если вы любите программное обеспечение с открытым кодом. Во-вторых, это самое маленькое приложение из всех рассматриваемых — версия для iOS занимает всего 750 Кбайт. Для сравнения: минималистичный Google Authenticator занимает почти 14 Мбайт, а приложение Authy, о котором мы поговорим ниже, — аж 44 Мбайта.
В-третьих, по умолчанию приложение скрывает коды и показывает их только после касания. Наконец, в-четвертых, FreeOTP позволяет максимально гибко конфигурировать токены вручную, если вам это зачем-нибудь нужно. Разумеется, обычный способ создания токена с помощью сканирования QR-кода тоже поддерживается.
+ По умолчанию скрывает коды.
+ Приложение занимает всего 700 Кбайт.
+ Открытый код.
+ Максимум настроек при создании токена вручную.
5. Authy
Поддерживаемые платформы: Android, iOS, Windows, macOS, Chrome
Самое навороченное из приложений для двухфакторной аутентификации, основным достоинством которого является то, что все токены хранятся в облаке. Это позволяет получить доступ к токенам с любого из ваших устройств. Заодно это упрощает переезд на новые устройства — не придется заново активировать 2FA в каждом сервисе, можно продолжить пользоваться существующими токенами.
В облаке токены зашифрованы ключом, который создается на основе заданного пользователем пароля, — то есть данные хранятся безопасно, и украсть их будет нелегко. Также можно установить ПИН-код на вход в приложение — или защитить его отпечатком пальца, если ваш смартфон оснащен соответствующим сканером.
Основной недостаток Authy состоит в том, что приложение с ходу требует завести аккаунт, привязанный к вашему телефонному номеру, — без этого просто не получится начать с ним работать.
− Требуется зарегистрироваться в Authy, используя номер телефона, — без этого приложение не работает.
Поддерживаемые платформы: Android, iOS
− При большом количестве токенов не очень удобно искать нужный.
Если приложение, генерирующее одноразовые коды, кажется вам слишком эфемерным способом защитить свои аккаунты, и хочется чего-то более постоянного, надежного и материального — буквально запереть аккаунт на ключ и положить его в карман, — то у меня есть для вас хорошая новость: такой вариант также существует. Это аппаратные токены стандарта U2F (Universal 2nd Factor), созданного FIDO Alliance.
Как работают токены FIDO U2F
Аппаратные U2F-токены очень полюбились специалистам по безопасности — в первую очередь потому, что с точки зрения пользователя они работают очень просто. Для начала работы достаточно подключить U2F-токен к вашему устройству и зарегистрировать его в совместимом сервисе, причем делается это буквально в пару кликов.
Вставьте ключ и нажмите кнопку — и это действительно все
Приватный ключ используется для того, чтобы зашифровать подтверждение входа, которое передается на сервер и может быть расшифровано с помощью публичного ключа. Если кто-то от вашего имени попытается передать подтверждение входа, зашифрованное неправильным приватным ключом, то при расшифровке с помощью известного сервису публичного ключа вместо подтверждения получится бессмыслица, и сервис не пустит его в аккаунт.
Какими бывают U2F-устройства
YubiKey — вероятно, самые популярные U2F-токены
Например, Google недавно представила свой комплект аппаратных аутентификаторов Google Titan Security Keys. На самом деле это ключи производства Feitian Technologies (второй по популярности производитель U2F-токенов после Yubico), для которых в Google написали собственную прошивку.
NFC — необходим для использования со смартфонами и планшетами на Android.
Bluetooth — понадобится на тех мобильных устройствах, в которых нет NFC. К примеру, аутентификатор с Bluetooth все еще нужен владельцам iPhone: несмотря на то, что в iOS уже разрешили приложениям использовать NFC (до 2018 года это было позволено только Apple Pay), разработчики большинства совместимых с U2F приложений еще не воспользовались этой возможностью. У Bluetooth-аутентификаторов есть пара минусов: во-первых, их нужно заряжать, а во-вторых, их подключение занимает гораздо больше времени.
В базовых моделях U2F-токенов обычно есть только поддержка собственно U2F — такой ключ обойдется в $10–20. Есть устройства подороже ($20–50), которые заодно умеют работать в качестве смарт-карты, генерировать одноразовые пароли (в том числе OATH TOTP и HOTP), генерировать и хранить ключи PGP-шифрования, могут использоваться для входа в Windows, macOS и Linux и так далее.
Что же выбрать: SMS, приложение или YubiKey?
Так или иначе, главный совет — по возможности избегать использования одноразовых паролей в SMS. Правда, получится это не всегда: например, финансовые сервисы в силу своей консервативности продолжают использовать SMS и крайне редко позволяют пользоваться чем-либо еще.
TOTP аутентификация обычно используется как второй фактор при двухфакторной аутентификации. В этой статье я вам расскажу про TOTP и где это можно применять.
Лично я познакомился с этим алгоритмом настраивая NextCloud. Настраивая в этой системе двухфакторную аутентификацию в качестве второго фактора можно было выбрать TOTP аутентификацию. Можете почитать про TOTP на википедии, я же расскажу простыми словами.
Для того, чтобы настроить TOTP (Time-based One-time Password Algorithm) на NextCloud я проделал следующее:
- при включении TOTP аутентификации, NextCloud выдал мне QR-код;
- я с помощью специального приложения на смартфоне отсканировал этот QR-код;
- затем это приложение начало постоянно, раз в 30 секунд, генерировать одноразовые пароли для входа на NextCloud.
Что интересно, пароль генерирует приложение на смартфоне и смартфону не обязательно иметь выход в интернет. Но время на смартфоне должно быть синхронизировано со временем на сервере, куда вы подключаетесь. Это нужно из-за того что этот алгоритм генерирует одноразовые пароли на основываясь на текущем времени клиента и сервера.
Работает алгоритм TOTP таким образом:
- Сервер (в моём случае NextCloud) создает секретный ключ для пользователя.
- Секретный ключ отправляется приложению (я считал с помощью приложения QR-код выданный сервером).
- Приложение на смартфоне использует текущее время и секретный ключ для генерирования одноразового пароля.
- Раз в определённый промежуток времени (например каждые 30 секунд) одноразовый пароль пересоздается.
- При входе на сервер вы вводите одноразовый пароль.
- Так как сервер владеет секретным ключом, то по своему текущему времени он может сгенерировать такой-же одноразовый пароль и сравнить с тем, что прислал пользователь. Если они совпадут, то вход разрешается.
В этой статье на Хабре алгоритм описан намного подробнее.
Помимо NextCloud его можно применять в Linux аутентификации, для этого есть pam модули. Про это можно почитать тут. Также его можно реализовать для любого web приложения.
С ростом числа угроз кибербезопасности, для разработчиков становится все более и более необходимым обновлять стандарты безопасности веб-приложений и быть при этом уверенными в том, что аккаунты пользователей в безопасности. Для этого в настоящее время многие онлайн-приложения просят пользователей добавить дополнительный уровень безопасности для своей учетной записи. Они делают это за счет включения двухфакторной аутентификации. Существуют различные методы реализации двухфакторной аутентификации, и аутентификация TOTP (алгоритм одноразового пароля на основе времени) является одним из них.
Чтобы понять, что из себя представляет TOTP и как он используется, необходимо сначала кратко рассмотреть более базовые понятия. Первое из них – двухфакторная аутентификация. Двухфакторная аутентификация (или многофакторная аутентификация) — это метод идентификации пользователя в каком-либо сервисе (как правило, в Интернете) при помощи запроса аутентификационных данных двух разных типов, что обеспечивает двухслойную, а значит, более эффективную защиту аккаунта от несанкционированного проникновения. Это означает, что после включения двухфакторной аутентификации пользователь должен пройти еще один шаг для успешного входа в систему. Стандартные шаги для входа в учетную запись – это ввод логина и ввод пароля (рис.1).
Рисунок 1. Порядок входа в учетную запись без двухфакторной аутентификации
Включение двухфакторной аутентификации добавляет в порядок входа дополнительный шаг (рис.2). Этот метод более безопасен, поскольку преступник не может получить доступ к учетной записи пользователя, если у него нет доступа как к обычному паролю пользователя, так и к одноразовому паролю.
В настоящее время существует два широко используемых метода получения одноразового пароля:
На основе TOTP. При включении двухфакторной аутентификации пользователю предлагается отсканировать QR-код с помощью специального приложения для смартфона, которое в дальнейшем постоянно генерирует одноразовый пароль для пользователя.
Метод на основе SMS не требует пояснений. Несмотря на свою простоту, он имеет ряд проблем. Например, ожидание SMS при каждой попытке входа в систему, проблемы с безопасностью и т. д. Вследствие чего NIST еще в 2016 году рекомендовала не использовать его в новых системах аутентификации. В связи с минусами метода на основе SMS, метод на основе TOTP становится популярным из-за его преимуществ.
Также, стоит отметить, что в настоящий момент есть некоторые разногласия о том, что именно считать шагами, а что факторами аутентификации. Общепризнанным является существование трех факторов:
Знание, например, пароль
Обладание (в физическом смысле), например, смартфон
То, чем вы являетесь, например, биометрические данные
При этом шаги аутентификации являются субъединицами факторов, так, если для входа в систему необходимо введение двух паролей, то по сути мы используем только фактор знания. Если говорить о рассматриваемых нами методах, то метод на основе SMS принято относить к двухшаговой, но однофакторной аутентификации, т. к. пароль для SMS генерируется на сервере, а TOTP к двухфакторной, поскольку для генерации пароля необходимо наличие определенного приложения на смартфоне, что усложняет задачу доступа злоумышленников к этой информации.
Для реализации двухфакторной аутентификации с использованием TOTP необходимо учитывать основное требование – пароль должен создаваться на стороне пользователя, а также постоянно меняться.
Решение данной задачи может выглядеть следующим образом:
Когда пользователь включает двухфакторную аутентификацию, происходит следующее
Внутренний сервер создает секретный ключ для этого конкретного пользователя
Затем сервер передает этот секретный ключ телефонному приложению пользователя
Телефонное приложение инициализирует счетчик
Телефонное приложение генерирует одноразовый пароль, используя этот секретный ключ и счетчик
Телефонное приложение изменяет счетчик через определенный интервал и восстанавливает одноразовый пароль, делая его динамическим
Однако, у данной последовательности действий есть несколько проблем. Первая из них заключается в том, как приложение будет генерировать одноразовый пароль. С этой проблемой справляется предшественник TOTP метода – алгоритм HOTP .
Этот алгоритм включает в себя два этапа:
Создать хеш HMAC (используя алгоритм хеширования SHA-1) из секретного ключа и счетчика
В этом коде на выходе будет строка длиной 20 байт. Эта длинная строка не подходит в качестве одноразового пароля. Итак, нам нужен способ обрезать эту строку. HOTP определяет способ обрезать эту строку до желаемой длины
В этом алгоритме мы сначала получаем смещение, которое является последними 4 битами hmacHash [19] . После этого мы объединяем байты из hmacHash [offset] в hmacHash [offset + 3] и сохраняем последний 31 бит в truncatedHash . Наконец, используя простую операцию по модулю, мы получаем одноразовый пароль разумной длины.
Это в значительной степени определяет алгоритм HOTP. Документ RFA4226 объясняет, почему это наиболее безопасный способ получить одноразовый пароль из этих двух значений.
Итак, мы нашли способ получить одноразовый пароль с помощью секретного ключа и счетчика. А как следить за счетчиком? Ответ на этот вопрос находится в TOTP. TOTP переводится как «Одноразовый пароль на основе времени». Он был опубликован IETF как RFC6238. TOTP использует алгоритм HOTP для получения одноразового пароля. Единственная разница в том, что здесь вместо «счетчика» используется «время», и это дает решение нашей проблемы. Это означает, что вместо инициализации счетчика и его отслеживания мы можем использовать время в качестве счетчика в алгоритме HOTP для получения OTP. Поскольку и сервер, и телефон имеют доступ ко времени, ни один из них не должен отслеживать счетчик. Кроме того, чтобы избежать проблемы с разными часовыми поясами сервера и телефона, мы можем использовать временную метку Unix, которая не зависит от часовых поясов. Однако время Unix определяется в секундах, поэтому оно меняется каждую секунду. Это означает, что сгенерированный пароль будет меняться каждую секунду, что не очень хорошо. Вместо этого нам нужно добавить значительный интервал перед изменением пароля. Например, приложение Google Authenticator меняет код каждые 30 секунд.
Итак, мы решили проблему счетчика. Теперь нам нужно решить нашу третью проблему: поделиться секретным ключом с приложением телефона. Здесь нам может помочь QR-код. Хотя есть возможность попросить пользователей вводить секретный ключ напрямую в приложение телефона, безопасность ключа зависит от его длины, и пользователю будет неудобно вводить такую длинную строку. Поскольку большинство смартфонов оснащено камерой, пользователь может использовать ее для того, чтобы отсканировать QR-код, и получить от него секретный ключ. Все, что для этого нужно – преобразовать секретный ключ в QR-код и показать его пользователю. В настоящее время есть несколько бесплатных телефонных приложений (например, Google Authenticator App, Authy и т.д.), которые могут генерировать одноразовый пароль для пользователя. Поэтому в большинстве случаев создавать собственное телефонное приложение не нужно. Следующие псевдокоды объясняют способ реализации двухфакторной аутентификации на основе TOTP в веб-приложении.
Пользователя просят отсканировать этот QR-код. Когда приложение телефона сканирует QR-код, оно получает секретный ключ пользователя. Используя этот секретный ключ, текущее время Unix и алгоритм HOTP, приложение телефона сгенерирует и отобразит пароль. Затем система просит пользователя ввести сгенерированный код после сканирования QR-кода. Это необходимо, чтобы убедиться, что пользователь успешно отсканировал изображение и приложение для телефона успешно сгенерировало код.
Здесь используется алгоритм HOTP на стороне сервера, чтобы получить аутентификацию на основе OTP по секретному ключу и текущему времени Unix. Если этот OTP совпадает с введенным пользователем, то появляется возможность включить двухфакторную аутентификацию для этого пользователя. Теперь, после каждой операции входа в систему, проверяется, включена ли для этого конкретного пользователя двухфакторная аутентификация. Если да, то запрашивается одноразовый пароль, отображаемый в приложении телефона. И если этот набранный код правильный, только тогда пользователь аутентифицируется.
Двухфакторная аутентификация набирает популярность. Многие веб-приложения реализуют его для дополнительной безопасности. В отличие от метода на основе SMS, метод TOTP также не требует особых усилий. Так что эту функцию стоит реализовать для любого приложения.
FreeOTP Authenticator предварительно можно назвать аналогом «Яндекс.Ключа», хотя в отличие от последнего здесь реализована работа с шести- и восьмизначными, то есть с TOTP- или HOTP-протоколами и рабочей учетной записью.
Само приложение распространяется с открытым исходным кодом, а значит, допускает создание дубликата и свободное программирование базовой версии. Может быть, по этой причине аутентификатор не обновлялся около десяти месяцев, либо программа настолько хороша, что этого не требуется. Что ж, посмотрим.
Основные функции:
- Одноразовые пароли для различных популярных сервисов, в том числе Google, Facebook, Evernote, GitHub и других.
- Открытый исходный код по лицензии Apache License 2.0.
- Офлайн-режим, поддержка режима «В самолете».
- Работа с TOTP- или HOTP-протоколами.
- Рабочая учетная запись.
реклама
Первое впечатление
Сразу отмечу, что FreeOTP содержит встроенную защиту от снятия скриншотов экрана, которую нельзя деактивировать через настройки программы, поэтому тестировать аутентификатор я буду на планшете с Android 4.4.2, а снимки экрана делать посредством смартфона (извиняюсь за качество, однако оценить интерфейс все-таки можно).
Интерфейс приложения одноконный, без какого-либо сайдбара слева, и предполагает отображение всех подключенных сервисов. В правом верхнем углу – сканер QR-кода, кнопка для активации двухфакторной аутентификации и информационная клавиша, со сведениями об установленной версии FreeOTP.
Каких-либо дополнительных настроек не предусмотрено, так как оные включены в окно настройки авторизации в сервисе, которое мы сейчас и разберем.
Аутентификация
Для того чтобы добавить ключ, необходимо указать адрес сервиса или интернет-площадки, причем вручную, что не совсем удобно. Ниже вбивается основной пароль.
Далее требуется указать необходимый протокол (TOTP или HOTP) и выбрать одноразовый PIN (шести- или восьмизначный). При этом можно указать алгоритм шифрования – SHA1, MD5, SHA265 и даже 512-битный SHA512. Последний вариант чаще всего встречается в корпоративных сервисах. Впрочем, никто не мешает воспользоваться QR-кодом, если таковой предусмотрен для авторизации на конечном сайте.
Из прочих возможностей – указание интервала действия одноразового пароля. Причем он ничем не ограничен, например, можно вбить 30 секунд или два часа. Также можно указать, сколько неверных попыток допускает счетчик – настраивается аналогично временному интервалу.
Надо признать, что в тех сервисах, где предусмотрен QR-код, лучше всего им и воспользоваться, поскольку автоматическая синхронизация с помощью пароля порой муторна (с Google у меня проблем не возникло, а вот с Amazon пришлось понервничать).
Лучше всего это «ручное» решение подойдет для корпоративных сетей, где присутствуют «прямые» руки админа. Сама программа не предполагает облачного хранения резервной копии, что, с одной стороны, хорошо (для сноуденоманов), но при переустановке аутентификатора придется везде и всюду перерегистрироваться.
реклама
Нагрузка на систему
Зато FreeOTP потребляет самый минимум ресурсов – всего 15 Мбайт оперативной памяти при нуле на процессоре. Аккумулятор проседает соответствующе – 1.1% при скорости энергопотребления в 4.8 мВт. Хотя этот показатель может быть и выше, так как камера для сканирования QR-кода использовалась всего один раз.
реклама
Объем приложения в системе также мизерен и составляет всего 2.7 Мбайт. Аутентификатор не содержит рекламы и распространяется абсолютно бесплатно. При этом разрешения у него все «чистые» и их опять-таки минимум.
Выводы
FreeOTP нельзя назвать провальным решением, а если к нему привыкнуть и не полениться поработать ручками, то двухфакторную аутентификацию можно настроить практически для любого сервиса.
Конечно, после простого и автоматического «Яндекс.Ключа» такое приложение покажется неудобным, зато оно наиболее защищенное (вплоть до запрета на снятие скриншотов) и предельно открытое для пользователя. К тому же FreeOTP потребляет самый минимум, предлагает понятный интерфейс и требует минимальных знаний английского языка.
Использование только паролей, в общем – плохая идея, мы выяснили это с тех пор, как появился Интернет. Мы осуществляем прогресс, двигаясь к миру без паролей, но в то же время, многие веб-сайты предлагают дополнительную защиту пользовательских аккаунтов с помощью Двух-Факторной Аутентификации (2FA).
В общем и целом, существует 2 типа такой аутентификации: Временный одноразовый пароль (TOTP) а также Универсальный Двух-Фактор (U2F). Вы можете быть уже знакомы с первым типом, поскольку он используется наиболее часто: во время логина, предлагается ввести одноразовый пароль, генерируемый вашим приложением на смартфоне, отдельным аппаратным устройством, или же присылаемый в СМС. Метод прост, но есть несколько простых способов, делающих его опасным.
Я видел предупреждения типа “мой телефон взломали” от трёх людей из Кремниевой Долины/Биткойн среды/венчурной тусни. Будьте на чеку, и включите 2FA.
Как работает TOTP?
Временный одноразовый пароль, в основном популяризованный приложением Google Authenticator, подтверждает вашу личность на основании общего секрета. Этот секрет дложен быть известен вам и вашему провайдеру.
Когда вы заходите на веб-cайт под своей учеткой, ваше устройство генерирует уникальный код, основываясь на общем секрете и текущем времени. Затем вам нужно вручную ввести этот код. Сервер генерирует точно такую-же штуку, основанную на том-же секрете, чтобы успешно сравнить и подтвердить запрос на авторизацию.
Обе стороны генерируют одинаковый хеш, из одинаковых исходных данных, делясь секретом в момент регистрации.
В чём неадекватность TOTP?
Метод весьма прост в использовании, однако, он не лишён нескольких уязвимостей и неудобств.
1. Вам необходимо вручную вводить код во время авторизации (логина)
2. Слишком громоздкий бэкап. Вам необходимо совершать много шагов, чтобы сделать бэкап секрета. Кроме того, хорошие сервисы обычно предоставляют резервные коды, вместо того, чтобы явным образом призывать сохранять секрет. Если вы потеряете ваш секрет, и логин вместе с резервным кодом, вам придётся выполнить весь процесс регистрации TOTP заново.
3. Коды бекапа высылаются через Интернет, что совершенно небезопасно.
4. У вас и провайдера один и тот же секрет. Если атакующий хакнет компанию и получит доступ и к базе паролей, и к базе секретов, он сможет проникать в любой аккаунт совершенно незаметно.
5. Секрет показывается простым текстом или QR-кодом. Он не может быть представлен в виде хеша. Это также означает, что скорее всего секрет хранится в виде текстового файла, на серверах провайдера.
6. Секрет может быть раскрыт во время регистрации, так как провайдеру необходимо выдать вам сгенерированный секрет. Используя TOTP, вам нужно верить в способность провайдеров защитить приватность секрета. Но можете ли вы верить?
Как работает FIDO/U2F?
Стандарт U2F, разработанный Альянсом FIDO, был создан технологическими корпорациями, вроде Google и Microsoft, под влиянием найденных уязвимостей в TOTP. U2F использует криптографию с публичными ключами для подтверждения вашей личности (Reddit – “Объясняйте, будто мне лет пять”). В противовес TOTP, в данном варианте вы являетесь единственным, кто знает секрет (приватный ключ).
Выгоды U2F:
1. Через Интернет никогда не пересылается секрет (приватный ключ)
Никакая конфиденциальная информация не будет опубликована, благодаря криптографии публичного ключа.
2. Легче использовать. Нет нужды применять одноразовые коды.
3. Приватность. С секретом не ассоциируется никакая персональная информация.
4. Бекап теоретически легче. Однако, не всегда возможен; например, вы не сможете бекапить Yubikey.
Так как, в случае использования U2F, нет разделяемого двумя сторонами секрета и нет конфиденциальных баз данных, хранимых провайдером, хакер не может просто украсть все базы и получить доступ. Вместо того, он должен охотиться на отдельных пользователей, а это намного более затратно по финансам и времени.
Более того, вы можете забекапить ваш секрет (приватный ключ). С одной стороны, это делает вас ответственным за вашу же безопасность, но с другой – вам больше не нужно доверять какой-то компании, чтобы защитить ваши секреты (приватные ключи).
TREZOR – U2F “по-нашенски”
TREZOR представляет собой маленькое отдельное аппаратное решение, разработанное для хранения приватных ключей и работы в качестве изолированного компьютерного окружения. Изначально разработанный, как безопасный “железный” кошелек для Биткойна, рамки его применения значительно расширились благодаря расширяемости асимметричной криптографии. Теперь, TREZOR может служить в качестве безопасного железного токена для U2F, вам также придётся дополнительно подтверждать логин нажатием кнопки на устройстве.
1. Легко бекапить и восстанавливать. TREZOR просит вас записать на листочке так называемое “зернышко” (recovery seed), в время первого запуска устройства. Это –, единственный одноразовый процесс из всех остальных на устройстве. Восстановительное зёрнышко представляет собой все секреты (приватные ключи), генерируемые устройством и могут быть использованы в любое время для “восстановления” вашего аппаратного (или “железного”) кошелька.
2. Неограниченное количество U2F личностей, все они сохраняются в рамках единого бэкапа.
3. Секрет безопасно хранится в TREZORе. Его никто никогда не узнает, так как он не может покинуть устройство. Их не смогут украсть ни вирусы, ни хакеры.
4. Защита от фишинга с подтверждением на экране. Кошелёк всегда отображает url веб-сайта, на котором вы логинитесь, а также то, что именно вы хотите авторизовать. Вы можете убедиться, что информация, отправленная в устройство, соответствует вашим ожиданиям.
5. Дополнительная информация по использовании U2F во время настройки, использования и восстановления TREZOR может быть найдена в нашем посте в блоге, или в Пользовательской Документации.
Безопасные характеристики асимметричной криптографии кореллируют с философией безопасности TREZOR. С поддержкой U2F в кошельке, мы вдохновляем пользователей использовать все доступные меры для защиты их аккаунтов и личных данных в онлайне.
Читайте также: