Comments 38
Что-то я так и не уловил, что помешает боту сгенерировать новую пару приватный+публичный ключ прямо на компе, прийти на сайт и сказать "я — новый пользователь, вот моё подтверждение пасскеем, которое точно-точно было получено с физического устройства!" Даже если реализуют какую-то проверку "физичности", как эта проверка устроена на практике? Что помешает боту получить этот запрос и самому же на него ответить, что устройство сто процентов физическое? Разве что каждое устройство будет иметь ещё и по собственному вендорскому аппаратному ключу, но тогда все фреймворки пасскеев вынуждены будут вести базы данных таких устройств.
Разве что каждое устройство будет иметь ещё и по собственному вендорскому аппаратному ключу
Аттестованные FIDO атунтификаторы именно это и имеют. Но, к счастью, этой проверкой рекомендуют пользоваться если только организации надо ну вот совсем параноидальной быть. И если сайты захотят ее абузить, как тут предлагается, отвергая не аттестованные варианты - пользователи начнут обижаться.
Хочется ответить - а ниче тот факт что...
Но я не зумер, так что вот так отвечу
Браузер заставляет аутентификатор подписывать челлендж для конкретного домена и требует верификацию по пальцу, лицу, пин в конце концов. Сайт может включить аппаратную аттестацию и без его приватных ключей подделка будет невозможна. Масштабировать такое с помощью ботов без реальных устройств и биометрии практически нереально, ну если вы не Илон Маск.
Сайт может включить аппаратную аттестацию
А как сайт сможет проверить, действительно ли аттестация аппаратная?
без его приватных ключей подделка будет невозможна
А как сайт сможет проверить, что ключи действительно взялись из аппаратного устройства, а не сгенерированы ботом?
Браузер
А что помешает разработчикам ботов сделать свой собственный браузер, в котором поддержка аппаратных ключей будет заменена на эмуляцию?
реальных устройств и биометрии
А что помешает разработчикам ботов эмулировать биометрию в каком-нибудь Android-эмуляторе например?
А как сайт сможет проверить, действительно ли аттестация аппаратная?
Софтовой реализации ее(и соответствующие ключи) не дают. А выдрать ключик из железки - задача нетривиальная.
не дают
И не надо давать, разработчики ботов сами сделают. Или что им помешает?
И не надо давать, разработчики ботов сами сделают. Или что им помешает?
То что если сайт требует аттестацию авторизатора - он откажется с этим ключом работать. Механизм приблизительно такой же, как с сертификатами у сайтов.
То есть ещё одна зависимость от сторонних организаций, которым по умолчанию доверяем, понятно
То есть ещё одна зависимость от сторонних организаций, которым по умолчанию доверяем, понятно
Да. Потому и рекомендовано к использованию в основном тем, кто особенно параноики. Вроде организации, которая эти токены сотрудникам раздает и никаких других принимать не хочет.
А на схему что в статье предлагают использовать для проверки 'токен настоящий железный' с целью ограничения количества учеток - надо обижаться и попытки удавливать сразу.
Боту подобное действие недоступно: автоматизированная программа не способна имитировать отпечаток пальца или Face ID, не обладая самим устройством.
Только вот боту и не надо имитировать отпечаток пальца, ему надо имитировать passkey.
В спецификации WebAuthn предусмотрена передача такой информации (например, через аттестаты безопасности и расширение UVM), но на практике в некоторых экосистемах (особенно у Apple) эти возможности пока ограничены.
Прежде всего эти возможности ограничены на обычных десктопах.
Спасибо, интересная статья, есть вопрос, правильно ли я понял, что passkeys это что-то типа пары публичный ключ--приватный ключ, с которыми можно например запушить изменения в git репозиторий на GitHub ? Но там, чтобы это сделать, надо сделать ssh-agent, ssh-add и потом уже работать с репозиторием. А тут как это делается ?
Вот тут можно поиграться: https://webauthn.io/
Пытался поиграться с ним, наткнулся на неожиданную проблему: мой хуавей телефон без гуглосервисов ничего не может сделать с показываемым qr-кодом*. Родная распознавалка кодов от хуавея говорит что "Нет приложений для открытия", а установленные через разные гугло-эмуляторы Google Lens хоть и показывает поверх qr-кода кнопку "Используй ключ доступа" но при нажатии на неё не делает ничего. Явно что-то делаю неправильно, но не могу понять что. Может кто аналоги знает и подскажет? Спасибо скажу.
Вот и как широко внедрять такие технологии есть первая же попытка приобрести личный опыт заканчивается провалом на ровном месте?
А где там вообще капча и какие-то коды?..
Там, по идее, QR код для авторизации на десктопе со смартфона.
Его обработку, где в системе обработчика нет (т.е. OS достаточно старая) - Google в мобильный Chrome добавил (ту его часть, что хранением паролей заведует).
Поэтому, видимо, из-за 'без гуглосервисов' это все и не сработало.
У меня не такой уж и старый, а вполне себе 2023 года выпуска huawei p60 pro . Но google lens установленные через google play в gbox и gspace дальше распознавания самого факта наличия fido2 кода в qr-коде не ушёл.
google lens
А что ей делать еще? Если "Родная распознавалка кодов от хуавея говорит что "Нет приложений для открытия" " - то и им некуда этот набор чисел передавать.
gbox и gspace все таки эмуляция, и не обязаны уметь все, что настоящие сервисы от Гугла умеют.
В целях эксперимента(сомневаюсь, что поможет) - можно попробовать родным браузером этот код считать, а не через разные камеры - в мобильных вариантах обычно кнопочка есть.
Хм, лично я никаких QR кодов не вижу. Впрочем, на десктопе у меня оно тоже не работает, из-за отсутствия аппаратных ключей.

