我們希望更深入的瞭解您的開發實踐與體驗,以便為您構建更好的開發工具。所以我們誠摯的邀請您參與 Android 開發者問卷調研。您的回覆是匿名的,我們僅進行彙總分析。此調查僅需 5-10 分鐘即可完成。
掃描下方☟二維碼☟ 參與 Android 開發者問卷調研
Android Pie 加入 Keystore 新特性
Android Keystore 為應用開發者們提供了許多加密工具來保護使用者資料。Keystore 將軟體庫中的密碼學原語從 Android OS 移植到安全硬體中,從硬體層面為金鑰資料提供額外的安全防護,並確保金鑰僅能夠在安全硬體中被使用,因此即使裝置遭受攻擊,應用的機密資料也不會洩露。此外,Keystore 還允許應用限定金鑰的使用方式和時間。
到了 Android Pie 之後,Keystore 也相應加入了一些新功能。在這篇文章中,我們會詳細介紹其中的兩項新功能: 其一是通過限制金鑰的使用來達到保護敏感資訊的目的;其二則是能夠在簡化安全金鑰使用的同時,防止應用和作業系統訪問金鑰資料。
鍵盤鎖繫結金鑰
如果使用者當前並未在使用裝置,移動端應用可選擇延遲處理已經接收到的資料。Android Pie 利用鍵盤鎖繫結金鑰技術來保護應用在鎖屏時收到的敏感資訊,直至使用者開始訪問它們。當裝置處於鎖屏狀態時,金鑰可用於加密或認證操作,但是卻不可用於解密或者簽名。如果裝置當前被 PIN, 圖形或者密碼鎖定,任何試圖使用這些金鑰的操作都會失效。鍵盤鎖繫結金鑰可以在裝置鎖屏時保護使用者資料,直到使用者需要這些資料。
鍵盤鎖繫結和驗證繫結的功能類似,唯一需要著重強調的區別在於鍵盤鎖繫結將金鑰可用性與鎖屏狀態繫結在一起,而驗證繫結則採用常量超時機制。當金鑰鍵盤鎖繫結功能啟用後,一旦裝置進入鎖屏狀態,金鑰便會失效,直至使用者重新解鎖裝置。
另外,還有一點請各位讀者注意,鑑於安全硬體無法獲知螢幕何時被鎖定,因此鍵盤鎖繫結由作業系統負責來強制執行而非安全硬體。但驗證繫結的情況則與之不同,它是一款由硬體強制執行的 Android Keystore 特性。當驗證繫結與鍵盤鎖繫結配合使用時,裝置將具備更高的安全防護級別。而且,由於鍵盤鎖繫結屬於作業系統功能,因此所有 Android Pie 裝置都可以使用該功能。
任何由裝置支援演算法所編寫的金鑰均可啟動鍵盤鎖繫結功能。如果您需要生成或匯入鍵盤鎖繫結金鑰,請在設定 KeyGenParameterSpec 或 KeyProtection 的 builder 物件時,呼叫 setUnlockedDeviceRequired(true) 方法。
安全金鑰匯入
安全金鑰匯入是 Android Pie 引入的另一項新特性,它允許應用以一種更加安全的方式將現有金鑰配置到金鑰庫中。金鑰源可能是位於本地資料中心或雲端的某臺伺服器,它會通過使用者裝置中的公共包裝金鑰來加密安全金鑰,並生成 SecureKeyWrapper 格式的檔案,其中包含了被匯入金鑰所允許的使用方式,而 SecureKeyWrapper 金鑰只有在生成包裝金鑰的裝置上的 Keystore 硬體中才能被解密。金鑰在傳輸過程中完成加密,且對應用和作業系統均不可見,也就是說只有在匯入到的安全硬體後才能使用這些金鑰。
如果應用試圖與 Android 裝置分享金鑰,但同時又想避免金鑰在離開裝置後被攔截,安全金鑰匯入功能便是這中情形下理想的選擇。Google Play 已經利用該技術在 Pixel 3 手機上配置部分金鑰,以確保金鑰不會被攔截或者從記憶體中被提取。此外,安全金鑰匯入的企業用例也很廣泛,比如,您可以從 CA 認證中心託管方恢復 S/MIME 加密金鑰,以便使用同一把金鑰在多個裝置上解密電子郵件。
如果您想了解該特性的具體使用方法,請仔細閱讀教程文件《Android 金鑰庫系統》中的相關部分。請注意,由於安全金鑰匯入是一款安全硬體特性,因此部分 Android Pie 裝置可能無法使用該功能。應用可以呼叫 PURPOSE_WRAP_KEY 來生成一個金鑰對,以此來鑑別所用裝置是否支援安全金鑰匯入。
點選這裡參與 Android 開發者問卷調研