Zabezpieczanie systemów wbudowanych za pomocą mikrokontrolera PSoC 64

Przez: Jacob Beningo

Przekazane przez: Północnoamerykańscy redaktorzy DigiKey

Liczba produktów połączonych z Internetem rośnie w tempie wykładniczym. Problem, przed którym stoi wiele zespołów ds. produktów, polega na niewystarczającym doświadczeniu deweloperów oprogramowania systemów wbudowanych w zakresie zabezpieczeń. Brak doświadczenia może prowadzić do pominięcia wymogów bezpieczeństwa, pozostawienia luk w zabezpieczeniach i niskiej jakości implementacji. W rezultacie otrzymujemy połączone systemy, które są słabo chronione i stanowią łakomy kąsek dla złodziei własności intelektualnej, a także danych dotyczących urządzeń i użytkowników.

Projektanci systemów opartych na mikrokontrolerach mają do dyspozycji kilka rozwiązań, które mogą uprościć implementację zabezpieczeń i zapewnić stosowne narzędzia. Na przykład mikrokontrolery jednordzeniowe mogą wykorzystywać technologię TrustZone firmy Arm, która jest częścią architektury Armv8-M (i czymś więcej). Istnieją również rozwiązania dla mikrokontrolerów wielordzeniowych.

W niniejszym artykule opisano, w jaki sposób deweloperzy mogą korzystać z wielordzeniowych procesorów w celu zabezpieczenia rozwiązań wbudowanych. W szczególności przyglądamy się bezpiecznemu mikrokontrolerowi PSoC 64 firmy Cypress oraz narzędziom zapewnianym dla wdrożenia bezpiecznych rozwiązań.

Podstawy zabezpieczeń wbudowanych

Jedną z najbardziej podstawowych reguł projektowania bezpiecznych produktów jest wykorzystanie izolacji sprzętowej. Taka izolacja może przybierać wiele form, np. izolowanego środowiska wykonawczego lub odizolowanej pamięci opartej na jednostce ochrony pamięci (MPU). Na najwyższym poziomie mikrokontroler musi mieć możliwość oddzielenia środowiska wykonawczego od bezpiecznego środowiska przetwarzania (SPE) i niezabezpieczonego środowiska przetwarzania (NSPE).

Bezpieczne środowisko przetwarzania (SPE) jest izolowanym środowiskiem wykonawczym, w którym pamięć, komponenty i kod aplikacji są oddzielone od niezabezpieczonego środowiska przetwarzania (NSPE). O SPE można powiedzieć, że jest procesorem zabezpieczeń. Bezpieczne środowisko przetwarzania (SPE) obsługuje bezpieczny kod i operacje, takie jak bezpieczny system operacyjny i/lub aparat zaufany (RoT). SPE będzie również wykonywać zaufane usługi, takie jak kryptografia, bezpieczne przechowywanie, atestacja i bezpieczne logowanie. W SPE uruchamiana jest ograniczona liczba zaufanych aplikacji związanych z bezpiecznym działaniem .

Natomiast niezabezpieczone środowisko przetwarzania (NSPE) można uznać za część zawierającą rozbudowane funkcje wykonawcze, która uruchamia wszystko, za wyjątkiem bezpiecznych operacji. W rzeczywistości środowisko NSPE jest dobrze znanym modelem programowania, do którego przyzwyczajona jest większość deweloperów systemów wbudowanych. Zawiera system operacyjny czasu rzeczywistego (RTOS) i większość składników aplikacji.

Izolacja na poziomie sprzętu jest jedną z kluczowych cech czy też najlepszych praktyk zapewnianych przez architekturę zabezpieczeń platformy (PSA) Arm®, pozwalających na tworzenie bezpiecznych systemów. Różne omówione wyżej warstwy izolacji przedstawiono na ilustracji 1 na przykładzie mikrokontrolera PSoC 64. W tym przykładzie środowiska SPE i NSPE (1) zapewniają izolację sprzętową poprzez realizację środowisk przetwarzania na osobnych procesorach. Oprócz separacji przetwarzania dodatkowo izolowany jest aparat zaufany (RoT) i zaufane usługi (2). Ostatecznie każda zaufana aplikacja w środowisku SPE jest także izolowana za pomocą takich narzędzi, jak zaufane partycje i jednostki ochrony pamięci (3).

Schemat bezpiecznej aplikacji wykorzystujący izolację sprzętowąIlustracja 1: bezpieczna aplikacja wykorzystuje izolację na poziomie sprzętu do oddzielenia środowisk wykonawczych. 1) Niezabezpieczone środowisko przetwarzania (NSPE) i bezpieczne środowisko przetwarzania (SPE) są od siebie odizolowane 2) Aparat zaufany (RoT) i zaufane usługi są odizolowane 3) Zaufane aplikacje są odizolowane. (Źródło ilustracji: ARM/Cypress)

