Biyometri

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_ENROLL intent 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 BiometricManager sınıfını tanıtır.
  • BiometricPrompt için parmak izi ve yüzle kimlik doğrulama entegrasyonunu 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 bunun yerine BiometricPrompt ve BiometricManager kullanacak şekilde güncelleyin.
  • FingerprintManager CTS doğrulayıcı testleri, BiometricPromptBoundKeysTest kullanılarak BiometricPrompt test 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:

  1. 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.
BiometricPrompt mimarisi
Şekil 1. BiometricPrompt architecture

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 method tarafı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:

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.