Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Doğrulama

Android, aşağıdaki bileşenleri gerektiren, kullanıcı kimlik doğrulamalı şifreleme anahtarları kavramını kullanır:

  • Şifreleme anahtarı depolama ve hizmet sağlayıcısı. Kriptografik anahtarları depolar ve bu anahtarların üzerinde standart kripto rutinleri sağlar. Android, bir Trusted Execution Environment (TEE) veya Strongbox gibi Secure Element (SE) içerebilen anahtar depolamaya yönelik donanım destekli şifreleme dahil olmak üzere, şifreleme hizmetleri için donanım destekli bir Anahtar Deposu ve Anahtar Yöneticisi'ni destekler .
  • Kullanıcı kimlik doğrulayıcıları. Kullanıcının varlığını ve / veya başarılı kimlik doğrulamasını onaylayın. Android, PIN / desen / şifre kimlik doğrulaması için Gatekeeper'ı ve parmak izi kimlik doğrulaması için Parmak İzini destekler. Android 9 ve üstü ile birlikte gelen cihazlar, BiometricPrompt parmak izi ve ek biyometri için tek bir entegrasyon noktası olarak kullanabilir. Bu bileşenler, kimlik doğrulama durumlarını kimliği doğrulanmış bir kanal aracılığıyla anahtar deposu hizmetiyle iletir. (Çerçeve düzeyindeki Android Anahtar Deposu sistemi de anahtar deposu hizmeti tarafından desteklenmektedir.)

Gatekeeper, Fingerprint ve Biometric bileşenleri, donanım destekli kimlik doğrulama belirteçlerinin (AuthTokens) kullanımını desteklemek için Anahtar Deposu ve diğer bileşenlerle birlikte çalışır.

Kayıt

Fabrika ayarlarına sıfırlandıktan sonra aygıtın ilk açılışında, tüm kimlik doğrulayıcılar kullanıcıdan kimlik bilgileri kayıtlarını almaya hazırlanır. Bir kullanıcının başlangıçta Gatekeeper ile bir PIN / desen / şifre kaydetmesi gerekir. Bu ilk kayıt, kullanıcı için bir tanımlayıcı ve kullanıcının kriptografik materyali için bir bağlama belirteci olarak görev yapan rastgele oluşturulmuş, 64 bitlik bir kullanıcı güvenli tanımlayıcısı (SID) oluşturur. Bu kullanıcı SID'si kriptografik olarak kullanıcının parolasına bağlıdır; Gatekeeper için başarılı kimlik doğrulamaları, bu parola için kullanıcı SID'sini içeren AuthTokens ile sonuçlanır.

Bir kimlik bilgisini değiştirmek isteyen bir kullanıcının mevcut bir kimlik bilgisi sunması gerekir. Mevcut bir kimlik bilgisi başarıyla doğrulanırsa, mevcut kimlik bilgileriyle ilişkilendirilen kullanıcı SID'si yeni kimlik bilgilerine aktarılır ve bu, kullanıcının bir kimlik bilgilerini değiştirdikten sonra anahtarlara erişmeye devam etmesini sağlar. Bir kullanıcı mevcut bir kimlik bilgisi sunmuyorsa, yeni kimlik bilgisi tamamen rastgele bir Kullanıcı SID ile kaydedilir. Kullanıcı cihaza erişebilir ancak eski kullanıcı SID'si altında oluşturulan anahtarlar kalıcı olarak kaybolur. Bu, güvenilmeyen kayıt olarak bilinir.

Normal koşullar altında, Android çerçevesi güvenilmeyen bir kayda izin vermez, bu nedenle çoğu kullanıcı bu işlevi görmez. Ancak, bir aygıt yöneticisi veya bir saldırgan tarafından yapılan zorla parola sıfırlamaları bunun gerçekleşmesine neden olabilir.

Doğrulama

Bir kullanıcı bir kimlik bilgisi oluşturduktan ve bir kullanıcı SID'sini aldıktan sonra, bir kullanıcı PIN, desen, parola veya parmak izi verdiğinde başlayan kimlik doğrulamasını başlatabilir. Tüm TEE bileşenleri, birbirlerinin mesajlarını doğrulamak için kullandıkları gizli bir anahtarı paylaşır.

