비율 제한

Android는 사용자 구성 잠금 화면 지식 요소(LSKF)(예: PIN, 패턴, 비밀번호)를 사용하여 사용자 인증 정보 암호화 저장소 및 인증 바인딩 키 저장소 키를 비롯한 사용자 데이터를 보호합니다. LSKF는 일반적으로 4자리 또는 6자리 PIN과 같은 엔트로피가 낮은 값이므로 무차별 대입 공격으로부터 보호해야 합니다.

Android는 신뢰할 수 있는 실행 환경 (TEE) 또는 보안 요소 (SE) 속도 제한기를 사용하여 LSKF에 무차별 대입 공격을 실행하는 공격자를 느리게 하고 충분한 시도가 주어지면 차단합니다. CDD 9.11에서는 LSKF 비율 제한기의 최소 보안 요구사항과 권장사항을 지정합니다. Android 16 QPR2 이상은 하위 Android 버전보다 훨씬 강력한 비율 제한 정책을 구현합니다. 자세한 내용은 Android 16 QPR2 이상의 더 강력한 기본 비율 제한 정책을 참고하세요.

LSKF로 보호된 사용자 데이터 잠금 해제

LockSettingsService LSKF 저장 및 확인을 관리합니다. 사용자는 한 번에 하나의 활성 LSKF만 보유합니다. 새 LSKF를 할당하면 이전 LSKF가 무효화되고 비율 제한 정책이 처음부터 시작됩니다.

TEE 또는 SE의 기본 비율 제한기(Gatekeeper 또는 Weaver 중 하나)가 활성 LSKF의 비율 제한을 시행합니다. LockSettingsService는 구현이 제공되는 경우 Weaver를 선호합니다.

보호된 사용자 데이터는 올바른 LSKF가 기본 비율 제한기에 제공된 경우에만 잠금 해제됩니다. LSKF가 잘못되면 비율 제한기가 실패 카운터를 증가시키고 특정 실패 카운트 후 제한 시간을 적용합니다. 제한 시간 동안 모든 추측을 거부하고 남은 제한 시간을 제공합니다.

Android 16 QPR2 이상의 더 강력한 기본 비율 제한 정책

CDD 9.11에서는 Android 6 이상에서 LSKF 비율 제한이 필요합니다. 이전에는 필수 비율 제한 정책이 상당히 관대했습니다. 예를 들어 Android 16의 최소 요구사항을 충족하는 구현은 첫 1분 동안 최대 10회, 6분 동안 20회, 25분 동안 50회, 24시간 동안 110회, 5년 동안 1, 800회 추측을 허용합니다.

이 정책은 무작위로 균일하게 선택된 LSKF에 대해 적절히 안전하지만 실제로는 사용자가 무작위로 균일하게 LSKF를 선택하지 않습니다. 일부 LSKF는 다른 LSKF보다 훨씬 더 자주 발생합니다. 공격자는 빈도가 감소하는 순서로 LSKF를 시도하여 상당한 성공률을 달성할 수 있습니다.

예를 들어 이 PIN은 쉽게 추측할 수 있습니다 연구에서는 100번의 추측 후 실제 PIN의 성공률이 16.2%, 패턴의 성공률이 35.5% 인 것으로 나타났습니다. 생일과 같은 사용자별 정보를 알고 있는 공격자는 성공률을 훨씬 높일 수 있습니다.

따라서 Android 16 QPR2 이상에서는 더 강력한 기본 LSKF 비율 제한 정책을 제공합니다. 이 정책은 첫 1분 동안 최대 6회, 6분 동안 7회, 25분 동안 8회, 24시간 동안 12회, 5년 동안 19회 추측을 허용합니다. 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 이상에는 표의 비율 제한 정책을 적용하는 업데이트된 GatekeeperWeaver 구현이 포함되어 있습니다.

소프트웨어 비율 제한기

Android 16 QPR2 이상에는 선택적 보조 비율 제한기 SoftwareRateLimiter.가 포함되어 있습니다. 이는 시스템 서버에서 구현되며 TEE나 SE를 업데이트할 수 없는 경우 기기에서 더 강력한 비율 제한 정책을 제공할 수 있습니다.

config_softwareLskfRateLimiterEnforcing 구성 값을 통해 강제 모드에서 SoftwareRateLimiter를 구성합니다. 강제 모드에서 SoftwareRateLimiter은 기본 비율 제한기와 동시에 비율 제한 정책을 적용합니다. 주요 비율 제한기에서 요구하는 시간과 SoftwareRateLimiter에서 요구하는 시간 중 더 긴 시간이 지정된 잘못된 추측 수에 대한 시간 제한입니다. 강제 적용되지 않는 모드에서 SoftwareRateLimiter는 보조 비율 제한 정책을 적용하지 않고 모든 확인 요청을 기본 비율 제한기로 전달합니다.

중복 추측 감지

유용성을 개선하고 더 강력한 비율 제한 정책을 사용할 수 있도록 Android 16 QPR2 이상에서는 중복 추측 감지를 지원합니다. 사용 설정하면 사용자가 동일한 잘못된 LSKF를 여러 번 입력해도 불이익을 받지 않습니다.

정상적인 사용자가 동일한 잘못된 LSKF를 여러 번 잘못 입력하는 경우가 있습니다. 여러 번의 추측으로 간주되면 불필요한 시간 초과가 발생합니다. 능력 있는 공격자는 주어진 LSKF를 두 번 이상 시도하지 않습니다. 중복 추측을 고려하지 않는 정책은 유능한 공격자가 LSKF를 추측하기가 더 쉬워지지 않으면서도 합법적인 사용자의 LSKF 입력 사용성을 개선하므로 더 강력한 비율 제한 정책을 시행할 수 있습니다. 중복을 포함한 5개의 잘못된 추측이 아닌 5개의 고유한 잘못된 추측을 입력해야 하므로 합법적인 사용자는 제한 시간을 만날 가능성이 적습니다.

Android 16 QPR2 이상, Weaver 구현, 강제 모드로 구성된 SoftwareRateLimiter가 있는 기기에서는 중복 추측이 Weaver에 전달되기 전에 감지되고 거부됩니다. 이러한 거부로 인해 잘못된 추측 횟수가 증가하지는 않습니다. 최대 5개의 고유한 잘못된 추측이 메모리에 추적됩니다. 트래커가 가득 차면 공간을 확보하기 위해 가장 오래된 항목이 삭제됩니다. 추적된 모든 추측은 추적되지 않은 마지막 잘못된 추측이 이루어진 후 5분이 지나면 삭제됩니다.

게이트키퍼는 잘못된 추측을 다른 인증 실패와 구분하지 않으므로 게이트키퍼가 기본 비율 제한기인 경우 SoftwareRateLimiter는 중복 추측 감지를 지원하지 않습니다.

위버 구현자는 위버 구현에서 중복 추측 감지를 지원하도록 선택할 수 있습니다.