Technologia Arm TrustZone w urządzeniach wbudowanych o ograniczonych zasobach

Technologia Arm TrustZone to cieszący się powodzeniem system bezpieczeństwa, obecny dziś w setkach milionów telefonów komórkowych. Jego przyjęcie przez producentów telefonów spowodowane było potrzebą posiadania wyizolowanej bezpiecznej przestrzeni, w której banki i systemy płatności mogłyby uruchamiać transakcje finansowe online. Ten system bezpieczeństwa niweluje ryzyko przejęcia krytycznych danych użytkownika, co pozwoliłoby hakerom na wykonywanie w jego imieniu płatności lub przelewów.

Transakcja finansowa online jest skomplikowanym procesem programowym a zabezpieczenie tego procesu jest konieczne. Najlepszym dowodem na wysoki poziom bezpieczeństwa jaki daje technologia TrustZone jest fakt, że giganci świata finansowego powszechnie ją zaakceptowali.


Jednak jej istotność dla bezpieczeństwa ekosystemu telefonów komórkowych i systemu finansowego nieco przesłoniła jej wpływ na świat urządzeń wbudowanych. W telefonach komórkowych technologia Arm TrustZone jest zaimplementowana w wysokowydajnych procesorach aplikacyjnych klasy Cortex-A lub lepszych. W świecie embedded urządzenia bazują zazwyczaj na mikrokontrolerach, które mają o wiele bardziej ograniczoną moc obliczeniową, zgodnie z mniejszymi wymaganiami funkcjonalnymi oraz mają bardziej ograniczone zasoby dostępnej energii oraz kosztów produkcji.

Środowisko TEE

Zarówno w mikrokontrolerze, jak i procesorze, technologia TrustZone stanowi bezpieczną platformę pozwalającą na działanie oprogramowania w ramach Trusted Execution Environment (TEE). Arm we współpracy z organizacją GlobalPlatform opracował interfejsy programowania (API), procesy potwierdzania zgodności oraz certyfikaty dla środowiska TEE.

TEE składa się z trzech części: bazującej na sprzęcie technologii izolacji (takiej jak Arm TrustZone), bezpiecznym uruchamianiu (ang. trusted boot) i małych, zaufanych systemach operacyjnych. TEE można użyć do uruchomienia wielu osobnych zaufanych aplikacji, które mogą zostać dostarczone bezprzewodowo. W porównaniu z innymi technologiami, TEE oferują lepszą wydajność i dostęp do większych zasobów pamięci. Środowisko, zarówno własnego projektu, jak i dostarczone przez firmy zewnętrzne, ma następujące funkcje bezpieczeństwa:

  • bezpieczne uruchamianie (trusted boot),
  • zarządzanie spójnością,
  • uwierzytelnianie,
  • płatności,
  • ochrona zasobów,
  • kryptografia,
  • zarządzanie urządzeniem mobilnym.

Teraz, po wprowadzeniu nowych rdzeni procesorów Cortex M-23 i M-33, wbudowane systemy mikrokontrolerowe mogą uruchamiać oprogramowanie w sposób bezpieczny w środowisku TEE na platformie TrustZone. Sprawia to, że projektanci tych systemów mogą emulować wiele funkcji bezpieczeństwa współczesnych smartfonów.

Rola bezpiecznej izolacji oprogramowania w systemach wbudowanych

Prawdą jest, że hakerzy-kryminaliści skupiają wysiłki na złamaniu zabezpieczeń tych systemów, dzięki którym mogą najwięcej zyskać. Telefon komórkowy, którym można wyciągnąć środki z konta użytkownika, bezsprzecznie stanowi cenny cel dla przestępców. Można by łatwo założyć, że o wiele cenniejszym niż urządzenie wbudowane.

Wyobraźmy jednak sobie proste urządzenie, jakim jest inteligentny termostat domowy podłączony do internetu, aby mieć dostęp do aplikacji chmurowych. Atak hakerski mógłby zostać zrealizowany przez fałszywą aktualizację oprogramowania metodą bezprzewodową (ang. OTA, od Over-The-Air). Efektem takiej aktualizacji mógłby być napis na ekranie termostatu o treści: „Zapłać 1 Bitcoin, albo ogrzewanie zostanie wyłączone”. Atak taki przeprowadzony na kilka milionów termostatów mógłby dać wystarczające zyski, aby wynagrodzić czas i ryzyko związane z jego przygotowaniem.

Niektóre systemy wbudowane używają urządzeń zapewniających bezpieczne uwierzytelnianie. Typowy przykład to układ A1006 firmy NXP Semiconductors, który wykorzystuje unikalną, szyfrowaną tożsamość, aby zabezpieczyć się przed atakami poprzez aktualizację OTA. Można wymagać identyfikacji urządzenia przez aktualizację, zanim zostanie ona uruchomiona. Uwierzytelnianie pozwala uzyskać pewien stopień bezpieczeństwa i stanowi jedną z funkcji technologii TrustZone.

