Trusty TEE

Trusty to bezpieczny system operacyjny (OS), który zapewnia zaufane środowisko wykonawcze (TEE) dla Androida. Trusty OS działa na tym samym procesorze co system operacyjny Android, ale Trusty jest odizolowany od reszty systemu zarówno sprzętem, jak i oprogramowaniem. 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 izolowany. 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 wykorzystuje Trustzone ™ firmy 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.

Ryc.1 . Schemat poglądowy zaufanego.

Trusty składa się z:

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

Uwaga: Trusty i Trusty API mogą ulec zmianie. Więcej informacji na temat Trusty API można znaleźć w dokumentacji API .

Dlaczego zaufany?

Inne systemy operacyjne TEE są tradycyjnie dostarczane jako binarne obiekty typu 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 producentów OEM. Koszt pieniężny w połączeniu z zawodnymi systemami innych firm tworzy niestabilny ekosystem dla Androida. Trusty jest udostępniany swoim partnerom jako niezawodna i bezpłatna alternatywa open source dla ich Trusted Execution Environment. Trusty zapewnia poziom przejrzystości, który nie jest możliwy w przypadku systemów zamkniętych.

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 próbują zapewnić, że ich aplikacje będą działać na każdym urządzeniu z Androidem. Stosowanie 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ść wglądu do kodu i łatwość debugowania. Zaufani programiści aplikacji mogą łączyć wspólne narzędzia i interfejsy API, aby zmniejszyć ryzyko wprowadzenia luk w zabezpieczeniach. Ci programiści będą mieli pewność, że mogą opracować aplikację i wykorzystać ją ponownie na wielu urządzeniach bez dalszego rozwoju.

Aplikacje i usługi

Aplikacja Trusty jest definiowana 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łasnej piaskownicy pamięci wirtualnej, wykorzystując możliwości jednostki zarządzania pamięcią procesora TEE. Budowa sprzętu zmienia dokładny proces, który przestrzega Trusty, ale na przykład jądro planuje te procesy za pomocą harmonogramu okrężnego opartego na priorytetach, sterowanego bezpiecznym taktowaniem zegara. Wszystkie aplikacje Trusty mają ten sam priorytet.

Rycina 2 . Przegląd aplikacji Trusty.

Aplikacje zaufanych firm

Obecnie wszystkie aplikacje Trusty są tworzone przez jedną firmę i pakowane z obrazem jądra Trusty. Cały obraz jest podpisywany i weryfikowany przez bootloader podczas rozruchu. Obecnie Trusty nie obsługuje tworzenia aplikacji innych firm. Chociaż Trusty umożliwia tworzenie nowych aplikacji, należy to robić z najwyższą ostrożnością; każda nowa aplikacja zwiększa obszar zaufanej bazy obliczeniowej (TCB) systemu. Zaufane aplikacje mogą uzyskiwać dostęp do sekretów urządzeń i mogą 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 pewnego rodzaju zaufania. Zwykle jest to podpis cyfrowy wystawiony 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 coraz większym stopniu polegają na swoich urządzeniach mobilnych w codziennym życiu, a potrzeba bezpieczeństwa 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 może uzyskać dostępu do niektórych 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 głównym procesorze deleguje wszelkie operacje, które wymagają użycia tajnych danych, do procesora TEE.

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

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