Biometrik menawarkan cara yang lebih nyaman, namun mungkin kurang aman untuk mengonfirmasi identitas Anda dengan perangkat. Di bawah model autentikasi berjenjang, autentikasi primer (yaitu modalitas berbasis faktor pengetahuan seperti PIN, pola, dan kata sandi) memberikan tingkat keamanan tertinggi. Biometrik berada pada tingkat otentikasi sekunder, menawarkan keseimbangan kenyamanan dan keamanan. CDD Android mendefinisikan tiga kelas kekuatan biometrik: Kelas 3 (sebelumnya Kuat), Kelas 2 (sebelumnya Lemah), dan Kelas 1 (sebelumnya Kenyamanan). Setiap kelas memiliki serangkaian prasyarat, hak istimewa, dan batasan - silakan lihat CDD di atas untuk detail lebih lanjut. Ketiga kelas tersebut diizinkan untuk berintegrasi dengan layar kunci, namun hanya pengautentikasi Kuat dan Lemah yang diizinkan untuk berintegrasi dengan API android.hardware.biometrics. Tabel ini menjelaskan setiap pengautentikasi dan fungsionalitas yang didukungnya.
Pengautentik | Layar kunci | Integrasi BiometricPrompt | Keystore (kunci berbasis waktu) | Keystore (kunci berbasis operasi) |
---|---|---|---|---|
BIOMETRIC_STRONG (Kelas 3) | Ya | Ya | Ya | Ya |
BIOMETRIC_WEAK (Kelas 2) | Ya | Ya | TIDAK | TIDAK |
BIOMETRIC_CONVENIENCE (Kelas 1) | Ya | TIDAK | TIDAK | TIDAK |
DEVICE_CREDENTIAL | Ya | Ya | Ya | Ya |
Kerangka kerja Android mencakup dukungan untuk otentikasi biometrik wajah dan sidik jari. Android dapat dikustomisasi untuk mendukung modalitas biometrik lainnya (seperti Iris). Namun, integrasi biometrik akan bergantung pada keamanan biometrik, bukan modalitas. Untuk 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 peka terhadap perangkat dan memberikan lebih banyak kekhususan tentang jenis autentikasi mana yang dapat digunakan.
- Termasuk dukungan sensor sidik jari di bawah layar (UDFPS).
Android 11
- Memperkenalkan antarmuka BiometricManager.Authenticators , yang menyediakan konstanta yang dapat digunakan pengembang untuk menentukan jenis autentikasi yang diterima oleh aplikasi mereka.
- Menambahkantindakan maksud
ACTION_BIOMETRIC_ENROLL
, yang dapat digunakan pengembang untuk mengarahkan pengguna agar mendaftarkan metode autentikasi yang memenuhi persyaratan aplikasi mereka. - Menambahkan metode
AuthenticationResult #getAuthenticationType ()
, yang dapat digunakan pengembang untuk memeriksa apakah pengguna mengautentikasi menggunakan kredensial biometrik atau kredensial perangkat. - Memberikan dukungan tambahan untuk kunci autentikasi per penggunaan dalam kelas BiometricPrompt.
Android 10
- Memperkenalkan kelas
BiometricManager
yang dapat digunakan pengembang untuk menanyakan ketersediaan autentikasi biometrik. - Termasuk integrasi sidik jari dan otentikasi wajah untuk
BiometricPrompt
Android 9
- Menyertakan integrasi sidik jari hanya untuk
BiometricPrompt
. - Menghentikan penggunaan kelas FingerprintManager. Jika paket dan aplikasi sistem Anda menggunakan kelas ini, perbarui aplikasi tersebut untuk menggunakan
BiometricPrompt
danBiometricManager
sebagai gantinya. - Memperbarui pengujian verifikator CTS
FingerprintManager
untuk mengujiBiometricPrompt
menggunakanBiometricPromptBoundKeysTest
.
Penerapan
Untuk memastikan bahwa pengguna dan pengembang mendapatkan pengalaman biometrik yang lancar, integrasikan tumpukan biometrik Anda dengan BiometricPrompt
, BiometricManager
, dan ACTION_BIOMETRIC_ENROLL
API. Perangkat dengan sensor biometrik harus mematuhi persyaratan kekuatan ini. Selain itu, semua implementasi harus lulus modul CtsBiometricsTestCases CTS.
Untuk mengintegrasikan tumpukan biometrik Anda dengan API ACTION_BIOMETRIC_ENROLL:
- Ubah BiometricEnrollActivity untuk menyajikan 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](https://source.android.google.cn/static/docs/security/images/biometric-stack.png?authuser=3&hl=id)
Pedoman penerapan HAL
Ikuti panduan HAL biometrik berikut untuk memastikan data biometrik tidak bocor dan terhapus saat pengguna dikeluarkan dari perangkat:
- Pastikan data biometrik mentah atau turunannya (seperti templat) tidak pernah dapat diakses dari luar lingkungan terisolasi yang aman (seperti TEE atau Elemen Aman). Semua data yang disimpan harus dienkripsi dengan kunci khusus perangkat yang hanya diketahui oleh TEE (Trusted Execution Environment). Jika perangkat keras mendukungnya, batasi akses perangkat keras ke lingkungan terisolasi yang aman dan lindungi dengan kebijakan SELinux. Jadikan saluran komunikasi (misalnya, SPI, I2C) hanya dapat diakses oleh lingkungan terisolasi yang aman dengan kebijakan SELinux yang eksplisit pada semua file perangkat.
- Akuisisi, pendaftaran, dan pengenalan biometrik harus dilakukan 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 replay, tanda tangani templat biometrik dengan kunci pribadi khusus perangkat. Untuk Advanced Encryption Standard (AES), minimal menandatangani template dengan jalur sistem file absolut, grup, dan ID biometrik sehingga file template tidak dapat dioperasikan di perangkat lain atau untuk siapa pun selain pengguna yang mendaftarkannya di perangkat yang sama. . Misalnya, mencegah penyalinan data biometrik dari pengguna 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 sediakan 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 dibersihkan setelah pengguna dihapus. CDD mewajibkan agar data biometrik dan file turunannya disimpan terenkripsi - terutama jika tidak di TEE. Jika hal ini tidak dapat dilakukan karena persyaratan penyimpanan di lingkungan terisolasi yang aman, tambahkan kait untuk memastikan penghapusan data saat pengguna atau perangkat dihapus terhapus. Lihat LockSettingsService.removeBiometricsForUser()
Kustomisasi
Jika perangkat Anda mendukung beberapa biometrik, pengguna harus dapat menentukan default dalam pengaturan. Penerapan BiometricPrompt
Anda harus memilih biometrik Kelas 3 (sebelumnya Kuat) sebagai default kecuali jika pengguna secara eksplisit menimpanya, maka pesan peringatan perlu ditampilkan menjelaskan risiko yang terkait dengan biometrik tersebut (misalnya, Foto Anda mungkin membuka kunci perangkat Anda )
String autentikasi khusus perangkat
Mulai Android 12, string autentikasi kontekstual tersedia untuk developer melalui BiometricManager.Strings API. Anda dapat menyesuaikan nilai sumber daya yang dikembalikan oleh API ini untuk mengimplementasikan string khusus perangkat. Jika ya, pastikan string baru diterjemahkan untuk semua lokal yang didukung perangkat. Selain itu, pastikan properti berikut dipertahankan:
metode | Tujuan tali | Jenis autentikasi yang akan disertakan | Jika biometrik dan kunci layar keduanya memungkinkan |
---|---|---|---|
dapatkanButtonLabel() | Label untuk tombol yang memicu BiometricPrompt | Hanya tipe terdaftar (jika memungkinkan) yang memenuhi persyaratan pengautentikasi | Gunakan string biometrik saja (misalnya, "Gunakan sidik jari") |
dapatkanPromptMessage() | Pesan ditampilkan di BiometricPrompt saat mengautentikasi | Hanya tipe terdaftar (jika memungkinkan) yang memenuhi persyaratan pengautentikasi | Gunakan gabungan string biometrik dan kunci layar (misalnya "Gunakan sidik jari atau PIN Anda untuk melanjutkan") |
dapatkan NamaPengaturan() | Nama pengaturan yang mengaktifkan BiometricPrompt untuk autentikasi | Semua jenis yang didukung oleh perangkat (meskipun tidak terdaftar) yang memenuhi persyaratan pengautentikasi | Gunakan gabungan string biometrik dan kunci layar (misalnya, "Gunakan sidik jari atau kunci layar") |
Misalnya, perangkat yang memiliki sensor wajah Kelas 2 dengan wajah terdaftar , PIN terdaftar, dan sensor sidik jari Kelas 3 tanpa sidik jari terdaftar . Tabel berikut menyediakan contoh string untuk setiap kombinasi pengautentikasi yang diizinkan dan metode BiometricManager.Strings yang dipanggil:
Pengautentikasi yang diizinkan | dapatkanButtonLabel() | dapatkanPromptMessage() | dapatkan NamaPengaturan() |
---|---|---|---|
Biometrik kelas 3 ( BIOMETRIC_STRONG ) | "Gunakan sidik jari" (Hanya sidik jari yang memenuhi persyaratan pengautentikasi) | "Gunakan sidik jari Anda untuk melanjutkan" (Hanya sidik jari yang memenuhi persyaratan pengautentikasi) | "Gunakan sidik jari" (Hanya sidik jari yang memenuhi persyaratan pengautentikasi) |
Biometrik kelas 2 ( BIOMETRIC_WEAK ) | "Gunakan wajah" (Wajah dan sidik jari memenuhi persyaratan; hanya wajah yang terdaftar) | "Gunakan wajahmu 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 terdaftar) | "Masukkan PIN Anda untuk melanjutkan" (Kunci layar apa pun memenuhi persyaratan; PIN terdaftar) | "Gunakan kunci layar" (Kunci layar apa pun memenuhi persyaratan) |
Kunci layar ATAU biometrik kelas 3 | "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 terdaftar) | "Gunakan sidik jari atau kunci layar" (Sidik jari dan kunci layar apa pun memenuhi persyaratan) |
Kunci layar ATAU biometrik kelas 2 | "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 didaftarkan) | "Gunakan biometrik atau kunci layar" (Wajah, sidik jari, dan kunci layar apa pun memenuhi persyaratan) |
Validasi
Penerapan biometrik Anda harus lulus tes berikut:
- Manajer Biometrik CTS
- CTS BiometricPrompt (kewarasan, pengujian mendalam bergantung pada verifikator)
- Bagian Tes Biometrik CtsVerifier : Harus lulus secara individual dengan setiap modalitas yang didukung perangkat
Selain itu, jika perangkat Anda mendukung biometrik yang memiliki AOSP HIDL ( sidik jari@2.1 , sidik jari@2.2 , face1.0 ), perangkat tersebut harus lulus tes VTS yang relevan ( sidik jari , wajah )