Trusty TEE

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

Trusty jest zgodny z procesorami ARM i Intel. W systemach ARM Trusty używa technologii TrustZone firmy ARM do wirtualizacji głównego procesora i tworzenia bezpiecznego środowiska TEE. Podobna obsługa jest też dostępna na platformach Intel x86 korzystających z technologii wirtualizacji firmy Intel.

Diagram ogólny Trusty

Rysunek 1. Diagram przeglądu Trusty.

Trusty składa się z:

  • Małe jądro systemu operacyjnego wywodzące się z  Little Kernel
  • sterownik jądra systemu Linux do przesyłania danych między środowiskiem bezpiecznym a Androidem;
  • Biblioteka przestrzeni użytkownika Androida do komunikacji z zaufanymi aplikacjami (czyli bezpiecznymi zadaniami i usługami) za pomocą sterownika jądra.

Uwaga: Trusty i interfejs Trusty API mogą ulec zmianie. Więcej informacji o interfejsie Trusty API znajdziesz w dokumentacji Trusty API.

Zalety Trusty

Inne systemy operacyjne TEE są zwykle dostarczane jako binarne pliki blob przez zewnętrznych dostawców lub opracowywane wewnętrznie. Opracowywanie wewnętrznych systemów TEE lub licencjonowanie TEE od podmiotu zewnętrznego może być kosztowne dla dostawców układów SOC i producentów OEM. Koszty pieniężne w połączeniu z niewiarygodnymi systemami zewnętrznymi tworzą niestabilny ekosystem Androida. Trusty jest udostępniany partnerom jako niezawodna i bezpłatna alternatywa open source dla ich środowiska TEE. Trusty zapewnia poziom przejrzystości, który jest niemożliwy w przypadku systemów o zamkniętym kodzie źródłowym.

Android obsługuje różne implementacje TEE, więc nie musisz używać Trusty. Każdy system operacyjny TEE ma unikalny sposób wdrażania zaufanych aplikacji. Ta fragmentacja może być problemem dla deweloperów zaufanych aplikacji, którzy chcą mieć pewność, że ich aplikacje działają na każdym urządzeniu z Androidem. Korzystanie z Trusty jako standardu pomaga deweloperom tworzyć i wdrażać aplikacje bez uwzględniania fragmentacji wielu systemów TEE. Trusty TEE zapewnia deweloperom i partnerom przejrzystość, możliwość współpracy i sprawdzania kodu oraz proste debugowanie. Zaufani deweloperzy aplikacji mogą korzystać z tych samych narzędzi i interfejsów API, aby zmniejszyć ryzyko wprowadzenia luk w zabezpieczeniach. Deweloperzy mogą tworzyć aplikacje i używać ich na wielu urządzeniach bez konieczności dalszego rozwijania.

Aplikacje i usługi

Aplikacja Trusty to zbiór plików binarnych (plików wykonywalnych i plików zasobów), binarny plik manifestu i podpis kryptograficzny. W czasie działania aplikacje Trusty są uruchamiane jako odizolowane procesy w trybie bez uprawnień w jądrze Trusty. Każdy proces działa w osobnym środowisku wirtualnej pamięci, korzystając z możliwości jednostki zarządzania pamięcią procesora TEE. Kompilacja sprzętu zmienia dokładny proces, który jest wykonywany przez Trusty, ale na przykład jądro planuje te procesy za pomocą opartego na priorytetach algorytmu szeregowania z mechanizmem karuzelowym, który jest sterowany przez bezpieczny licznik czasu. Wszystkie aplikacje Trusty mają ten sam priorytet.

Omówienie aplikacji Trusty

Rysunek 2. Omówienie aplikacji Trusty.

Aplikacje Trusty innych firm

Wszystkie aplikacje Trusty są opracowywane przez jedną firmę i pakowane z obrazem jądra Trusty. Cały obraz jest podpisany i weryfikowany przez program rozruchowy podczas uruchamiania. W Trusty nie jest obsługiwane tworzenie aplikacji innych firm. Trusty umożliwia tworzenie nowych aplikacji, ale 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 informacji poufnych na urządzeniu i wykonywać za ich pomocą obliczenia lub przekształcenia danych. Możliwość tworzenia nowych aplikacji działających w TEE otwiera wiele możliwości innowacji. Jednak ze względu na samą definicję środowiska TEE nie można rozpowszechniać tych aplikacji bez pewnego rodzaju zaufania. Jest to cyfrowy podpis podmiotu, któremu ufa użytkownik produktu, na którym działa aplikacja.

Zastosowania i przykłady

TEE stają się standardem na urządzeniach mobilnych. Użytkownicy coraz częściej korzystają z urządzeń mobilnych w codziennym życiu, a potrzeba bezpieczeństwa rośnie. Urządzenia mobilne z TEE są bezpieczniejsze niż urządzenia bez TEE.

Na urządzeniach z TEE główny procesor jest często określany jako *niezaufany*, co oznacza, że nie ma dostępu do niektórych obszarów pamięci RAM, rejestrów sprzętowych i bezpieczników jednokrotnego zapisu, w których producent przechowuje tajne dane (np. klucze kryptograficzne specyficzne dla urządzenia). Oprogramowanie działające na głównym procesorze przekazuje wszelkie operacje wymagające użycia tajnych danych do procesora TEE.

Najbardziej znanym przykładem w ekosystemie Androida jest platforma DRM do ochrony treści. Oprogramowanie działające na procesorze TEE może uzyskiwać dostęp do kluczy specyficznych dla urządzenia, które są wymagane do odszyfrowania chronionych treści. Główny procesor widzi tylko zaszyfrowane treści, co zapewnia wysoki poziom bezpieczeństwa i ochrony przed atakami opartymi na oprogramowaniu.

TEE ma też inne zastosowania, takie jak płatności mobilne, bezpieczna bankowość, uwierzytelnianie wieloskładnikowe, ochrona przed resetowaniem urządzenia, odporne na powtórzenia trwałe przechowywanie danych, bezpieczne przetwarzanie kodu PIN i odcisku palca, a nawet wykrywanie złośliwego oprogramowania.