В начале мая в одном из блогов Microsoft вышла программная статья Pushing passkeys forward. Из неё в новости попало лишь объявление о том, что учётные записи Microsoft (MSA) по умолчанию будут создаваться беспарольными. Это я уже разобрал в канале Telegram.
При этом статья Microsoft в целом была посвящена ключам доступа (passkeys). Это относительно новый способ беспарольной аутентификации. Его активно продвигают лидеры ИТ-индустрии – Microsoft и Google, что неудивительно при их огромной пользовательской базе.
Про беспарольный вход в аккаунты этих компаний я рассказывал неоднократно: раз, два, три. Но там не было речи о ключах доступа. Теперь дошла очередь и до них.
[+] Сегодня в программе
Сейф с ключами доступа
Ключи доступа привязаны к устройствам, на которых они создаются и хранятся. Каждое устройство (например, компьютер под управлением Windows) можно сравнить с сейфом. В нём лежат ключи к различным аккаунтам — Google, Adobe, GitHub и другим сервисам.
Сейф заперт на замок, который может открыть только владелец учётной записи на устройстве. В Windows вы делаете это с помощью Hello, используя ПИН-код или биометрию. Тем самым вы извлекаете из сейфа ключ доступа, отпирающий дверь к аккаунту, в который выполняется вход.
Преимущества ключей доступа
Ключи доступа хранятся на компьютере, планшете или смартфоне и вступают в игру в момент входа в веб-сервис или приложение.
Основные плюсы:
- Устойчивость к фишингу. Это вытекает из беспарольной аутентификации. Невозможно перехватить пароль, если он никуда не передаётся.
- Простой и быстрый вход. Не надо вводить сложные пароли и одноразовые коды из аутентификатора.
Что под капотом
Криптография, разумеется! На устройстве генерируется пара криптографических ключей:
- публичный ключ сохраняется в онлайн-сервисе, в который вы входите
- частный ключ хранится на устройстве и защищается средствами его разблокировки (ПИН-код, биометрия)
Когда вы выполняете вход в сервис, тот отправляет запрос устройству. Если на нём есть ключ доступа, появляется приглашение предоставить ПИН-код или биометрию. Так вы подписываете полученный запрос частным ключом.
Подписанный запрос отправляется обратно на сервер. Тот сверяет подпись с публичным ключом. В случае успеха дверь в аккаунт отпирается.
Двойная беспарольность
Вы заметили, что в описании процесса не упоминался пароль? Причём не только при входе в сервис, но и при извлечении ключа доступа на устройстве.
Допустим, вы входите в аккаунт GitHub на компьютере под управлением Windows или смартфоне на Android. Вводите имя пользователя и получаете запрос на ввод ПИН-кода / биометрии от учётной записи компьютера или смартфона. То есть в процессе не участвует ни пароль GitHub, ни пароль учетной записи компьютера или смартфона.
У некоторых сервисов (например, Google) при входе на компьютере также есть возможность просканировать QR-код камерой смартфона, если на том уже сохранён ключ доступа.
Демо входа с ключом доступа
Вход с сохранёнными ключами моментальный! Судите сами:
Управление ключами доступа
Добавление ключей осуществляется в настройках сервиса. Обычно, это в разделе про безопасность или вход.
Читайте инструкции по управлению ключами доступа Microsoft и Google.
В Windows вы можете лишь удалить ключи, которые добавили на данное устройство.
В Android ключ доступа для вашей учётной записи Google создаётся автоматически. Управление ключами к другим аккаунтам по умолчанию завязано на менеджере паролей Google. Можно подтянуть их на новый телефон, введя ПИН-код от старого. То есть хранение ключей не ограничено устройствами, но связь с ними прослеживается. Есть интеграция и со сторонними поставщиками – вместо родного менеджера паролей можно использовать Samsung Pass, например.
Является ли аутентификация с ключом доступа двухэтапной или двухфакторной или…
Подписчик Camaro задал этот вопрос в личных сообщениях.
Аутентификация выглядит одноэтапной — вместо пароля вы вводите ПИН-код (вы знаете) или предоставляете биометрию (кем являетесь). Однако это второй фактор 2FA! Потому что первый — владение устройством, на котором выполняется вход. Факт владения подтверждается разблокировкой устройства.
Но есть нюанс © И я затрагивал его ранее в посте О двух факторах аутентификации на одном устройстве в контексте рекомендаций NIST. Там была фраза:
В общем случае верификатор не может знать, было ли устройство заблокировано изначально и выполнялась ли разблокировка с соблюдением требований для соответствующего типа аутентификатора.
Тогда я приводил пример разблокировки смартфона устройством Bluetooth. А здесь представьте автоматический вход в Windows. В этом случае разблокировка учётной записи Windows выполняется без ПИН-кода или биометрии.
Да, из коробки Microsoft отключает автологон, требуя аутентификацию с Hello для учётных записей Microsoft. Но это лишь пользовательская настройка, нежели граница безопасности.
Резюме
Выводы те же, что и в упомянутом выше посте канала про рекомендации NIST. Ключ доступа на устройстве — это достойный вариант двухэтапной аутентификации, хотя есть и более защищённые (например, ключ на USB-токене). Однако в нём хорошо сбалансированы безопасность и удобство, что и требуется для защиты широких масс.
Если вы храните ключи доступа к различным аккаунтам на своём устройстве, важно поддерживать на нём уровень безопасности, который рекомендует изготовитель ОС. Так, в Windows не следует включать парольный вход (тем более автоматический) или отключать шифрование BitLocker. Вы ведь не стали бы просверливать отверстия в своём сейфе?
Как непонимающий старпер спрошу: получен физический доступ к работающему компьютеру (залочен) — как вариант, в весьма популярном ныне «общем пространстве» какой-нибудь компании, вечером, все ушли, а компьютеры на столах работают — для любого «мимопроходил» все доступно, даже для «уборщицы» и, вполне возможно, что и без чужих глаз вокруг. Что проще подобрать для входа в систему с последующим полным доступом к ней и ко всем доступным ресурсам компьютера и системы (компании)? ПИН код (обычно 4 цифры и без ограничения числа попыток его ввода) или многосимвольный пароль? Что считать в данном случае более безопасным?
Сергей, а почему вы сравниваете сложный пароль с коротким ПИН-кодом без ограничения попыток ввода? Сравнивайте его со сложным ПИН-кодом с ограничением. И внезапно окажется, что ПИН-код безопасней.
Я сравниваю ситуации какие они в жизни. Одно дело — домашний компьютер, другое — компьютер в openspace, казалось бы, в безопасном месте. И при этом утверждается что пин код безопаснее… А ведь многие как раз и устанавливают его как 4 цифры (как он и предлагается по умолчанию, вроде бы). А если ставить его таким же многосимвольным и буквенным — чем он тогда отличается от пароля? (с точки зрения простого пользователя, не знающего кухни, который должен ввести этот набор чтобы попасть на свой рабочий стол)
Я пока не сравниваю «кухню» — да, внутри нее пароли не передаются куда бы то ни было, удаленно пароль не взламывается, но речь именно про физический доступ
ИТ-отдел может форсировать политиками сложность ПИН-кода.
Ничем
Вот именно — ничем. Так, ИМХО, и стоит изменить весь хайп на эту тему и не пропагандировать пин-код (который в умах людских одно и то же с пин-кодами на пластиковых картах — 4 цифры) как нечто повышающее безопасность. Назовите это «сверхпароль» или оставьте просто «паролем» и сделайте стандартно 8 символов по умолчанию. Юзеру без разницы что и когда учить, запоминать, вводить и как называть, но не путайте тёплое с мягким. Паролю-паролево, пинову — пиново.
Сергей, вы переворачиваете все с ног на голову.
Вот именно, что без разницы. А теплое с мягким путаете вы.
То что для конечных пользователей сложный ПИН-код ничем не отличается от сложного пароля, это преимущество ПИН-кода. Организация же пожинает плоды в виде укрепленной безопасности (нет передачи по сети, защита от перебора посредством TPM).
Здесь нет хайпа и пропаганды. Я объясняю, как работает технология. И почему повышается безопасность. Если у вас есть конкретные вопросы по технологиям, я готов ответить. Также замечу, что эта статья про ключи доступа. Они могут быть защищены не только ПИН-кодом, но и биометрией. И даже паролем, если вам или организации так хочется.
Добрый день.
В статье указано «частный ключ хранится на устройстве».
Если устройство потеряно — что дальше?
В ситуации с классическими паролями потеря устройства ни на что не влияет, у меня останутся все пароли, записанные в «блокнотик» (использую KeePassXC).
В этом случае вы будете аутентифицироваться другими способами, которые есть у вашей учётной записи этого сервиса. Например, пароль.
Если учётная запись [Microsoft] беспарольная (была создана или сделана таковой), будет вход по уведомлению в аутентификаторе. В нём также предусмотрено восстановление аккаунта на случай утери единственного устройства с аутентификатором.
С точки зрения перехвата — да, все понятно, что например SSH-ключ лучше чем пароль.
Но если частный пользователь переустанавливает Windows/Android начисто, ключи соответственно стираются же?
Тогда у юзера появляется дополнительная головная боль — заново эти ключи сформировать или входить по старинке паролем.
Да, в принципе, их нужно заново создавать. Но с одной стороны, Windows сама может предложить создать ключ в процессе входа с паролем.
С другой, как я написал в статье, у google можно подтянуть их с помощью менеджера паролей указав пин-код к утерянному устройству.
Особой головной боли тут нет.