Biometrik

Biometrik menawarkan cara yang lebih praktis, tetapi berpotensi kurang aman untuk mengonfirmasi identitas Anda dengan perangkat. Dalam model autentikasi bertingkat, autentikasi utama (yaitu, modalitas berbasis faktor pengetahuan seperti PIN, pola, dan sandi) memberikan tingkat keamanan tertinggi. Biometrik berada di tingkat autentikasi sekunder, yang menawarkan keseimbangan antara kemudahan dan keamanan. CDD Android menentukan tiga kelas kekuatan biometrik: Kelas 3 (sebelumnya Kuat), Kelas 2 (sebelumnya Lemah), dan Kelas 1 (sebelumnya Kenyamanan). Setiap class memiliki serangkaian prasyarat, hak istimewa, dan batasan - lihat CDD di atas untuk mengetahui detail selengkapnya. Ketiga class tersebut diizinkan untuk berintegrasi dengan layar kunci, tetapi hanya autentikator Kuat dan Lemah yang diizinkan untuk berintegrasi dengan API android.hardware.biometrics. Tabel ini menjelaskan setiap autentikator dan fungsi yang didukungnya.

Pengautentikasi Layar kunci Integrasi BiometricPrompt Keystore (kunci berbasis waktu) Keystore (kunci berbasis operasi)
BIOMETRIC_STRONG (Class 3) Ya Ya Ya Ya
BIOMETRIC_WEAK (Class 2) Ya Ya Tidak Tidak
BIOMETRIC_CONVENIENCE
(Kelas 1)
Ya Tidak Tidak Tidak
DEVICE_CREDENTIAL Ya Ya Ya Ya

Framework Android menyertakan dukungan untuk autentikasi biometrik wajah dan sidik jari. Android dapat disesuaikan untuk mendukung modalitas biometrik lainnya (seperti Iris). Namun, integrasi biometrik akan bergantung pada keamanan biometrik, bukan modalitas. Untuk mengetahui detail selengkapnya tentang spesifikasi keamanan biometrik, lihat Mengukur Keamanan Buka Kunci Biometrik.

Sumber

Android 12

  • Memperkenalkan API BiometricManager.Strings, yang menyediakan string yang dilokalkan untuk aplikasi yang menggunakan BiometricPrompt untuk autentikasi. String ini dimaksudkan agar kompatibel dengan perangkat dan memberikan spesifikasi lebih lanjut tentang jenis autentikasi yang dapat digunakan.
  • Mencakup dukungan sensor sidik jari di bawah layar (UDFPS).

Android 11

  • Memperkenalkan antarmuka BiometricManager.Authenticators, yang menyediakan konstanta yang dapat digunakan developer untuk menentukan jenis autentikasi yang diterima oleh aplikasi mereka.
  • Menambahkan ACTION_BIOMETRIC_ENROLL tindakan intent, yang dapat digunakan developer untuk mengarahkan pengguna mendaftarkan metode autentikasi yang memenuhi persyaratan aplikasi mereka.
  • Menambahkan AuthenticationResult#getAuthenticationType() method, yang dapat digunakan developer untuk memeriksa apakah pengguna melakukan autentikasi menggunakan kredensial biometrik atau kredensial perangkat.
  • Memberikan dukungan tambahan untuk kunci autentikasi per penggunaan dalam class BiometricPrompt.

Android 10

  • Memperkenalkan class BiometricManager yang dapat digunakan developer untuk mengkueri ketersediaan autentikasi biometrik.
  • Mencakup integrasi autentikasi wajah dan sidik jari untuk BiometricPrompt

Android 9

  • Mencakup integrasi sidik jari hanya untuk BiometricPrompt.
  • Menghentikan penggunaan class FingerprintManager. Jika aplikasi paket dan sistem Anda menggunakan class ini, update aplikasi tersebut untuk menggunakan BiometricPrompt dan BiometricManager.
  • Memperbarui pengujian verifier CTS FingerprintManager untuk menguji BiometricPrompt menggunakan BiometricPromptBoundKeysTest.

Implementasi

Untuk memastikan pengguna dan developer mendapatkan pengalaman biometrik yang lancar, integrasikan stack biometrik Anda dengan API BiometricPrompt, BiometricManager, dan ACTION_BIOMETRIC_ENROLL. Perangkat dengan sensor biometrik harus mematuhi persyaratan kekuatan ini.Selain itu, semua penerapan harus lulus modul CTS CtsBiometricsTestCases.

Untuk mengintegrasikan stack biometrik Anda dengan ACTION_BIOMETRIC_ENROLL API:

  1. Ubah BiometricEnrollActivity untuk menampilkan alur pendaftaran Anda. Perhatikan bahwa biometrik Anda hanya dapat ditampilkan jika memenuhi kekuatan yang diminta. Jika perangkat Anda mendukung lebih dari satu, tindakan ini akan menampilkan daftar yang dapat dipilih pengguna.
Arsitektur BiometricPrompt
Gambar 1. Arsitektur BiometricPrompt

Panduan penerapan HAL

Ikuti panduan HAL biometrik ini untuk memastikan bahwa data biometrik tidak bocor dan dihapus saat pengguna dihapus dari perangkat:

  • Pastikan data biometrik mentah atau turunannya (seperti template) tidak pernah dapat diakses dari luar lingkungan terisolasi yang aman (seperti TEE atau Secure Element). Semua data yang disimpan harus dienkripsi dengan kunci khusus perangkat yang hanya diketahui oleh Trusted Execution Environment (TEE). Jika hardware mendukungnya, batasi akses hardware ke lingkungan terisolasi yang aman dan lindungi dengan kebijakan SELinux. Buat saluran komunikasi (misalnya, SPI, I2C) hanya dapat diakses oleh lingkungan terisolasi yang aman dengan kebijakan SELinux eksplisit pada semua file perangkat.
  • Akuisisi, pendaftaran, dan pengenalan biometrik harus terjadi di dalam lingkungan terisolasi yang aman untuk mencegah pelanggaran data dan serangan lainnya. Persyaratan ini hanya berlaku untuk biometrik Kelas 3 (sebelumnya Kuat) dan Kelas 2 (sebelumnya Lemah).
  • Untuk melindungi dari serangan berulang, tandatangani template biometrik dengan kunci khusus perangkat pribadi. Untuk Advanced Encryption Standard (AES), setidaknya tandatangani template dengan jalur sistem file absolut, grup, dan ID biometrik sehingga file template tidak dapat dioperasikan di perangkat lain atau oleh siapa pun selain pengguna yang mendaftarkannya di perangkat yang sama. Misalnya, mencegah penyalinan data biometrik dari pengguna yang berbeda di perangkat yang sama atau dari perangkat lain.
  • Jika Anda perlu menyimpan data di luar TEE, gunakan jalur sistem file yang disediakan oleh setActiveUser() HIDL method atau berikan cara lain untuk menghapus semua data template pengguna saat pengguna dihapus. Alasannya adalah untuk melindungi kebocoran data pengguna. Perangkat yang tidak menggunakan jalur ini harus membersihkan data setelah pengguna dihapus. CDD mewajibkan data biometrik dan file turunannya disimpan dalam bentuk terenkripsi - terutama jika tidak berada di TEE. Jika hal ini tidak dapat dilakukan karena persyaratan penyimpanan lingkungan terisolasi yang aman, tambahkan hook untuk memastikan penghapusan data saat pengguna dihapus atau perangkat direset. Lihat LockSettingsService.removeBiometricsForUser()

Penyesuaian

Jika perangkat Anda mendukung beberapa biometrik, pengguna dapat menentukan biometrik default di setelan. Implementasi BiometricPrompt Anda harus memilih biometrik Class 3 (sebelumnya Kuat) sebagai default kecuali jika pengguna secara eksplisit menggantinya, lalu pesan peringatan perlu ditampilkan yang menjelaskan risiko yang terkait dengan biometrik (misalnya, Foto Anda dapat membuka kunci perangkat Anda)

String autentikasi khusus perangkat

Mulai Android 12, string autentikasi kontekstual tersedia bagi developer melalui API BiometricManager.Strings. Anda dapat menyesuaikan nilai resource yang ditampilkan oleh API ini untuk menerapkan string khusus perangkat. Jika Anda melakukannya, pastikan semua string baru diterjemahkan untuk semua lokalitas yang didukung perangkat. Selain itu, pastikan properti berikut tetap ada:


Metode

Tujuan string

Jenis autentikasi yang akan disertakan

Jika biometrik dan kunci layar keduanya mungkin

getButtonLabel()

