生物識別
藉助生物識別因素,可在 Android 平臺上實現安全的身份驗證。Android 框架包含人臉和指紋生物識別身份驗證方式。您可對 Android 進行自定義以支持其他形式的生物識別身份驗證方式(例如虹膜)。所有生物識別實現都必須符合安全規範且具有較高的安全評級才能使用 BiometricPrompt
類。衡量生物識別的指標有冒名接受率 (IAR) 和欺騙接受率 (SAR)。
如需詳細瞭解生物識別安全規範,請參閱衡量生物識別解鎖模式的安全性。
來源
Android 10
- 引入了
BiometricManager
類,開發者可用其查詢生物識別身份驗證的可用性。 - 包含
BiometricPrompt
指紋和人臉識別身份驗證集成
Android 9
- 僅包含
BiometricPrompt
指紋集成。 - 棄用了 FingerprintManager 類。如果您的捆綁式應用和系統應用使用此類,請更新這些應用以改用
BiometricPrompt
和BiometricManager
。 - 更新了
FingerprintManager
CTS 驗證程序測試,以使用BiometricPromptBoundKeysTest
測試BiometricPrompt
。
實現
爲確保用戶和開發者獲享無縫的生物識別體驗,請將生物識別堆棧與 BiometricPrompt
集成。爲任何模態(包括人臉、指紋和虹膜)啓用 BiometricPrompt
的設備必須符合這些安全程度要求。如果它們不符合這些安全程度要求,就無法實現此類。
要將生物識別堆棧與 BiometricPrompt
和 BiometricManager
集成,請執行以下操作:
- 確保您的 <Modality> 服務已正確掛鉤到
BiometricService
並掛鉤authenticate()
方法。常見的模態(指紋、人臉)從共同的父類擴展。如果您需要集成不受支持的模態,請遵循指紋/人臉識別示例及針對生物識別的 CDD 指南。 - 確保您的新模態在 SystemUI 中得到了相應支持。系統提供了適用於指紋和人臉識別的
BiometricPrompt
默認界面。 - 更新框架,讓添加的生物識別技術遵循
KEYGUARD_DISABLE_*
標記。 - 對於您已集成到
BiometricPrompt
/BiometricManager
中的每種模態,確保您的設備可通過 CTS 和 CtsVerifier 測試。例如,如果您同時支持指紋和人臉識別身份驗證,則必須通過針對每項身份驗證方式的各項測試。
注意:請使用 androidx.biometric
支持庫演示版應用來測試您的實現。 該庫會定期添加新的用例。
圖 1. BiometricPrompt 架構
HAL 實現指南
遵循以下生物識別 HAL 準則,以確保生物識別數據不會泄露,並在從設備中移除用戶時一併移除:
- 確保在任何情況下都無法從傳感器驅動程序或安全隔離環境(例如 TEE 或安全元件)以外訪問原始生物識別數據或衍生內容(例如模板)。
- 如果硬件支持,則限制硬件對安全隔離環境的訪問權限,並使用 SELinux 政策對其進行保護。使用針對所有設備文件的明確 SELinux 政策,確保信道(例如 SPI、I2C 等)只能供安全隔離環境訪問。
- 生物識別信息的採集、註冊和識別必須在安全隔離環境內部進行,以防範數據泄露和其他攻擊。此要求僅適用於安全程度高的生物識別技術。
- 僅在文件系統上存儲加密形式的生物識別數據或衍生內容(即使文件系統本身已加密)。
- 要防範重播攻擊,請使用設備專用私鑰對生物識別模板進行簽名。對於高級加密標準 (AES),至少必須通過絕對文件系統路徑、羣組和生物識別 ID 對模板簽名,使相應模板文件無法在其他設備上使用,也無法供同一設備上除註冊者以外的任何其他用戶使用。例如,您將無法複製同一設備上其他用戶的生物識別數據,也無法從其他設備複製生物識別數據。
- 使用
set_active_group()
函數提供的文件系統路徑,或提供另一種能夠在移除用戶時一併清空所有用戶模板數據的方法。強烈建議將生物識別模板文件以加密形式存儲在提供的路徑中。如果因安全隔離環境的存儲要求而導致這種做法不可行,請添加一些鉤子,以確保在移除用戶或清空設備數據時一併移除相關數據。
自定義
如果您的設備支持多種生物識別技術,用戶應可以在設置中指定默認值。您的 BiometricPrompt
實現應該默認首選安全程度高的生物識別技術(除非用戶明確替換該選項),並需要顯示一條警告消息來說明與生物識別相關的風險(例如:“也許您的照片也能解鎖設備”)
驗證
您的生物識別實現必須通過以下測試:
- CTS BiometricManager
- CTS BiometricPrompt(健全性方面的深入測試依賴於驗證程序)
- CtsVerifier BiometricPromptBoundKeysTest:必須通過針對設備支持的每種模態的各項測試
- CtsVerifier BiometricTest:必須通過針對設備支持的每種模態的各項測試
此外,如果您的設備支持具有 AOSP HIDL 的生物識別技術([email protected]、face1.0),則必須通過與之相關的 VTS 測試(fingerprint、face)。