Android 會使用使用者設定的螢幕鎖定知識因素 (LSKF) (例如 PIN 碼、圖案和密碼),保護使用者資料,包括憑證加密儲存空間和驗證繫結的 Keystore 金鑰。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 年內最多可猜測 1800 次。
雖然這項政策對於隨機選擇的 LSKF 相當安全,但實際上使用者不會隨機選擇 LSKF。有些 LSKF 的發生頻率遠高於其他 LSKF。攻擊者可以依頻率遞減順序嘗試 LSKF,大幅提高成功率。
舉例來說,這項研究發現,猜測真實 PIN 碼的成功率為 16.2% (猜測 100 次後),猜測圖案的成功率則為 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 以上版本包含更新後的 Gatekeeper 和 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 分鐘內沒有猜對,系統就會捨棄所有追蹤的猜測。
Gatekeeper 不會區分錯誤的猜測和其他驗證失敗情形,因此當 Gatekeeper 是主要速率限制器時,SoftwareRateLimiter 不支援重複猜測偵測。
Weaver 實作者可以在 Weaver 實作中選擇支援重複猜測偵測功能。