Trusty TEE

Trusty to bezpieczny system operacyjny, który zapewnia zaufane środowisko wykonawcze (TEE) na Androida. System operacyjny Trusty działa na tym samym procesorze co Android, ale jest odizolowany od reszty systemu zarówno pod względem sprzętowym, jak i programowym. 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 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™ ARM do wirtualizacji głównego procesora i tworzenia bezpiecznego zaufanego środowiska wykonawczego. Podobna obsługa jest 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 Androidzie do komunikacji z uczciwymi 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ą niestabilność ekosystemu Androida. Trusty jest udostępniana partnerom jako niezawodna i bezpłatna alternatywa open source dla zaufanych środowisk wykonawczych. Trusty zapewnia poziom przejrzystości, który jest niemoż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 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. TEE zaufania zapewnia deweloperom i partnerom przejrzystość, współpracę, możliwość sprawdzania kodu i łatwe debugowanie. 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 binarnego i 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 okrężnego opartego na priorytetach, który jest sterowany 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 mają dostęp do tajemnic urządzenia i mogą 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

Zaufane środowiska wykonawcze 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 związane z danym urządzeniem). 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 platforma 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 treści, 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 przechowywania z ochrona przed odtwarzaniem, bezpiecznego przetwarzania kodu PIN i odcisków palców, a nawet wykrywania złośliwego oprogramowania.