Mikrokontroler PSoC 64 posiada dwa rdzenie, jego środowisko NSPE jest wykonywane na procesorze ARM Cortex®-M4, a środowisko SPE na procesorze ARM Cortex-M0+. Procesor Arm Cortex-M0+ obsługuje wszystkie funkcje zabezpieczeń i może komunikować się z procesorem Cortex-M4 za pośrednictwem magistrali komunikacji międzyprocesorowej (IPC). Architektura ta ogranicza dostęp do środowiska SPE, które jest izolowane sprzętowo.

Aby rozpocząć korzystanie z mikrokontrolera PSoC 64, deweloperom zaleca się zapoznanie z zestawem Pioneer do bezpiecznego uruchamiania PSoC 64.

Zestaw Pioneer do bezpiecznego uruchamiania PSoC 64

Zestaw Pioneer do bezpiecznego uruchamiania PSoC 64 (ilustracja 2) zawiera wszystko, czego potrzebują deweloperzy, aby zacząć zabezpieczać swoje aplikacje. Po pierwsze, posiada moduł PSoC 64, który z kolei posiada mikrokontroler PSoC 64, pamięć zewnętrzną i wszystkie obwody pomocnicze (zaznaczone kolorem czerwonym). Pamięć zewnętrzna może być używana do przechowywania kodu aplikacji lub nowych obrazów oprogramowania układowego w celu zapewnienia bezpieczeństwa bezprzewodowych aktualizacji oprogramowania układowego (FOTA).

Ilustracja przedstawiająca zestaw Pioneer do bezpiecznego uruchamiania PSoC 64Ilustracja 2: zestaw Pioneer do bezpiecznego uruchamiania PSoC 64 zawiera wszystko, czego potrzebują deweloperzy, aby rozpocząć tworzenie bezpiecznych aplikacji na potrzeby Internetu rzeczy (IoT). (Źródło ilustracji: Cypress)

Ponadto zawiera moduł Wi-Fi, który umożliwia deweloperom łączenie płytki z siecią. Moduł Wi-Fi jest szczególnie przydatny w zastosowaniach Internetu rzeczy, w których płytka będzie łączyć się z usługami w chmurze, takimi jak AWS lub Azure. Płytka rozwojowa wspiera system operacyjny czasu rzeczywistego Amazon FreeRTOS, który omówimy w następnej sekcji.

Zestaw Pioneer gwarantuje wreszcie bogate możliwości rozbudowy, np. z wykorzystaniem listew wtykowych, listew Arduino i szeregu czujników. Deweloperzy mają do dyspozycji wbudowany suwak dotykowy i przyciski dotykowe, przyciski tradycyjne, potencjometr i inne elementy. Płytka jest również skonfigurowana w sposób umożliwiający jej łatwe dostosowanie do prawie każdego zastosowania.

Pakiet bezpiecznego oprogramowania PSoC 64

Projektowanie bezpiecznych aplikacji wbudowanych może być bardzo czasochłonne i trudne. Deweloperzy powinni poszukiwać rozwiązań, które pomagają obniżyć koszty i skrócić czas wprowadzania produktów na rynek, zapewniając jednocześnie bezpieczeństwo aplikacji. Aby to ułatwić, mikrokontrolery PSoC 64 oferują szeroki zakres oprogramowania, które pozwala deweloperom szybko zbudować bezpieczne aplikacje.

Przykładowo CySecureTools jest przeznaczonym dla deweloperów zestawem narzędzi do tworzenia kluczy i certyfikatów, a także narzędzi do podpisywania aplikacji użytkowników i konfigurowania mikrokontrolerów firmy Cypress. Narzędzia te umożliwiają deweloperom przeniesienie aparatu zaufanego (RoT) firmy Cypress, a następnie wprowadzenie własnych zasobów bezpieczeństwa. Informacje o sposobie konfigurowania i używania narzędzi CySecureTools można znaleźć w pliku README w repozytorium github.

Przydatne dla deweloperów rozwiązań Internetu rzeczy będzie uzupełnienie chmury AWS o system operacyjny czasu rzeczywistego FreeRTOS. W repozytorium github znajdują się przydatne przykłady użycia systemu operacyjnego czasu rzeczywistego FreeRTOS i AWS w połączeniu z mikrokontrolerem PSoC 64. Pierwszym przykładem, którym deweloperzy mogą być zainteresowani, jest aplikacja „Hello World” przekazująca komunikaty MQTT z mikrokontrolera PSoC 64 do chmury AWS. W tym przykładzie deweloper może prześledzić fazy procesu aprowizacji, generowania kluczy i wdrażania. Efektem wykorzystania przykładowej aplikacji jest połączenie bezpiecznego urządzenia systemu wbudowanego z chmurą AWS. Szczegółowe informacje na temat pierwszych kroków można znaleźć w podręczniku Pierwsze kroki z zestawem CY8CKIT-064S0S204343 .

