Genel Bakış
Yüz kimlik doğrulama, kullanıcıların cihazlarının ön tarafına bakarak cihazlarının kilidini açmasına olanak tanır. Android 10, kamera karelerini güvenli bir şekilde işleyebilecek yeni bir yüz tanıma paketi için destek ekler. Bu paket, desteklenen donanımlarda yüz tanıma sırasında güvenliği ve gizliliği korur. Android 10, güvenlikle uyumlu uygulamaların internet bankacılığı veya diğer hizmetler gibi işlemler için uygulama entegrasyonunu etkinleştirmesini sağlayan kolay bir yol da sunar.
Android yüz kimlik doğrulama paketi, Android 10'da yeni bir uygulamadır. Yeni uygulamada IBiometricsFace.hal
, IBiometricsFaceClientCallback.hal
ve types.hal
arayüzleri kullanıma sunulmuştur.
Mimari
BiometricPrompt API, yüz, parmak ve iris dahil tüm biyometrik kimlik doğrulama yöntemlerini içerir. Yüz HAL'i aşağıdaki bileşenlerle etkileşim kurar.

Şekil 1. Biyometrik yığın.
FaceManager
FaceManager
, FaceService
ile bağlantı kuran özel bir arayüzdür. Özel bir kullanıcı arayüzüyle yüz kimlik doğrulamasına erişmek için Kilit Ekranı tarafından kullanılır. Uygulamalar FaceManager'a erişemez ve bunun yerine BiometricPrompt
kullanmalıdır.
FaceService
Bu, yüz kimlik doğrulama donanımına erişimi yöneten çerçeve uygulamasıdır. Temel kayıt ve kimlik doğrulama durum makinelerinin yanı sıra diğer çeşitli yardımcıları (ör. listeleme) içerir. Kararlılık ve güvenlikle ilgili endişeler nedeniyle bu süreçte hiçbir tedarikçi firma kodunun çalıştırılmasına izin verilmez. Tüm tedarikçi koduna Face 1.0 HIDL arayüzü üzerinden erişilir.
karşı karşıya
Bu, FaceService
tarafından kullanılan Face 1.0 HIDL arayüzünü uygulayan bir Linux yürütülebilir dosyasıdır. FaceService
tarafından bulunabilmesi için kendisini IBiometricsFace@1.0 olarak kaydeder.
Uygulama
Yüz HIDL
Yüz HIDL'yi uygulamak için IBiometricsFace.hal
sınıfının tüm yöntemlerini tedarikçiye özel bir kitaplıkta uygulamanız gerekir.
Hata mesajları
Hata mesajları bir geri çağırma işlevi tarafından gönderilir ve gönderildikten sonra durum makinesini bekleme durumuna döndürür. Çoğu mesajda, kullanıcıyı hatadan haberdar etmek için kullanıcıya yönelik bir dize bulunur ancak tüm hatalarda bu kullanıcıya yönelik dize bulunmaz. Hata mesajları hakkında daha fazla bilgi için types.hal
başlıklı makaleyi inceleyin.
Tüm hata mesajları bir son durum gösterir. Diğer bir deyişle, çerçeve, HAL'ın bir hata mesajı gönderdikten sonra boş duruma döndüğünü varsayar.
Edinme mesajları
Edinme mesajları, kayıt veya kimlik doğrulama sırasında yayınlanır ve kullanıcıyı başarılı bir kayıt veya kimlik doğrulama işlemine yönlendirmeyi amaçlar.
Her sıra numarası, FaceAuthenticationManager.java
dosyasında ilişkili bir mesaja sahiptir. İlgili yardım dizelerinin sağlandığı sürece tedarikçiye özel mesajlar eklenebilir. Edinme mesajları kendi başına terminal durumları değildir. HAL'in, mevcut kaydı veya kimlik doğrulamayı tamamlamak için gerektiği kadar mesaj göndermesi beklenir. Bir edinme mesajı, ilerleme kaydedilemeyecek bir terminal durumunda sonuçlanırsa HAL, edinme mesajlarını bir hata mesajıyla takip etmelidir. Örneğin, görüntü çok karanlıksa ve ilerleme kaydedilemeyecek kadar karanlık kalırsa. Bu durumda, birkaç deneme yapıldıktan sonra UNABLE_TO_PROCESS
göndermek mantıklı bir seçenektir ancak daha fazla ilerleme kaydedilemez.
Donanım
Cihazların Android 10'daki güçlü biyometri koşullarına uyması için yüz verilerinin bütünlüğünü ve nihai kimlik doğrulama karşılaştırmasını sağlamak üzere güvenli donanıma sahip olmaları gerekir. Android Uyumluluk Tanım Belgesi (CDD), gereken güvenlik düzeyini ve kabul edilebilir sahtekarlık kabul oranını (SAR) özetler. Güvenli işleme ve tanıma için güvenilir yürütme ortamı (TEE) gerekir. Ayrıca, yüz kimlik doğrulamasına yönelik saldırıları önlemek için güvenli kamera donanımı gerekir. Örneğin, resim verileriyle ilişkili bellek sayfaları ayrıcalıklı olabilir ve salt okunur olarak işaretlenebilir. Böylece yalnızca kamera donanımı bunları güncelleyebilir. İdeal olarak, TEE ve donanım dışında hiçbir işleme erişim olmamalıdır.
Yüz kimlik doğrulama donanımı önemli ölçüde değişiklik gösterdiğinden, belirli cihaz mimarisine bağlı olarak yüz kimlik doğrulamasını etkinleştirmek için donanıma özel sürücüler geliştirilmesi gerekir. Bu nedenle, faced
için referans uygulama yoktur.
Yöntemler
Aşağıdaki yöntemlerin tümü asenkrondur ve çerçeveye hemen geri dönmelidir. Aksi takdirde sistem yavaşlar ve Watchdog sıfırlanabilir. Arayanın engellenmesini önlemek için birden fazla mesaj dizisinin bulunduğu bir ileti kuyruğuna sahip olmanız önerilir. Tüm GET isteklerinde, mümkün olduğunda bilgi önbelleğe alınmalıdır. Böylece, arayan minimum süre boyunca engellenir.
Yöntem | Açıklama |
---|---|
setCallback() |
Tüm mesajları kendisine geri bağlamak için FaceService tarafından çağrılır. |
setActiveUser() |
Ardından tüm HAL işlemlerinin uygulanacağı etkin kullanıcıyı belirler. Bu yöntem tekrar çağrılana kadar kimlik doğrulama her zaman bu kullanıcı için yapılır. |
revokeChallenge() |
generateChallenge() tarafından oluşturulan istemi geçersiz kılarak güvenli işlemi tamamlar. |
enroll() |
Kullanıcının yüzünü kaydeder. |
cancel() |
Geçerli işlemi (ör. kaydetme, kimlik doğrulama, kaldırma veya listeleme) iptal eder ve faced değerini boş duruma döndürür. |
enumerate() |
Etkin kullanıcıyla ilişkili tüm yüz şablonlarını listeler. |
remove() |
Etkin kullanıcıyla ilişkili bir yüz şablonunu veya tüm yüz şablonlarını kaldırır. |
authenticate() |
Etkin kullanıcının kimliğini doğrular. |
userActivity() |
Bu yöntem yalnızca HAL kimlik doğrulama veya bekleme durumundayken kullanılmalıdır. HAL bu durumlardan birinde değilken bu yöntemi kullandığınızda OPERATION_NOT_SUPPORTED döndürülür. HAL kimlik doğrulaması yaparken bu yöntem çağrılırsa sistemin yüz arama süresi uzayabilir. |
resetLockout() |
Çok fazla yüz reddedildiğinde faced 'ün kilitlenme durumuna (LOCKOUT veya LOCKOUT_PERMANENT ) girmesi gerekir. Bu durumda, kalan sürenin kullanıcıya gösterilebilmesi için çerçeveye gönderilmesi gerekir. setFeature() ile aynı şekilde, bu yöntemde de dahili durumu güvenli bir şekilde sıfırlamak için etkin bir donanım kimlik doğrulama jetonu (HAT) gerekir. Kilitlenmeyi yalnızca mevcut kullanıcı için sıfırlar. |
Kalan üç yöntemin tümü senkronizedir ve çerçevenin durmasını önlemek için minimum süre boyunca engellemelidir.
Yöntem | Açıklama |
---|---|
generateChallenge() |
Güvenli bir işlemin başlangıcını belirtmek için kullanılan benzersiz ve kriptografik açıdan güvenli bir rastgele jeton oluşturur. |
setFeature() |
Mevcut kullanıcı için bir özelliği etkinleştirir veya devre dışı bırakır. Güvenlik nedeniyle, HAT'ın kullanıcının PIN'ini/desenini/şifresini yukarıdaki istemle karşılaştırması gerekir. |
getFeature() |
Varsayılan olarak veya yukarıdaki setFeature() çağrısı doğrultusunda özelliğin geçerli etkinleştirme durumunu alır. Yüz kimliği geçersizse uygulama ILLEGAL_ARGUMENT döndürmelidir |
getAuthenticatorId() |
Geçerli yüz kümesiyle ilişkili bir tanımlayıcı döndürür. Bu tanımlayıcı, her yüz eklendiğinde değişmelidir. |
Durum diyagramı
Çerçeve, faced
'ün aşağıdaki durum diyagramını takip etmesini bekler.

Şekil 2. Yüz kimlik doğrulama durumu akışı.