受保護的確認實施

注意事項

必須解決以下注意事項以確保 Android Protected Confirmation 的完整性。如果不能令人滿意地解決這些注意事項,則無法在設備上實施受保護的確認。

Linux 內核注意事項

受保護的確認旨在確保即使設備的內核受到威脅也能安全運行。當 Protected Confirmation 對話框處於活動狀態時,內核不能干擾屏幕內容的完整性、用戶輸入的完整性以及用戶輸入和輸出之間的原子性。在架構上,必須首先防止內核增加用戶的決定和欺騙用戶事件。對於這個用例,內核不被認為是值得信賴的,因為它可能處於攻擊者的控制之下,或者被完全不同的東西所取代。

固件注意事項

僅當涉及的所有組件都具有受信任的固件時,才能在設備上實施受保護的確認。受保護的確認旨在確保用戶有機會閱讀受信任 UI 中顯示的消息,從而做出是否繼續交易的明智決定。顯示面板驅動程序尤其重要,因為這可能會阻止用戶查看受信任的 UI。

輸入註意事項

選擇一種安全的輸入法,以確保此所選輸入法生成的輸入事件不會傳送到受保護的確認對話框,除非用戶在該對話框處於活動狀態時生成事件。

物理硬件

任何可由 Android 內核控制的組件,例如片上系統 (SoC) 或電源管理集成電路 (PMIC),都不能驅動連接到物理確認按鈕的電線。

觸摸控制器注意事項

受保護的確認可以使用屏幕上的軟件按鈕作為輸入。每當 TEE 驅動觸摸控制器時,都必須採取措施清理觸摸控制器的狀態。

預期行為

中斷

如果系統因為來電或電源事件而中斷確認會話,HAL 必須報告ResponseCode::Aborted 。應用程序獲取onCanceled()回調並知道用戶沒有選擇操作。警報不需要中止會話,但需要通知用戶。對話框處於活動狀態時,不允許任何類型的通知覆蓋。

輸入寬限期

啟動受保護的確認後,輸入需要保持非活動狀態至少 1 秒,然後才能響應用戶交互。此寬限期確保用戶有機會對意外的確認對話框做出反應。此寬限期必須由受信任的應用程序強制執行。

屏幕旋轉

縱向是唯一的強制模式,不支持屏幕旋轉。屏幕旋轉允許在受損系統上濫用,例如誤導性按鈕放置或正文操作。

正文文本渲染失敗

正文有 6144 (0x1800) 字節的硬邊界,包括額外的未顯示數據和 CBOR 標頭信息。此外,還有一個必須強制執行的軟邊界。如果呈現的消息不完全適合可用的屏幕空間,請確保受保護的確認中止並取消交易。如果MessageSize超過最大允許大小,您的實現必須在promptUserConfirmation UIErrorMessageTooLong

最佳做法是在收到 API 調用後格式化正文文本。正文必須完整地顯示給用戶。

輔助顯示器

在某些條件下支持輔助顯示器。必須保持輸出和用戶輸入的完整性,不得通過其他方式顯示誤導性信息。否則,對話框可能只顯示在主顯示器上,所有其他顯示器都應停用或空白。流媒體和屏幕共享解決方案不允許顯示對話框或生成確認。