簡體   English   中英

如何查看Android手機是否支持TEE?

[英]How to check whether Android phone supports TEE?

我已經閱讀了這兩個帖子: ,但我仍然有疑問。

我使用 KeyStore (Android 9) 生成 AES 密鑰,並使用isInsideSecureHardware()方法檢查密鑰是否為isInsideSecureHardware 我得到了回報False 可以在此處此處找到示例代碼。

公共 boolean isInsideSecureHardware ()

如果密鑰位於安全硬件(例如,可信執行環境 (TEE) 或安全元件 (SE))內,則返回 true。 此類密鑰的密鑰材料僅在安全硬件內部以明文形式提供,並且不會暴露在其外部。

因此,我想進一步確認我的手機設備(華為 P20)是否支持 TEE。

問題:

  1. 如果手機支持 TEE,KeyStore 生成的密鑰會自動存入 TEE 嗎? 我需要在 Java 中進行任何手動配置嗎? 聽說只要你使用KeyStore.getInstance() , KeyGenerator.getInstance(algorithm, KeyStore Name) ,密鑰會自動存儲在 TEE 中。 但我不確定這是真的還是假的?

  2. 如果 Q1 的答案是“需要手動配置”,那就是isInsideSecureHardware () 返回False的原因吧? 如果 Q1 的答案是“自動”,則忽略 Q2。

  3. 在Java中有什么方法可以直接查看手機是否支持TEE?

來自Android 密鑰庫系統文檔:

運行 Android 9(API 級別 28)或更高版本的受支持設備可以安裝 StrongBox Keymaster,這是一種位於硬件安全模塊中的 Keymaster HAL 實現。 該模塊包含以下內容:
[...]
*安全存儲。
[...]
檢查存儲在 StrongBox Keymaster 中的密鑰時,系統會通過可信執行環境 (TEE) 驗證密鑰的完整性。
[...]
使用 KeyStore class 生成或導入密鑰時,您可以通過將 true 傳遞給 setIsStrongBoxBacked() 方法來指示將密鑰存儲在 StrongBox Keymaster 中的偏好。

據我了解,這意味着當您生成 Key 並為密鑰配置調用keyGenParameterSpecBuilder.setIsStrongBoxBacked(true)時,您可以確保它由TEE支持。 如果沒有可用的TEE ,它將拋出StrongBoxUnavailableException

因此,要檢查是否有可用的TEE ,您可以嘗試以這種方式生成密鑰並查看它是否有效。

@JensV 是正確的:如果您在setIsStrongBoxBacked上設置keyGenParameterSpecBuilder ,如果 StrongBox 不受支持,則密鑰生成將失敗並出現StrongBoxUnavailableException 然而,中間情況——存在 TEE(即在安全硬件中生成和使用密鑰),但不支持 StrongBox——更難以辨別。

一般來說,go 的方法是在設備上實際生成一個密鑰,然后在服務器上對其進行硬件密鑰證明- 查閱簽名的密鑰屬性以檢查硬件支持的確切程度:

  • 在服務器上生成一個隨機數(隨機字節字符串),將其傳遞給設備
  • 在設備上生成密鑰,通過調用setAttestationChallenge構建器上的KeyGenParameterSpec並傳入您從服務器獲得的隨機數來請求硬件證明(不要使用在設備上生成的隨機數)
  • 從 Android 密鑰庫請求密鑰的證明鏈
  • 將證明數據(證書鏈)傳遞到您的服務器
  • 驗證服務器上的證明(簽名)鏈
  • 確認根證書與已發布的 Google 根證書匹配
  • 確認鏈中沒有證書被撤銷(檢查 CRL @ https://android.googleapis.com/attestation/status
  • 檢查葉子證書的 Google Key Attestation 擴展 (OID 1.3.6.1.4.1.11129.2.1.17) 的屬性
    • 確認隨機數匹配( attestationChallenge
    • 查閱KeyDescriptionattestationSecurityLevel
SecurityLevel ::= ENUMERATED {
    Software  (0),
    TrustedEnvironment  (1),
    StrongBox  (2),
}

TrustedEnvironmentStrongBox都對應於硬件支持的密鑰和加密操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM