Biyometri, kimliğinizi bir cihazla doğrulamak için daha uygun, ancak potansiyel olarak daha az güvenli bir yol sunar. Katmanlı kimlik doğrulama modeli altında, birincil kimlik doğrulama (PIN, desen ve parola gibi bilgi faktörüne dayalı yöntemler) en yüksek düzeyde güvenlik sağlar. Biyometri, bir kolaylık ve güvenlik dengesi sunan, kimlik doğrulamanın ikinci aşamasındadır. Android CDD , üç biyometrik güç sınıfını tanımlar: Sınıf 3 (önceden Güçlü), Sınıf 2 (önceden Zayıf) ve Sınıf 1 (önceden Kolaylık). Her sınıfın bir dizi önkoşul, ayrıcalık ve kısıtlaması vardır - lütfen daha fazla ayrıntı için yukarıdaki CDD'ye bakın. Her üç sınıfın da kilit ekranı ile entegre olmasına izin verilir, ancak yalnızca Güçlü ve Zayıf kimlik doğrulayıcıların android.hardware.biometrics API'leri ile entegre olmasına izin verilir. Bu tablo, her bir kimlik doğrulayıcıyı ve destekledikleri işlevleri açıklar.
doğrulayıcı | kilit ekranı | Biyometrik İstem Entegrasyonu | Anahtar deposu (zamana dayalı anahtar) | Anahtar deposu (işlem tabanlı anahtar) |
---|---|---|---|---|
BIOMETRIC_STRONG (Sınıf 3) | Evet | Evet | Evet | Evet |
BIOMETRIC_WEAK (Sınıf 2) | Evet | Evet | Numara | Numara |
BIOMETRIC_CONVENIENCE (1. sınıf) | Evet | Numara | Numara | Numara |
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 biyometrik modaliteleri (Iris gibi) desteklemek için özelleştirilebilir. Ancak biyometrik entegrasyon, modaliteye değil biyometrik güvenliğe bağlı olacaktır. Biyometrik güvenlik özellikleri hakkında daha fazla ayrıntı için, bkz. Biyometrik Kilit Açma Güvenliğini Ölçme .
Kaynak
Android 12
- Kimlik doğrulama için BiometricPrompt kullanan uygulamalar için yerelleştirilmiş dizeler sağlayan BiometricManager.Strings API'sini sunar. Bu dizelerin, cihaza duyarlı olması ve hangi kimlik doğrulama türlerinin kullanılabileceği konusunda daha fazla kesinlik sağlaması amaçlanmıştır.
- Ekran altı 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 kullanabilecekleri sabitler sağlayan BiometricManager.Authenticators arabirimini sunar.
- Geliştiricilerin kullanıcıyı uygulamalarının gereksinimlerini karşılayan bir kimlik doğrulama yöntemini kaydettirmeye yönlendirmek için kullanabilecekleri
ACTION_BIOMETRIC_ENROLL
amaç eylemini 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ındaki kullanım başına yetkilendirme anahtarları için ek destek sağlar.
Android 10
- Geliştiricilerin biyometrik kimlik doğrulamanın kullanılabilirliğini sorgulamak için kullanabilecekleri
BiometricManager
sınıfını tanıtır. -
BiometricPrompt
için parmak izi ve yüz kimlik doğrulama entegrasyonunu içerir
Android 9
- Yalnızca
BiometricPrompt
için parmak izi entegrasyonunu içerir. - FingerprintManager sınıfını kullanımdan kaldırır. Paket uygulamalarınız ve sistem uygulamalarınız bu sınıfı kullanıyorsa, bunları
BiometricPrompt
veBiometricManager
kullanacak şekilde güncelleyin. -
FingerprintManager
CTS doğrulayıcı testleri,BiometricPrompt
kullanarakBiometricPromptBoundKeysTest
test etmek için güncellendi.
uygulama
Kullanıcıların ve geliştiricilerin sorunsuz bir biyometrik deneyime sahip olmasını sağlamak için biyometrik yığınınızı BiometricPrompt
, BiometricManager
ve ACTION_BIOMETRIC_ENROLL
API'leri ile entegre edin. Biyometrik sensörlü cihazlar bu güç gereksinimlerine uymalıdır. Ayrıca tüm uygulamalar CtsBiometricsTestCases CTS modülünü geçmelidir.
Biyometrik yığınınızı 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 fazlasını destekliyorsa, bu işlem, kullanıcının seçebileceği bir liste sunmalıdır.

