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 kimlik doğrulama paketi için destek ekleyerek desteklenen donanımlarda yüz kimlik doğrulaması 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 yöntem de sunar.
Android yüz tanıma paketi, Android 10'da yeni bir uygulamadır. Bu yeni uygulama IBiometricsFace.hal
,
IBiometricsFaceClientCallback.hal
ve types.hal
arayüzlerini kullanıma sunmuştur.
Mimari
BiometricPrompt API; yüz, parmak ve iris dahil tüm biyometrik kimlik doğrulama işlemlerini içerir. Yüz HAL'i aşağıdaki bileşenlerle etkileşim halindedir.
FaceManager
FaceManager
, FaceService
ile bağlantı kuran özel bir arayüzdür. KeyGuard tarafından, özel bir kullanıcı arayüzüyle yüz kimlik doğrulamasına erişmek için 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 durumu makinelerinin yanı sıra diğer çeşitli yardımcıları (ör. numaralandırma) 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şılaştığı
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 tedarikçiye özel bir kitaplıkta tüm IBiometricsFace.hal
yöntemlerini 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ğrulamasına yönlendirmeyi amaçlar.
Her sıralı numara, 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ç denemeden sonra UNABLE_TO_PROCESS
gönderilebilir ancak daha fazla ilerleme kaydedilemez.
Donanım
Cihazların Android 10'un güçlü biyometrik gereksinimlerini karşılaması için yüz verilerinin bütünlüğünü ve en iyi kimlik doğrulama karşılaştırmasını sağlayacak 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 yalnızca kamera donanımı tarafından güncellenebilmeleri için salt okunur olarak işaretlenebilir. İ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 hemen çerçeveye dönmelidir. Aksi takdirde, sistem yavaşlar ve Watchdog'un sıfırlanması olasılığı vardır. Arayanın engellenmesini önlemek için birden fazla mesaj dizisinin bulunduğu bir ileti kuyruğuna sahip olmanız önerilir. Tüm GET istekleri, mümkün olduğunda bilgileri önbelleğe almalıdır. Böylece çağrıyı minimum süre boyunca engelleyebilirsiniz.
Yöntem | Açıklama |
---|---|
setCallback() |
Tüm mesajları kendisine geri bağlamak için FaceService tarafından çağrılır. |
setActiveUser() |
Sonraki tüm HAL işlemlerinin uygulanacağı etkin kullanıcıyı ayarlar. 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 isteği geçersiz kılarak güvenli işlemi tamamlar. |
enroll() |
Bir 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ı numaralandırır. |
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 olmadığında bu yöntemi kullanırsanız OPERATION_NOT_SUPPORTED değeri 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 kilitlenme durumuna (LOCKOUT veya LOCKOUT_PERMANENT ) geçmek için faced gerekir. Bu durumda, kullanıcıya görüntüleyebilmesi için kalan süreyi çerçeveye göndermesi 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. Kilitleme özelliğini yalnızca geçerli 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 olarak 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 grubuyla 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
değerinin aşağıdaki durum diyagramına uymasını bekler.