Android P 引入了若干可提高應用和運行應用的設備安全性的功能。 本頁面介紹對第三方應用開發者最重要的變化,須要他們牢記在心。android
在 Android P 中,系統表明應用提供指紋身份驗證對話框。 此功能會建立標準化的對話框外觀、風格和位置,讓用戶能夠更放心地確信,他們是在根據可信的指紋憑據檢查程序驗證身份。算法
若是您的應用使用 FingerprintManager 向用戶顯示指紋身份驗證對話框,請遷移應用的邏輯以改用 FingerprintDialog,後者依賴系統來顯示該對話框。數組
注:在應用中使用 FingerprintDialog 以前,應該先使用 hasSystemFeature() 函數以確保設備支持 FEATURE_FINGERPRINT。安全
若是設備不支持指紋身份驗證,能夠回退爲使用 createConfirmDeviceCredentialIntent() 函數驗證用戶的 PIN 碼、圖案或密碼。服務器
發佈時安裝有 Android P 的受支持設備賦予您使用 Protected Confirmation API 的能力。 藉助這個新增的 API,應用能夠利用 ConfirmationDialog 的實例向用戶顯示提示,請他們批准一個簡短的聲明。 應用能夠經過這個聲明再次確認,用戶確實想完成一項敏感事務,例如付款。數據結構
若是用戶接受該聲明,應用會收到由密鑰哈希消息身份驗證代碼 (HMAC) 保護的加密簽名。 該簽名由可信執行環境 (TEE) 生成,該環境會對顯示的確認對話框以及用戶輸入進行保護。 該簽名具備很高的可信度,它表示用戶已看過聲明並贊成其內容。架構
注意:Protected Confirmation API 不會爲用戶提供安全信息通道。 應用沒法承擔 Android 平臺所提供機密性保證以外的任何其餘保證。 具體地講,請勿使用該 API 顯示您一般不會顯示在用戶設備上的敏感信息。 用戶確認消息後,其完整性將獲得保證,但應用必須仍使用傳輸中數據加密來確保已簽署消息的機密性。app
要在應用中提供高可信度用戶確認,請完成如下步驟:框架
注:因爲密鑰是使用 setUserConfirmationRequired() 建立的,所以只能用於簽署以 dataThatWasConfirmed 參數形式返回的數據。函數
簽署任何其餘種類數據的嘗試不會得到成功。 收到簽名後,您的服務器應對其進行檢查。 若是簽名有效,您便可從 dataThatWasConfirmed 中提取 extraData 和 promptText,並驗證 extraData 與以前存儲的內容是否匹配。做爲最後一項檢查,服務器應檢查 promptText 是否與出如今額外數據中的事務詳情一致。若是此步驟成功,則服務器能夠執行該事務,由於它已得到高可信度的確認,用戶已看到並批准了 promptText 中的消息;
5.添加與如下代碼段所示內容相似的邏輯以顯示對話框自己:
注:包含全屏對話框的確認提示界面沒法進行自定義。 但框架會爲您處理按鈕文本的本地化。
發佈時安裝了 Android P 的受支持設備可擁有 StrongBox Keymaster,這個 Keymaster HAL 的實現位於一個硬件安全性模塊內。 該模塊包含本身的 CPU、安全存儲空間、真實隨機數生成器以及抵禦軟件包篡改和未經受權線刷應用的附加機制。 檢查存儲在 StrongBox Keymaster 中的密鑰時,系統會經過可信執行環境 (TEE) 證明密鑰的完整性。
爲支持低能耗的 StrongBox 實現,爲一部分算法和密鑰長度提供了支持:
使用 KeyStore 類生成或導入密鑰時,您須要經過將 true 傳遞給 KeyGenParameterSpec.Builder類或 KeyProtection.Builder 類中的 setIsStrongBoxBacked() 函數,指示在 StrongBox Keymaster 中存儲密鑰的偏好。
注:若是 StrongBox Keymaster 不可用於特定算法和與密鑰關聯的密鑰長度,框架會引起一個 StrongBoxUnavailableException。
Android P 增長了密鑰加密的安全性,添加了利用新增的 ASN.1 編碼密鑰格式將已加密密鑰安全導入密鑰庫的功能。 Keymaster 隨後會在密鑰庫中將密鑰解密,所以密鑰的內容永遠不會以明文形式出如今設備的主機內存中。
注:只有附帶 Keymaster 4 的新發佈設備支持此功能。
要支持以安全方式將已加密密鑰導入密鑰庫,請完成如下步驟:
4.將該 WrappedKeyEntry 對象傳入接受 Keystore.Entry 對象的 setEntry() 的重載。
點擊這裏前往 「Android Developers 官方文檔」 查看詳細信息