Biyometri, kimliğinizi cihazla doğrulamanın daha kolay ancak potansiyel olarak daha az güvenli bir yoludur. Katmanlı kimlik doğrulama modelinde, birincil kimlik doğrulama (yani PIN, desen ve şifre gibi bilgi faktörüne dayalı yöntemler) en yüksek güvenlik düzeyini sağlar. Biyometri, ikinci düzey kimlik doğrulama yöntemidir ve hem kolaylık hem de güvenlik 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'yi inceleyin. Üç sınıfın da kilit ekranıyla entegrasyonuna izin verilir ancak yalnızca Güçlü ve Zayıf kimlik doğrulayıcıların android.hardware.biometrics API'leriyle entegrasyonuna izin verilir. Bu tabloda her kimlik doğrulayıcı ve desteklediği 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 (1. Sınıf) |
Evet | Hayır | Hayır | Hayır |
| DEVICE_CREDENTIAL | Evet | Evet | Evet | Evet |
Android çerçevesi, yüz ve parmak izi biyometrik kimlik doğrulama desteği içerir. Android, diğer biyometrik yöntemleri (ör. iris) destekleyecek şekilde özelleştirilebilir. Ancak biyometrik entegrasyon, yönteme değil biyometrik güvenliğe 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 dizeler, cihaza duyarlı olacak ve hangi kimlik doğrulama türlerinin kullanılabileceği hakkında daha fazla bilgi verecek şekilde tasarlanmıştır.
- Ekranın alt kısmındaki parmak izi sensörü (UDFPS) desteği içerir.
Android 11
- Geliştiricilerin uygulamaları tarafından kabul edilen kimlik doğrulama türlerini belirtmek için kullanabileceği sabitleri 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_ENROLLintent action'ı ekler. - Geliştiricilerin, kullanıcının biyometrik kimlik bilgisi veya cihaz kimlik bilgisi kullanarak kimlik doğrulaması yapıp yapmadığını kontrol etmek için kullanabileceği
AuthenticationResult#getAuthenticationType()yöntemini ekler. - BiometricPrompt sınıfında 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
BiometricManagersınıfını tanıtır. BiometricPromptiçin parmak izi ve yüzle kimlik doğrulama entegrasyonunu içerir.
Android 9
- Yalnızca
BiometricPromptiç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 bunun yerine
BiometricPromptveBiometricManagerkullanacak şekilde güncelleyin. FingerprintManagerCTS doğrulayıcı testleri,BiometricPromptBoundKeysTestkullanılarakBiometricPrompttest edilecek şekilde güncellendi.
Uygulama
Kullanıcıların ve geliştiricilerin sorunsuz bir biyometrik deneyim yaşamasını sağlamak için biyometrik yığını BiometricPrompt, BiometricManager ve ACTION_BIOMETRIC_ENROLL API'leriyle entegre edin. Biyometrik sensörlere sahip cihazlar bu güç
şartlarına uymalıdır.Ayrıca, tüm uygulamalar CtsBiometricsTestCases CTS modülünü geçmelidir.
Biyometrik yığını ACTION_BIOMETRIC_ENROLL API ile entegre etmek için:
- Kaydolma akışınızı sunmak için BiometricEnrollActivity'yi değiştirin. Biyometrinizin yalnızca istenen güce sahip olması durumunda sunulabileceğini unutmayın. Cihazınız birden fazla yöntemi destekliyorsa bu işlem, kullanıcının seçim yapabileceği bir liste sunmalıdır.
HAL uygulama yönergeleri
Biyometrik verilerin sızdırılmaması ve bir kullanıcı cihazdan kaldırıldığında kaldırılması için aşağıdaki biyometrik HAL yönergelerini uygulayın:
- Ham biyometrik verilerin veya türevlerinin (ör. şablonlar) hiçbir zaman güvenli ve izole ortamın (ör. TEE veya Güvenli Element) dışından erişilemediğinden emin olun. Depolanan tüm veriler, yalnızca Güvenilir Yürütme Ortamı (TEE) tarafından bilinen cihaza özel bir anahtarla şifrelenmelidir. Donanım destekliyorsa donanım erişimini güvenli ve izole edilmiş ortamla sınırlayın ve SELinux ilkesiyle koruyun. İletişim kanalını (ör. SPI, I2C) yalnızca tüm cihaz dosyalarında açık bir SELinux politikası bulunan güvenli yalıtılmış ortama erişilebilir hale getirin.
- Veri ihlallerini ve diğer saldırıları önlemek için biyometrik verilerin alınması, kaydedilmesi ve tanınması güvenli ve izole edilmiş ortamda yapılmalıdır. Bu koşul yalnızca 3. sınıf (eski adıyla Güçlü) ve 2. sınıf (eski adıyla Zayıf) biyometrik veriler için geçerlidir.
- Yeniden oynatma saldırılarına karşı koruma sağlamak için biyometrik şablonları özel ve cihaza özgü bir anahtarla imzalayın. Gelişmiş Şifreleme Standardı (AES) için şablon dosyalarının başka bir cihazda veya aynı cihaza kaydolan kullanıcı dışında herhangi biri tarafından kullanılamayacak şekilde, şablonu mutlak dosya sistemi yolu, grup ve biyometrik kimlikle imzalamanız gerekir. Örneğin, aynı cihazda farklı bir kullanıcının veya başka bir cihazın biyometrik verilerinin kopyalanmasını önleyin.
- Verileri TEE dışında saklamanız gerekiyorsa
setActiveUser() HIDL methodtarafından sağlanan dosya sistemi yolunu kullanın veya kullanıcı kaldırıldığında tüm kullanıcı şablonu verilerini silmenin başka bir yolunu sağlayın. Bunun nedeni, kullanıcı verilerinin sızmasını önlemektir. Bu yolu kullanmayan cihazlar, kullanıcı kaldırıldıktan sonra temizlenmelidir. CDD, biyometrik verilerin ve türetilmiş dosyaların şifrelenmiş olarak depolanmasını zorunlu kılar. Bu durum, özellikle TEE'de geçerli değilse geçerlidir. Güvenli ve izole edilmiş ortamın depolama gereksinimleri nedeniyle bu mümkün değilse kullanıcı kaldırıldığında veya cihaz silindiğinde verilerin kaldırılmasını sağlamak için kancalar ekleyin. LockSettingsService.removeBiometricsForUser()
Özelleştirme
Cihazınız birden fazla biyometriyi destekliyorsa kullanıcı, ayarlarda varsayılan bir biyometri belirleyebilir. 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ü) biyometriyi tercih etmelidir. Bu durumda, biyometriyle ilişkili riskleri açıklayan bir uyarı mesajı gösterilmelidir (örneğin, 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ştiricilerin kullanımına sunulur. Cihaza özel dizeleri uygulamak için bu API tarafından döndürülen kaynak değerlerini özelleştirebilirsiniz. Bu durumda, yeni dizelerin cihazın desteklediği tüm yerel ayarlar için çevrildiğinden emin olun. Ayrıca, aşağıdaki özelliklerin korunmasını sağlayın:
Yöntem |
String purpose |
Eklenecek kimlik doğrulama türleri |
Biyometri ve ekran kilidi kullanılabiliyorsa |
|---|---|---|---|
getButtonLabel() |
BiometricPrompt'u tetikleyen bir düğmenin etiketi |
Yalnızca kimlik doğrulayıcı şartlarını karşılayan kayıtlı türler (mümkünse) |
Yalnızca biyometri dizesini kullanın (ör. "Parmak izi kullan") |
getPromptMessage() |
Kimlik doğrulama sırasında BiometricPrompt'ta gösterilen mesaj |
Yalnızca kimlik doğrulayıcı şartlarını karşılayan kayıtlı türler (mümkünse) |
Birleştirilmiş biyometri ve ekran kilidi dizesi kullanın (ör. "Devam etmek için parmak izinizi veya PIN'inizi kullanın") |
getSettingName() |
Kimlik doğrulama için BiometricPrompt'u etkinleştiren bir ayarın adı |
Kimlik doğrulayıcı şartlarını karşılayan, cihaz tarafından desteklenen tüm türler (kayıtlı olmasalar bile) |
Birleştirilmiş biyometri ve ekran kilidi dizesi kullanın (ör. "Parmak izi veya ekran kilidi kullan") |
Örneğin, kayıtlı yüz ve kayıtlı PIN içeren 2. Sınıf yüz sensörüne ve kayıtlı parmak izi olmayan 3. Sınıf parmak izi sensörüne sahip bir cihazı ele alalım. 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 izini kullan" (Yalnızca parmak izi, kimlik doğrulayıcı şartlarını karşılar) |
"Devam etmek için parmak izinizi kullanın" (Kimlik doğrulayıcı koşullarını yalnızca parmak izi karşılar) |
"Parmak izini 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 şartları karşılıyor; yalnızca yüz kaydedildi) |
"Devam etmek için yüzünüzü kullanın" (Yüz ve parmak izi şartları karşılıyor; yalnızca yüz kaydedildi) |
"Yüz tanıma veya parmak izi kullan" (Yüz tanıma ve parmak izi, şartları karşılıyor; cihaz her ikisini de destekliyor) |
Ekran kilidi (DEVICE_CREDENTIAL) |
"PIN kullan" (Herhangi bir ekran kilidi koşulları karşılar; PIN kaydedilir) |
"Devam etmek için PIN'inizi girin" (Tüm ekran kilitleri şartları karşılar; PIN kaydedilir) |
"Ekran kilidi kullan" (Herhangi bir ekran kilidi şartları karşılar) |
3. sınıf biyometrik kimlik VEYA ekran kilidi |
"PIN kullan" (Parmak izi ve herhangi bir ekran kilidi koşulları karşılar; yalnızca PIN kaydedilir) |
"Devam etmek için PIN'inizi girin" (Parmak izi ve herhangi bir ekran kilidi koşulları karşılar; yalnızca PIN kaydedilir) |
"Parmak izi veya ekran kilidi kullan" (Parmak izi ve herhangi bir ekran kilidi şartları karşılar) |
2. sınıf biyometrik kimlik VEYA ekran kilidi |
"Yüzü kullan" (Yüz, parmak izi ve herhangi bir ekran kilidi gereksinimleri 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 herhangi bir ekran kilidi şartları karşılar; yüz ve PIN kaydedilir) |
"Biyometri veya ekran kilidi kullan" (Yüz, parmak izi ve tüm ekran kilitleri şartları karşılar) |
Doğrulama
Biyometrik uygulamanız aşağıdaki testleri geçmelidir:
- CTS BiometricManager
- CTS BiometricPrompt (sanity, in-depth testing relies on verifier)
- CtsVerifier Biyometri Testi bölümü: Cihazın desteklediği her yöntemle ayrı ayrı geçilmelidir.
Ayrıca, cihazınız AOSP HIDL'ye (fingerprint@2.1, fingerprint@2.2, face1.0) sahip bir biyometriyi destekliyorsa ilgili VTS testini (fingerprint, face) geçmesi gerekir.