Bluetooth нужен. Иначе Винда+браузеры не предлагают использовать телефон. Возможно, даже, телефон должен быть с десктопом сопряжен - не помню уже.
То есть для отображения QR кода нужен Bluetooth? Где связь, блин?
Видимо, технологию лучше считать очень сырой.
То есть для отображения QR кода нужен Bluetooth? Где связь, блин?
Он используется для proximity test. Чтобы убедиться, что тот QR, что сканируется - он из того браузера, что рядом с телефоном, а не тот, что злодей жертве послал.
И да, Интернет на телефоне тоже нужен. Там протокол странный - почему-то через этот самый bluetooh, что есть, они нужными данными обменяться не могут.
Видимо, технологию лучше считать очень сырой.
Да не, не настолько она сырая. У 98% процентов с хромом и сафарри(и синхронизируемым между устройствами профилем) - работает из коробки. А остальным - немного приспособится надо.
с qr-кодом* конечно же, статья про капчи была, рука сама слово написала, извиняюсь
Passkeys работают через браузер и WebAuthn, ключ жёстко привязан к домену (RP ID) и требует локальной биометрии/PIN. Никаких ssh-agent/ssh-add
роль агента берет на себя платформа через UI браузера.
я вот не очень понял, есть сайт, на который я захожу с телефона и с ПК, с капчей всё понятно, я её решаю (или она проверяется в фоне) и меня пускает. А если используется пасскей на ПК, который сохранился в TPM на ПК, то чем мне это поможет на телефоне? Или там генерится свой пасскей, и в итоге у каждой учётной записи есть N-ое количество привязанных пасскеев?
Именно так, куча привязанных ключей
Есть два варианта: мультидевайс: один пасскей синхронизируется менеджером (iCloud/Google/Microsoft) и доступен на всех твоих устройствах. Второй - у аккаунта несколько отдельных пасскеев (по одному на девайс). Плюс можно войти на ПК телефоном через QR или Блютуз без переноса ключей.
Да, у учетки может быть несколько пасскеев. Как раз по умолчанию подразумевается, что на каждый девайс будет свой пасскей.
По факту же ключ можно положить в Keychain на iOS/MacOS, Google Password Manager в хроме и на андроиде и синхронизировать между устройствами. Да и у различных паролехранилок тоже работа с Passkey начинает появляться, так что тоже можно один ключ на нескольких девайсах использовать.
Капча показывается зачастую ещё до того, как к авторизации приступаешь. Просто при входе на сайт, где может авторизации даже и не быть.
1) а как быть с несколькими аккаунтами? у тебя сайт привязался к пасскею, тот сохранился в TPM - это понятно. а есть ты хочешь зайти под другим акком? например один - твой личный на сайте, а другой твоя же , но админская учётка. оно все ключи в TPM перебирать будет или как?
2) повышая градус паранойи: а кто будет поставщиком биометрии для проверки? не окажется ли так что моя фотка и опечаток утекут налево в чистом виде данных с сенсора.
3) а как надо будет логинится по пасскею на десктопах? камера и та не у всех есть, не говоря уже про сканер пальцев. а следовательно, что помешает появлению аппаратных эмуляторов биометрии, условно, спустя год на алиекспресе по 5 баксов за пучок, втыкающихся в усб. с камерой ещё проще, учитывая современный прогресс в нейросетевой генерации видео, сгенерить виртуальную голову и выдать её за видеопоток с камеры я думаю уже сейчас не проблема.
У меня сейчас голова взорвется от визуализации)) Надо осмыслить
а что визуализируем?
Ответ на ваш вопрос в голове
Тогда попрошу к вашему ответу добавить ещё один пункт:
4) смысл капчи в том числе в том чтобы защитить сайт от ботов которые будут там делать свои ботские дела, как то товарам рейтинги накручивать и комменты писать. а как тут пасскей поможет? пока что из описания он мне видится только как аналог авторизации/аутенфикации пользователя, а не защита, например, от скрейпинга. если пользователя заставить за слишком быстрые переходы заново проходить биометрию, то я думаю он закинет такой сайт в чёрный список ещё быстрее чем в случае с капчей. особенно если это будет десктоп с авторизацией через телефон - увидел запрос пасскея, ищешь телефон (который не редко находится в состоянии "кстате, а где он?"), нашёл приложение, открыл его (а там скорее всего будет пароль на входе как банкинг или паролехранилку), торганул в камеру лицом и потыкал пальцем в сенсор, нажал далее, и так каждый раз. да я бы за такое выпадение моего внимания из потока вкладку закрыл после первого, максимум второго, раза.
оно все ключи в TPM перебирать будет или как?
Или явно вводишь имя учетки, или будет предлагать выбрать из списка.
а кто будет поставщиком биометрии для проверки?
Как всех это биметрия в этом контексте Passkeys пугает и путает. Да локальная она тут. Та, что в телефоне(ну или ПК, если у него нужные сенсоры есть). Если боишься, что из телефона она утечет - не пользуешься. Не боишься - пользуешься. Сайту все равно - он ее не видит.
Passkeys как альтернатива CAPTCHA: миф или будущее?