KeyGenParameterSpec.Builder.SetUnlockedDeviceRequired(Boolean) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
設定此鑰匙是否僅在裝置解鎖時被授權使用。
[Android.Runtime.Register("setUnlockedDeviceRequired", "(Z)Landroid/security/keystore/KeyGenParameterSpec$Builder;", "", ApiSince=28)]
public Android.Security.Keystore.KeyGenParameterSpec.Builder SetUnlockedDeviceRequired(bool unlockedDeviceRequired);
[<Android.Runtime.Register("setUnlockedDeviceRequired", "(Z)Landroid/security/keystore/KeyGenParameterSpec$Builder;", "", ApiSince=28)>]
member this.SetUnlockedDeviceRequired : bool -> Android.Security.Keystore.KeyGenParameterSpec.Builder
參數
- unlockedDeviceRequired
- Boolean
傳回
- 屬性
備註
設定此鑰匙是否僅在裝置解鎖時被授權使用。
當使用者的應用程式目前無法存取,且需要某種鎖屏驗證才能重新存取時,該裝置被視為對使用者鎖定。 完整定義請參見 KeyguardManager.isDeviceLocked()。
公鑰操作不受 setUnlockedDeviceRequired(true) 限制,且即使裝置被鎖定,也可能執行。 在 Android 11(API 等級 30)及以下版本中,使用對稱金鑰進行加密與驗證操作也未受限制。
使用 setUnlockedDeviceRequired(true) 的金鑰即使裝置被鎖定,只要自上次重啟以來至少解鎖過一次,仍可被匯入並產生。 然而,這些金鑰在裝置解鎖前(上述無限制操作除外)不得使用。 需要在裝置鎖定時加密資料,且只能在解鎖時解密的應用程式,可以產生金鑰並在軟體中加密資料,並使用 setUnlockedDeviceRequired(true) 匯入金鑰庫,並將原始金鑰歸零。
setUnlockedDeviceRequired(true) 與 setUserAuthenticationRequired(true) 相關但不同。 setUnlockedDeviceRequired(true) 要求裝置已被解鎖,而 setUserAuthenticationRequired(true) 則要求特定類型的強認證在特定時間內完成。 它們可以同時使用或分開使用;有些情況下,其中一項要求可以被滿足,但另一項卻無法滿足。
警告:在 Android 14(API 等級 34)及以下版本使用 setUnlockedDeviceRequired(true) 時請小心,因為以下錯誤存在於 Android 12 至 14:當使用者沒有安全鎖畫面時,無法產生、匯入或使用 unlocked-device-required 金鑰;當使用者的安全鎖畫面被移除時,該使用者所有解鎖裝置所需的鑰匙會自動刪除;使用非強力生物辨識解鎖裝置,例如許多裝置的臉部,並不會重新授權使用解鎖裝置所需的鑰匙;使用生物辨識解鎖裝置並未重新授權使用解鎖裝置所需鑰匙,尤其是在共享父用戶鎖的設定檔中。 這些問題在 Android 15 中已修正,應用程式只需在 Android 15 及以上版本使用 setUnlockedDeviceRequired(true) 來避免。 同時使用 setUnlockedDeviceRequired(true) 與 setUserAuthenticationRequired(true) 的應用程式不受前兩個問題影響,因為前兩個問題描述了 setUserAuthenticationRequired(true) 的預期行為。
Android 參考資料。android.security.keystore.KeyGenParameterSpec.Builder.setUnlockedDeviceRequired
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。