Что значит одноразовый пароль
Одноразовый пароль
Одноразовый пароль (англ. one time password, OTP ) — это пароль, действительный только для одного сеанса аутентификации. Действие одноразового пароля также может быть ограничено определённым промежутком времени. Преимущество одноразового пароля по сравнению со статическим состоит в том, что пароль невозможно использовать повторно. Таким образом, злоумышленник, перехвативший данные из успешной сессии аутентификации, не может использовать скопированный пароль для получения доступа к защищаемой информационной системе. Использование одноразовых паролей само по себе не защищает от атак, основанных на активном вмешательстве в канал связи, используемый для аутентификации (например, от атак типа «человек посередине»).
Человек не в состоянии запомнить одноразовые пароли. Поэтому требуются дополнительные технологии для их корректной работы.
Содержание
Способы создания и распространения OTP
Алгоритмы создания OTP обычно используют случайные числа. Это необходимо, потому что иначе было бы легко предсказать последующие пароли на основе знания предыдущих. Конкретные алгоритмы OTP сильно различаются в деталях. Различные подходы к созданию одноразовых паролей перечислены ниже.
Также существуют различные способы, чтобы сообщить пользователю следующий пароль. Некоторые системы используют специальные электронные токены, которые пользователь носит с собой, создающие одноразовые пароли и выводящие затем их на маленьком экране. Другие системы состоят из программ, которые пользователь запускает с мобильного телефона. Ещё другие системы генерируют одноразовые пароли на сервере и затем отправляют их пользователю используя посторонние каналы, такие как SMS сообщения. Наконец, в некоторых системах одноразовые пароли напечатаны на листе бумаги или на скретч-карте, которые пользователю необходимо иметь с собой.
Реализация
Математические алгоритмы
Один подход, разработанный Лесли Лэмпортом, использует одностороннюю функцию (назовём её f). Система одноразовых паролей начинает работать от начального числа s, затем генерирует пароли
столько раз, сколько необходимо. Если ищется бесконечная серия паролей, новое начальное число может быть выбрано после того, как ряд для s оказывается исчерпанным. Каждый пароль распределяется в обратном порядке, начиная с f(f(…f(s))…), заканчивая f(s).
Синхронизированные по времени
Синхронизированные по времени одноразовые пароли обычно связаны с физическими аппаратными токенами (например, каждому пользователю выдаётся персональный токен, который генерирует одноразовый пароль). Внутри токена вcтроены точные часы, которые синхронизированы с часами на сервере. В этих OTP системах, время является важной частью алгоритма создания пароля так как генерация нового пароля основывается на текущем времени, а не на предыдущем пароле или секретном ключе.
В последнее время, стало возможным брать электронные компоненты, связанные с постоянными токенами-часами, такие как от ActivIdentity, InCard, RSA, SafeNet, Vasco, и VeriSign и встраивать их в форм-фактор кредитной карты. Однако, так как толщина карты (от 0.79 мм до 0.84мм) не позволяет использовать традиционные элементов батареек, необходимо использовать специальные батарейки, основанные на полимерах, время жизни которых гораздо больше, чем у обычных мини-батареек. Кроме того, должны использоваться крайне маломощные полупроводниковые компоненты для экономии энергии во время режима ожидания и/или использования продукта. В производстве тонких устройств OTP лидируют две компании: Identita и NagraID.
Мобильные телефоны и КПК также могут быть использованы для генерации синхронизированных по времени одноразовых паролей. Этот подход может быть более экономной альтернативой, так как большинство пользователей Интернета уже имеет мобильные телефоны. Кроме того, это может быть более удобно, потому что у пользователя не будет необходимости носить с собой отдельный токен, для каждого безопасного соединения, когда он или она нуждается в доступе.
Запрос
Использование одноразовых паролей с запросом требует от пользователя обеспечивать синхронизированные по времени запросы, чтобы была выполнена проверка подлинности. Это может быть сделано путём ввода значения в сам токен. Чтобы избежать появления дубликатов, обычно включается дополнительный счётчик, так что если случится получение двух одинаковых запросов, то это всё равно приведёт к появлению разных одноразовых паролей. Однако, вычисления обычно не включают предыдущий одноразовый пароль, так как это приведёт к синхронизации задач. EMV начинают использовать такие системы (т. н. «Chip Authentication Program») для кредитных карт в Европе.
Одноразовый пароль через SMS
Распространённая технология, используемая для доставки одноразовых паролей — это SMS. Так как SMS — это повсеместный канал связи, которая имеется во всех телефонах и используется большим количеством клиентов, SMS сообщения имеют наибольший потенциал для всех потребителей, обладающие низкой себестоимостью. Токены, смарт-карты и другие традиционные методы аутентификации гораздо более дороги для реализации и для использования и часто встречают сопротивление со стороны потребителей. Они также гораздо более уязвимы для атак типа «человек посередине», в которых фишеры крадут одноразовые пароли обманом или даже потому что одноразовые пароли отображаются на экране токена. Также токены могут быть потеряны и интеграция одноразовых паролей в мобильные телефоны может быть более безопасным и простым, потому что пользователям не придётся носить с собой дополнительные портативные устройства. В то же время, одноразовые пароли через SMS могут быть менее безопасны, так как сотовые операторы становятся частью цепи доверия. В случае роуминга, надо доверять более чем одному мобильному оператору.
Одноразовый пароль на мобильном телефоне
По сравнению с аппаратной реализацией токена, которая требует, чтобы пользователь имел с собой устройство-токен, токен на мобильном телефоне существенно снижает затраты и предлагает беспрецедентный уровень удобства. Это решение так же уменьшает материально-технические требования, так как нет необходимости выдавать отдельное устройство каждому пользователю. Мобильные токены, такие как FiveBarGate или FireID дополнительно поддерживают некоторое число токенов в течение одной установки приложения, позволяя пользователю аутентифицироваться на нескольких ресурсах с одного устройства. Этот вариант также предусматривает специфические приложения для разных моделей телефонов пользователя. Токены в мобильных телефонах также существенно более безопасны, чем OTP по SMS, так как SMS отправляются по сети GSM в текстовом формате с возможностью перехвата.
Сравнение технологий
С точки зрения затрат, самыми дешёвыми решениями являются распространение одноразовых паролей на бумаге, скретч-карте или генератор одноразовых паролей на мобильном телефоне. Это так, потому что эти системы исключают затраты, связанные с (пере-)выдачей электронных токенов и стоимостью SMS сообщений.
Для систем, которые опираются на электронные токены, не синхронизованные по времени системы должны решить проблему, когда сервер и токен сбиваются с синхронизации. Это приводит к дополнительным затратам на разработку. С другой стороны, они позволяют избегать расходов на часы в электронных токенах (и коррекцию их значений с учётом временного дрейфа).
Хотя одноразовые пароли являются более безопасными, чем обычные пароли, использование систем OTP всё ещё уязвимо для атак типа «человек посередине». Поэтому одноразовые пароли не должны передаваться третьей стороне. Синхронизирован ли одноразовый пароль по времени, в основном никак не влияет на степень уязвимости. Основанные на запросе одноразовые пароли тоже являются уязвимыми, хотя успешная атака требует от злоумышленника чуть более активных действий, чем для других типов OTP.
Стандартизация
Запатентовано множество технологий OTP. Это делает стандартизацию в этой области ещё более трудной, так как каждая компания пытается протолкнуть свою собственную технологию. Стандарты, тем не менее, существуют, например, RFC 2289 [3] и RFC 4226 (HOTP).
OTP в рамках банковского дела
В некоторых странах одноразовые пароли используются для удалённого использования банков. В некоторых из этих систем банк посылает пользователю пронумерованный список одноразовых паролей, напечатанный на бумаге. Для каждой удалённой транзакции, пользователь должен ввести соответствующий одноразовый пароль из этого списка. В Германии эти пароли обычно называют TAN кодом (от «transaction authentication numbers»). Некоторые банки отправляют TAN-коды пользователю с помощью SMS, и в этом случае они называются mTAN-коды (от «mobile TANs»).
Связанные технологии
Чаще всего, одноразовые пароли являются олицетворением двухфакторной аутентификации. Некоторые Технологии единого входа [4] системы используют одноразовые пароли. OTP технология так же используется в токенах безопасности.
Одноразовые пароли. Где? Зачем? Как?
Когда я впервые услышал фразу «одноразовый пароль» я был в недоумении. Как это одноразовый? Кто будет использовать пароли, которые действуют только один раз? это сколько же надо паролей помнить, чтобы после первого же использования его выбросить? Да и вообще кому это нужно, ведь есть же нормальные долгоживущие пароли.
Если Вы так же как и я впадаете в некоторое недоумение при словосочетании «одноразовый пароль», то я постараюсь рассказать что это такое, для чего их можно использовать и как они работают.
Представьте себе, что Вы оказались в командировке в чужом городе, и у Вас сломался ноутбук, или у Вас его вообще не было, а Вам срочно понадобилось зайти в корпоративную почту или получить доступ на корпоративный портал. Что Вы будете делать? Правильно, большинство из нас пойдёт в место общего пользования интернетом: интернет кафе/игровой клуб/почтовое отделение. Вот Вы пришли, сели за компьютер, открыли браузер, ввели адрес, появилась страничка аутентификации и… СТОП! Это же компьютер общего пользования, и если Вы сейчас введёте логин и пароль, то где гарантия того, что они тут же не попадут в руки третьих лиц? Что же делать? Вот такую задачу и помогут решить одноразовые пароли. Вы вводите логин, вводите одноразовый пароль, и получаете доступ к необходимому Вам ресурсу. Почему это более безопасно чем обычные пароль? Да потому что в следующий раз, для доступа к корпоративным ресурсам, Вам придётся ввести совершенно другой пароль.
Всё вышеописанное звучит красиво, но остаётся вопросик: от куда Вы получите следующий пароль? Может Вам необходимо будет поменять его перед выходом из системы? Может администратор отследив, что Вы уже воспользовались один раз паролем, изменит его и пришлёт Вам SMS? Или может у Вас есть список этих самый одноразовых паролей? Нет, всё гораздо проще — есть генератор одноразовых паролей, который может выглядеть как брелок, флешка, кредитная карта или небольшой калькулятор. Для того, чтобы сгенерировать одноразовый пароль, достаточно нажать одну(или несколько, в случае «калькулятора») кнопочек и новый пароль высветиться на экране. Вводим этот пароль и получаем доступ к нужной информации, и не боимся, что пароль украли или посмотрели, ведь в следующий раз сгенериться совершенно другой пароль.
Ну и самое интересное, а как это это всё работает? Всё очень просто. Есть две составляющих данного решения клиент (это тот самый генератор одноразовых паролей, в виде брелка/флешки/калькулятора который выдаётся пользователю) и сервер (программная часть, которая проверяет, а правильный ли пароль ввёл пользователь). В момент инициализации генератора одноразовых паролей в него записывается два значения: некоторое случайное число (понятно, что чем больше это число, тем лучше), которое называется вектором инициализации, и счётчик. Эти же данные сохраняются и на сервере. Когда на генераторе одноразовых паролей нажимается кнопка, вектор инициализации и счётчик подаются преобразуются с помощью хэш функции в некоторое значение, которое и будет одноразовым паролем (на самом деле происходит несколько сложнее, но для понимания принципа работы этого достаточно). Так как функция хэширования необратима, то восстановить из полученного значения начальные практически невозможно. Так как при каждой генерации счётчик увеличивается, то каждый раз значение одноразового пароля будет различным. На сервере происходит такая же ситуация, получив логин пользователя, сервер выясняет какой вектор инициализации и какое значение счётчика необходимо использовать для расчётов, используя ту же самую функцию хэширования сервер получает одноразовый пароль. Если пароли совпадают, то пользователь аутентифицирован и может получить доступ к ресурсам.
В случае, если Вы случайно несколько раз нажали на кнопочку, и произошла расссинхронизация, то существуют методы синхронизации генератора и сервера.
Описанная схема работы сильно упрощена, существуют более сложные схемы, например когда сервер присылает нам значение, мы вводим его в крипто-калькулятор, получаем другое «ответное значение» и вводим его в форму аутентификации в качестве пароля.
Описанные схемы работы завязаны на события, то есть на нажатия кнопки, так же существуют схемы работы завязанные на время.
Вышеописанная схема работы одноразовых паролей несколько упрощена, но на мой взгляд раскрывает основные принципы работы. Более подробно про реализацию одноразовых паролей можно почитать в RFC 4226.
P.S. Это моя первая статья на Хабре, но надеюсь не последняя…
Когда генератор одноразовых паролей выдаётся пользователю, то его серийный номер привязывается к логину пользователя, таким образом, получив логин пользователя, сервер точно знает какие значения вектора инициализации и счётчика необходимо использовать. Что же происходит с этими
Коды в SMS небезопасны — рекомендуем пользоваться другими вариантами двухфакторной аутентификации
Почему SMS — не лучший выбор для двухфакторной аутентификации, и какие существуют альтернативы.
За последние пару лет идея двухфакторной аутентификации, о которой так долго говорили гики, сильно продвинулась в массы. Однако до сих пор в большинстве случаев речь идет о двухфакторной аутентификации при помощи одноразовых паролей, приходящих в SMS. А это, к сожалению, не очень-то надежный вариант. Вот что может пойти не так:
Надо заметить, что даже самый трудоемкий и высокотехнологичный из перечисленных методов перехвата пароля в SMS — с помощью взлома протокола SS7 — уже был использован на практике. Так что речь не о теоретической возможности возникновения неприятностей, а о вполне практической угрозе.
В общем, пароли в SMS — это не очень-то безопасно, а иногда даже и очень небезопасно. Поэтому есть смысл озаботиться поиском альтернативных вариантов двухэтапной аутентификации, о чем мы сегодня и поговорим.
Одноразовые коды в файле или на бумажке
Наиболее простая замена одноразовым паролям, присылаемым в SMS, — это те же самые одноразовые пароли, но заготовленные заранее. Это не самый плохой вариант, особенно для тех сервисов, в которых вам надо авторизовываться сравнительно редко. Собственно, даже для того же «Фейсбука» этот метод вполне может подойти, особенно в качестве резервного способа входа.
Работает это очень просто: по запросу сервис генерирует и показывает на экране десяток одноразовых кодов, которые в дальнейшем могут быть использованы для подтверждения входа в него. Дальше вы просто распечатываете или переписываете эти коды на бумагу и кладете в сейф. Или, что еще проще, сохраняете в зашифрованных записях в менеджере паролей.
В общем, не так важно, будете ли вы хранить эти коды на теплой ламповой бумаге или в бездушном цифровом виде — важно сохранить их так, чтобы они а) не потерялись и б) не могли быть украдены.
Приложения для двухфакторной аутентификации
У единожды сгенерированного набора одноразовых кодов есть один недостаток: рано или поздно он закончится, и вполне может так получиться, что вы останетесь без кода в самый неподходящий момент. Поэтому есть способ лучше: можно генерировать одноразовые коды на лету с помощью небольшого и, как правило, очень простого приложения — аутентификатора.
Как работают приложения-аутентификаторы
Работают приложения для двухфакторной аутентификации очень просто. Вот что придется сделать:
Коды создаются на основе ключа, который известен только вам и серверу, а также текущего времени, округленного до 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-приложения. И даже если по каким-то соображениям им хочется контролировать этот процесс и создать свое приложение, то чаще всего они позволяют защищать с его помощью не только «свои» аккаунты, но и учетные записи сторонних сервисов.
Поэтому просто выбирайте приложение-аутентификатор, которое вам больше нравится по набору дополнительных функций — оно будет работать с большинством сервисов, которые вообще поддерживают 2FA-приложения.
Лучшие приложения для двухфакторной аутентификации
Выбор 2FA-приложений на удивление велик: поиск по запросу «authenticator» в Google Play или Apple App Store выдает не один десяток результатов. Мы не советуем устанавливать первое попавшееся приложение — это может быть небезопасно, ведь, по сути, вы собираетесь доверить ему ключи от своих аккаунтов (оно не будет знать ваши пароли, конечно, но ведь 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
Самое навороченное из приложений для двухфакторной аутентификации, основным достоинством которого является то, что все токены хранятся в облаке. Это позволяет получить доступ к токенам с любого из ваших устройств. Заодно это упрощает переезд на новые устройства — не придется заново активировать 2FA в каждом сервисе, можно продолжить пользоваться существующими токенами.
В облаке токены зашифрованы ключом, который создается на основе заданного пользователем пароля, — то есть данные хранятся безопасно, и украсть их будет нелегко. Также можно установить ПИН-код на вход в приложение — или защитить его отпечатком пальца, если ваш смартфон оснащен соответствующим сканером.
Основной недостаток Authy состоит в том, что приложение с ходу требует завести аккаунт, привязанный к вашему телефонному номеру, — без этого просто не получится начать с ним работать.
+ Токены хранятся в облаке, что позволяет использовать их на всех своих устройствах.
+ По той же причине очень удобно переезжать на новое устройство.
+ Вход в приложение защищен PIN-кодом или отпечатком пальца.
+ На экране показывается код только для последнего использованного токена.
+ В отличие от остальных приложений, поддерживает не только Android и iOS, но и Windows, macOS и Chrome.
− Требуется зарегистрироваться в Authy, используя номер телефона, — без этого приложение не работает.
6. «Яндекс.Ключ»
Поддерживаемые платформы: Android, iOS
На мой взгляд, по концепции «Яндекс.Ключ» — это самое удачное из существующих приложений для двухфакторной аутентификации. С одной стороны, оно не требует с ходу регистрироваться — можно начать им пользоваться с той же легкостью, как и Google Authenticator. С другой стороны, в нем есть несколько дополнительных возможностей, которые открываются тем, кто не поленится зайти в настройки.
Во-первых, «Яндекс.Ключ» можно «запереть» на PIN-код или отпечаток пальца. Во-вторых, можно создать в облаке «Яндекса» резервную копию токенов, защищенную паролем (а вот на этом этапе уже придется указать номер телефона), и восстановить ее на любом из используемых вами устройств. Точно так же можно будет перенести токены на новое устройство, когда понадобится переезжать.
Получается, что «Яндекс.Ключ» сочетает в себе простоту Google Authenticator и расширенную функциональность Authy — в зависимости от того, что вы предпочитаете. Единственный недостаток приложения — не вполне удобный для использования с большим количеством токенов интерфейс.
+ Минимализм на старте, расширенная функциональность доступна через настройки.
+ Создание резервных копий токенов в облаке для использования на нескольких устройствах и переезда на новые.
+ Вход в приложение защищен PIN-кодом или отпечатком пальца.
+ На экране показывается код только для последнего использованного токена.
+ Заменяет постоянный пароль к аккаунту «Яндекса».
− При большом количестве токенов не очень удобно искать нужный.
«Железные» аутентификаторы FIDO U2F: YubiKey и все-все-все
Если приложение, генерирующее одноразовые коды, кажется вам слишком эфемерным способом защитить свои аккаунты, и хочется чего-то более постоянного, надежного и материального — буквально запереть аккаунт на ключ и положить его в карман, — то у меня есть для вас хорошая новость: такой вариант также существует. Это аппаратные токены стандарта U2F (Universal 2nd Factor), созданного FIDO Alliance.
Как работают токены FIDO U2F
Аппаратные U2F-токены очень полюбились специалистам по безопасности — в первую очередь потому, что с точки зрения пользователя они работают очень просто. Для начала работы достаточно подключить U2F-токен к вашему устройству и зарегистрировать его в совместимом сервисе, причем делается это буквально в пару кликов.
Впоследствии при необходимости подтвердить вход в этот сервис нужно будет подключить U2F-токен к тому устройству, с которого вы входите, и нажать на токене кнопку (в некоторых устройствах — ввести PIN или приложить палец к сканеру). Все — никаких сложных настроек, ввода длинных последовательностей случайных символов и прочих танцев с бубном, которые обычно все себе представляют при упоминании слова «криптография».
Вставьте ключ и нажмите кнопку — и это действительно все
При этом «под капотом» все устроено очень умно и криптографически надежно: при регистрации токена на сервисе создается пара криптографических ключей — приватный и публичный. Публичный сохраняется на сервере, а приватный хранится в защищенном хранилище Secure Element, которое является сердцем U2F-токена, — и этот ключ никогда не покидает устройство.
Приватный ключ используется для того, чтобы зашифровать подтверждение входа, которое передается на сервер и может быть расшифровано с помощью публичного ключа. Если кто-то от вашего имени попытается передать подтверждение входа, зашифрованное неправильным приватным ключом, то при расшифровке с помощью известного сервису публичного ключа вместо подтверждения получится бессмыслица, и сервис не пустит его в аккаунт.
Какими бывают U2F-устройства
Наиболее известный и распространенный пример U2F — это «ключи» YubiKey, которые производит компания Yubico. Собственно, она и стояла у истоков этого стандарта, но предпочла сделать его открытым, для чего и был создан FIDO Alliance. А поскольку стандарт открытый, вы не ограничены в выборе: U2F-совместимые устройства производят и продают разные компании — в онлайн-магазинах можно найти множество разнообразных моделей.
YubiKey — вероятно, самые популярные U2F-токены
Например, Google недавно представила свой комплект аппаратных аутентификаторов Google Titan Security Keys. На самом деле это ключи производства Feitian Technologies (второй по популярности производитель U2F-токенов после Yubico), для которых в Google написали собственную прошивку.
Разумеется, все аппаратные аутентификаторы, совместимые со стандартом U2F, будут с одинаковым успехом работать со всеми сервисами, которые также с этим стандартом совместимы. Однако у разных моделей есть несколько важных различий, и самое важное из них — это интерфейсы, которыми оборудован «ключ». От этого напрямую зависит, с какими устройствами он сможет работать:
USB — для подключения к компьютерам (Windows, Mac или Linux — неважно, «ключи» работают без установки каких-либо драйверов). Помимо обычного USB-A бывают «ключи» с USB-C.
NFC — необходим для использования со смартфонами и планшетами на Android.
Bluetooth — понадобится на тех мобильных устройствах, в которых нет NFC. К примеру, аутентификатор с Bluetooth все еще нужен владельцам iPhone: несмотря на то, что в iOS уже разрешили приложениям использовать NFC (до 2018 года это было позволено только Apple Pay), разработчики большинства совместимых с U2F приложений еще не воспользовались этой возможностью. У Bluetooth-аутентификаторов есть пара минусов: во-первых, их нужно заряжать, а во-вторых, их подключение занимает гораздо больше времени.
Что же выбрать: SMS, приложение или YubiKey?
Универсального ответа на этот вопрос не существует — для разных сервисов можно использовать разные варианты двухфакторной аутентификации в различных сочетаниях. Например, наиболее важные аккаунты (скажем, вашу основную почту, к которой привязаны остальные учетные записи) стоит защитить по максимуму — запереть на «железный» U2F-токен и запретить любые другие опции 2FA. Так можно быть уверенным, что никто и никогда не получит доступ к аккаунту без этого токена.
Хороший вариант — привязать к аккаунту два «ключа», как это делается с ключами от автомобиля: один всегда с собой, а другой лежит в надежном месте — на случай, если первый потеряется. При этом «ключи» могут быть разного типа: скажем, приложение-аутентификатор на смартфоне в качестве основного и U2F-токен или листочек с одноразовыми паролями, лежащий в сейфе, в качестве резервного средства.
Так или иначе, главный совет — по возможности избегать использования одноразовых паролей в SMS. Правда, получится это не всегда: например, финансовые сервисы в силу своей консервативности продолжают использовать SMS и крайне редко позволяют пользоваться чем-либо еще.