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.