實作 Protected Confirmation

注意事項

您必須考量下列事項,確保 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 呼叫後,再設定內文格式。必須完整向使用者顯示內文。

第二螢幕

在特定情況下,系統會支援次要螢幕。必須維持輸出內容和使用者輸入內容的完整性,且不得透過其他方式顯示任何誤導性資訊。否則對話方塊可能只會顯示在主要螢幕上,所有其他螢幕應停用或顯示空白畫面。串流和螢幕分享解決方案不得顯示對話方塊或產生確認訊息。