Kimlik doğrulama akışı
Şekil 1. Kimlik doğrulama akışı
  1. Bir kullanıcı bir kimlik doğrulama yöntemi sağlar ve ilişkili hizmet, ilişkili arka plan programına bir istekte bulunur.
    • PIN, desen veya şifre için LockSettingsService , gatekeeperd bir talepte bulunur.
    • Biyometrik tabanlı kimlik doğrulama akışları, Android sürümüne bağlıdır. Android 8.x ve önceki sürümleri çalıştıran cihazlarda, FingerprintService fingerprintd için bir istekte fingerprintd ). Android 9 ve sonraki sürümleri çalıştıran cihazlarda BiometricPrompt , FingerprintManager veya FaceManager gibi uygun Biometric Manager sınıfını kullanarak uygun biyometrik arka plan programına (örneğin, fingerprintd için parmak izi veya faced için yüz) FaceManager . Sürümden bağımsız olarak, biyometrik kimlik doğrulama, istek gönderildikten sonra eşzamansız olarak gerçekleşir.
  2. Arka plan programı, bir AuthToken oluşturan muadiline veri gönderir:
    • PIN / desen / parola kimlik doğrulaması için, gatekeeperd PIN, desen veya parola karmasını TEE'deki Gatekeeper'a gönderir. TEE'deki kimlik doğrulama başarılı olursa, TEE'deki Gatekeeper, ilgili kullanıcı SID'sini (AuthToken HMAC anahtarı ile imzalanmış) içeren bir AuthToken'i Android işletim sistemindeki muadiline gönderir.
    • Parmak izi kimlik doğrulaması için parmak izi, fingerprintd izi olaylarını dinler ve verileri TEE'deki Parmak İzine gönderir. TEE'de kimlik doğrulama başarılı olursa, TEE'deki Parmak İzi, Android işletim sistemindeki muadiline bir AuthToken (AuthToken HMAC anahtarı ile imzalanmış) gönderir.
    • Diğer biyometrik kimlik doğrulama için, uygun biyometrik arka plan programı biyometrik olayı dinler ve bunu uygun biyometrik TEE bileşenine gönderir.
  3. Arka plan programı, imzalanmış bir AuthToken alır ve bunu anahtar deposu hizmetinin Bağlayıcı arayüzüne bir uzantı aracılığıyla anahtar deposu hizmetine iletir. ( gatekeeperd , cihaz yeniden kilitlendiğinde ve cihaz şifresi değiştiğinde de anahtar deposu hizmetini bilgilendirir.)
  4. Anahtar deposu hizmeti, AuthTokens'ı Keymaster'a iletir ve bunları Gatekeeper ile paylaşılan anahtarı ve desteklenen biyometrik TEE bileşenini kullanarak doğrular. Keymaster, son kimlik doğrulama zamanı olarak jetondaki zaman damgasına güvenir ve zaman damgasına (bir uygulamanın anahtarı kullanmasına izin vermek için) bir anahtar yayınlama kararını dayandırır.

AuthToken biçimi

Belirteç paylaşımını ve diller ve bileşenler arasında uyumluluğu sağlamak için AuthToken biçimi hw_auth_token.h içinde hw_auth_token.h . Biçim, sabit boyutlu alanlara sahip basit bir serileştirme protokolüdür.

Alan Tür gereklidir Açıklama
AuthToken Sürümü 1 bayt Evet Aşağıdaki tüm alanlar için grup etiketi.
Meydan okuma 64 bitlik işaretsiz tamsayı Hayır Yeniden oynatma saldırılarını önlemek için rastgele bir tam sayı. Genellikle talep edilen bir kripto işleminin kimliği. Şu anda işlem parmak izi yetkilendirmeleri tarafından kullanılıyor. AuthToken varsa, yalnızca aynı sorgulamayı içeren kripto işlemleri için geçerlidir.
Kullanıcı SID'si 64 bit işaretsiz tamsayı Evet Tekrar etmeyen kullanıcı tanımlayıcı, cihaz kimlik doğrulaması ile ilişkili tüm anahtarlara kriptografik olarak bağlanmıştır. Ayrıntılar için bkz. Gatekeeper .
Kimlik Doğrulayıcı Kimliği (ASID) Ağ sırasına göre 64 bitlik işaretsiz tamsayı Hayır Tanımlayıcı, belirli bir kimlik doğrulayıcı politikasına bağlanmak için kullanılır. Tüm kimlik doğrulayıcıların kendi gereksinimlerine göre değiştirebilecekleri kendi ASID değerleri vardır.
Kimlik doğrulayıcı türü Ağ düzeninde 32 bitlik işaretsiz tamsayı Evet
  • 0x00, Gatekeeper'dır.
  • 0x01, Parmak İzidir.
Zaman damgası Ağ düzeninde 64 bitlik işaretsiz tamsayı Evet En son sistem önyüklemesinden bu yana geçen süre (milisaniye cinsinden).
AuthToken HMAC (SHA-256) 256 bitlik blob Evet HMAC alanı dışındaki tüm alanların SHA-256 MAC şifreli.

Aygıt önyükleme akışı

Bir cihazın her açılışında, AuthToken HMAC anahtarı oluşturulmalı ve tüm TEE bileşenleriyle (Gatekeeper, Keymaster ve desteklenen biyometri güvenletleri) paylaşılmalıdır. Bu nedenle, yeniden oynatma saldırılarına karşı ek koruma için, HMAC anahtarı, cihaz her yeniden başlatıldığında rastgele oluşturulmalıdır.

Bu HMAC anahtarını tüm bileşenlerle paylaşma protokolü, platforma bağlı bir uygulama özelliğidir. Anahtar asla TEE dışında kullanılmamalıdır. Bir TEE OS, dahili bir işlemler arası iletişim (IPC) mekanizmasına sahip değilse ve verileri güvenilmeyen işletim sistemi üzerinden aktarması gerekiyorsa, aktarım güvenli bir anahtar değişim protokolü aracılığıyla yapılmalıdır.

Android'in yanında çalışan Trusty işletim sistemi bir TEE örneğidir, ancak bunun yerine diğer TEE'ler kullanılabilir. Trusty, Keymaster ile Gatekeeper veya uygun biyometrik güven arasında doğrudan iletişim kurmak için dahili bir IPC sistemi kullanır. HMAC anahtarı yalnızca Keymaster'da tutulur; Parmak İzi ve Gatekeeper, her kullanım için Keymaster'dan anahtarı ister ve değeri sürdürmeyin veya önbelleğe almayın.

Bazı TEE'ler bir IPC altyapısından yoksun olduğundan, TEE'deki uygulamalar arasında hiçbir iletişim gerçekleşmez. Bu ayrıca anahtar deposu hizmetinin, sistemdeki kimlik doğrulama tablosu bilgisine sahip olduğu için başarısız olmaya mahkum istekleri hızla reddetmesine ve TEE'ye potansiyel olarak maliyetli bir IPC'yi kaydetmesine izin verir.