Biyometri

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_ENROLLniyet 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 ve BiometricManager kullanacak şekilde güncelleyin.
  • BiometricPromptBoundKeysTest kullanarak BiometricPrompt test etmek için FingerprintManager 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:

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

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:

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.