android身份生成器程序,Android P 安全性更新
原標題:Android P 安全性更新
Android P 引入了若干可提升應用和運行應用的設備安全性的功能。 本頁面介紹對第三方應用開發者最重要的變化,需要他們牢記在心。
統一的指紋身份驗證對話框
在 Android P 中,系統代表應用提供指紋身份驗證對話框。 此功能會創建標準化的對話框外觀、風格和位置,讓用戶可以更放心地確信,他們是在根據可信的指紋憑據檢查程序驗證身份。
如果您的應用使用 FingerprintManager 向用戶顯示指紋身份驗證對話框,請遷移應用的邏輯以改用 FingerprintDialog,后者依賴系統來顯示該對話框。注:在應用中使用 FingerprintDialog 之前,應該先使用 hasSystemFeature() 函數以確保設備支持 FEATURE_FINGERPRINT。
如果設備不支持指紋身份驗證,可以回退為使用 createConfirmDeviceCredentialIntent() 函數驗證用戶的 PIN 碼、圖案或密碼。
高可信度用戶確認
發布時安裝有 Android P 的受支持設備賦予您使用 Protected Confirmation API 的能力。 借助這個新增的 API,應用可以利用 ConfirmationDialog 的實例向用戶顯示提示,請他們批準一個簡短的聲明。 應用可以通過這個聲明再次確認,用戶確實想完成一項敏感事務,例如付款。
如果用戶接受該聲明,應用會收到由密鑰哈希消息身份驗證代碼 (HMAC) 保護的加密簽名。 該簽名由可信執行環境 (TEE) 生成,該環境會對顯示的確認對話框以及用戶輸入進行保護。 該簽名具有很高的可信度,它表示用戶已看過聲明并同意其內容。
注意:Protected Confirmation API 不會為用戶提供安全信息通道。 應用無法承擔 Android 平臺所提供機密性保證之外的任何其他保證。 具體地講,請勿使用該 API 顯示您通常不會顯示在用戶設備上的敏感信息。
用戶確認消息后,其完整性將得到保證,但應用必須仍使用傳輸中數據加密來確保已簽署消息的機密性。
要在應用中提供高可信度用戶確認,請完成以下步驟:
1. 使用 KeyGenParameterSpec.Builder 類生成一個非對稱簽名密鑰。 創建該密鑰時,將 true傳入 setUserConfirmationRequired()。 此外,調用 setAttestationChallenge() 以傳遞由依賴方提供的合適私鑰保護值;
2. 向相應的依賴方登記新生成的密鑰和密鑰的認證證書;
3. 將事務詳情發送至服務器,并讓其生成并返回一個額外數據 blob。 例如,一項金融事務的額外數據可能包括金額、來源帳戶和目標帳戶。 該 blob 應包含加密隨機數以防范重播攻擊 {: .external-link},并且該 blob 還可包含應用特有數據。 服務器應將該 blob 和事務詳情存儲在本地;
4. 設置 ConfirmationCallback 對象,讓它在用戶已接受確認對話框中顯示的提示時通知應用:
如果用戶批準該對話框,則會調用 onConfirmedByUser() 回調。 dataThatWasConfirmedblob 是一個 CBOR 數據結構, {: .external-link} 其中包含用戶看到的提示文本以及您傳入 ConfirmationDialog 構建器的額外數據,還包含其他詳細信息。 應用應使用之前創建的密鑰簽署 dataThatWasConfirmed blob。 然后您應該將該 blob 連同簽名和事務詳情回傳給依賴方。
注:由于密鑰是使用 setUserConfirmationRequired() 創建的,因此只能用于簽署以 dataThatWasConfirmed 參數形式返回的數據。
簽署任何其他種類數據的嘗試不會獲得成功。 收到簽名后,您的服務器應對其進行檢查。 如果簽名有效,您即可從 dataThatWasConfirmed 中提取 extraData 和 promptText,并驗證 extraData 與之前存儲的內容是否匹配。作為最后一項檢查,服務器應檢查 promptText 是否與出現在額外數據中的事務詳情一致。如果此步驟成功,則服務器可以執行該事務,因為它已獲得高可信度的確認,用戶已看到并批準了 promptText 中的消息;
5. 添加與以下代碼段所示內容類似的邏輯以顯示對話框本身:
注:包含全屏對話框的確認提示界面無法進行自定義。 但框架會為您處理按鈕文本的本地化。
硬件安全性模塊
發布時安裝了 Android P 的受支持設備可擁有 StrongBox Keymaster,這個 Keymaster HAL 的實現位于一個硬件安全性模塊內。 該模塊包含自己的 CPU、安全存儲空間、真實隨機數生成器以及抵御軟件包篡改和未經授權線刷應用的附加機制。 檢查存儲在 StrongBox Keymaster 中的密鑰時,系統會通過可信執行環境 (TEE) 證實密鑰的完整性。
為支持低能耗的 StrongBox 實現,為一部分算法和密鑰長度提供了支持:
RSA 2048
AES 128 和 256
ECDSA P-256
HMAC-SHA256 (支持 8-64 字節密鑰長度,含首末值)
Triple DES 168
使用 KeyStore 類生成或導入密鑰時,您需要通過將 true 傳遞給 KeyGenParameterSpec.Builder類或 KeyProtection.Builder 類中的 setIsStrongBoxBacked() 函數,指示在 StrongBox Keymaster 中存儲密鑰的偏好。
注:如果 StrongBox Keymaster 不可用于特定算法和與密鑰關聯的密鑰長度,框架會引發一個 StrongBoxUnavailableException。
保護對密鑰庫進行的密鑰導入
Android P 增加了密鑰加密的安全性,添加了利用新增的 ASN.1 編碼密鑰格式將已加密密鑰安全導入密鑰庫的功能。 Keymaster 隨后會在密鑰庫中將密鑰解密,因此密鑰的內容永遠不會以明文形式出現在設備的主機內存中。
注:只有附帶 Keymaster 4 的新發布設備支持此功能。
要支持以安全方式將已加密密鑰導入密鑰庫,請完成以下步驟:
1. 生成一個使用 PURPOSE_WRAP_KEY 目的的密鑰對。 建議也為該密鑰對添加認證;
2. 在您信任的服務器或機器上,生成 SecureKeyWrapper 應包含的 ASN.1 消息。
該包裝器包含以下架構:
3. 創建一個 WrappedKeyEntry 對象以傳入字節數組形式的 ASN.1 消息;
4. 將該 WrappedKeyEntry 對象傳入接受 Keystore.Entry 對象的 setEntry() 的重載。
| 閱讀原文 |前往“Android Developers 官方文檔”查看詳細信息
· Android P Beta 3 現已發布!返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的android身份生成器程序,Android P 安全性更新的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中富金石:A股新年首日中药股大涨,元宇宙
- 下一篇: C#两行代码实现三维地球