Możliwości platformy Arm TrustZone

Ale TrustZone robi o wiele więcej niż tylko bezpieczną weryfikację tożsamości procesora. Oferuje on całemu systemowi sprzętowy podział funkcji i zasobów na elementy „zaufane” i „niezaufane”. Jak mówi Arm: „TrustZone jest systemowym podejściem do bezpieczeństwa układów System-On-Chip (SoC) i procesorów, pozwalający na izolację i ochronę zabezpieczonego sprzętu, oprogramowania i zasobów. TrustZone to sprzętowe bezpieczeństwo wbudowane w SoC przez projektantów układów półprzewodnikowych, a następnie używane przez programistów”

Idąc dalej: „Nowa technologia TrustZone dla [mikrokontrolerów z rdzeniem] Cortex-M może być wykorzystywana do ochrony firmware’u, peryferiów i portów I/O, jak również do uzyskania izolacji przy bezpiecznym uruchamianiu, zaufanych aktualizacjach i implementacji root-of-trust przy zachowaniu deterministycznej responsywności w czasie rzeczywistym, wymaganej od systemów wbudowanych. Bezpośredni dostęp niezabezpieczonego oprogramowania do bezpiecznych zasobów zostaje zablokowany i dotyczy do nie tylko procesora, ale rozciąga się także na pamięć, oprogramowanie, transakcje magistralowe, przerwania i peryferia całego SoC”.

Daje to „bezpieczeństwo w run-time”, w odróżnieniu od częściowego zabezpieczenia, które daje uwierzytelnianie układu. Na przykład w systemie takim jak bezprzewodowy, sterowany klawiaturą, inteligentny zamek do drzwi, technologia TrustZone pozwala programiście na implementację nie tylko kodu działającego bezpiecznie w procesorze, ale także zaufanych operacji na klawiszach oraz wejściu z kamery, co całkowicie blokuje możliwość ataku poprzez fałszywe sygnały z klawiatury, jak to pokazano na rysunku 1.

ARM TrustZone - konfiguracja portów w przestrzeni zaufanejRysunek 1. W mikrokontrolerze SAM L11 firmy Microchip można skonfigurować porty I/O obsługujące klawiaturę, aby działały w przestrzeni zaufanej

Koncepcja sprzętowej separacji świata zaufanego i niezaufanego leży w samym sercu podejścia TrustZone. Niezaufane oprogramowanie nie może uzyskać bezpośredniego dostępu do zaufanych zasobów. Dostęp taki można uzyskać tylko poprzez API oprogramowania zaufanego, jak to pokazano na rysunku 2. Taki interfejs implementuje procesy uwierzytelniania, aby podjąć decyzję o przyznaniu dostępu do zaufanych usług. Oznacza to, że nawet jeśli w niezaufanych aplikacjach istnieją jakieś luki bezpieczeństwa, hakerzy nie będą w stanie wykorzystać ich do obejścia zabezpieczeń całego układu.

ARM TrustZone - dostęp do zaufanych zasobówRysunek 2. API zaufanego oprogramowania może pozwolić niezaufanemu oprogramowaniu na dostęp do zaufanych zasobów – ale dopiero po udanym uwierzytelnieniu

Proste programowanie podwójnej architektury

Powodem, dla którego technologia TrustZone jest tak wysoko ceniona przez jej użytkowników, jest fakt, że jest ona wbudowana w architekturę sprzętową układu. Zasoby zaufane i niezaufane są fizycznie rozdzielone w krzemie.

Programiści systemów wbudowanych mogą obawiać się, że ta podwójna architektura stworzy skomplikowane środowisko, w którym ciężko będzie pisać aplikacje, szczególnie jeśli będą wymagały responsywności w czasie rzeczywistym. Jednak fakt rozdzielenia zasobów zaufanych i niezaufanych w krzemie jest całkowicie niewidoczny w środowisku programistycznym. Programista pracujący z rdzeniami Cortex-M33 lub M23 – pierwszymi, które korzystają z technologii TrustZone – zobaczy dokładnie ten sam interfejs w znanych mu środowiskach programistycznych, np. Arm Keil, jaki zobaczyłby w przypadku dowolnego innego mikrokontrolera z rdzeniem Cortex-M. Główną różnicą jest możliwość skonfigurowania danego procesu lub zasobu jako zaalokowanego w przestrzeni zaufanej lub niezaufanej.

Środowisko programistyczne pozwala też programiście wygenerować proces uwierzytelniania. W tym procesie zaufane API daje dostęp do zaufanych zasobów niezaufanemu, ale uwierzytelnionemu programowi. Zarówno w rdzeniu Cortex-M23, jak i M33, proces ten będzie mógł korzystać z kluczy bezpieczeństwa składowanych w pamięci zaufanej i z dedykowanych peryferiów, takich jak silnik szyfrujący, uruchamiany również w przestrzeni zaufanej.

