Biyometri, kimliğinizi bir cihazla doğrulamanın daha kullanışlı ancak potansiyel olarak daha az güvenli bir yolunu sunar. Kademeli kimlik doğrulama modeli altında, birincil kimlik doğrulama (PIN, kalıp ve parola gibi bilgi faktörüne dayalı yöntemler) en yüksek düzeyde güvenlik sağlar. Biyometri, kimlik doğrulamanın ikinci aşamasında yer alır ve kolaylık ile güvenlik arasında bir denge sunar. Android CDD, biyometrik gücün üç sınıfını tanımlar: Sınıf 3 (eski adıyla Güçlü), Sınıf 2 (eski adıyla Zayıf) ve Sınıf 1 (eski adıyla Kolaylık). Her sınıfın bir takım önkoşulları, ayrıcalıkları ve kısıtlamaları vardır; daha fazla ayrıntı için lütfen yukarıdaki CDD'ye bakın. Her üç 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.
Kimlik 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 | HAYIR | HAYIR |
BIOMETRIC_CONVENIENCE (1. sınıf) | Evet | HAYIR | HAYIR | HAYIR |
DEVICE_CREDENTIAL | Evet | Evet | Evet | Evet |
Android çerçevesi, yüz ve parmak izi biyometrik kimlik doğrulama desteğini içerir. Android, diğer biyometrik yöntemleri (Iris gibi) destekleyecek şekilde özelleştirilebilir. Ancak biyometrik entegrasyon modaliteye değil biyometrik güvenliğe bağlı olacaktır. Biyometrik güvenlik spesifikasyonları 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 tanıtır. Bu dizelerin aygıta duyarlı olması ve hangi kimlik doğrulama türlerinin kullanılabileceği konusunda daha fazla spesifiklik sağlaması amaçlanmaktadı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 kullanabileceği sabitler sağlayan BiometricManager.Authenticators arayüzünü tanıtır.
- Geliştiricilerin kullanıcıyı, uygulamalarının gereksinimlerini karşılayan bir kimlik doğrulama yöntemini kaydetmeye yönlendirmek için kullanabileceği
ACTION_BIOMETRIC_ENROLL
niyet eylemini ekler. - Geliştiricilerin kullanıcının kimliğinin biyometrik kimlik bilgisi veya cihaz kimlik bilgisi kullanılarak doğrulanıp doğrulanmadığını kontrol etmek için kullanabileceği
AuthenticationResult #getAuthenticationType ()
yöntemini ekler. - BiometricPrompt sınıfı içindeki 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ü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. Paketlenmiş uygulamalarınız ve sistem uygulamalarınız bu sınıfı kullanıyorsa, bunları bunun yerine
BiometricPrompt
veBiometricManager
kullanacak şekilde güncelleyin. -
BiometricPromptBoundKeysTest
kullanarakBiometricPrompt
test etmek içinFingerprintManager
CTS doğrulayıcı testleri güncellendi.
Uygulama
Kullanıcıların ve geliştiricilerin kusursuz bir biyometrik deneyime sahip olmasını sağlamak için biyometrik yığınınızı BiometricPrompt
, BiometricManager
ve ACTION_BIOMETRIC_ENROLL
API'leriyle entegre edin. Biyometrik sensörlü cihazların bu güç gereksinimlerine uyması gerekir. Ayrıca tüm uygulamaların CtsBiometricsTestCases CTS modülünü geçmesi gerekir.
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.
![Biyometrik İstem mimarisi](https://source.android.com/static/docs/security/images/biometric-stack.png?authuser=5&hl=tr)
HAL uygulama yönergeleri
Kullanıcı cihazdan çıkarıldığında biyometrik verilerin sızdırılmadığından ve silinmediğinden emin olmak için bu biyometrik HAL yönergelerini izleyin:
- Ham biyometrik verilere veya türevlerine (şablonlar gibi) güvenli izole ortamın (TEE veya Secure Element gibi) dışından hiçbir zaman erişilemediğinden emin olun. Saklanan tüm veriler yalnızca TEE (Güvenilir Yürütme Ortamı) tarafından bilinen cihaza özel bir anahtarla şifrelenmelidir. Donanım destekliyorsa, donanım erişimini güvenli yalıtılmış ortamla sınırlandırın ve onu bir SELinux ilkesiyle koruyun. Tüm cihaz dosyalarında açık bir SELinux politikasıyla 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 işlemlerinin güvenli, izole edilmiş bir ortamda gerçekleşmesi gerekir. Bu gereklilik yalnızca Sınıf 3 (eski adıyla Güçlü) ve Sınıf 2 (eski adıyla Zayıf) biyometri için geçerlidir.
- Tekrar saldırılarına karşı koruma sağlamak için biyometrik şablonları özel, cihaza özel bir anahtarla imzalayın. Gelişmiş Şifreleme Standardı (AES) için, şablon dosyalarının başka bir cihazda veya bunları aynı cihaza kaydeden kullanıcı dışında herhangi biri tarafından çalıştırılamaması için en azından mutlak dosya sistemi yolu, grubu ve biyometrik kimliğini içeren bir şablonu imzalayın. . Örneğin, biyometrik verilerin aynı cihazdaki farklı bir kullanıcıdan veya başka bir cihazdan kopyalanmasını önleyin.
- 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ın, kullanıcı kaldırıldıktan sonra temizlenmesi gerekir . CDD, biyometrik verilerin ve türev dosyalarının şifreli olarak saklanmasını gerektirir - özellikle TEE'de değilse. Güvenli izole edilmiş ortamın depolama gereksinimleri nedeniyle bu mümkün değilse, kullanıcı 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ının ayarlarda bir varsayılan belirleyebilmesi gerekir. BiometricPrompt
uygulamanız, kullanıcı bunu açıkça geçersiz kılmadığı sürece varsayılan olarak Sınıf 3 (eski adıyla Strong) biyometriyi tercih etmelidir; bu durumda biyometrikle ilişkili riskleri açıklayan bir uyarı mesajı görüntülenmelidir (örneğin, Fotoğrafınız cihazınızın kilidini açabilir) )
Cihaza özel kimlik doğrulama dizeleri
Android 12'den itibaren bağlamsal kimlik doğrulama dizeleri, BiometricManager.Strings API aracılığıyla geliştiricilerin kullanımına sunuluyor. Cihaza özgü dizeleri uygulamak için bu API tarafından döndürülen kaynak değerlerini özelleştirebilirsiniz. Bunu yaparsanız, cihazı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ı | Eklenecek kimlik doğrulama türü/türleri | Biyometrik(ler) ve ekran kilidinin her ikisi de mümkünse |
---|---|---|---|
getButtonLabel() | BiometricPrompt'u tetikleyen bir düğmenin etiketi | Yalnızca kimlik doğrulayıcı gereksinimlerini karşılayan kayıtlı türler (mümkünse) | Yalnızca biyometrik dize kullan ("Parmak izini 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 dizesini kullanın (ör. "Devam etmek için parmak izinizi veya PIN'inizi kullanın") |
getSettingName() | Kimlik doğrulama için BiometricPrompt'u etkinleştiren ayarın adı | Kimlik doğrulayıcı gereksinimlerini karşılayan, cihaz tarafından desteklenen tüm türler (kayıtlı olmasa bile) | Birleşik biyometrik ve ekran kilidi dizesini kullanın ("Parmak izi veya ekran kilidini kullanın" gibi) |
Örneğin, kayıtlı yüze sahip Sınıf 2 yüz sensörüne , kayıtlı PIN'e ve kayıtlı parmak izi olmayan 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 birleşimi için örnek dizeler sağlar:
İzin verilen kimlik doğrulayıcılar | getButtonLabel() | getPromptMessage() | getSettingName() |
---|---|---|---|
Sınıf 3 biyometrik ( BIOMETRIC_STRONG ) | "Parmak izini kullan" (Yalnızca parmak izi kimlik doğrulama gereksinimlerini karşılar) | "Devam etmek için parmak izinizi kullanın" (Yalnızca parmak izi kimlik doğrulama gereksinimlerini karşılar) | "Parmak izini kullan" (Yalnızca parmak izi kimlik doğrulama gereksinimlerini karşılar) |
Sınıf 2 biyometrik ( BIOMETRIC_WEAK ) | "Yüzünü 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 izini 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) |
Sınıf 3 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 kilidini kullan" (Parmak izi ve herhangi bir ekran kilidi gereksinimleri karşılar) |
Sınıf 2 biyometrik VEYA ekran kilidi | "Yüzünü kullan" (Yüz, parmak izi ve herhangi bir ekran kilidi gereksinimleri karşılar; yüz kaydedilir ve PIN'in yerine geçer) | "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 kilidini 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 test, doğrulayıcıya dayanır)
- CtsVerifier Biyometrik Test bölümü : Cihazın desteklediği her yöntemle ayrı ayrı geçilmelidir
Ayrıca cihazınız AOSP HIDL'ye ( parmak izi@2.1 , parmak izi@2.2 , yüz1.0 ) sahip bir biyometriyi destekliyorsa, ilgili VTS testini ( parmak izi , yüz ) geçmesi gerekir.