注意事項
為了確保 Android 保護確認的完整性,必須考慮以下注意事項。如果無法令人滿意地解決這些注意事項,則無法在設備上實施受保護的確認。
Linux 核心注意事項
受保護的確認旨在即使設備的核心受到損害也能安全運行。當「受保護的確認」對話方塊處於活動狀態時,核心無法幹擾螢幕內容的完整性、使用者輸入的完整性以及使用者輸入和輸出之間的原子性。從架構上來說,必須先防止核心增加用戶的決策並欺騙用戶事件。對於此用例,核心不被認為是值得信賴的,因為它可能受到攻擊者的控製或被完全不同的東西替換。
韌體注意事項
只有當涉及的所有元件都具有受信任的韌體時,才可以在裝置上實施受保護的確認。受保護的確認旨在確保用戶有機會閱讀可信任 UI 中顯示的訊息,以做出是否繼續交易的明智決定。顯示面板驅動程式尤其重要,因為這可能會阻止使用者查看可信任 UI。
輸入註意事項
選擇安全輸入法以確保由該所選輸入法產生的輸入事件不會傳送到「受保護的確認」對話框,除非使用者在該對話框處於活動狀態時產生該事件。
實體硬體
任何可由 Android 核心控制的元件,例如係統單晶片 (SoC) 或電源管理積體電路 (PMIC),都不得驅動連接到實體確認按鈕的電線。
觸控控制器注意事項
受保護的確認可以使用螢幕軟體按鈕作為輸入。只要 TEE 驅動觸控控制器,就必須採取措施清理觸控控制器的狀態。
預期行為
打擾
如果系統因來電或電源事件而中斷確認會話,HAL 必須回報ResponseCode::Aborted
。應用程式收到onCanceled()
回呼並知道使用者沒有選擇操作。警報不需要中止會話,但需要通知使用者。當對話方塊處於活動狀態時,不允許出現任何類型的通知疊加。
輸入寬限期
啟動「受保護的確認」後,輸入需要保持非活動狀態至少 1 秒,然後才能回應使用者互動。此寬限期可確保使用者有機會對意外的確認對話方塊做出反應。此寬限期必須由受信任的應用程式強制執行。
螢幕旋轉
縱向是唯一的強制模式,不支援螢幕旋轉。螢幕旋轉可能會在受感染的系統上造成濫用,例如誤導性按鈕放置或正文文字操作。
正文渲染失敗
正文有6144 (0x1800) 位元組的硬邊界,包括額外的非顯示資料和 CBOR 標頭資訊。此外,還有必須強制執行的軟邊界。如果呈現的訊息不完全適合可用的螢幕空間,請確保受保護的確認中止並取消交易。如果MessageSize
超過允許的最大大小,您的實作必須在promptUserConfirmation
上傳回UIErrorMessageTooLong
。
最佳實踐是在收到 API 呼叫後設定正文文字格式。正文必須完整地顯示給使用者。
輔助顯示器
在某些條件下支援輔助顯示器。必須保持輸出和使用者輸入的完整性,並且不能透過其他方式顯示誤導性資訊。否則,該對話方塊可能僅顯示在主顯示器上,且所有其他顯示器應停用或空白。串流媒體和螢幕共享解決方案不允許顯示對話方塊或產生確認。