Parmak izi sensörüne sahip cihazlarda kullanıcılar bir veya daha fazla parmak izini kaydedebilir ve bu parmak izlerini cihazın kilidini açmak ve diğer görevleri gerçekleştirmek için kullanabilir. Android, satıcıya özel bir kitaplığa ve parmak izi donanımına (örneğin, parmak izi sensörü) bağlanmak için Parmak İzi Donanımı Arayüzü Tanımlama Dilini (HIDL) kullanır.
Fingerprint HIDL'yi uygulamak için IBiometricsFingerprint.hal
satıcıya özel bir kitaplıkta uygulamanız gerekir.
Parmak izi eşleştirme
Bir cihazın parmak izi sensörü genellikle boştadır. Ancak authenticate
veya enroll
çağrısına yanıt olarak parmak izi sensörü bir dokunuşu dinler (kullanıcı parmak izi sensörüne dokunduğunda da ekran uyanabilir). Yüksek düzeyde parmak izi eşleştirme akışı aşağıdaki adımları içerir:
- Kullanıcı parmak izi sensörünün üzerine parmağını yerleştirir.
- Satıcıya özel kitaplık, mevcut kayıtlı parmak izi şablonları kümesinde bir parmak izi eşleşmesi olup olmadığını belirler.
- Eşleşen sonuçlar
FingerprintService
iletilir.
Bu akış, cihaza zaten bir parmak izinin kaydedildiğini, yani satıcıya özel kitaplığın parmak izi için bir şablon kaydettiğini varsayar. Daha fazla ayrıntı için bkz. Kimlik Doğrulama .
Mimari
Parmak İzi HAL aşağıdaki bileşenlerle etkileşime girer.
-
BiometricManager
bir uygulama sürecindeki bir uygulamayla doğrudan etkileşime girer. Her uygulamanın birIBiometricsFingerprint.hal
örneği vardır -
FingerprintService
, parmak izi HAL ile iletişimi yöneten sistem sürecinde çalışır. - Parmak İzi HAL, IBiometricsFingerprint HIDL arayüzünün bir C/C++ uygulamasıdır. Bu, aygıta özgü donanımla iletişim kuran satıcıya özgü kitaplığı içerir.
- Keystore API ve Keymaster bileşenleri, Güvenilir Yürütme Ortamı (TEE) gibi güvenli bir ortamda güvenli anahtar depolaması için donanım destekli şifreleme sağlar.
![Parmak izi kimlik doğrulaması için veri akışı](https://source.android.google.cn/static/docs/security/images/fingerprint-data-flow.png?authuser=4&hl=tr)
Satıcıya özel bir HAL uygulamasının, TEE'nin gerektirdiği iletişim protokolünü kullanması gerekir. Ham görüntüler ve işlenmiş parmak izi özellikleri güvenilmeyen belleğe aktarılmamalıdır. Bu tür biyometrik verilerin tamamının TEE gibi güvenli bir donanımda saklanması gerekir. Köklendirme biyometrik verileri tehlikeye atmamalıdır .
FingerprintService
ve fingerprintd
parmak izlerini kaydetmek ve diğer işlemleri gerçekleştirmek için Fingerprint HAL aracılığıyla satıcıya özel kitaplığa çağrı yapar.
![Parmak iziyle etkileşim](https://source.android.google.cn/static/docs/security/images/fingerprint-daemon.png?authuser=4&hl=tr)
Uygulama yönergeleri
Aşağıdaki Parmak İzi HAL yönergeleri, kullanıcı cihazdan çıkarıldığında parmak izi verilerinin sızdırılmamasını ve silinmemesini sağlamak için tasarlanmıştır:
- Ham parmak izi verilerine veya türevlerine (örneğin şablonlara) hiçbir zaman sensör sürücüsünün veya TEE'nin dışından erişilememelidir. Donanım bir TEE'yi destekliyorsa donanım erişimi TEE ile sınırlı olmalı ve bir SELinux politikasıyla korunmalıdır. Seri Çevresel Arayüz (SPI) kanalına yalnızca TEE tarafından erişilebilir olmalı ve tüm cihaz dosyalarında açık bir SELinux politikası bulunmalıdır.
- Parmak izi edinimi, kaydı ve tanınması TEE içerisinde gerçekleşmelidir.
- Dosya sisteminin kendisi şifrelenmiş olsa bile, parmak izi verilerinin yalnızca şifrelenmiş biçimi dosya sisteminde saklanabilir.
- Parmak izi şablonları özel, cihaza özel bir anahtarla imzalanmalıdır. Gelişmiş Şifreleme Standardı (AES) için, şablon dosyalarının başka bir cihazda veya bunları sisteme kaydeden kullanıcı dışında herhangi biri tarafından çalıştırılamaması için en azından bir şablonun mutlak dosya sistemi yolu, grubu ve parmak kimliğiyle imzalanması gerekir. aynı cihaz. Örneğin, parmak izi verilerinin farklı bir kullanıcıdan aynı cihaza veya başka bir cihazdan kopyalanması çalışmamalıdır.
- Uygulamalar ya
setActiveGroup()
işlevi tarafından sağlanan dosya sistemi yolunu kullanmalı ya da kullanıcı kaldırıldığında tüm kullanıcı şablonu verilerini silmenin bir yolunu sağlamalıdır. Parmak izi şablon dosyalarının şifrelenmiş olarak saklanması ve sağlanan yolda saklanması önemle tavsiye edilir. TEE depolama gereksinimleri nedeniyle bu mümkün değilse, uygulayıcının, kullanıcı kaldırıldığında verilerin kaldırılmasını sağlamak için kancalar eklemesi gerekir.
Parmak izi yöntemleri
Parmak İzi HIDL arayüzü IBiometricsFingerprint.hal
aşağıdaki ana yöntemleri içerir.
Yöntem | Tanım |
---|---|
enroll() | Bir parmak izi şablonunun toplanmasını ve saklanmasını başlatmak için HAL durumu makinesini değiştirir. Kayıt tamamlandığında veya zaman aşımından sonra HAL durumundaki makine boş durumuna geri döner. |
preEnroll() | Parmak izi kaydının başladığını belirtmek için benzersiz bir belirteç oluşturur. Örneğin bir parola kullanılarak önceden kimlik doğrulama yapıldığından emin olmak için enroll işlevine bir belirteç sağlar. Kurcalamayı önlemek için, cihazın kimlik bilgisi onaylandıktan sonra jeton sarılır. Belirtecin hala geçerli olduğunu doğrulamak için kayıt sırasında kontrol edilmesi gerekir. |
getAuthenticatorId() | Geçerli parmak izi kümesiyle ilişkili bir belirteci döndürür. |
cancel() | Bekleyen kayıt veya kimlik doğrulama işlemlerini iptal eder. HAL durumu makinesi boş duruma geri döner. |
enumerate() | Bilinen tüm parmak izi şablonlarının numaralandırılması için senkronize çağrı. |
remove() | Bir parmak izi şablonunu siler. |
setActiveGroup() | Bir HAL işlemini, bir grup tanımlayıcısı (GID) tarafından tanımlanan, belirli bir gruba ait olan bir dizi parmak iziyle kısıtlar. |
authenticate() | Parmak iziyle ilgili bir işlemin kimliğini doğrular (bir işlem kimliğiyle tanımlanır). |
setNotify() | HAL'den bildirim alan bir kullanıcı işlevini kaydeder. HAL durumundaki makine meşgul durumdaysa, HAL meşgul durumundan çıkana kadar işlev engellenir. |
postEnroll() | Kayıt işlemini bitirir ve preEnroll() tarafından oluşturulan sorgulamayı geçersiz kılar. Bu, birden fazla parmakla kayıt oturumunun sonunda, daha fazla parmak eklenemeyeceğini belirtmek için çağrılmalıdır. |
Bunlarla ilgili daha fazla ayrıntı için IBiometricsFingerprint.hal
yorumlara bakın.