HAL uygulama yönergeleri
Biyometrik verilerin sızdırılmadığından ve bir kullanıcı bir cihazdan kaldırıldığında kaldırıldığından emin olmak için bu biyometrik HAL yönergelerini izleyin:
- Ham biyometrik verilere veya türevlere (şablonlar gibi) hiçbir zaman güvenli yalıtılmış ortamın (TEE veya Secure Element gibi) dışından erişilemediğinden emin olun. Depolanan tüm veriler, yalnızca TEE (Güvenilir Yürütme Ortamı) tarafından bilinen cihaza özel bir anahtarla şifrelenmelidir. Donanım destekliyorsa, güvenli yalıtılmış ortama donanım erişimini sınırlayın ve bir SELinux ilkesiyle koruyun. Tüm cihaz dosyalarında açık bir SELinux ilkesiyle iletişim kanalını (örneğin, SPI, I2C) yalnızca güvenli yalıtılmış ortam için erişilebilir hale getirin.
- Veri ihlallerini ve diğer saldırıları önlemek için biyometrik edinme, kayıt ve tanıma güvenli yalıtılmış ortamda gerçekleşmelidir. Bu gereklilik yalnızca Sınıf 3 (önceden Güçlü) ve Sınıf 2 (önceden Zayıf) biyometri için geçerlidir.
- Tekrar saldırılarına karşı korunmak için biyometrik şablonları özel, cihaza özel bir anahtarla imzalayın. Gelişmiş Şifreleme Standardı (AES) için, en azından, mutlak dosya sistemi yolu, grubu ve biyometrik kimliği olan bir şablonu imzalayın; öyle ki, şablon dosyalar başka bir cihazda veya onları aynı cihaza kaydettiren kullanıcı dışında herhangi biri için çalışmaz. . Örneğin, aynı cihazdaki farklı bir kullanıcıdan veya başka bir cihazdan biyometrik verilerin kopyalanmasını engelleyin.
- Verileri TEE dışında 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 temizlenmelidir. CDD tarafından biyometrik verilerin ve türev dosyalarının şifreli olarak saklanması gerekir - özellikle TEE'de değilse, Güvenli yalıtılmış ortamın depolama gereksinimleri nedeniyle bu mümkün değilse, kullanıcı kaldırıldığında veya cihaz kaldırıldığında verilerin kaldırılmasını sağlamak için kancalar ekleyin silinir. Bkz. LockSettingsService.removeBiometricsForUser()
özelleştirme
Cihazınız birden fazla biyometriyi destekliyorsa, kullanıcı ayarlarda bir varsayılan belirleyebilmelidir. BiometricPrompt
uygulamanız, kullanıcı açıkça geçersiz kılmadığı sürece varsayılan olarak Sınıf 3 (önceden Güçlü) biyometriyi tercih etmelidir, ardından biyometrikle ilişkili riskleri açıklayan bir uyarı mesajı görüntülenmelidir (örneğin, Bir fotoğrafınız cihazınızın kilidini açabilir )
Cihaza özel kimlik doğrulama dizeleri
Android 12'den itibaren, BiometricManager.Strings API aracılığıyla geliştiricilere bağlamsal kimlik doğrulama dizeleri sunulur. Cihaza özel dizeleri uygulamak için bu API tarafından döndürülen kaynak değerlerini özelleştirebilirsiniz. Bunu yaparsanız, aygıtın desteklediği tüm yerel ayarlar için yeni dizelerin çevrildiğinden emin olun. Ayrıca, aşağıdaki özelliklerin korunduğundan emin olun:
Yöntem | dize amacı | Dahil edilecek kimlik doğrulama türleri | Biyometrik(ler) ve ekran kilidi mümkünse |
---|---|---|---|
getButtonLabel() | BiometricPrompt'u tetikleyen bir düğme için etiket | Yalnızca kimlik doğrulayıcı gereksinimlerini karşılayan kayıtlı türler (mümkünse) | Yalnızca biyometrik dize kullanın ("Parmak izi kullan" gibi) |
getPromptMessage() | Kimlik doğrulama sırasında BiometricPrompt'ta gösterilen mesaj | Yalnızca kimlik doğrulayıcı gereksinimlerini karşılayan kayıtlı türler (mümkünse) | Birleşik biyometrik ve ekran kilidi dizisini kullanın (örn. "Devam etmek için parmak izinizi veya PIN'inizi kullanın") |
getAyarAdı() | Kimlik doğrulama için BiometricPrompt'u etkinleştiren bir ayarın adı | Kimlik doğrulama gereksinimlerini karşılayan cihaz tarafından desteklenen tüm türler (kayıtlı olmasalar bile) | Birleşik biyometrik ve ekran kilidi dizesini kullanın ("Parmak izi veya ekran kilidi kullan" gibi) |
Örneğin, kayıtlı yüzü olan bir Sınıf 2 yüz sensörüne , kayıtlı bir PIN koduna ve kayıtlı parmak izi olmayan bir Sınıf 3 parmak izi sensörüne sahip bir cihazı düşünün. Aşağıdaki tablo, izin verilen kimlik doğrulayıcıların ve çağrılan BiometricManager.Strings yönteminin her bir kombinasyonu için örnek dizeler sağlar:
İzin verilen doğrulayıcılar | getButtonLabel() | getPromptMessage() | getAyarAdı() |
---|---|---|---|
3. Sınıf biyometrik ( BIOMETRIC_STRONG ) | "Parmak izi kullan" (Yalnızca parmak izi doğrulayıcı gereksinimlerini karşılar) | "Devam etmek için parmak izinizi kullanın" (Yalnızca parmak izi doğrulayıcı gereksinimlerini karşılar) | "Parmak izi kullan" (Yalnızca parmak izi doğrulayıcı gereksinimlerini karşılar) |
2. Sınıf biyometrik ( BIOMETRIC_WEAK ) | "Yüz kullan" (Yüz ve parmak izi gereksinimleri karşılar; yalnızca yüz kaydedilir) | "Devam etmek için yüzünüzü kullanın" (Yüz ve parmak izi gereksinimleri karşılar; yalnızca yüz kaydedilir) | "Yüz veya parmak izi kullan" (Yüz ve parmak izi gereksinimleri karşılar; cihaz her ikisini de destekler) |
Ekran kilidi ( DEVICE_CREDENTIAL ) | "PIN'i kullan" (Herhangi bir ekran kilidi gereksinimleri karşılar; PIN kaydedilir) | "Devam etmek için PIN'inizi girin" (Herhangi bir ekran kilidi gereksinimleri karşılar; PIN kaydedilir) | "Ekran kilidini kullan" (Herhangi bir ekran kilidi gereksinimleri karşılar) |
3. Sınıf biyometrik VEYA ekran kilidi | "PIN'i kullan" (Parmak izi ve herhangi bir ekran kilidi gereksinimleri karşılar; yalnızca PIN kaydedilir) | "Devam etmek için PIN'inizi girin" (Parmak izi ve herhangi bir ekran kilidi gereksinimleri karşılar; yalnızca PIN kaydedilir) | "Parmak izi veya ekran kilidi kullan" (Parmak izi ve herhangi bir ekran kilidi gereksinimleri karşılar) |
2. Sınıf biyometrik 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 gereksinimleri karşılar; yüz ve PIN kaydedilir) | "Biyometri veya ekran kilidi kullan" (Yüz, parmak izi ve herhangi bir ekran kilidi gereksinimleri karşılar) |
doğrulama
Biyometrik uygulamanız aşağıdaki testleri geçmelidir:
- CTS Biyometrik Yöneticisi
- CTS BiometricPrompt (akıl sağlığı, derinlemesine testler doğrulayıcıya dayanır)
- CtsVerifier Biyometrik Test bölümü : Cihazın desteklediği her modaliteden ayrı ayrı geçmelidir.
Ayrıca cihazınız AOSP HIDL'ye sahip bir biyometriyi destekliyorsa ( parmak izi@2.1 , parmak izi@2.2 , face1.0 ), ilgili VTS testini ( parmak izi , yüz ) geçmelidir.