В прошлом посте мы уже поговорили о том, что такое двухфакторная аутентификация и зачем она нужна. Для тех, кому не хочется долго читать, повторим совсем вкратце, что двухфакторная аутентификация — это такой способ проверки прав доступа, при котором используются два принципиально разных метода подтверждения этих прав.
Нужна же двухфакторная аутентификация для того, чтобы более надежно защищать наши с вами аккаунты: каждый из возможных вариантов уязвим, а вот применение двух (и более) способов подтверждения входа одновременно делает взлом на порядок сложнее.
В этом посте я расскажу о том, какие существуют варианты многофакторной аутентификации, опишу плюсы и минусы каждого из них, а также посоветую наиболее надежные варианты для того, чтобы ваши учетные записи оставались в безопасности.
Одноразовые коды из SMS, на почту или голосом по телефону
Один из наиболее распространенных вариантов двухфакторной аутентификации — это отправка одноразового кода для подтверждения входа. Чаще всего такие одноразовые коды отправляют в текстовом сообщении на указанный при регистрации номер телефона. Несколько реже для тех же целей используется электронная почта. В крупных сервисах обычно также предусмотрена возможность получить такой код голосовым звонком на все тот же указанный при регистрации телефон.
Куда бы ни приходил код, основная идея остается неизменной: таким образом происходит проверка вашей возможности получить доступ к какому-то другому аккаунту или номеру телефона, который вы указали при регистрации. И если кто-то украл ваш пароль, но не имеет доступа к вашему телефону, то такая защита вполне сработает.
Правда, у этого варианта двухфакторной аутентификации есть и свои недостатки. Если для подтверждения входа используется электронная почта и пароль для входа в нее — тот же самый, что и в аккаунте, который вы пытаетесь обезопасить, то очевидно, что защита получается очень слабенькая. Ведь преступник, знающий пароль от взламываемого аккаунта, наверняка попробует использовать его и для входа в вашу почту — и в итоге получит одноразовый код подтверждения.
С подтверждениями через номер телефона — будь то SMS или голосовой звонок — есть другая проблема: доступ к ним легко можно утратить. Иногда пользователь просто забывает заплатить за телефон, теряет его или, наконец, меняет номер. В общем, тем или иным образом лишается возможности получить одноразовый код.
Также нередки случаи, когда преступники убеждают сотрудников операторов связи выдать им SIM-карту с номером жертвы и тем самым получают доступ к кодам подтверждения. Кроме того, существует проблема перехвата текстовых сообщений — подобные случаи, опять-таки, уже бывали.
Итого: в целом такой вариант двухфакторной аутентификации вполне рабочий, но для защиты наиболее ценных аккаунтов — особенно тех, которые связаны с финансами, — желательно использовать что-то более надежное.
Пароль как второй фактор
Иногда пароль становится вторым фактором, а не первым. К примеру, это часто практикуют мессенджеры: по умолчанию для регистрации в сервисе обмена сообщениями обычно достаточно ввести только одноразовый код, который вам пришлют в SMS. А вот пароль придумывать, как правило, не обязательно. Не обязательно, но можно, — и по моему мнению, даже нужно. Таким образом вы защититесь сразу от нескольких потенциальных проблем.
В первую очередь это обезопасит вашу переписку в случае случайной потери доступа к тому номеру, на который вы зарегистрировали аккаунт в WhatsApp или Telegram. Собственно, недостатки аутентификации через SMS я уже описала в прошлой части. Допустим, вы сменили основной номер, а старую симку положили в ящик стола и долго не платили за обслуживание. В таком случае оператор через некоторое время перепродаст ваш номер, и тот, кому он достанется, без проблем сможет войти в мессенджер под вашим именем. Если, конечно, он дополнительно не защищен паролем.
И конечно, пароль поможет хотя бы как-то защитить вашу учетную запись в мессенджере от взломщиков, тем или иным способом получивших доступ к вашему номеру телефона.
Одноразовый код из заранее сгенерированного списка
Еще один вариант, который иногда можно встретить, — это список заранее сгенерированных одноразовых кодов. Бывает, что такие списки выдают своим клиентам банки для подтверждения транзакций, а некоторые интернет-сервисы (например, Google) позволяют применять их для восстановления доступа к аккаунту.
Этот вариант можно считать надежным — такие коды передаются пользователю крайне редко, поэтому возможностей для перехвата минимум. Коды создаются случайными, то есть они уникальны и угадать их едва ли получится.
Однако возникает проблема хранения: если преступник сможет каким-то образом выкрасть этот список, то далее заранее сгенерированные коды будет легко использовать для угона учетной записи или кражи денег со счета.
Поэтому по-хорошему одноразовые коды подтверждения надо хранить в сейфе или в его электронном аналоге. Например, в Kaspersky Password Manager есть возможность хранить зашифрованные заметки. Если сохранить список одноразовых кодов в этих заметках, то они будут надежно защищены — конечно же, при том условии, что вы установите хороший и уникальный мастер-пароль для самого Kaspersky Password Manager.
Впрочем, главное неудобство этого способа аутентификации состоит в том, что если вам часто нужно что-то подтверждать, то списки заранее сгенерированных кодов быстро заканчиваются. В результате придется постоянно создавать и сохранять новые. И если речь идет о множестве аккаунтов, то в этом массиве списков будет легко запутаться. Поэтому заранее сгенерированным кодам, как основному методу аутентификации, пришли на смену коды, генерируемые «по требованию» — в тот момент, когда этот код вам нужен.
Одноразовые коды из приложения-аутентификатора
Генерацией одноразовых кодов «на лету» занимаются аутентификаторы. Иногда они могут быть самостоятельными устройствами с небольшим дисплеем, на который выводится текущий код, — такие аутентификаторы выдают своим клиентам некоторые банки.
Однако чаще всего сейчас используются не отдельные устройства, а специальные приложения-аутентификаторы, которые устанавливаются на смартфон. У нас есть несколько подробных постов о них, в частности:
- Как работают приложения-аутентификаторы
- Лучшие приложения-аутентификаторы для Android, iOS, Windows и macOS
- Преимущества и риски аутентификации одноразовыми кодами из приложения
- Что делать, если вы потеряли телефон с приложением-аутентификатором
Так что если вас интересует, как работает этот способ аутентификации, как выбрать приложение и о чем еще стоит помнить, то на все эти вопросы есть ответы по ссылкам выше. А здесь скажу коротко, что приложения-аутентификаторы предлагают оптимальный баланс между удобством и безопасностью — поэтому они приобретают все большую популярность.
Биометрия — отпечаток пальца, лицо или голос
Еще не так давно для большинства людей биометрическая аутентификация была чем-то экзотическим. Однако все довольно быстро изменилось: в большинстве смартфонов сейчас есть возможность аутентификации либо по отпечатку пальца, либо с помощью распознавания лица, и это уже давно никого не удивляет.
Из более необычных вариантов биометрии можно отметить аутентификацию с помощью голоса, рисунка радужной оболочки глаза, характерной походки, манеры печати на клавиатуре и так далее. А из совсем уж оригинальных направлений можно вспомнить исследование возможности аутентификации по запаху (правда, пока этот подход не очень-то работает).
У биометрической аутентификации есть пара серьезных недостатков. Первый: любые используемые для нее характеристики пользователя являются его постоянными свойствами. Пароль в случае утечки легко поменять — да что там, можно делать это время от времени просто для профилактики. А вот сменить зарегистрированный отпечаток пальца получится лишь ограниченное число раз — собственно, количество таких возможностей можно буквально пересчитать по пальцам.
Вторая важная проблема состоит в том, что биометрические данные являются крайне чувствительной информацией — как из-за своей неизменности, так и потому, что позволяют не только аутентифицировать пользователя, но и идентифицировать человека. Так что к сбору и передаче этих данных цифровым сервисам стоит относиться крайне осторожно.
По этой причине биометрические данные обычно используются для локальной аутентификации — они хранятся и обрабатываются прямо на устройстве, так, чтобы не приходилось кому-то их передавать. Для дистанционной биометрической аутентификации цифровому сервису пришлось бы доверять производителю этого устройства, на что сервисы обычно не идут. В итоге полноценно работающий механизм дистанционной биометрической аутентификации есть только у Apple, которая полностью контролирует свою экосистему, от разработки ПО до производства устройств.
Однако есть у аутентификации с помощью биометрии и важное преимущество, которое перевешивает недостатки. При правильной реализации она серьезно упрощает жизнь пользователей: не надо ничего вводить, достаточно приложить палец к датчику или показать лицо в камеру. При этом такая аутентификация достаточно надежна — опять-таки, в случае правильной реализации.
Местоположение
Еще один вариант подтверждения того, что пытающийся войти в аккаунт пользователь имеет такое право, — это местоположение. Обычно эта проверка происходит незаметно, и о ее результатах человек узнает только в том случае, если она оказывается неуспешной: то есть тогда, когда попытка входа в аккаунт происходит из неожиданного для сервиса места. В этом случае сервис может попросить дополнительно подтвердить вход каким-то другим способом. Этот способ аутентификации не нужно подключать самому, он работает по умолчанию.
Конечно же, местоположение является не очень надежным способом проверки аутентичности пользователя: во-первых, оно не слишком уникально — в любой момент времени в одном и том же месте обычно находится огромное количество других людей. Во-вторых, его достаточно легко подделать — особенно если речь идет об определении местоположения по IP-адресу, а не о полноценной геолокации по GPS. Тем не менее в качестве одного из факторов аутентификации местоположение может быть полезно и многие сервисы его используют.
Аппаратные ключи FIDO U2F (aka YubiKey)
Описанные выше варианты аутентификации имеют существенный недостаток: они позволяют проверить аутентичность пользователя, но никак не проверяют аутентичность сервиса. Из-за этого они уязвимы для атаки MitM (man-in-the-middle).
Злоумышленники могут создать поддельную страницу, на которой тщательно сымитирован механизм входа в тот или иной сервис. Эта страница попросит у пользователя ввести логин и пароль, которые атакующие тут же используют для входа на настоящем сайте. А потом запросят и код подтверждения входа — он опять-таки будет быстро использован взломщиками для входа в аккаунт жертвы и его угона.
Для противодействия таким атакам были созданы ключи FIDO U2F, также известные по имени наиболее популярной модели такого ключа — YubiKey. Основное преимущество этого варианта аутентификации состоит в том, что во время регистрации сервис и U2F-ключ запоминают некоторую информацию, которая уникальна и для каждого сервиса, и для каждого пользователя. Впоследствии в процессе аутентификации сервис должен отправить ключу определенный запрос, на который ключ даст ответ только в том случае, если этот запрос правильный.
Таким образом обе стороны этого общения могут понять, что имеют дело с настоящим собеседником. А поскольку в основе этого варианта аутентификации лежит криптография с открытым ключом, весь процесс надежно защищен от подделки, перехвата и прочих потенциальных неприятностей.
И еще одно преимущество: хотя «под капотом» эта технология устроена замысловато и использует суровую криптографию, на поверхности — с точки зрения пользователя — все выглядит очень просто. Достаточно вставить ключ в USB-порт (или приложить к смартфону — такие ключи часто работают еще и через NFC) и коснуться пальцем контактной площадки на ключе, чтобы подтвердить право на вход.
Аппаратные ключи U2F — это самый надежный вариант аутентификации, существующий на сегодняшний день, и для защиты по-настоящему важных аккаунтов рекомендуется именно он. Так, например, поступают в Google: все сотрудники компании уже более пяти лет используют подобные ключи для входа в рабочие аккаунты.
FIDO Passkeys: будущее настоящее без паролей
Заставить всех сотрудников отдельно взятой компании использовать аппаратные ключи для аутентификации — непросто, но возможно. Но для миллиардов простых интернет-пользователей этот вариант не очень-то подходит. Обычные люди часто относятся к двухфакторной аутентификации в целом как к досадной неприятности, что уж говорить о необходимости покупать за деньги какой-то специальный ключ.
Поэтому все тот же FIDO Alliance, ответственный за создание ключей U2F, разработал новый стандарт аутентификации, который вместо паролей использует нечто под названием passkeys — «паролеключи», в вольном переводе на русский. В упрощенном виде это работает примерно так же, как в ключах U2F, только для хранения информации, используемой для аутентификации, не обязательно нужно какое-то специальное устройство.
Passkeys могут быть записаны практически где угодно — в смартфоне, в компьютере, в пользовательском профиле браузера или в том числе и по старинке — в USB-ключе. Также passkeys могут синхронизироваться через облако — или не синхронизироваться, если выбран режим уникального «паролеключа».
Этот обширный список вариантов хранения, естественно, делает passkeys несколько менее безопасными. Насколько именно менее безопасными — зависит от того, каким сочетанием оборудования и сервисов вы пользуетесь.
Но в качестве компенсации пользователям предлагается важное преимущество: passkeys не дополняют пароли к сервисам, а заменяют их. При этом такая аутентификация все еще является многофакторной: помимо обладания тем устройством, в котором хранятся passkeys, вам придется также подтвердить вход либо биометрией (если ваше устройство ею оснащено), либо с помощью PIN-кода для разблокировки устройства. Как видите, совсем уж без паролей в некоторых случаях не обойтись, но, по крайней мере, passkeys существенно сокращает их количество.
Основной проблемой этой инициативы является то, что пока она очень смахивает на лоскутное одеяло. У разных платформ и сервисов очень разный подход к хранению данных, аутентификации пользователей, да и в целом к безопасности. Поэтому вместо какого-то единого способа используется некоторое количество разных вариантов, которые заметно отличаются между собой по надежности.
Так что торопиться полностью переходить на passkeys пока будет преждевременно. Но поэкспериментировать с ними уже можно: недавно была анонсирована полноценная поддержка passkeys аккаунтами Google, так что все желающие уже могут ознакомиться с тем, как это работает на практике.
Какие способы двухфакторной аутентификации лучше и о чем еще надо помнить
Напоследок — еще раз самое важное:
- В 2023 году двухфакторная аутентификация — не роскошь, а насущная необходимость. Обязательно включайте ее везде, где это в принципе возможно.
- Любые варианты двухфакторной аутентификации однозначно лучше ее отсутствия.
- Оптимальный способ двухфакторной аутентификации — с помощью приложения-аутентификатора.
- Еще лучше использовать аппаратный ключ FIDO U2F — Yubico TubiKey, Google Titan и так далее. Особенно для самых ценных аккаунтов.
- Уже можно поэкспериментировать с технологией Passkeys, но полностью переходить на нее, пожалуй, еще рано.
- Поэтому все еще важно внимательно относиться к паролям: создавать надежные, не переиспользовать их на нескольких сервисах и безопасно хранить в менеджере паролей.
- И конечно же, не забывайте о том, что большинство методов двухфакторной аутентификации (кроме U2F и passkeys) уязвимы для фишинга. Поэтому используйте надежное решение, в котором есть автоматическая защита от этой угрозы, — например, Kaspersky Premium.