Мониторинг паролей
Мониторинг паролей — это функция, которая сопоставляет пароли, хранящиеся в связке ключей Автозаполнения паролей, с паролями в постоянно обновляемом списке паролей, которые были похищены у различных онлайн-организаций в результате утечки данных. Если эта функция включена, протокол мониторинга непрерывно сопоставляет пароли в связке ключей Автозаполнения паролей пользователя с паролями в обновляемом списке.
Как работает мониторинг
Устройство постоянно проверяет пароли пользователя путем циклического перебора, отправляя запросы через интервал времени, который не зависит от паролей пользователя или того, как их использует менеджер паролей. Это помогает гарантировать актуальность состояний проверки в соответствии с текущим отслеживаемым списком похищенных паролей. Чтобы способствовать предупреждению утечки информации о том, сколько у пользователя уникальных паролей, запросы объединяются в пакеты и выполняются параллельно. Во время каждой проверки параллельно проверяется фиксированное количество паролей, и если у пользователя меньше паролей, генерируются случайные пароли, которые затем добавляются в запросы для устранения различий.
Как сопоставляются пароли
Сопоставление паролей выполняется в два этапа. Самые распространенные похищенные пароли содержатся в локальном списке на устройстве пользователя. Если пароль пользователя имеется в этом списке, сразу же отображается соответствующее уведомление без какого-либо внешнего взаимодействия. Эта функция направлена на то, чтобы исключить утечку информации об имеющихся у пользователя паролях, которые подвержены наиболее высокому риску из-за появления в списке скомпрометированных паролей.
Если пароль отсутствует в списке самых распространенных похищенных паролей, он сопоставляется с менее распространенными похищенными паролями.
Сравнение паролей пользователя с паролями в отслеживаемом списке
Проверка наличия в отслеживаемом списке пароля, которого нет в локальном списке, подразумевает некоторое взаимодействие с серверами Apple. Чтобы помочь предупредить отправку надежных паролей в Apple, применяется пересечение закрытых наборов шифрования, которое используется для сравнения паролей пользователя с большим набором похищенных паролей. Эта функция направлена на то, чтобы передавать в компанию Apple незначительный объем информации в отношении паролей, менее подверженных взлому. Для пароля пользователя эта информация ограничена 15‑битным префиксом криптографического хеша. Удаление из этого интерактивного процесса наиболее часто похищаемых паролей с использованием локального списка самых распространенных похищенных паролей приводит к снижению относительной частоты, с которой пароли встречаются в сегментах веб-служб. Благодаря этому на основе выполненного поиска не удастся сделать какие-либо выводы в отношении паролей пользователя.
Лежащий в основе протокол разделяет список отслеживаемых паролей, в котором на момент написания данного документа содержалось порядка 1,5 миллиарда паролей, на 215 различных сегментов. Сегмент, в который входит пароль, основан на первых 15 битах значения хеша SHA256 пароля. Кроме того, каждый похищенный пароль (pw) связан с точкой эллиптической кривой на кривой NIST P256: Ppw = ⍺·HSWU(pw), где ⍺ — это секретный случайный ключ, известный только Apple, а HSWU — это случайная функция прогнозирования, которая сопоставляет пароли с точками на кривой по методу Шелью — ван де Вустейне — Уласа. Данное преобразование призвано скрыть значения паролей путем вычислений и предотвратить отображение новых похищенных паролей при использовании мониторинга паролей.
Чтобы вычислить пересечение закрытых наборов, устройство пользователя определяет сегмент, в который входит пароль пользователя, с помощью параметра λ, 15-битного префикса SHA256(upw), где upw — это один из паролей пользователя. Устройство генерирует свою собственную случайную константу, β, и отправляет точку Pc = β·HSWU(upw) на сервер вместе с запросом сегмента, соответствующего λ. Здесь β скрывает информацию о пароле пользователя и ограничивает информацию, предоставляемую Apple о пароле, до λ. Наконец, сервер принимает точку, отправленную устройством пользователя, вычисляет ⍺Pc = ⍺β·HSWU(upw), а затем возвращает его вместе с соответствующим сегментом точек Bλ={ Ppw | SHA256(pw) начинается с префикса λ} для устройства.
На основе возвращенной информации устройство вычисляет B’λ={β·Ppw | Ppw∈Bλ}, а затем определяет, что пароль пользователя был похищен, если ⍺Pc ∈B'λ.