Label untuk tombol yang memicu BiometricPrompt

Hanya jenis Terdaftar (jika memungkinkan) yang memenuhi persyaratan autentikator

Gunakan string khusus biometrik (seperti, "Gunakan sidik jari")

getPromptMessage()

Pesan yang ditampilkan di BiometricPrompt saat melakukan autentikasi

Hanya jenis Terdaftar (jika memungkinkan) yang memenuhi persyaratan autentikator

Gunakan string kunci layar dan biometrik gabungan (misalnya, "Gunakan sidik jari atau PIN Anda untuk melanjutkan")

getSettingName()

Nama setelan yang mengaktifkan BiometricPrompt untuk autentikasi

Semua jenis yang didukung oleh perangkat (meskipun tidak terdaftar) yang memenuhi persyaratan autentikator

Gunakan string kunci layar dan biometrik gabungan (seperti, "Gunakan sidik jari atau kunci layar")

Misalnya, pertimbangkan perangkat yang memiliki sensor wajah Kelas 2 dengan wajah terdaftar, PIN terdaftar, dan sensor sidik jari Kelas 3 dengan tidak ada sidik jari terdaftar. Tabel berikut menyediakan contoh string untuk setiap kombinasi autentikator yang diizinkan dan metode BiometricManager.Strings yang dipanggil:


Pengautentikasi yang diizinkan

getButtonLabel()

getPromptMessage()

getSettingName()

Biometrik Kelas 3 (BIOMETRIC_STRONG)

"Use fingerprint" (Gunakan sidik jari)
(Hanya sidik jari yang memenuhi persyaratan autentikator)

"Gunakan sidik jari Anda untuk melanjutkan"
(Hanya sidik jari yang memenuhi persyaratan autentikator)

"Use fingerprint" (Gunakan sidik jari)
(Hanya sidik jari yang memenuhi persyaratan autentikator)

Biometrik Kelas 2 (BIOMETRIC_WEAK)

"Gunakan wajah"
(Wajah dan sidik jari memenuhi persyaratan; hanya wajah yang terdaftar)

"Gunakan wajah Anda untuk melanjutkan"
(Wajah dan sidik jari memenuhi persyaratan; hanya wajah yang terdaftar)

"Gunakan wajah atau sidik jari"
(Wajah dan sidik jari memenuhi persyaratan; perangkat mendukung keduanya)

Kunci layar (DEVICE_CREDENTIAL)

"Gunakan PIN"
(Kunci layar apa pun memenuhi persyaratan; PIN telah didaftarkan)

"Masukkan PIN Anda untuk melanjutkan"
(Kunci layar apa pun memenuhi persyaratan; PIN terdaftar)

"Gunakan kunci layar"
(Kunci layar apa pun memenuhi persyaratan)

Biometrik Class 3 ATAU kunci layar

"Gunakan PIN"
(Sidik jari dan kunci layar apa pun memenuhi persyaratan; hanya PIN yang terdaftar)

"Masukkan PIN Anda untuk melanjutkan"
(Sidik jari dan kunci layar apa pun memenuhi persyaratan; hanya PIN yang didaftarkan)

"Gunakan sidik jari atau kunci layar"
(Sidik jari dan kunci layar apa pun memenuhi persyaratan)

Biometrik Class 2 ATAU kunci layar

"Gunakan wajah"
(Wajah, sidik jari, dan kunci layar apa pun memenuhi persyaratan; wajah terdaftar dan menggantikan PIN)

"Gunakan wajah atau PIN Anda untuk melanjutkan"
(Wajah, sidik jari, dan kunci layar apa pun memenuhi persyaratan; wajah dan PIN terdaftar)

"Gunakan biometrik atau kunci layar"
(Wajah, sidik jari, dan kunci layar apa pun memenuhi persyaratan)

Validasi

Penerapan biometrik Anda harus lulus pengujian berikut:

  • CTS BiometricManager
  • CTS BiometricPrompt (pengujian dasar, pengujian mendalam mengandalkan verifier)
  • Bagian Uji Biometrik CtsVerifier: Harus lulus satu per satu dengan setiap modalitas yang didukung perangkat

Selain itu, jika perangkat Anda mendukung biometrik yang memiliki HIDL AOSP (fingerprint@2.1, fingerprint@2.2, face1.0), perangkat tersebut harus lulus uji VTS yang relevan (fingerprint, face)