Biyometrik veriler, cihazla kimliğinizi doğrulamanın daha kolay ancak muhtemelen daha az güvenli bir yoludur. Katmanlı kimlik doğrulama modelinde birincil kimlik doğrulama (PIN, desen ve şifre gibi bilgi faktörüne dayalı modüller) en yüksek düzeyde güvenlik sağlar. Biyometrikler, kimlik doğrulamanın ikinci katmanında yer alır ve kolaylık ile güvenlik arasında denge sağlar. Android CDD, üç biyometri gücü sınıfı tanımlar: 3. sınıf (eski adıyla Güçlü), 2. sınıf (eski adıyla Zayıf) ve 1. sınıf (eski adıyla Kolaylık). Her sınıfın bir dizi ön koşulu, ayrıcalığı ve kısıtlaması vardır. Daha fazla bilgi için lütfen yukarıdaki CDD'ye bakın. Üç sınıfın da kilit ekranıyla entegre olmasına izin verilir ancak yalnızca güçlü ve zayıf kimlik doğrulayıcıların android.hardware.biometrics API'leriyle entegre olmasına izin verilir. Bu tabloda her kimlik doğrulayıcı ve destekledikleri işlevler açıklanmaktadır.
Authenticator | Kilit Ekranı | BiometricPrompt Entegrasyonu | Anahtar deposu (zamana dayalı anahtar) | Anahtar deposu (işleme dayalı anahtar) |
---|---|---|---|---|
BIOMETRIC_STRONG (3. sınıf) | Evet | Evet | Evet | Evet |
BIOMETRIC_WEAK (2. Sınıf) | Evet | Evet | Hayır | Hayır |
BIOMETRIC_CONVENIENCE (Sınıf 1) |
Evet | Hayır | Hayır | Hayır |
DEVICE_CREDENTIAL | Evet | Evet | Evet | Evet |
Android çerçevesi, yüz ve parmak izi biyometrik kimlik doğrulaması için destek içerir. Android, diğer biyometri modlarını (ör. iris) desteklemek için özelleştirilebilir. Ancak biyometri entegrasyonu, modaliteye değil biyometri güvenliğine bağlıdır. Biyometrik güvenlik özellikleri hakkında daha fazla bilgi için Biyometrik Kilit Açma Güvenliğini Ölçme başlıklı makaleyi inceleyin.
Kaynak
Android 12
- Kimlik doğrulama için BiometricPrompt kullanan uygulamalara yerelleştirilmiş dizeler sağlayan BiometricManager.Strings API'sini kullanıma sunar. Bu dizelerin cihaz bilincine sahip olması ve hangi kimlik doğrulama türlerinin kullanılabileceği hakkında daha fazla bilgi sağlaması amaçlanmıştır.
- Ekranın altındaki parmak izi sensörü (UDFPS) desteği dahildir.
Android 11
- Geliştiricilerin, uygulamalarının kabul ettiği kimlik doğrulama türlerini belirtmek için kullanabileceği sabitler sağlayan BiometricManager.Authenticators arayüzünü kullanıma sunar.
- Geliştiricilerin kullanıcıyı uygulamalarının şartlarını karşılayan bir kimlik doğrulama yöntemine kaydolmaya yönlendirmek için kullanabileceği
ACTION_BIOMETRIC_ENROLL
intent işlemini ekler. - Geliştiricilerin, kullanıcının biyometrik kimlik bilgisi mi yoksa cihaz kimlik bilgisi mi kullanarak kimlik doğrulaması yapıp yapmadığını kontrol etmek için kullanabileceği
AuthenticationResult#getAuthenticationType()
method parametresini ekler. - BiometricPrompt sınıfındaki kullanım başına kimlik doğrulama anahtarları için ek destek sağlar.
Android 10
- Geliştiricilerin biyometrik kimlik doğrulamanın kullanılabilirliğini sorgulamak için kullanabileceği
BiometricManager
sınıfını kullanıma sunar. BiometricPrompt
için parmak izi ve yüz kimlik doğrulama entegrasyonu içerir
Android 9
- Yalnızca
BiometricPrompt
için parmak izi entegrasyonunu içerir. - FingerprintManager sınıfı kullanımdan kaldırıldı. Paketlenmiş ve sistem uygulamalarınız bu sınıfı kullanıyorsa bunları
BiometricPrompt
veBiometricManager
kullanacak şekilde güncelleyin. FingerprintManager
CTS doğrulayıcı testleri,BiometricPromptBoundKeysTest
kullanarakBiometricPrompt
'i test edecek şekilde güncellendi.
Uygulama
Kullanıcıların ve geliştiricilerin sorunsuz bir biyometri deneyimi yaşamasını sağlamak için biyometri paketinizi BiometricPrompt
, BiometricManager
ve ACTION_BIOMETRIC_ENROLL
API'leriyle entegre edin. Biyometrik sensörlere sahip cihazlar bu güvenlik koşullarına uymalıdır.Ayrıca tüm uygulamalar CtsBiometricsTestCases CTS modülünü geçmelidir.
Biyometrik paketinizi ACTION_BIOMETRIC_ENROLL API ile entegre etmek için:
- Kayıt akışınızı sunmak için BiometricEnrollActivity'yi değiştirin. Biyometrinizin yalnızca istenen gücü karşılaması durumunda sunulabileceğini unutmayın. Cihazınız birden fazla yöntemi destekliyorsa bu işlem, kullanıcının aralarından seçim yapabileceği bir liste gösterir.

