Android는 PIN, 패턴, 비밀번호와 같은 사용자 구성 잠금 화면 지식 요소 (LSKF)로 사용자 인증 정보 암호화 저장소 및 인증 바인딩 키 저장소 키를 비롯한 사용자 데이터를 보호합니다. LSKF는 일반적으로 4자리 또는 6자리 PIN과 같은 낮은 엔트로피 값이므로 무차별 대입 공격으로부터 보호해야 합니다.
Android는 TEE (신뢰할 수 있는 실행 환경) 또는 SE (보안 요소) 비율 제한기를 사용하여 LSKF에 대한 무차별 대입 공격을 실행하는 공격자의 속도를 늦추고 충분한 시도가 주어지면 차단합니다. CDD 9.11 은 LSKF 비율 제한기의 최소 보안 요구사항 및 권장사항을 지정합니다. Android 16 QPR2 이상은 하위 Android 버전보다 훨씬 강력한 비율 제한 정책을 구현합니다. 자세한 내용은 Android 16 QPR2 이상의 더 강력한 기본 비율 제한 정책을 참고하세요.
Android 17 이상은 하위 버전보다 더 강력한 기본 잠금 화면 비율 제한을 사용합니다. 드물게 사용자가 긴 잠금 화면 제한 시간을 경험할 수 있으므로 Android 17 이상은 잠금 화면에 다음과 같은 향상된 사용자 의견을 제공합니다.
- 향상된 시간 형식: 잠금 화면은 1분 이상 지속되는 제한 시간을 더 큰 시간 단위를 사용하여 표시하므로 1800초 후에 다시 시도 대신 30분 후에 다시 시도와 같이 더 쉽게 읽을 수 있습니다.
- 복구 짧은 링크: 잠금 화면에 짧은 링크
(기본값은 g.co/android/unlock)가 표시되어 사용자가 다른 기기에서
복구 옵션을 찾을 수 있도록 도와줍니다. 이 링크는
config_lockscreenLockoutShortlink리소스를 통해 구성할 수 있습니다. - 중복 시도 의견: Weaver 구현이 있는 기기에서 중복된 잘못된 추측이 입력되면 시스템에 고유한 메시지가 표시됩니다. 이 특정 의견은 잘못된 추측 및 기타 인증 실패에 대한 별도의 응답 코드를 제공하지 않으므로 게이트키퍼 전용 기기에서는 사용할 수 없습니다.
- 일관된 사용자 인증 정보 입력 관리: 기기에서 PIN 사용자 인증 정보를 사용하는 경우 잠금 화면은 비밀번호 및 패턴 사용자 인증 정보 입력과 마찬가지로 PIN 입력 패드를 사용 중지합니다.
LockPatternUtils#getLockoutAttemptDeadline(int) 메서드의 이름이 LockPatternUtils#getLockoutEndTime(int)으로 변경되었으며 시스템 관리 캐시에서 제한 시간 종료 시간을 제공합니다. 이 업데이트는 LockPatternUtils 인스턴스당 캐시되는 문제로 인해 다른 인스턴스를 사용하여 트리거된 경우 활성 제한 시간이 표시되지 않는 문제를 해결합니다. 잠금 화면 및 설정 활동과 같은 시스템 사용자 인증 정보 프롬프트 개발자는 추가 시도를 허용하기 전에 기존 제한 시간을 확인하도록 업데이트해야 합니다.
LSKF로 보호된 사용자 데이터 잠금 해제
LockSettingsService
는 LSKF 저장 및 확인을 관리합니다. 사용자는 한 번에 하나의 활성 LSKF만 보유합니다. 새 LSKF를 할당하면 이전 LSKF가 무효화되고 비율 제한 정책이 처음부터 시작됩니다.
게이트키퍼 또는 Weaver 중 하나인 TEE 또는 SE의 기본 비율 제한기는 활성 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 이상에는 표의 비율 제한 정책을 적용하는 업데이트된 게이트키퍼 및 Weaver 구현이 포함되어 있습니다.
소프트웨어 비율 제한기
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는 중복 추측 감지를 지원하지 않습니다.
Weaver 구현자는 Weaver 구현에서 중복 추측 감지를 지원하도록 선택할 수 있습니다.