Ограничение скорости

Android защищает пользовательские данные, включая зашифрованное хранилище учетных данных и ключи Keystore , привязанные к аутентификации, с помощью настраиваемых пользователем факторов распознавания экрана блокировки (LSKF), таких как PIN-коды, графические ключи и пароли. LSKF обычно представляют собой значения с низкой энтропией, например, 4- или 6-значные PIN-коды, поэтому необходима защита от атак методом перебора.

Android использует ограничители скорости Trusted Execution Environment (TEE) или Secure Element (SE) для замедления и, при достаточном количестве попыток, блокировки атак методом перебора на LSKF. CDD 9.11 определяет минимальные требования к безопасности и рекомендации для ограничителей скорости LSKF. Android 16 QPR2 и выше реализует значительно более строгие политики ограничения скорости, чем более ранние версии Android. Для получения более подробной информации см. раздел «Более строгая политика ограничения скорости по умолчанию в Android 16 QPR2 и выше».

Разблокируйте защищенные пользовательские данные с помощью LSKF.

LockSettingsService управляет хранением и проверкой LSKF. У пользователя одновременно может быть только один активный LSKF. Назначение нового LSKF аннулирует предыдущий и запускает политику ограничения скорости с самого начала.

Основной ограничитель скорости в TEE или SE, один из Gatekeeper или Weaver, обеспечивает ограничение скорости для активного LSKF. LockSettingsService отдает предпочтение Weaver, если такая реализация доступна.

Защищенные пользовательские данные разблокируются только при предоставлении правильного LSKF основному ограничителю скорости. Если LSKF неверен, ограничитель скорости увеличивает счетчик ошибок и устанавливает тайм-аут после определенного количества ошибок. В течение тайм-аута он отклоняет все предположения и предоставляет оставшееся время ожидания.

В Android 16 QPR2 и более поздних версиях ужесточена политика ограничения скорости запросов по умолчанию.

В Android 6 и выше для CDD 9.11 требуется ограничение скорости запросов LSKF. Исторически сложилось так, что требуемая политика ограничения скорости запросов была довольно мягкой. Например, реализация, соответствующая минимальным требованиям Android 16, допускает до 10 попыток в первую минуту, 20 за 6 минут, 50 за 25 минут, 110 за 24 часа и 1800 попыток за 5 лет.

Хотя эта политика достаточно безопасна для LSKF, выбранных случайным образом с равномерным распределением, на практике пользователи не выбирают LSKF случайным образом с равномерным распределением. Некоторые LSKF встречаются гораздо чаще, чем другие. Злоумышленники могут добиться значительного успеха, перебирая LSKF в порядке убывания частоты.

Например, исследование «Этот PIN-код легко угадать» показало, что вероятность успеха при угадывании реальных PIN-кодов после 100 попыток составляет 16,2%, а при угадывании шаблонов — 35,5%. Злоумышленники, зная информацию о конкретном пользователе, например, дату рождения, могут добиться еще более высоких показателей успеха.

Таким образом, Android 16 QPR2 и более поздние версии обеспечивают более строгую политику ограничения скорости запросов LSKF по умолчанию. Эта политика допускает до 6 попыток в первую минуту, 7 в 6 минут, 8 в 25 минут, 12 в 24 часа и 19 в 5 лет. После 20 неверных попыток дальнейшие попытки не допускаются. Полное расписание тайм-аутов показано в следующей таблице. Оно может измениться в будущих версиях Android.

Количество неверных предположений Истекло время ожидания после неверного предположения.
0 Непригодный
1-4 0 секунд
5 1 минута
6 5 минут
7 15 минут
8 30 минут
9 90 минут
10 4 часа
11 12 часов
12 36 часов
13 4 дня
14 13 дней
15 41 день
16 123 дня
17 1 год
18 3 года
19 9 лет
20+ Больше никаких догадок!

Обновлены ограничители скорости

В Android 16 QPR2 и более поздних версиях обновлены реализации Gatekeeper и Weaver , которые обеспечивают соблюдение политики ограничения скорости запросов, указанной в таблице.

Программный ограничитель скорости

В Android 16 QPR2 и более поздних версиях предусмотрен дополнительный ограничитель скорости, SoftwareRateLimiter. Он реализован на системном сервере и позволяет устройствам применять более строгую политику ограничения скорости, когда обновление TEE или SE невозможно.

Настройте SoftwareRateLimiter в режиме принудительного применения с помощью параметра конфигурации config_softwareLskfRateLimiterEnforcing . В режиме принудительного применения SoftwareRateLimiter применяет свою политику ограничения скорости одновременно с основным ограничителем скорости. Для заданного количества неверных попыток таймаут равен большему из двух значений: требуемого основным ограничителем скорости и требуемого SoftwareRateLimiter . В режиме без принудительного применения SoftwareRateLimiter передает все запросы на проверку основному ограничителю скорости без применения вторичной политики ограничения скорости.

Обнаружение повторяющихся предположений

Для повышения удобства использования и обеспечения более строгой политики ограничения скорости запросов, Android 16 QPR2 и более поздние версии поддерживают обнаружение повторных попыток ввода. При включении этой функции пользователи не будут наказываться за многократный ввод одного и того же неверного LSKF-кода.

Добросовестные пользователи иногда ошибочно вводят один и тот же неверный LSKF несколько раз. Это приводит к ненужным таймаутам, если учитывается как несколько попыток угадывания. Опытные злоумышленники не пытаются угадать один и тот же LSKF более одного раза. Политика, которая не учитывает повторяющиеся попытки угадывания, улучшает удобство ввода LSKF для добросовестных пользователей, не облегчая при этом задачу угадывания LSKF для опытных злоумышленников, что позволяет применять более строгие правила ограничения скорости. У добросовестных пользователей вероятность возникновения таймаута значительно снижается, поскольку им необходимо ввести 5 уникальных неверных попыток угадывания вместо 5 неверных попыток угадывания, включая дубликаты.

На устройствах с Android 16 QPR2 и выше, с реализацией Weaver и SoftwareRateLimiter , настроенным в режиме принудительного применения, повторяющиеся предположения обнаруживаются и отклоняются перед передачей в Weaver. Такие отклонения не увеличивают количество неверных предположений. В памяти отслеживается до 5 уникальных неверных предположений. Если память заполнена, последнее недавнее предположение удаляется, чтобы освободить место. Все отслеживаемые предположения удаляются через 5 минут после последнего неотслеживаемого неверного предположения.

Gatekeeper не отделяет неверные предположения от других ошибок проверки, поэтому SoftwareRateLimiter не поддерживает обнаружение повторяющихся предположений, когда Gatekeeper является основным ограничителем скорости.

Разработчики Weaver могут добавить поддержку обнаружения повторяющихся предположений в свою реализацию Weaver.