Jak mawiał trener Piechniczek
„Jeśli chcesz grać w piłkę musisz myśleć jak piłka”
AlcMan
Słowem wstępu
Jeszcze nie tak dawno zarówno projektanci, jak i użytkownicy systemów wbudowanych żyli w błogim przeświadczeniu, że ich urządzenia nie są narażone na ryzyko utraty poufnych danych. Niewielkie, proste, często przenośne systemy elektroniczne wydawały się być poza zainteresowaniem atakujących.
Z jednej strony często nie przechowywały one żadnych wrażliwych czy cennych informacji, a nawet jeżeli, tak to samo zachowanie wspomnianych danych przez producenta w pamięci urządzenia i sprzętowe zabezpieczenie przed odczytem, uważano za w pełni wystarczające.
Z drugiej zaś ataki hakerskie długo uznawano za domenę wielkich systemów: bankowych, rządowych, korporacyjnych. Przy ich wielkości oraz wartości przechowywanych w nich danych bledła wartość np. loginu i hasła do WiFi, przechowywanego w naszym urządzeniu wbudowanym.
Wraz ze wzrostem ilości urządzeń połączonych w naszym otoczeniu wzrosła też podatność całego systemu, całej otaczającej nas infrastruktury na lukę wywołaną utratą wspomnianego już hasła.
W ramach poniższego artykułu wybierzemy się, drodzy czytelnicy, na ciemną stronę mocy, gdzie postaram się przybliżyć Wam szereg metod, jakimi posługują się osoby łamiące zabezpieczenia urządzeń wbudowanych celem wyciągnięcia przechowywanych w nich danych.
W drodze na ciemną stronę
Czym kierują się łamiący zabezpieczenia?
Celem atakującego nie zawsze jest bezpośredni zysk na złamaniu zabezpieczenia. Bardzo często kieruje nim zwyczajna ciekawość, chęć sprawdzenia swojej wiedzy i umiejętności w starciu z projektantem systemu. Czasami przekłada się to na próbę uruchomienia ukrytej/dodatkowo płatnej funkcjonalności.
Dodatkowym aspektem może być też chęć skompromitowania producenta. Znalezienie luki w zabezpieczeniach i wykazanie, że za pomocą wykradzionych danych jest się w stanie podszyć pod użytkownika i regulować temperaturę w jego mieszkaniu, może być wystarczającym powodem do utraty zaufania do danej marki produktów. Co przekłada się na straty finansowe producenta.
Warto też wspomnieć o próbie skopiowania urządzenia w części bądź w całości. Kopiując rozwiązania sprzętowe, układ scalony bądź jego fragment i wchodząc w posiadanie wykradzionych/odczytanych z pamięci plików binarnych, atakujący jest w stanie rozpocząć produkcję urządzenia bez poświęcania środków na jego opracowanie.
Metody i wektory ataków
Wszelka elektronika, będąca w posiadaniu użytkownika końcowego (a więc laptopy, karty płatnicze, dekodery, smartfony, inteligentne lodówki, elektroniczne głowice termostatyczne) jest potencjalnie narażona na atak z wykorzystaniem szeregu stosunkowo prostych metod i technik.
Do wykonania większości z nich nie jest potrzebne zaawansowane oprzyrządowanie bądź akademicka wiedza. Wymagana jest znajomość podstaw działania elektroniki, umiejętność posłużenia się przyrządami laboratoryjnymi w postaci oscyloskopu, zasilacza, generatora przebiegów. Przydatna też jest pewna doza szczęścia, bowiem niektóre z opisanych niżej ataków powiodą się w pojedynczych przypadkach, na konkretnym egzemplarzu rządzenia. Inne zaś egzemplarze będą na atak odporne bądź od razu ulegną uszkodzeniu.
Side channel analysis
(polskojęzyczny odpowiednik tego pojęcia nie istnieje/jest potworkiem językowym)
Za pomocą szeregu nieskomplikowanych technik obejmujących:
- pomiar chwilowego zużycia energii
- pomiar czasu wykonania operacji dla różnych parametrów wejściowych
Potencjalny atakujący stara się zdobyć informację na temat:
- ilości poprawnych cyfr w podanym przez niego numerze PIN/ilości poprawnych znaków w podanym haśle (przy założeniu, że nie korzystamy z obliczania funkcji skrótu z hasła)
- wartości zwracanych przez funkcje, szczególnie jeżeli zwracają wartości typu 0x00/0xFF
- wag Hamminga przetwarzanych przez CPU wartości
Do wykonania tego typu ataku wystarczy prosty układ, składający się z zasilacza laboratoryjnego, oscyloskopu i rezystora o niewielkiej wartości, wpiętego w szereg z zasilaniem atakowanego układu scalonego.
![Ryc. 1 Z lewej – przykład algorytmu szczególnie podatnego na wyciek informacji poprzez analizę czasu otrzymania odpowiedzi. Z prawej – chwilowe zużycie energii (w formie spadku napięcia na szeregowej rezystancji) w zależności od wag Hamminga sumowanych składników Z lewej - przykład algorytmu szczególnie podatnego na wyciek informacji poprzez analizę czasu otrzymania odpowiedzi. Z prawej - chwilowe zużycie energii (w formie spadku napięcia na szeregowej rezystancji) w zależności od wag Hamminga sumowanych składników.](https://sii.pl/blog/wp-content/uploads/2019/09/TimingImproved.jpg)
Error injection
W tym przypadku, atakujący stara się wyjść poza dopuszczalne ramy, zdefiniowane przez producenta urządzenia i sprowokować je do nieprawidłowego działania za pomocą:
- manipulacji napięciem zasilającym (zbyt wysokie/zbyt niskie)
- przegrzewania/skrajnego ochładzania urządzenia
- emisji zakłóceń elektromagnetycznych (wyładowań) w bezpośredniej bliskości urządzenia
Za ich pomocą atakujący może sprowokować urządzenie do nieokreślonego działania, mogącego skutkować:
- błędami w odczycie danych z pamięci nieulotnych (np. odczytywaniem zer zamiast wartości faktycznie zapisanych)
- pomijaniem przez CPU kilku instrukcji w chwili wystąpienia zakłócenia
- losową zmianą zawartości komórek pamięci RAM
Ataki tego typu są niezwykle tanie – na dobrą sprawę wystarczy zasilacz laboratoryjny, żarówka 50W ze szkłem powiększającym, czy też piezoelektryczna zapalarka wymontowana z zapalniczki. We wszystkich powyższych przypadkach jest to działanie na przysłowiowe chybił-trafił i niesie ze sobą realne ryzyko nieodwracalnego uszkodzenia danego urządzenia.
Tym niemniej możliwość zmiany zawartości komórki pamięci/rejestru (np. używanego do zwracania wyniku działania funkcji) jest kusząca dla atakującego, nawet jeżeli musi wykonać atak wiele razy pod rząd, aby coś za jego pomocą osiągnąć.
![Ryc. 2 Zobrazowanie skutku podgrzania pamięci RAM powyżej 100-120 stopni Celsjusza (statystycznie dla 10 na 32 bitów) Zobrazowanie skutku podgrzania pamięci RAM powyżej 100-120 stopni Celsjusza](https://sii.pl/blog/wp-content/uploads/2019/09/bitflip-1024x830.jpg)
Physical attacks
Ataki fizyczne wymagają zastosowania bardziej wyrafinowanych metod – poza samym wylutowaniem mikrokontrolera z płytki drukowanej wymagane jest jeszcze wyciągnięcie struktury krzemowej z układu scalonego.
Możemy do tego użyć zarówno kwasu azotowego jak i promieniowania laserowego np. za pomoca urządzenia do laserowego grawerowania. Aby zobrazować efekt posłużę się krótkim filmikiem, przygotowanym przez firmę Controllaser (controllaser.com)
https://www.youtube.com/watch?v=LIb__2FrT4s
Tak spreparowaną strukturę krzemową należy następnie zasilić i podłączyć do niej zestaw nanosond, za pomocą których atakujący jest w stanie zmierzyć przebiegi elektryczne na:
- każdej szynie danych
- wyprowadzeniach z poszczególnych bloków funkcjonalnych układu scalonego
- elektrodach pojedynczego tranzystora
![Ryc. 3 Przykład nanosondy wykonanej z wolframu wraz z użyciem na pojedynczym tranzystorze polowym Przykład nanosondy wykonanej z wolframu wraz z użyciem na pojedynczym tranzystorze polowym](https://sii.pl/blog/wp-content/uploads/2019/09/Szuk2.jpg)
Kopiowanie układów scalonych
Ostatnią omawianą w ramach niniejszego artykułu kwestią jest kopiowanie układów scalonych bądź ich fragmentów celem produkowania bezlicencyjnych kopii. Atakujący oszczędzają w ten sposób środki, które prawowity producent poświęcił na opracowanie konkretnego rozwiązania sprzętowego. Jakby tego nie nazwał – jest to po prostu kradzież.
![Ryc. 4 Wewnętrzna struktura krzemowa układu scalonego w powiększeniu Wewnętrzna struktura krzemowa układu scalonego w powiększeniu](https://sii.pl/blog/wp-content/uploads/2019/09/KopiowanieTrzy-1024x344.jpg)
Wyciągniętą z obudowy strukturę krzemową należy sfotografować w powiększeniu i przeprowadzić proces jego analizy z pomocą metod inżynierii wstecznej. Powstały w ten sposób model na poziomie RTL (register transfer level) jest następnie bazą do przygotowania kopii układu scalonego.
Nie istnieją w pełni skuteczne metody na zabezpieczenie układu scalonego przed kopiowaniem. Możemy jedynie starać się utrudnić zadanie potencjalnemu złodziejowi poprzez takie rozłożenie poszczególnych elementów w strukturze krzemowej, aby maksymalnie ją skomplikować i wydłużyć czas trwania analizy, tym samym podnosząc jej koszt.
Gdyby przedstawić strukturę pojedynczej warstwy układu scalonego w formie schematu, pokazującego granicę poszczególnych bloków funkcjonalnych to możemy zauważyć, że atakujący jest w stanie w prosty sposób wybrać sobie te bloki, które chce skopiować i tym samym zaoszczędzić środki na procesie analizy. Znaczącym utrudnieniem jest rozbicie poszczególnych bloków na podbloki i rozrzucenie ich na powierzchni warstwy. Powoduje to każdorazową konieczność analizy całej warstwy układu, co podnosi jej koszty.
![Ryc. 5 Po lewej typowa struktura warstwy układu scalonego. Po prawej struktura poddana działaniu procesu zaciemniania Po lewej typowa struktura warstwy układu scalonego. Po prawej struktura poddana działaniu procesu zaciemniania.](https://sii.pl/blog/wp-content/uploads/2019/09/Scrambiling-1024x326.jpg)
Pokazane powyżej podejście powoduje niestety wzrost negatywnych efektów związanych z długościami połączeń między poszczególnymi elementami pojedynczego podbloku. Stąd zaprezentowany na obrazku efekt jest czysto poglądowy.
Podsumowanie
Metody łamania zabezpieczeń, omówione w powyższym artykule to jedynie wierzchołek góry lodowej. Skupiłem się bowiem tylko na tych, które nie wymagają inwestowania znacznych środków w narzędzia i dostępne są dla przysłowiowego przeciętnego zjadacza chleba.
Świadomość istnienia, działania i dostępności w/w metod jest podstawą do zaplanowania środków zaradczych na każdym etapie rozwoju naszego, bezpiecznego urządzenia. Ten temat poruszę w kolejnej odsłonie niniejszego artykułu.
.223rem
Zostaw komentarz