Penerapan konfirmasi yang dilindungi

Pertimbangan

Pertimbangan berikut harus ditangani untuk memastikan integritas Konfirmasi Dilindungi oleh Android. Jika pertimbangan ini tidak dapat ditangani dengan memuaskan, Konfirmasi Terlindungi tidak dapat diterapkan di perangkat.

Pertimbangan kernel Linux

Konfirmasi Terlindungi dirancang untuk beroperasi dengan aman meskipun kernel perangkat disusupi. Saat dialog Konfirmasi Terlindungi aktif, kernel tidak dapat mengganggu integritas konten layar, integritas input pengguna, dan atomitas antara input dan output pengguna. Secara arsitektur, kernel harus dicegah agar tidak menambah keputusan pengguna dan tidak melakukan spoofing peristiwa pengguna sejak awal. Kernel tidak dianggap dapat dipercaya untuk kasus penggunaan ini, karena dapat berada di bawah kontrol penyerang atau diganti dengan sesuatu yang sama sekali berbeda.

Pertimbangan firmware

Konfirmasi Terlindungi hanya dapat diterapkan di perangkat jika semua komponen yang terlibat memiliki firmware tepercaya. Konfirmasi Terlindungi dirancang untuk memastikan bahwa pengguna memiliki kesempatan untuk membaca pesan yang ditampilkan di UI Tepercaya guna membuat keputusan yang tepat apakah akan melanjutkan transaksi atau tidak. Driver panel layar sangat penting karena dapat mencegah pengguna melihat UI Tepercaya.

Pertimbangan input

Pilih metode input yang aman untuk memastikan bahwa peristiwa input yang dihasilkan oleh metode input yang dipilih ini tidak disampaikan ke dialog Konfirmasi Terlindungi kecuali pengguna menghasilkan peristiwa saat dialog tersebut aktif.

Hardware fisik

Setiap komponen yang dapat dikontrol oleh kernel Android, seperti system on chip (SoC) atau sirkuit terpadu pengelolaan daya (PMIC), tidak boleh dapat menggerakkan kabel yang terhubung ke tombol konfirmasi fisik.

Pertimbangan pengontrol sentuh

Konfirmasi Terlindungi dapat menggunakan tombol software di layar sebagai input. Setiap kali pengontrol sentuh didorong oleh TEE, tindakan harus dilakukan untuk membersihkan status pengontrol sentuh.

Perilaku yang diharapkan

Interupsi

Jika sistem mengganggu sesi konfirmasi karena panggilan telepon atau peristiwa daya yang masuk, HAL harus melaporkan ResponseCode::Aborted. Aplikasi mendapatkan callback onCanceled() dan mengetahui bahwa pengguna tidak memilih tindakan. Alarm tidak perlu membatalkan sesi, tetapi perlu memberi tahu pengguna. Overlay notifikasi dalam bentuk apa pun tidak diizinkan saat dialog aktif.

Masa tenggang input

Setelah Konfirmasi Terlindungi dimulai, input harus tetap tidak aktif selama minimal 1 detik sebelum menjadi responsif terhadap interaksi pengguna. Masa tenggang ini memastikan bahwa pengguna memiliki kesempatan untuk bereaksi terhadap dialog konfirmasi yang tidak terduga. Masa tenggang ini harus diterapkan oleh aplikasi tepercaya.

Rotasi layar

Potret adalah satu-satunya mode yang diwajibkan, dan rotasi layar tidak didukung. Rotasi layar memungkinkan potensi penyalahgunaan pada sistem yang disusupi, seperti penempatan tombol yang menyesatkan atau manipulasi teks isi.

Kegagalan rendering teks isi

Ada batas keras 6144 (0x1800) byte untuk teks isi, termasuk data tambahan yang tidak ditampilkan dan informasi header CBOR. Selain itu, ada batas lembut yang harus diterapkan. Jika pesan yang dirender tidak sepenuhnya sesuai dengan ruang layar yang tersedia, pastikan Konfirmasi Terlindungi dibatalkan dan transaksi dibatalkan. Jika MessageSize melebihi ukuran maksimum yang diizinkan, penerapan Anda harus menampilkan UIErrorMessageTooLong di promptUserConfirmation.

Praktik terbaiknya adalah memformat teks isi setelah menerima panggilan API. Teks isi harus ditampilkan kepada pengguna secara lengkap.

Tampilan sekunder

Tampilan sekunder didukung dalam kondisi tertentu. Integritas output dan input pengguna harus dipertahankan, dan tidak ada informasi menyesatkan yang dapat ditampilkan melalui cara lain. Jika tidak, dialog hanya dapat ditampilkan di layar utama dan semua layar lainnya harus dinonaktifkan atau kosong. Solusi streaming dan berbagi layar tidak diizinkan untuk menampilkan dialog atau membuat konfirmasi.