Trusty to bezpieczny system operacyjny, który zapewnia zaufane środowisko wykonawcze (TEE) na Androida. System operacyjny Trusty działa na tym samym procesorze co system operacyjny Android, ale jest odizolowany od reszty systemu zarówno pod względem sprzętowym, jak i programowym. Trusty i Android działają równolegle. Usługa Trusty ma dostęp do pełnej mocy głównego procesora i pamięci urządzenia, ale jest całkowicie odizolowana. Izolacja Trusty chroni ją przed złośliwymi aplikacjami zainstalowanymi przez użytkownika i potencjalnymi lukami w zabezpieczeniach, które mogą zostać odkryte w Androidzie.
Trusty jest zgodny z procesorami ARM i Intel. W systemach ARM Trusty używa TrustZone, aby zwirtualizować główny procesor i utworzyć bezpieczny TEE. Podobna obsługa jest też dostępna na platformach Intel x86 z technologią wirtualizacji Intel.

Rysunek 1. Diagram ogólny Trusty
Trusty składa się z:
- małe jądro systemu operacyjnego oparte na Little Kernel,
- Sterownik jądra Linuxa do przesyłania danych między bezpiecznym środowiskiem a Androidem
- biblioteka użytkownika na Androida do komunikacji z zaufanymi aplikacjami (czyli bezpiecznymi zadaniami/usługami) za pomocą sterownika jądra.
Uwaga: Trusty i Trusty API mogą ulec zmianie. Informacje o Trusty API znajdziesz w dokumentacji interfejsu API.
Dlaczego Trusty?
Inne systemy operacyjne TEE są tradycyjnie dostarczane jako binarne bloby przez zewnętrznych dostawców lub opracowane wewnętrznie. Tworzenie wewnętrznych systemów TEE lub licencjonowanie TEE od firmy zewnętrznej może być kosztowne dla dostawców układów SOC i producentów OEM. Koszty finansowe w połączeniu z niepewnymi systemami zewnętrznymi powodują niestabilny ekosystem Androida. Trusty jest udostępniana partnerom jako niezawodna i bezpłatna alternatywa typu open source dla TEE. Trusty zapewnia poziom przejrzystości, który nie jest możliwy w przypadku systemów zamkniętego kodu.
Android obsługuje różne implementacje TEE, więc nie musisz ograniczać się do korzystania z Trusty. Każdy system TEE ma własny sposób wdrażania zaufanych aplikacji. Ta fragmentaryzacja może stanowić problem dla zaufanych deweloperów aplikacji, którzy chcą mieć pewność, że ich aplikacje będą działać na każdym urządzeniu z Androidem. Korzystanie z Trusty jako standardu ułatwia deweloperom aplikacji tworzenie i wdrażanie aplikacji bez konieczności uwzględniania fragmentacji wielu systemów TEE. Zapewnienie przejrzystości, współpracy, możliwości inspekcji kodu i łatwego debugowania przez zaufane TEE dla deweloperów i partnerów. Zaufani deweloperzy aplikacji mogą korzystać z powszechnie stosowanych narzędzi i interfejsów API, aby zmniejszyć ryzyko wprowadzenia luk w zabezpieczeniach. Będą oni mogli mieć pewność, że mogą opracować aplikację i wykorzystać ją na wielu urządzeniach bez konieczności dalszego jej rozwijania.
Aplikacje i usługi
Aplikacja Trusty to zbiór plików binarnych (plików wykonywalnych i plików zasobów), pliku manifestu binarnego oraz podpisu kryptograficznego. Podczas działania aplikacje Trusty są uruchamiane jako procesy izolowane w trybie niezaufanym w jądrze Trusty. Każdy proces działa w swoim własnym piaskownicy pamięci wirtualnej, korzystając z możliwości jednostki zarządzania pamięcią procesora TEE. Wersja sprzętowa zmienia dokładny proces, którego używa Trusty, ale na przykład jądro planuje te procesy za pomocą algorytmu szeregowania typu round-robin opartego na priorytetach i sterowanego przez bezpieczny licznik czasu. Wszystkie aplikacje zaufane mają ten sam priorytet.

Rysunek 2. Informacje o aplikacji Trusty
Zaufane aplikacje innych firm
Obecnie wszystkie aplikacje Trusty są tworzone przez jedną firmę i pakowane z obrazem jądra Trusty. Podczas rozruchu cały obraz jest podpisywany i weryfikowany przez program rozruchowy. Obecnie w Trusty nie jest obsługiwane tworzenie aplikacji przez firmy zewnętrzne. Chociaż Trusty umożliwia tworzenie nowych aplikacji, należy to robić z bardzo dużą ostrożnością. Każda nowa aplikacja zwiększa obszar zaufanego przetwarzania (TCB) w systemie. Zaufane aplikacje mogą uzyskiwać dostęp do tajemnic urządzenia i wykonywać za ich pomocą obliczenia lub przekształcenia danych. Możliwość tworzenia nowych aplikacji, które działają w TEE, otwiera wiele możliwości innowacji. Jednak ze względu na samą definicję TEE, te aplikacje nie mogą być rozpowszechniane bez jakiejś formy zaufania. Zwykle jest to podpis cyfrowy podmiotu zaufany przez użytkownika produktu, w którym działa aplikacja.
Zastosowania i przykłady
TEE szybko stają się standardem na urządzeniach mobilnych. Użytkownicy coraz częściej korzystają z urządzeń mobilnych w codziennym życiu, a potrzeba zapewnienia bezpieczeństwa stale rośnie. Urządzenia mobilne z procesorem TEE są bezpieczniejsze niż urządzenia bez tego procesora.
Na urządzeniach z implementacją TEE procesor główny jest często określany jako „niebezpieczny”, co oznacza, że nie ma dostępu do niektórych obszarów pamięci RAM, rejestrów sprzętowych i blokad jednorazowego zapisu, w których producent przechowuje dane tajne (np. klucze kryptograficzne specyficzne dla urządzenia). Oprogramowanie działające na głównym procesorze deleguje wszystkie operacje, które wymagają użycia tajnych danych, do procesora TEE.
Najbardziej znanym przykładem w ekosystemie Androida jest ramka DRM do obsługi treści chronionych. Oprogramowanie działające na procesorze TEE może uzyskać dostęp do kluczy powiązanych z urządzeniem, które są wymagane do odszyfrowania chronionych treści. Główny procesor widzi tylko zaszyfrowane dane, zapewniając wysoki poziom bezpieczeństwa i ochrony przed atakami oprogramowania.
TEE można stosować na wiele innych sposobów, np. do płatności mobilnych, bezpiecznego bankowości, uwierzytelniania wieloskładnikowego, ochrony przed resetowaniem urządzenia, trwałego magazynu z ochrona przed odtwarzaniem, bezpiecznego przetwarzania kodu PIN i odcisków palców, a nawet wykrywania złośliwego oprogramowania.