HAL uygulama yönergeleri
Biyometrik verilerin sızmamasını ve bir kullanıcı cihazdan kaldırıldığında kaldırılmasını sağlamak için aşağıdaki biyometrik HAL yönergelerini uygulayın:
- Ham biyometrik verilere veya türevlerine (ör. şablonlar) hiçbir zaman güvenli ve izole ortam (ör. TEE veya Güvenli Öğe) dışından erişilemediğinden emin olun. Depolanan tüm veriler, yalnızca TEE'nin (Güvenilir Yürütme Ortamı) bildiği cihaza özgü bir anahtarla şifrelenmelidir. Donanım bunu destekliyorsa donanım erişimini güvenli ve izole edilmiş ortama sınırlayın ve SELinux politikasıyla koruyun. Tüm cihaz dosyalarında açık bir SELinux politikası uygulayarak iletişim kanalına (ör. SPI, I2C) yalnızca güvenli ve izole ortamdan erişilmesini sağlayın.
- Veri ihlallerini ve diğer saldırıları önlemek için biyometrik veri toplama, kayıt ve tanıma işlemleri güvenli ve yalıtılmış bir ortamda yapılmalıdır. Bu şart yalnızca 3. sınıf (eski adıyla güçlü) ve 2. sınıf (eski adıyla zayıf) biyometriler için geçerlidir.
- Tekrar oynatma saldırılarına karşı koruma sağlamak için biyometrik şablonları cihaza özel bir özel anahtarla imzalayın. Gelişmiş Şifreleme Standardı (AES) için şablonu mutlak dosya sistemi yolu, grup ve biyometri kimliğiyle imzalamanız gerekir. Böylece şablon dosyaları başka bir cihazda veya bunları aynı cihaza kaydeden kullanıcı dışındaki kişiler tarafından kullanılamaz. Örneğin, aynı cihazda ya da başka bir cihazda farklı bir kullanıcının biyometri verilerinin kopyalanmasını engelleyin.
- TEE dışında veri depolamanız gerekiyorsa
setActiveUser() HIDL method
tarafından sağlanan dosya sistemi yolunu kullanın veya kullanıcı kaldırıldığında tüm kullanıcı şablonu verilerini silmek için başka bir yol sağlayın. Bunun nedeni, kullanıcı verilerinin sızmasını önlemektir. Bu yolu kullanmayan cihazlar, kullanıcı kaldırıldıktan sonra temizleme işlemini yapmalıdır. CDD, biyometrik verilerin ve türetilmiş dosyaların şifrelenmiş olarak depolanmasını zorunlu kılar (özellikle TEE'de değilse). Bu, güvenli ve izole ortamın depolama alanı gereksinimleri nedeniyle mümkün değilse kullanıcı kaldırıldığında veya cihaz silindiğinde verilerin kaldırılmasını sağlamak için kanca ekleyin. LockSettingsService.removeBiometricsForUser() yöntemine bakın.
Özelleştirme
Cihazınız birden fazla biyometriyi destekliyorsa kullanıcı, ayarlarda varsayılan bir biyometri seçebilir. BiometricPrompt
uygulamanız, kullanıcı açıkça geçersiz kılmadığı sürece varsayılan olarak 3. Sınıf (eski adıyla Güçlü) biyometrik yöntemi tercih etmelidir. Ardından, biyometrik yöntemle ilgili riskleri açıklayan bir uyarı mesajı gösterilmelidir (ör. Fotoğrafınız cihazınızın kilidini açabilir).
Cihaza özel kimlik doğrulama dizeleri
Android 12'den itibaren bağlama dayalı kimlik doğrulama dizeleri, BiometricManager.Strings API aracılığıyla geliştiricilere sunulur. Bu API tarafından döndürülen kaynak değerlerini özelleştirerek cihaza özgü dizeler uygulayabilirsiniz. Bu durumda, yeni dizelerin cihazın desteklediği tüm yerel ayarlar için çevrildiğinden emin olun. Ayrıca, aşağıdaki özelliklerin korunduğundan emin olun:
Yöntem |
Dizenin amacı |
Dahil edilecek kimlik doğrulama türleri |
Biyometrik ve ekran kilidi kullanılabiliyorsa |
---|---|---|---|
getButtonLabel() |
BiometricPrompt'ı tetikleyen düğme için etiket |
Yalnızca kimlik doğrulayıcı şartlarını karşılayan kaydedilmiş türler (mümkünse) |
Yalnızca biyometrik dizesi kullanın ("Parmak izi kullan" gibi) |
getPromptMessage() |
Kimlik doğrulama sırasında BiometricPrompt'ta gösterilen mesaj |
Yalnızca kimlik doğrulayıcı şartlarını karşılayan kaydedilmiş türler (mümkünse) |
Biyometrik ve ekran kilidi için birleşik dize kullanın (ör. "Devam etmek için parmak izinizi veya PIN'inizi kullanın") |
getSettingName() |
Kimlik doğrulama için BiometricPrompt'ı etkinleştiren bir ayarın adı |
Kimlik doğrulayıcı şartlarını karşılayan ve cihaz tarafından desteklenen tüm türler (kaydolmamış olsalar bile) |
Biyometrik ve ekran kilidi için birleşik dize kullanın ("Parmak izi veya ekran kilidi kullan" gibi) |
Örneğin, kayıtlı bir yüz, kayıtlı bir PIN ve kayıtlı parmak izi olmayan Sınıf 3 parmak izi sensörü bulunan bir cihazı düşünün. Aşağıdaki tabloda, izin verilen kimlik doğrulayıcıların her kombinasyonu ve çağrılan BiometricManager.Strings yöntemi için örnek dizeler verilmiştir:
İzin verilen kimlik doğrulayıcılar |
getButtonLabel() |
getPromptMessage() |
getSettingName() |
---|---|---|---|
3. sınıf biyometri (BIOMETRIC_STRONG) |
"Parmak izi kullan" (Yalnızca parmak izi kimlik doğrulayıcı şartlarını karşılar) |
"Devam etmek için parmak izinizi kullanın" (Yalnızca parmak izi kimlik doğrulayıcı koşullarını karşılar) |
"Parmak izi kullan" (Yalnızca parmak izi kimlik doğrulayıcı şartlarını karşılar) |
2. sınıf biyometri (BIOMETRIC_WEAK) |
"Yüzü kullan" (Yüz ve parmak izi koşulları karşılanıyorsa yalnızca yüz kaydedilir) |
"Devam etmek için yüzünüzden kimlik doğrulama yapın" (Yüz ve parmak izi koşulları karşılanıyorsa yalnızca yüz kaydedilir) |
"Yüz tanıma veya parmak izi kullan" (Yüz tanıma ve parmak izi koşulları karşılanıyorsa ve cihaz her ikisini de destekliyorsa) |
Ekran kilidi (DEVICE_CREDENTIAL) |
"PIN kullan" (Herhangi bir ekran kilidi koşulları karşılar; PIN kaydedilir) |
"Devam etmek için PIN'inizi girin" (Herhangi bir ekran kilidi koşulları karşılar; PIN kayıtlı) |
"Ekran kilidi kullan" (Herhangi bir ekran kilidi koşulları karşılar) |
3. sınıf biyometrik VEYA ekran kilidi |
"PIN kullan" (Parmak izi ve ekran kilidi koşulları karşılanıyorsa yalnızca PIN kaydedilir) |
"Devam etmek için PIN'inizi girin" (Parmak izi ve tüm ekran kilitleri koşulları karşılar; yalnızca PIN kaydedilir) |
"Parmak izi veya ekran kilidi kullan" (Parmak izi ve tüm ekran kilitleri koşulları karşılar) |
2. sınıf biyometrik VEYA ekran kilidi |
"Yüzü kullan" (Yüz, parmak izi ve tüm ekran kilitleri koşulları karşılar; yüz kaydedilir ve PIN'in yerini alır) |
"Devam etmek için yüzünüzü veya PIN'inizi kullanın" (Yüz, parmak izi ve tüm ekran kilitleri koşulları karşılar; yüz ve PIN kaydedilmiştir) |
"Biyometrik veya ekran kilidi kullan" (Yüz, parmak izi ve tüm ekran kilitleri koşulları karşılar) |
Doğrulama
Biyometrik uygulamanız aşağıdaki testleri geçmelidir:
- CTS BiometricManager
- CTS BiometricPrompt (sağlıklı olup olmadığını kontrol etme, ayrıntılı test doğrulayıcıya bağlıdır)
- CtsVerifier Biyometri Testi bölümü: Cihazın desteklediği her modaliteyle ayrı ayrı geçmelidir
Ayrıca, cihazınız AOSP HIDL (fingerprint@2.1, fingerprint@2.2, face1.0) içeren bir biyometriyi destekliyorsa ilgili VTS testini (fingerprint, face) geçmelidir.