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

Bekçi

Gatekeeper alt sistemi, bir Trusted Execution Environment (TEE) içinde cihaz kalıbı / parola kimlik doğrulamasını gerçekleştirir. Gatekeeper, şifreleri donanım destekli bir gizli anahtarla bir HMAC aracılığıyla kaydeder ve doğrular. Ayrıca, Gatekeeper ardışık başarısız doğrulama girişimlerini azaltır ve belirli bir zaman aşımına ve belirli sayıda art arda başarısız girişime dayalı olarak isteklere hizmet vermeyi reddetmelidir.

Kullanıcılar parolalarını doğruladığında, Gatekeeper donanım destekli Anahtar Deposuna göndermek üzere bir kimlik doğrulama onayını imzalamak için TEE'den türetilmiş paylaşılan sırrı kullanır. Yani bir Gatekeeper onayı, Anahtar Deposuna kimlik doğrulamaya bağlı anahtarların (örneğin, uygulamaların oluşturduğu anahtarlar) uygulamalar tarafından kullanılmak üzere serbest bırakılabileceğini bildirir.

Mimari

Gatekeeper üç ana bileşenden oluşur:

  • gatekeeperd (Gatekeeper arka plan programı). Platformdan bağımsız mantığı içeren ve GateKeeperService Java arayüzüne karşılık gelen bir C ++ bağlayıcı hizmeti.
  • Gatekeeper Hardware Abstraction Layer (HAL) . hardware/libhardware/include/hardware/gatekeeper.h içindeki HAL arayüzü ve uygulama modülü.
  • Bekçi (TEE) . gatekeeperd TEE muadili. Gatekeeper'ın TEE tabanlı bir uygulaması.

Gatekeeper, Gatekeeper hardware/libhardware/include/hardware/gatekeeper.h (özellikle hardware/libhardware/include/hardware/gatekeeper.h işlevler) ve hardware/libhardware/include/hardware/gatekeeper.h özgü Gatekeeper bileşeninin (kısmen system/gatekeeper/include/gatekeeper/gatekeeper.h başlık dosyasına dayalı olarak) uygulanmasını gerektirir. anahtarlar ve bilgisayar imzaları oluşturmak / bunlara erişmek için saf sanal işlevler içerir).

LockSettingsService , Android işletim sisteminde gatekeeperd arka plan programına ulaşan bir istekte (Binder aracılığıyla). gatekeeperd daemon daha sonra TEE'deki karşılığına (Gatekeeper) ulaşan bir talepte bulunur:

Gatekeeper akışı
Şekil 1. GateKeeper tarafından kimlik doğrulaması için üst düzey veri akışı

gatekeeperd arka plan programı, Android çerçeve API'lerine HAL'ye erişim sağlar ve cihaz kimlik doğrulamalarının Anahtar Deposu'na raporlanmasına katılır. gatekeeperd daemon kendi sürecinde çalışır ve sistem sunucusundan ayrıdır.

HAL uygulaması

gatekeeperd arka plan programı, parola kimlik doğrulaması için gatekeeperd arka plan programının TEE karşılığı ile etkileşimde bulunmak için HAL'ı kullanır. HAL uygulaması, blobları imzalayabilmeli (kaydolabilmeli) ve doğrulayabilmelidir. Tüm uygulamaların, her başarılı parola doğrulamasında oluşturulan kimlik doğrulama simgesi (AuthToken) için standart biçime uyması beklenir. AuthToken'in içeriği ve anlambilimiyle ilgili ayrıntılar için bkz. AuthToken biçimi .

hardware/libhardware/include/hardware/gatekeeper.h başlık dosyasının uygulamaları enroll ve verify işlevlerini uygulamalıdır:

  • enroll fonksiyonu işaretler bunu bir şifre blob alır ve bir sap olarak imza döndürür. Döndürülen blob (bir enroll çağrısından) system/gatekeeper/include/gatekeeper/password_handle.h içinde gösterilen yapıya sahip olmalıdır.
  • verify işlevi, sağlanan parola tarafından üretilen imzayı karşılaştırmalı ve kayıtlı parola tanıtıcısı ile eşleştiğinden emin olmalıdır.

Kaydolmak ve doğrulamak için kullanılan anahtar hiçbir zaman değişmemeli ve her aygıt önyüklemesinde yeniden türetilebilir olmalıdır.

Güvenilir ve diğer uygulamalar

Trusty işletim sistemi, Google'ın TEE ortamları için güvenilir açık kaynak işletim sistemidir ve onaylanmış bir GateKeeper uygulaması içerir. Ancak, TEE'nin donanım destekli bir anahtara ve askıya alma sırasında çalışan güvenli, monoton bir saate erişimi olduğu sürece Gatekeeper'ı uygulamak için herhangi bir TEE işletim sistemini kullanabilirsiniz.

