Pertimbangan
Pertimbangan berikut harus diperhatikan untuk memastikan integritas Android Protected Confirmation. Jika pertimbangan ini tidak dapat diatasi dengan memuaskan, Konfirmasi Terlindungi tidak dapat diterapkan pada perangkat.
Pertimbangan kernel Linux
Konfirmasi Terlindungi dirancang untuk beroperasi dengan aman bahkan jika kernel perangkat disusupi. Saat dialog Konfirmasi Terproteksi aktif, kernel tidak dapat mengganggu integritas konten layar, integritas input pengguna, dan atomisitas antara input dan output pengguna. Secara arsitektur, kernel harus dicegah dari menambah keputusan pengguna dan dari spoofing peristiwa pengguna di tempat pertama. Kernel tidak dianggap dapat dipercaya untuk kasus penggunaan ini, karena kernel dapat berada di bawah kendali penyerang atau diganti dengan sesuatu yang sama sekali berbeda.
Pertimbangan firmware
Konfirmasi Terlindungi dapat diterapkan pada perangkat hanya 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 untuk membuat keputusan yang tepat apakah akan melanjutkan transaksi atau tidak. Driver panel tampilan sangat penting karena ini dapat mencegah pengguna untuk dapat melihat UI Tepercaya.
Pertimbangan masukan
Pilih metode masukan yang aman untuk memastikan bahwa peristiwa masukan yang dihasilkan oleh metode masukan yang dipilih ini tidak disampaikan ke dialog Konfirmasi Terproteksi kecuali jika pengguna membuat peristiwa saat dialog itu aktif.
Perangkat keras fisik
Setiap komponen yang dapat dikontrol oleh kernel Android, seperti system on chip (SoC) atau power management integrated circuit (PMIC), tidak boleh menggerakkan kabel yang terhubung ke tombol konfirmasi fisik.
Pertimbangan pengontrol sentuh
Konfirmasi Terproteksi dapat menggunakan tombol perangkat lunak di layar sebagai input. Setiap kali pengontrol sentuh digerakkan oleh TEE, tindakan harus diambil untuk membersihkan status pengontrol sentuh.
Perilaku yang diharapkan
Gangguan
Jika sistem menginterupsi sesi konfirmasi karena panggilan telepon masuk atau peristiwa listrik, 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. Hamparan pemberitahuan dalam bentuk apa pun tidak diizinkan saat dialog aktif.
Masukkan masa tenggang
Setelah Konfirmasi Terproteksi 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.
Perputaran layar
Potret adalah satu-satunya mode yang diamanatkan, 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 batasan keras 6144 (0x1800) byte untuk teks isi termasuk data ekstra yang tidak ditampilkan dan informasi header CBOR. Selain itu, ada batas lunak yang harus ditegakkan. Jika pesan yang ditampilkan tidak sepenuhnya sesuai dengan ruang layar yang tersedia, pastikan bahwa Konfirmasi Terproteksi dibatalkan dan transaksi dibatalkan. Jika MessageSize
melebihi ukuran maksimum yang diizinkan, implementasi Anda harus mengembalikan UIErrorMessageTooLong
pada promptUserConfirmation
.
Praktik terbaik adalah memformat teks isi setelah menerima panggilan API. Teks isi harus ditampilkan kepada pengguna secara penuh.
Tampilan Sekunder
Tampilan sekunder didukung dalam kondisi tertentu. Integritas output dan input pengguna harus dijaga, dan tidak ada informasi yang menyesatkan yang dapat ditampilkan melalui cara lain. Jika tidak, dialog hanya dapat ditampilkan pada tampilan utama dan semua tampilan lainnya harus dinonaktifkan atau kosong. Solusi streaming dan berbagi layar tidak diizinkan untuk menampilkan dialog atau membuat konfirmasi.