Trusty to bezpieczny system operacyjny (OS), który zapewnia zaufane środowisko wykonawcze (TEE) dla systemu Android. System operacyjny Trusty 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 odizolowany. Izolacja Trusty chroni go przed złośliwymi aplikacjami instalowanymi 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 technologię ARM Trustzone™ do wirtualizacji głównego procesora i stworzenia bezpiecznego, zaufanego środowiska wykonawczego. Podobna obsługa jest również dostępna na platformach Intel x86 korzystających z technologii wirtualizacji firmy Intel.
Zaufanie składa się z:
- Małe jądro systemu operacyjnego pochodzące z Little Kernel
- Sterownik jądra Linux do przesyłania danych pomiędzy bezpiecznym środowiskiem a systemem Android
- Biblioteka przestrzeni użytkownika systemu Android umożliwiająca komunikację z zaufanymi aplikacjami (tj. bezpiecznymi zadaniami/usługami) za pośrednictwem sterownika jądra
Uwaga: Trusty i Trusty API mogą ulec zmianom. Informacje na temat interfejsu Trusty API można znaleźć w dokumencie Dokumentacja interfejsu API .
Dlaczego Trusty?
Inne systemy operacyjne TEE są tradycyjnie dostarczane w postaci binarnych obiektów blob przez zewnętrznych dostawców 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ępniane swoim partnerom jako niezawodna i bezpłatna alternatywa typu open source dla ich zaufanego środowiska wykonawczego. Trusty oferuje poziom przejrzystości, który nie jest możliwy w przypadku systemów o zamkniętym kodzie źródłowym.
Android obsługuje różne implementacje TEE, więc korzystanie z Trusty nie jest ograniczone. 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ą mieć pewność, że ich aplikacje będą działać 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ędnienia fragmentacji wielu systemów TEE. Trusty TEE zapewnia programistom i partnerom przejrzystość, współpracę, możliwość inspekcji kodu i łatwość debugowania. Zaufani twórcy aplikacji mogą pracować nad wspólnymi narzędziami i interfejsami API, aby zmniejszyć ryzyko wprowadzenia luk w zabezpieczeniach. Programiści ci będą mieli pewność, że mogą opracować aplikację i używać jej ponownie na wielu urządzeniach bez dalszego rozwijania.
Aplikacje i usługi
Aplikację Trusty definiuje się jako zbiór plików binarnych (plików wykonywalnych i plików zasobów), manifest binarny i podpis kryptograficzny. 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órym podąża Trusty, ale na przykład jądro planuje te procesy przy użyciu opartego na priorytetach, działającego okrężnie programu planującego, sterowanego bezpiecznym znacznikiem czasowym. Wszystkie aplikacje Trusty mają ten sam priorytet.
Aplikacje Trusty innych firm
Obecnie wszystkie aplikacje Trusty są opracowywane przez jedną firmę i pakowane z obrazem jądra Trusty. Cały obraz jest podpisywany i weryfikowany przez program ładujący podczas uruchamiania. Tworzenie aplikacji innych firm nie jest obecnie obsługiwane w Trusty. Chociaż Trusty umożliwia tworzenie nowych aplikacji, należy przy tym zachować szczególną ostrożność; każda nowa aplikacja zwiększa obszar zaufanej bazy obliczeniowej (TCB) systemu. Zaufane aplikacje mogą uzyskiwać dostęp do sekretów urządzeń i za ich pomocą wykonywać obliczenia lub transformacje danych. Możliwość tworzenia nowych aplikacji działających w TEE otwiera wiele możliwości innowacji. Jednak ze względu na samą definicję TEE aplikacje te nie mogą być dystrybuowane bez jakiejś formy zaufania. Zwykle ma to formę podpisu cyfrowego złożonego przez podmiot zaufany przez użytkownika produktu, na którym działa aplikacja.
Zastosowania i przykłady
Zaufane środowiska wykonawcze szybko stają się standardem na 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.
Na 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 jednorazowego 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 wymagające użycia tajnych danych do procesora TEE.
Najbardziej znanym tego przykładem w ekosystemie Androida jest platforma 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 chronionej zawartości. Główny procesor widzi tylko zaszyfrowaną treść, zapewniając wysoki poziom bezpieczeństwa i ochrony przed atakami programowymi.
TEE ma wiele innych zastosowań, takich jak płatności mobilne, bezpieczna bankowość, uwierzytelnianie wieloskładnikowe, ochrona przed resetowaniem urządzenia, trwałe przechowywanie zabezpieczone przed powtarzaniem, bezpieczne przetwarzanie PIN-u i odcisków palców, a nawet wykrywanie złośliwego oprogramowania.