Implementasi Konfirmasi Terlindungi

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.