注意事項
您必須考量下列事項,確保 Android 保護確認機制的完整性。如果無法妥善處理這些考量因素,就無法在裝置上實作 Protected Confirmation。
Linux 核心注意事項
即使裝置的核心遭到入侵,Protected Confirmation 也能安全運作。當「Protected Confirmation」對話方塊處於作用中狀態時,核心無法干擾螢幕內容的完整性、使用者輸入內容的完整性,以及使用者輸入內容和輸出內容之間的原子性。在架構上,必須防止核心擴增使用者的決定,並從一開始就避免偽造使用者事件。在這種情況下,核心可能會受到攻擊者的控制,或被替換成完全不同的核心,因此不屬於可信賴的核心。
韌體注意事項
只有在所有相關元件都使用可信任的韌體時,才能在裝置上實作 Protected Confirmation。保護確認功能的設計目的,是確保使用者有機會閱讀顯示在信任的 UI 中的訊息,以便根據資訊做出是否繼續交易的決定。顯示面板驅動程式特別重要,因為這可能會導致使用者無法查看信任的 UI。
輸入考量事項
請選擇安全的輸入法,確保由所選輸入法產生的輸入事件不會傳送至「Protected Confirmation」對話方塊,除非使用者在該對話方塊處於啟用狀態時產生事件。
實體硬體
任何可由 Android 核心控制的元件 (例如系統單晶片 (SoC) 或電源管理整合電路 (PMIC)),都不得驅動連接至實體確認按鈕的線路。
觸控控制器注意事項
受保護的確認畫面可使用畫面上的軟體按鈕做為輸入內容。每當觸控控制器由 TEE 驅動時,都必須採取措施來消毒觸控控制器的狀態。
預期的行為
干擾
如果系統因來電或電源事件而中斷確認工作階段,HAL 必須回報 ResponseCode::Aborted
。應用程式會收到 onCanceled()
回呼,並得知使用者未選擇任何動作。鬧鐘不需要中止工作階段,但需要通知使用者。對話方塊處於啟用狀態時,不允許任何類型的通知重疊。
輸入寬限期
啟動 Protected Confirmation 後,輸入內容必須處於非活動狀態至少 1 秒,才能回應使用者互動。這段寬限期可確保使用者有時間回應意外的確認對話方塊。這個寬限期必須由受信任的應用程式強制執行。
螢幕旋轉
直向是唯一強制模式,且不支援螢幕旋轉。螢幕旋轉功能可能會在遭到入侵的系統上遭到濫用,例如誤導性的按鈕位置或內容操控。
本文顯示失敗
內文的硬邊界為 6144 (0x1800) 位元組,其中包含額外的未顯示資料和 CBOR 標頭資訊。此外,您必須強制執行軟性邊界。如果轉譯的訊息無法完全符合可用的螢幕空間,請確認 Protected Confirmation 中止,且交易遭到取消。如果 MessageSize
超過許可大小上限,您的實作必須在 promptUserConfirmation
上傳回 UIErrorMessageTooLong
。
最佳做法是在收到 API 呼叫後,再設定內文格式。必須完整向使用者顯示內文。
第二螢幕
在特定情況下,系統會支援次要螢幕。必須維持輸出內容和使用者輸入內容的完整性,且不得透過其他方式顯示任何誤導性資訊。否則對話方塊可能只會顯示在主要螢幕上,所有其他螢幕應停用或顯示空白畫面。串流和螢幕分享解決方案不得顯示對話方塊或產生確認訊息。