Niezawodny TEE

Trusty to bezpieczny system operacyjny (OS), który zapewnia Trusted Execution Environment (TEE) dla Androida. System operacyjny Trusty działa na tym samym procesorze, co system operacyjny Android, ale Trusty jest odizolowany od reszty systemu zarówno przez sprzęt, jak i oprogramowanie. Trusty i Android działają równolegle. Trusty ma dostęp do pełnej mocy głównego procesora i pamięci urządzenia, ale jest całkowicie odizolowany. Izolacja Trusty chroni go przed złośliwymi aplikacjami zainstalowanymi przez użytkownika i potencjalnymi lukami, które mogą zostać wykryte w systemie Android.

Trusty jest kompatybilny z procesorami ARM i Intel. W systemach ARM Trusty używa Trustzone™ ARM do wirtualizacji głównego procesora i stworzenia bezpiecznego, zaufanego środowiska wykonawczego. Podobna obsługa jest również dostępna na platformach Intel x86 wykorzystujących technologię wirtualizacji firmy Intel.

Rysunek 1 . Schemat poglądowy Trusty.

Trusty składa się z:

  • Małe jądro systemu operacyjnego pochodzące z Little Kernel
  • Sterownik jądra Linux do przesyłania danych między bezpiecznym środowiskiem a systemem Android
  • Biblioteka przestrzeni użytkownika Androida do komunikacji z zaufanymi aplikacjami (tj. bezpiecznymi zadaniami/usługami) za pośrednictwem sterownika jądra

Uwaga: Trusty i Trusty API mogą ulec zmianie. Aby uzyskać informacje o interfejsie Trusty API, zapoznaj się z dokumentacją API .

Dlaczego zaufany?

Inne systemy operacyjne TEE są tradycyjnie dostarczane jako binarne obiekty blob przez dostawców zewnętrznych lub opracowywane wewnętrznie. Opracowywanie wewnętrznych systemów TEE lub licencjonowanie TEE od strony trzeciej może być kosztowne dla dostawców System-on-Chip (SoC) i OEM. Koszt pieniężny w połączeniu z zawodnymi systemami innych firm tworzy niestabilny ekosystem dla Androida. Trusty jest dostarczany swoim partnerom jako niezawodna i bezpłatna alternatywa typu open source dla ich zaufanego środowiska wykonywania. Trusty oferuje poziom przejrzystości, który po prostu nie jest możliwy w przypadku systemów o zamkniętym kodzie źródłowym.

Android obsługuje różne implementacje TEE, więc nie musisz ograniczać się do korzystania z Trusty. Każdy system operacyjny TEE ma swój własny, unikalny sposób wdrażania zaufanych aplikacji. Ta fragmentacja może stanowić problem dla zaufanych twórców aplikacji, którzy chcą zapewnić działanie ich aplikacji na każdym urządzeniu z Androidem. Używanie Trusty jako standardu pomaga twórcom aplikacji w łatwym tworzeniu i wdrażaniu aplikacji bez uwzględniania fragmentacji wielu systemów TEE. Trusty TEE zapewnia programistom i partnerom przejrzystość, współpracę, możliwość kontroli kodu i łatwość debugowania. Zaufani programiści aplikacji mogą skupiać się na wspólnych narzędziach i interfejsach API, aby zmniejszyć ryzyko wprowadzenia luk w zabezpieczeniach. Tacy programiści będą mieli pewność, że mogą opracować aplikację i ponownie ją wykorzystać na wielu urządzeniach bez dalszego rozwoju.

Aplikacje i usługi

Aplikacja Trusty jest zdefiniowana jako zbiór plików binarnych (plików wykonywalnych i plików zasobów), manifestu binarnego i podpisu kryptograficznego. W czasie wykonywania aplikacje Trusty działają jako izolowane procesy w trybie nieuprzywilejowanym w jądrze Trusty. Każdy proces działa we własnym obszarze izolowanym pamięci wirtualnej, wykorzystując możliwości jednostki zarządzania pamięcią procesora TEE. Kompilacja sprzętu zmienia dokładny proces, za którym podąża Trusty, ale na przykład jądro planuje te procesy za pomocą harmonogramu opartego na priorytetach, działającego w trybie round-robin, sterowanego bezpiecznym taktem czasowym. Wszystkie aplikacje Trusty mają ten sam priorytet.

Rysunek 2 . Przegląd zaufanych aplikacji.

Aplikacje Trusty innych firm

Obecnie wszystkie aplikacje Trusty są opracowywane przez jedną firmę i pakowane z obrazem jądra Trusty. Cały obraz jest podpisany i weryfikowany przez bootloader podczas rozruchu. Program Trusty nie obsługuje obecnie tworzenia aplikacji innych firm. Chociaż Trusty umożliwia tworzenie nowych aplikacji, należy to robić ze szczególną ostrożnością; każda nowa aplikacja zwiększa obszar zaufanej bazy obliczeniowej (TCB) systemu. Zaufane aplikacje mogą uzyskiwać dostęp do kluczy tajnych urządzeń i przy ich użyciu wykonywać obliczenia lub transformacje danych. Możliwość tworzenia nowych aplikacji działających w TEE otwiera wiele możliwości dla innowacji. Jednak ze względu na samą definicję TEE, aplikacje te nie mogą być rozpowszechniane bez dołączonego pewnego rodzaju zaufania. Zazwyczaj jest to podpis cyfrowy złożony przez podmiot, któremu ufa użytkownik produktu, na którym działa aplikacja.

Zastosowania i przykłady

Zaufane środowiska wykonawcze szybko stają się standardem w urządzeniach mobilnych. Użytkownicy w codziennym życiu coraz bardziej polegają na swoich urządzeniach mobilnych, a zapotrzebowanie na bezpieczeństwo stale rośnie. Urządzenia mobilne z TEE są bezpieczniejsze niż urządzenia bez TEE.

W urządzeniach z implementacją TEE główny procesor jest często określany jako „niezaufany”, co oznacza, że ​​nie ma dostępu do pewnych obszarów pamięci RAM, rejestrów sprzętowych i bezpieczników jednokrotnego zapisu, w których znajdują się tajne dane (takie jak klucze kryptograficzne specyficzne dla urządzenia). przechowywane przez producenta. Oprogramowanie działające na procesorze głównym deleguje wszelkie operacje wymagające użycia tajnych danych do procesora TEE.

Najbardziej znanym tego przykładem w ekosystemie Androida jest struktura DRM dla treści chronionych. Oprogramowanie działające na procesorze TEE może uzyskać dostęp do kluczy specyficznych dla urządzenia wymaganych do odszyfrowania chronionej zawartości. Główny procesor widzi tylko zaszyfrowaną zawartość, zapewniając wysoki poziom bezpieczeństwa i ochrony przed atakami programowymi.

Istnieje wiele innych zastosowań TEE, takich jak płatności mobilne, bezpieczna bankowość, uwierzytelnianie wieloskładnikowe, ochrona resetowania urządzenia, pamięć trwała chroniona przed odtwarzaniem, bezpieczne przetwarzanie kodu PIN i odcisków palców, a nawet wykrywanie złośliwego oprogramowania.