Trusty, paylaşılan bir sırrı doğrudan Keymaster ile Gatekeeper'ın ( Trusty Gatekeeper ) Trusty uygulaması arasında iletmek için dahili bir IPC sistemi kullanır. Bu paylaşılan sır, parola doğrulamasının onaylarını sağlamak için Anahtar Deposuna gönderilen AuthToken'ları imzalamak için kullanılır. Güvenilir Gatekeeper, her kullanım için Keymaster'dan anahtarı ister ve değeri sürdürmez veya önbelleğe almaz. Uygulamalar, bu sırrı, güvenlikten ödün vermeden herhangi bir şekilde paylaşmakta özgürdür.

Şifreleri kaydetmek ve doğrulamak için kullanılan HMAC anahtarı, yalnızca GateKeeper'da türetilir ve saklanır.

Android, yalnızca cihaza özgü yordamların tamamlanmasını gerektiren genel bir GateKeeper uygulaması sağlar. TEE'niz için cihaza özgü kod içeren bir TEE Gatekeeper uygulamak için system/gatekeeper/include/gatekeeper/gatekeeper.h içindeki işlevlere ve yorumlara başvurun. TEE GateKeeper için, uyumlu bir uygulamanın temel sorumlulukları şunları içerir:

  • Gatekeeper HAL'a bağlılık.
  • İade edilen AuthToken'lar, AuthToken spesifikasyonuna göre formatlanmalıdır ( Kimlik Doğrulama'da açıklanmıştır).
  • TEE Gatekeeper, ya istek üzerine bir TEE IPC aracılığıyla anahtarı talep ederek ya da değerin her zaman geçerli bir önbelleğini koruyarak bir HMAC anahtarını Keymaster ile paylaşabilmelidir.

Kullanıcı Güvenli Kimlikleri (SID'ler)

Kullanıcı SID'si, bir kullanıcının TEE temsilidir (bir Android kullanıcı kimliğiyle güçlü bir bağlantısı yoktur). SID, bir kullanıcı öncekini sağlamadan yeni bir şifre kaydettiğinde, bir kriptografik sözde rasgele sayı üreteci (PRNG) ile üretilir. Bu, güvenilmeyen yeniden kayıt olarak bilinir ve normal koşullarda Android çerçevesi tarafından buna izin verilmez. Güvenilir bir yeniden kayıt, bir kullanıcı geçerli, önceki bir şifre verdiğinde gerçekleşir; bu durumda, Kullanıcı SID'si, kendisine bağlı olan anahtarları koruyarak yeni parola tutamacına geçirilir.

Kullanıcı SID'si, parola kaydedildiğinde parola tutamacındaki parolayla birlikte HMAC'dir.

Kullanıcı SID'leri, verify işlevi tarafından döndürülen AuthToken'a yazılır ve kimlik doğrulamaya bağlı tüm Anahtar Deposu anahtarlarıyla ilişkilendirilir (AuthToken formatı ve Anahtar Deposu hakkındaki ayrıntılar için bkz. Kimlik Doğrulama ). Güvenilmeyen bir çağrı olarak enroll fonksiyonu Kullanıcı SID'yi değişecek, çağrı yararsız olduğunu şifre bağlı anahtarları verecek. Saldırganlar, Android işletim sistemini kontrol ediyorlarsa cihazın şifresini değiştirebilirler, ancak işlem sırasında kök korumalı, hassas anahtarları yok ederler.

Kısma iste

GateKeeper, bir kullanıcı kimlik bilgisi üzerindeki kaba kuvvet girişimlerini güvenli bir şekilde engelleyebilmelidir. hardware/libhardware/include/hardware/gatekeeper.h gibi, HAL milisaniye cinsinden bir zaman aşımının hardware/libhardware/include/hardware/gatekeeper.h sağlar. Zaman aşımı, istemciye, zaman aşımı geçene kadar GateKeeper'ı tekrar aramaması gerektiğini bildirir; Bekleyen bir zaman aşımı varsa GateKeeper isteklerine hizmet vermemelidir.

GateKeeper, bir kullanıcı şifresini doğrulamadan önce bir hata sayacı yazmalıdır. Parola doğrulaması başarılı olursa, hata sayacı temizlenmelidir. Bu, bir verify çağrısı yaptıktan sonra katıştırılmış MMC'yi (eMMC) devre dışı bırakarak kısıtlamayı önleyen saldırıları önler. enroll fonksiyonu da (eğer varsa) ve aynı şekilde kısılmalıdır kullanıcı şifresini doğrular.

Cihaz tarafından destekleniyorsa, depolama güvenliğini sağlamak için arıza sayacının yazılması önemle tavsiye edilir. Aygıt dosya tabanlı şifrelemeyi desteklemiyorsa veya güvenli depolama çok yavaşsa, uygulamalar Replay Protected Memory Block (RPMB) doğrudan kullanabilir.