Aby sprostać wymaganiom pracy w czasie rzeczywistym, implementacja TrustZone w rdzeniach Cortex-M różni się od tej z rdzeni Cortex-A. Wykorzystuje ona Secure Attribution Unit (SAU), aby niemal natychmiast przełączać się między stanami zaufanymi i niezaufanymi, w odróżnieniu od instrukcji Secure Monitor Call w oprogramowaniu procesorów klasy A.

Mikrokontrolery z technologią TrustZone

Ekosystem programistyczny może być zastosowany do tworzenia nowych projektów systemów wykorzystujących technologię TrustZone po wejściu do produkcji kompatybilnych układów mikrokontrolerów, takich jak SAM L11 firmy Microchip czy rodzina LPC5500 firmy NXP Semiconductors.

Układy SAM L11 i SAM L10, stworzone w tym samym czasie, bazują na rdzeniu Arm Cortex-M23. Z dwóch rdzeni obsługujących technologię TrustZone, Cortex-M23 jest o 75% mniejszy niż rdzeń Cortex-M23 i zużywa dwa razy mniej mocy.

NXP wykorzystało w mikrokontrolerze LPC5500 rdzeń Cortex-M33, aby uzyskać szerszy zakres funkcji bezpieczeństwa, między innymi funkcję: PUF (Physically Unclonable Function) dla pamięci SRAM, stanowiącą bezpieczny root-of-trust, bezpieczne pierwsze połączenie (ang. provisioning), wykonanie szyfrowanych plików w czasie rzeczywistym i ochronę zasobów.

Można porównać możliwości i zużycie mocy rdzenia Cortex-M23 do rdzenia Cortex-M0+. Oznacza to, że projektanci mogą teraz zastosować sprawdzoną platformę sprzętowo-programistyczną wysokiego bezpieczeństwa nawet w bardzo małych systemach z ograniczonymi zasobami. I mogą to zrobić bez rezygnacji z właściwości deterministycznych i obsługi zdarzeń w czasie rzeczywistym typowego produktu branży embedded.

Funkcje bezpieczeństwa układów SAM L10 i L11

Zarówno SAM L10, jak i SAM L11 mają wbudowane wykrywanie próby ingerencji w układ (ang. tamper resistance), bezpieczne uruchamianie oraz pamięć na klucze bezpieczeństwa. W połączeniu z technologią TrustZone, funkcje te pozwalają producentowi na ustanowienie sprzętowego łańcucha bezpieczeństwa. Zwiększają również ochronę zarówno przed zdalnymi jaki i fizycznymi atakami, jak pokazano na rysunku 3.

ARM TrustZone - funkcje bezpieczeństwaRysunek 3. Funkcje bezpieczeństwa mikrokontrolerów SAM L11 chronią układ przed różnymi formami ataków

Mikrokontroler SAM L11 integruje także element root-of-trust firmy Trustonic w czasie produkcji układu scalonego, umożliwiając współpracę z oprogramowaniem Kinibi-M. Daje to możliwość oddzielenia od niższych warstw sprzętowych mikrokontrolera SAM L11 i pozwala w sposób modułowy podejść do projektu graficznego interfejsu użytkownika.

Partnerstwo z Secure Thingz i Data I/O Corporation zapewnia usługę bezpiecznego dostarczania kluczy klientom, którzy mają sprawdzone systemy bezpieczeństwa. Procesory te są w pełni obsługiwane przez środowiska deweloperskie Arm Keil oraz IAR Embedded Workbench.

SAM L11 - architektura bezpieczeństwaRysunek 4: Architektura bezpieczeństwa mikrokontrolera SAM L11, zawierająca technologię Arm TrustZone i interfejs graficzny Kinibi-M

Koniec barier przy wbudowywaniu bezpieczeństwa do systemów wbudowanych

Smarfony stanowią dzisiaj wzór do naśladowania jeśli chodzi o bezpieczeństwo online. Miliardy użytkowników bezpiecznie używają ich do wykonywania płatności zbliżeniowych w sklepach czy w systemie transportu publicznego a także do przelewów pieniężnych w aplikacjach bankowych. Technologia TrustZone firmy Arm, w którą wyposażone są procesory aplikacyjne z rdzeniem Arm Cortex-A oferuje podstawę sprzętową o bardzo wysokim poziomie bezpieczeństwa.

Teraz ta sama technologia jest dostępna w rdzeniach Cortex-M33 i M23. Sprawia to, że urządzenia wbudowane w IoT stanowią sprawdzoną podstawę chroniącą przed wieloma rodzajami fizycznych i zdalnych ataków.

O autorze