Bezpieczne aplikacje z zaufanym oprogramowaniem układowym M (TF-M)

Mikrokontroler PSoC 64 zapewnia deweloperom gotową do użycia strukturę zabezpieczeń, którą można łatwo dostosować do potrzeb konkretnego zastosowania. Deweloperzy skorzystają też na zrozumieniu działania oprogramowania od strony zaplecza. W szczególności oprogramowanie układowe mikrokontrolera PSoC 64 wykorzystuje podstawową, otwartoźródłową strukturę zabezpieczeń, zwaną zaufanym oprogramowaniem układowym M czy też TF-M.

TF-M to referencyjna implementacja struktury zabezpieczeń architektury zabezpieczeń platformy (PSA) ARM dla Internetu rzeczy. Dostarcza deweloperom przydatne narzędzia zabezpieczeń, takie jak atestacja urządzeń, weryfikacja oprogramowania układowego, usługi kryptograficzne, tajne zarządzanie urządzeniami i bezpieczne partycjonowanie. Firma Cypress wykorzystała TF-M do zbudowania struktury zabezpieczeń, którą deweloperzy mogą wykorzystywać w swoich rozwiązaniach.

Deweloperzy mogą modyfikować własne struktury zabezpieczeń, dodając własny kod, profile zabezpieczeń i inne elementy. Należy jednak pamiętać, że im bardziej zmodyfikowane bezpieczne środowisko przetwarzania (SPE), tym większe prawdopodobieństwo powstania luki w zabezpieczeniach. Deweloperzy muszą dokładnie wyważyć ryzyko związane z wprowadzaniem zmian oraz dodawaniem lub usuwaniem elementów do podstawowego oprogramowania układowego.

Wskazówki i porady dotyczące zabezpieczania aplikacji wbudowanych

Deweloperzy, którzy chcą zabezpieczyć swoje aplikacje wbudowane po raz pierwszy, mają wiele zagadnień do rozważenia. Oto kilka wskazówek i porad, które mogą uprościć i przyspieszyć prace rozwojowe:

  • Na początku cyklu rozwoju należy przeprowadzić analizę zabezpieczeń i modelu zagrożeń (TMSA).
  • Użyć płytki rozwojowej do przetestowania urządzenia, bezpiecznego programu ładującego, procesu aprowizacji urządzenia i aktualizacji oprogramowania układowego.
  • Samo wdrożenie funkcji zabezpieczeń nie wystarcza! Aby zminimalizować nakłady pracy, można wykorzystać istniejące pakiety otwartoźródłowego i bezpiecznego oprogramowania układowego.
  • Trzeba pamiętać o przemyśleniu cyklu życia urządzenia, w tym sposób jego bezpiecznego wycofania z eksploatacji.
  • Należy zapoznać się z narzędziami takimi jak CySecureTools, które są dostarczane wraz z przykładowymi szablonami zabezpieczeń, oprogramowaniem i przykładami.
  • Podczas klonowania repozytorium github FreeRTOS, należy skorzystać z najnowszej oznaczonej wersji. Klonowanie aktywnej linii głównej często prowadzi do niekompatybilności narzędzi i błędów, które nadal w trakcie usuwania.
  • Projektowanie należy rozpocząć od podręcznika „Pierwsze kroki z zestawem CY8CKIT-064S0S2-4343W firmy Cypress”. Zawiera on wszystkie informacje niezbędne do uruchomienia podstawowej aplikacji, którą można następnie dostosować do określonych zadań produktu.

Deweloperzy, którzy zastosują się do powyższych wskazówek i porad, przekonają się, że mogą zaoszczędzić sobie sporo czasu i frustracji.

Podsumowanie

Wdrożenie zabezpieczeń nie musi być trudne. Deweloperzy powinni skupić się na wyróżnikach swoich produktów, swojej tajnej „przyprawie”. W większości przypadków nie są to zabezpieczenia. W niniejszym artykule omówiono, w jaki sposób mikrokontroler PSoC 64 może pomóc deweloperom w szybkim zabezpieczaniu aplikacji, zapewniając nie tylko środowisko izolacji sprzętowej, ale także zestaw narzędzi programowych. Połączenie rozwiązań sprzętowych i programowych gwarantuje deweloperom przyspieszenie cyklu rozwoju zabezpieczeń.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Informacje o autorze

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

Informacje o wydawcy

Północnoamerykańscy redaktorzy DigiKey