В зависимости от фантазии разработчика и конкретной сферы применения система с использованием одноразовых паролей или ключей может называться двухфакторной или же двухшаговой авторизацией, аутентификацией, верификацией, а то и каким-нибудь более заковыристым словом. Впрочем, все они в общем случае сводятся к использованию двух или более методов идентификации пользователя для выполнения той или иной операции. Причём, как правило, первым этапом является применение привычной всем связки логин-пароль, которую, если честно, можно легко украсть и использовать удалённо без ведома владельца. А вот вторым фактором является нечто, что по идее должно быть доступно исключительно пользователю. Методы силового захвата и что-нибудь вроде ласковой просьбы от дяди с горячим паяльником в данном случае не рассматриваются, так как от них вряд ли что-либо спасёт.
Для второго этапа идентификации может применяться множество средств: передача ключа по SMS/звонку/Push-уведомлению, USB-токены, физические и виртуальные генераторы ключей, биометрические датчики, смарт-карты, «таблетки» (как для домофонов), RFID-метки (NFC в том числе), приложения для мобильных устройств, одноразовые шифроблокноты и другие, более экзотические штуки. Суть всех этих технических наворотов одна — для доступа к чему-либо, помимо основных идентификационных данных (логин-пароль), требуется ввести ещё и одноразовый код. Если злоумышленник украл логин и пароль от вашего аккаунта, то воспользоваться он ими не сможет, так как одноразового пароля у него нет. Если же он умудрился подглядеть и одноразовый код, то он всё равно для него бесполезен, ведь само название кода указывает на то, что второй раз он им воспользоваться не сможет.
Более того, для пущей безопасности одноразовые пароли нередко имеют ещё и крайне ограниченный срок действия, но такой, чтобы даже очень неспешный пользователь успел ввести его куда нужно, а вредитель не успел бы его разузнать. Конечно, такой подход не обеспечивает стопроцентной защиты, которой, как известно, вообще не бывает, но позволяет достаточно эффективно защищаться от различного рода атак, да и в целом повысить безопасность работы. Да, это несколько снижает удобство пользования сервисами, а некоторые категории пользователей может вообще отпугнуть. Автор воочию наблюдал в одном из банков сцену, когда менеджер активно убеждал (заметьте, вполне доступным и понятным языком) клиента средних лет подключить бесплатную услугу авторизации платежей в интернете через SMS-коды. На что клиент буркнул: «Слишком сложно», — и удалился, оставив менеджера в растерянности и непонимании, как такая простая процедура может вызывать проблемы у неглупого с виду человека. Пример с банком не случаен, ведь именно финансовые организации первыми приняли на вооружение одноразовые коды.
Те же пароли по SMS рассылают чуть ли не все онлайн-сервисы, включая социальные сети. Если не для входа, то хотя бы для сброса основного пароля. Dropbox с недавних пор предлагает клиентам свою двухфакторную аутентификацию. А таблицы одноразовых кодов на скретч-картах или в бумажном виде сейчас чуть ли не насильно впихивают клиентам любые уважающие себя банки и смежные организации. «Яндекс.Деньги» давно предлагают не только таблицы, но и электронные токены для проведения платёжных операций. Аналогичная история имеется у PayPal. Есть и более универсальные решения вроде Rutoken или Yubikey, которые могут использоваться в качестве не только дополнительного, но и основного средства идентификации (в общем случае), а также для шифрования, доступа к почте, электронным деньгам и так далее. Благо стандарты на такие устройства и схемы давно приняты и активно внедряются.
Аппаратный токен стоит обычно в пределах 50$. Если вам совсем уж не хочется тратить деньги для своей защиты, то можно воспользоваться бесплатными программными решениями. Чаще всего в них используется алгоритм генерации одноразового кода на основе текущего времени или HMAC, поэтому требуется лишь правильная синхронизация времени на всех используемых устройствах. Пожалуй, наиболее популярным решением для двухфакторной аутентификации является Google Authenticator. Описание работы с ним довольно подробно расписано в справке сервиса. Ну а нам для старта понадобится только аккаунт Google и смартфон. Начать регистрацию надо с этого мастера. Вам понадобится только поделиться с Google номером мобильного телефона, ну и смартфон с Android, iOS, Blackberry или WP7. (Доступен вариант с подтверждением по SMS или голосовым сообщением для экстренных случаев, а также резервные коды.)
После указания номера на него придёт SMS со ссылкой на соответствующее приложение, которое надо установить и запустить. В нём мы выбираем аккаунт, для которого будет активна двухфакторная аутентификация, и следуем советам мастера настройки. Рекомендуется указать в настройках аккаунта резервные номер телефона и e-mail и распечатать коды для входа в аккаунт без телефона. После настройки аккаунта Google Authenticator начнёт генерировать для него одноразовые пароли. При последующей попытке зайти через веб-интерфейс, например, в Gmail вас попросят ввести не только логин и пароль, но и текущий одноразовый код. Для удобства ПК, с которого производится вход, можно добавить в список доверенных, чтобы не лезть лишний раз за телефоном. Для приложений вроде Google Talk или почтовых клиентов, которые не умеют работать с двухфакторной аутентификацией, придётся сгенерировать особые пароли (для каждого по отдельности), которые надо вводить вместо обычного пароля к сервисам Google. Ответы на часто задаваемые вопросы по работе с приложением можно найти здесь.
В принципе, Google Authenticator базируется на открытых стандартах и имеет PAM-модуль с доступными исходными кодами, который можно «прикрутить» практически к любой системе с поддержкой PAM. Например, защитить подключение к SSH. Также можно найти альтернативные решения, которые реализуют те же стандарты для других платформ. Впрочем, верно и обратное — некоторые платформы и сервисы уже поддерживают двухфакторную аутентификацию. Для добавления нового аккаунта надо либо прочитать камерой смартфона QR-код (при первом запуске будет предложено установить подходящий сканер), либо ввести длинный идентификационный код. Например, можно таким образом повысить безопасность столь любимых нами (хорошо-хорошо, любимых автором) облачных сервисов Amazon.
На страничке включения MFA внизу есть кнопка Enable AWS MFA Device, по нажатии на которую откроется консоль IAM. Напротив пункта Root Account MFA надо нажать на кнопку Manage MFA Device, а в открывшемся мастере выбрать A virtual MFA Device. Пользователю будет показан QR-код, а ниже на всякий случай он же, но в текстовом виде. В Google Authenticator в меню приложения переходим в раздел «Настроить аккаунт», где для добавления нового профиля выбираем между сканированием кода или его ручным вводом. Наконец, на последнем этапе Amazon попросит ввести два одноразовых пароля, сгенерированные один за другим. В дальнейшем, как и в случае с Google-аккаунтом, от вас или злоумышленника будут требовать временные коды. Если вам всё это дело надоест, то в настройках двухфакторную аутентификацию можно будет отключить в любой момент или же перерегистрировать профиль в Google Authenticator.
Это всего лишь небольшой пример. Настройка других онлайн-сервисов или программ, как правило, не сложнее. Увы, таковых сейчас не очень много. Кроме бесплатного сервиса Google существует немало коммерческих решений для повышения безопасности за счёт одноразовых кодов, но они в основном предназначены для корпоративных клиентов, а потому «заточены» под несколько иные продукты и стоят немалых денег. Из тех, что могут пригодиться обычным пользователям, стоит отметить прекрасный проект Duo Security, который к тому же берёт деньги только за SMS и звонки, оставляя бесплатными для личного пользования остальные сервисы. Не менее интересны проекты SecurEnvoy и PhoneFactor. Последний, кстати, месяц назад купила Microsoft.
Конечно, использование одноразовых паролей не является панацеей от всех возможных угроз. Тем не менее мы рекомендуем включить двухфакторную аутентификацию и прочие системы защиты везде, где только можно, — от систем онлайн-банкинга до социальных сетей. Лишним это точно не будет, а ждать грома по старой привычке всё же не стоит. Ну и традиционно призываем наших читателей как можно более внимательно относиться к своим личным данным и защищать их по мере своих сил. Удачи!