Atak na mikrokontrolery

Pisząc programy często zadawałem sobie pytanie : na ile bezpieczny jest mój program wewnątrz mikrokontrolera? Na ile urządzenie, na którego konstrukcję i rozwój poświęciłem na przykład dwa lata, a którego (w większości przypadków) główną wartością jest program, nie da się skopiować? Na ile pewne są ustawienia bitów blokujących dostęp do pamięci programu? Jak ma się blokada dostępu do pamięci typu FLASH w stosunku do odwracalnych przecież jej właściwości? Pewnego razu zadałem tego rodzaju pytanie na forum programistów, znajdującym się na stronie http://www.8052.com. Odpowiedzi, które uzyskałem lekko mnie zaskoczyły. Była między nimi na przykład sugestia, że jeżeli program do urządzenia, które chcę skopiować, wart jest dla mnie milion dolarów, to pieniądze takie przesłane do firmy X, notabene producenta między innymi mikrokontrolerów, spowodują, że udostępni mi ona technologię umożliwiającą odczyt pamięci programu, mimo jej blokady. Na poparcie tej tezy, autor przysłał mi artykuł rosyjskiego stypendysty pracującego na Uniwersytecie Cambridge w Wielkiej Brytanii - Sergieja Skorobogatov. Pracuje on w laboratorium komputerowym w grupie pracowników naukowych zajmujących się zabezpieczeniami komputerów osobistych oraz mikrokontrolerów. Grupa ta bada, na ile skuteczne są wszelkiego rodzaju zabezpieczenia programów. Badania te wykonywane są najczęściej na zlecenia firm producentów hardware i software. Jak pisze sam Sergiej o swojej pracy, polega ona na zrozumieniu, jak dane zabezpieczenie może zostać złamane i udzielenie wskazówek producentowi, jak powinno ono zostać wzmocnione. Badania te, w związku z rosnącym zastosowaniem mikrokontrolerów, na przykład w kartach płatniczych, mają ogromne znaczenie.

Większość mikrokontrolerów znajduje zastosowanie w nowoczesnych urządzeniach elektronicznych. Niektóre z nich używane są przez amatorów do niewielkich konstrukcji budowanych dla zabawy, inne używane są przez firmy do budowy urządzeń służących do kontroli, pomiaru itp. Jeszcze inne stosowane są w poważnych aplikacjach przez wojsko, służby bezpieczeństwa, banki, służby medyczne.
Każdy mikrokontroler wykonuje algorytm lub program umieszczony w jego pamięci. Zazwyczaj jest on zapisany w języku Asembler. Nawet jeśli pisano program w innym języku i tak tłumaczony jest na język Asembler podczas kompilacji.  Jeśli piszesz programy dla mikrokontrolerów najczęściej jesteś zainteresowany w zabezpieczeniu wyników swojej pracy przed nieautoryzowanym dostępem, czy kopiowaniem – chcesz mieć po prostu kontrolę na procesem dystrybucji. Z taką intencją producenci mikrokontrolerów tworzą specjalne opcje zabezpieczeń, które jeśli są włączone, pozwalają autorowi oprogramowania na zabezpieczenie wyników swojej pracy. To jest tak zwana opcja copy lock.
Każdy mikrokontroler powinien być zaprogramowany przed użyciem. Są różne techniki aby to zrobić, zależne od producenta i typu mikrokontrolera. Dla celów badań i rozwoju, dostępne są  wielokrotnie programowalne wersje mikrokontrolerów. Do produkcji niewielkich ilości urządzeń przeznaczone są wersje do jednokrotnego zaprogramowania (OTP), które są znacznie tańsze od tych do wielokrotnego użytku. Dla dużych ilości produkcyjnych przeznaczone są mikrokontrolery programowane przez producenta w procesie produkcji układu. Tak wytwarzane układy są bardzo tanie, jednak ze względu na koszt wdrożenia tak zwanej maski, ilości poniżej 1000 sztuk nie są opłacalne. Wróćmy jednak do najczęściej stosowanych mikrokontrolerów, które wyposażone są najczęściej w pamięć EPROM, EEPROM lub FLASH.
Po tym jak program został napisany i skompilowany, powinien zostać zapisany w pamięci programu mikrokontrolera. Do tego przeznaczone są specjalne urządzenia zwane programatorami. Dla większości mikrokontrolerów, są to proste i tanie urządzenia, zawierające źródło napięcia zasilania, kilka tranzystorów, czy układów scalonych i nieco innych elementów elektronicznych. Sterowane są przez interfejs RS232 lub port Centronics. Dla niektórych mikrokontrolerów należy użyć specjalnego programatora rozprowadzanego wyłącznie przez producenta układu, ale te mikrokontrolery nie należą do grupy popularnie stosowanych.

Techniki ataku

Zwiększająca się stale liczba urządzeń elektronicznych z mikrokontrolerami oraz wzrastająca ich ważność i znaczenie – od płatnej TV, poprzez telefony komórkowe GSM i systemy zaliczkowych liczników energii elektrycznej i gazu, do portfeli elektronicznych i kart płatniczych – wpływa na wzrost zainteresowania zabezpieczeniem przed możliwością duplikacji właściwości mikrokontrolerów w celu ochrony przed możliwością sfałszowania na przykład kart SMARTCARD i innych służących dokonywaniu rozliczeń finansowych, czy też bezpieczeństwu. Zabezpieczenia te nie są absolutnie pewne: oponent z dostępem do urządzeń służących do testowania układów scalonych, może odtworzyć materiały kluczowe poprzez bezpośrednią obserwację struktury i manipulację elementami mikrokontrolera. Faktem nie do podważenia jest, że przeznaczając na to odpowiednie środki finansowe, każde urządzenie służące zabezpieczeniu przed nieautoryzowanym dostępem do danych zawartych w strukturze mikrokontrolera, może zostać spenetrowane i rozpoznane. Tak więc poziom zabezpieczenia oferowanego przez różnorodne produkty, może zostać zmierzony ilością potrzebnego czasu i pieniędzy koniecznych na spenetrowanie mechanizmów uniemożliwiających atak.
Można rozróżnić cztery główne metody ataku:
Technika mikrosondowania może być użyta do bezpośredniego dostępu do struktury układu; w ten sposób można obserwować, manipulować i prowadzić interakcję z układami znajdującymi się w strukturze układu mikrokontrolera.
Atak programowyużywa normalnego interfejsu do komunikacji z procesorem i wykorzystuje błędy zabezpieczeń odnalezione w protokole komunikacyjnym, algorytmach kryptograficznych lub ich zastosowaniach.
Technika „podsłuchiwania”polega na obserwacji charakterystyk analogowych procesora z bardzo dużą rozdzielczością czasową, wszystkich połączeń zasilających i sygnałów interfejsowych oraz promieniowania elektromagnetycznego, podczas normalnej pracy mikrokontrolera.
Generowanie stanów awaryjnych to technika używająca różnego rodzaju stanów zabronionych (na przykład zbyt niskie lub zbyt wysokie napięcie zasilania, bardzo wolne zmiany zboczy sygnałów zegarowych itp.) do spowodowania błędnej pracy mikrokontrolera i w ten sposób uzyskanie dostępu do danych.
Wszystkie techniki związane z mikrosondowaniem to techniki inwazyjne. Wymagają godzin lub tygodni ciężkiej pracy w specjalistycznym laboratorium oraz zniszczenia obudowy struktury mikrokontrolera. Pozostałe techniki są nieinwazyjne. Atakowana karta, czy mikrokontroler, nie są fizycznie niszczone a oprzyrządowanie używane w czasie ataku, to czasami zwykły czytnik kart SMARTCARD, bądź też nieco zmodyfikowany programator.
Atak nieinwazyjny jest bardzo niebezpieczny z dwóch zasadniczych powodów. Po pierwsze, właściciel na przykład karty płatniczej, może nie zauważyć, że została ona skradziona a jej zabezpieczenia złamane – od tego momentu w obiegu może się znajdować na przykład jej duplikat. Po drugie urządzenia potrzebne do tak przeprowadzonego złamania zabezpieczeń, mogą być za niezbyt wielkie środki finansowe w łatwy sposób skopiowane przez inne osoby. Mało tego – może zostać rozwinięta ich funkcjonalność, na skutek czego przeprowadzenie podobnych ataków w przyszłości będzie jeszcze łatwiejsze i jeszcze szerzej dostępne. Głównym problemem przy takiej metodzie ataku jest szczegółowa wiedza na temat procesora i oprogramowania. Z drugiej strony, wiedza potrzebna do przeprowadzenia ataku inwazyjnego nie jest aż tak szczegółowa, wymaga jednak orientacji w zastosowaniu różnych technik w szerokiej gamie produktów. Atak ten zazwyczaj zaczyna się od odtworzenia struktury układu oraz schematu połączeń poszczególnych jego komponentów. Często rezultatem tak przeprowadzonego szczegółowego rozpoznania jest rozwinięcie metod ataku nieinwazyjnego.
Bezpieczeństwo mikrokontrolera lub karty SMARTCARD powinno być zapewnione w taki sposób, że tak mała jak to tylko możliwe ilość informacji (na przykład poprzez kompresję danych), powinna mieć możliwość odtworzenia, gdy konieczne jest jej użycie. Drugim celem jest utrzymanie tej informacji nietkniętej podczas operacji tak, aby potencjalny włamywacz nie miał możliwości zmiany sekretnego kodu – klucza operacji do znanej sobie wartości, lub w innym przypadku do interakcji oraz rozpoznania sekretnego algorytmu szyfrowania / deszyfracji.
W chwili obecnej, większość ataków przeprowadzanych przez włamywaczy komputerowych chcących uzyskać dostęp do danych zawartych w mikrokontrolerze, czy SMARTCARD, można zaklasyfikować do dwóch kategorii – inwazyjne i nieinwazyjne.

Atak nieinwazyjny

Atak nieinwazyjny odbywa się bez naruszenia struktury mikrokontrolera, czy karty SMART. Przeprowadzany jest najczęściej poprzez rozpoznanie i wszelkiego rodzaju sztuczki związane z napięciem zasilania oraz sygnałem zegarowym. Ataki w stanach, w które wprowadzany jest mikrokontroler poniżej lub powyżej napięcia zasilania, mogą zostać użyte, aby wyłączyć obwody zabezpieczeń lub zmusić procesor do wykonania niewłaściwych operacji. Z tego powodu, niektóre modele mikrokontrolerów posiadają wbudowane w strukturę układy detekcji poziomu napięcia zasilania, ale zasadą ich działania jest brak reakcji na bardzo szybkie zmiany. Stąd też szybko zmieniające się i w różny sposób napięcie zasilania, jest w stanie doprowadzić do stanu wyłączenia obwodów zabezpieczeń, bez uszkodzenia chronionej informacji.
Zmiany napięcia zasilania i sygnału zegarowego mogą być również użyte w niektórych mikrokontrolerach do spowodowania przyjęcia i wykonania niektórych instrukcji. Każdy bowiem tranzystor i jego połączenie pracują tak, jak element RC z określoną charakterystyką; maksymalna częstotliwość zegara procesora określana jest właśnie przez opóźnienie sygnału pomiędzy jego elementami. Podobnie, każdy z elementów takich jak przerzutniki, ma swoje charakterystyczne „okienko sygnałowe” (zazwyczaj kilka piko sekund), w czasie którego próbkuje on napięcie wejściowe i odpowiednio zmienia stan swoich wyjść. To „okienko” może być gdziekolwiek wewnątrz specyficznego cyklu dla danego przerzutnika ale jest stałe dla określonego urządzenia w określonej temperaturze i przy określonym napięciu zasilania.  Tak więc, jeśli zastosujemy sygnał zegarowy krótszy niż normalnie, albo też napięcie zasilania zmieni się w sposób bardzo gwałtowny, to spowoduje zadziałanie tylko niektórych tranzystorów wewnątrz struktury układu mikrokontrolera. Poprzez różnicowanie parametrów napięcia zasilania i sygnału zegarowego, można doprowadzić do sytuacji gdy procesor wykona szereg kompletnie różnych i błędnych instrukcji, czasami również takich, które nie są dozwolone i obsługiwane w danej strukturze CPU. Jakkolwiek nie wiemy, która zmiana i w jaki sposób podziała na mikrokontroler, jest całkiem łatwo przeprowadzić systematyczne poszukiwania właściwej sekwencji sygnałów.
Inną możliwość daje analiza poboru mocy przez urządzenie. Używając rezystora o wartości 10..15 Ohm włączonego szeregowo z napięciem zasilania, można zmierzyć za pomocą przetwornika A/D zmiany prądu pobieranego przez zasilany procesor. Wzmacniacze prądu sygnałów adresowych i szyny danych często budowane są z szeregu połączonych ze sobą równolegle inwertorów dla każdego bitu danych, czy adresów. Każda zmiana stanu takiego bitu pociąga za sobą znaczny pobór prądu zasilania. Zmiana pojedynczego bitu z „0” na „1” i odwrotnie, często pociąga za sobą wzrost poboru prądu zasilającego o około 0,5 do 1mA przy zmianie zbocza sygnału zegarowego. Tak więc stosując przetwornik A/D o rozdzielczości 12 bitów, można stwierdzić jaka liczba linii adresowych, czy też danych, zmieniła swój stan w danym momencie czasu. Zapis pamięci SRAM zawsze generuje bardzo mocny wzrost pobieranego prądu. Poprzez uśrednienie prądu mierzonego dla wielu identycznych transakcji, można zidentyfikować małe sygnały, które nie są przesyłane poprzez szynę danych. Sygnały generowane przez operacje takie, jak ustawienie bitu przeniesienia, są szczególnie interesujące, ponieważ są one używane przez wiele algorytmów kryptograficznych. Jakkolwiek zmiany bitów statusu nie mogą być bezpośrednio zmierzone, często powodują one zmiany licznika rozkazów lub wykonanie instrukcji tak zwanego mikrokodu, które z kolei pociągają za sobą bardzo wyraźne i łatwe do zauważenia zmiany poboru prądu.
Różne instrukcje powodują również różną aktywność dekodera instrukcji i jednostki arytmetyczno – logicznej. Można w ten sposób łatwo zidentyfikować część kodu programu i zrekonstruować algorytm. Podobnie różne elementy procesora powodują charakterystyczne dla siebie zmiany przepływu prądu zasilającego w różnym czasie, odpowiednio do sygnału zegarowego i ich stan może zostać rozpoznany poprzez próbkowanie sygnału zasilającego z odpowiednio wysoką częstotliwością.
Inną możliwość włamania tworzy właściwość pamięci RAM - tak zwane utrzymywanie danych (komórki pamięci RAM to rodzaj mikroskopijnej wielkości kondensatorów) przez pewien okres czasu, po wyłączeniu napięcia zasilania. Statyczna pamięć RAM potrafi wręcz przechowywać swój stan do momentu następnego załączenia napięcia zasilającego. Możliwe jest również odtworzenia stanu statycznej pamięci RAM, przez poddanie jej działaniu bardzo niskiej temperatury (około –20 stopni C) na czas od kilku minut do kilku godzin.

Atak inwazyjny

Na przekór złożoności ataku inwazyjnego, niektóre z jego rodzajów mogą zostać przeprowadzone bez drogiego osprzętu laboratoryjnego. Włamywacze dysponujący małym budżetem, mogą korzystać z używanego sprzętu sprzedawanego przez producentów układów scalonych stosowanego do ich testowania. Dysponując odpowiednią wiedzą oraz uzbrajając się w cierpliwość, nie jest zbyt trudno zdobyć odpowiednie narzędzia za cenę poniżej 10 tysięcy dolarów, kupując używany mikroskop i konstruując własny mikropozycjoner. Laser nie jest niezbędny do pierwszych prób, ponieważ otwory w strukturze chipu mogą być również wykonywane poprzez wibracje igły mikropozycjonera.
Atak inwazyjny zaczyna się najczęściej od zdjęcia obudowy struktury. Plastykowa część obudowy może zostać zdjęta przy pomocy na przykład noża. Izolację epoksydową umieszczoną wokół struktury, można usunąć za pomocą kwasu azotowego. Opary podgrzanego kwasu azotowego mają też właściwość rozpuszczania plastykowej obudowy. Można się więc jej pozbyć bez uszkodzenia struktury układu. Cały proces należy przeprowadzić w bardzo czystych warunkach z zachowaniem szczególnej ostrożności, najlepiej pod strumieniem bieżącej wody, ponieważ opary mogą spowodować również uszkodzenie aluminiowych doprowadzeń układu. Chip powinien być później umyty w płuczce ultradźwiękowej przy pomocy acetonu. Mycie to można poprzedzić krótką kąpielą w wodzie dejonizującej oraz isopropanolu. Po tym struktura może być przyklejona i podłączona ręcznie do wyprowadzeń pakietu testowego. Do przeprowadzenie całości procesu w sposób właściwy, konieczne jest nabranie wystarczającej wprawy. Metoda ta umożliwia usunięcie izolacji epoksydowej bez uszkodzenia połączeń struktury i jej zewnętrznych wyprowadzeń.
W momencie, gdy chip jest otwarty, możliwe jest przeprowadzenie sondowania lub atak poprzez modyfikację struktury układu. Bardzo ważnym narzędziem do przeprowadzenia ataku inwazyjnego, jest tak zwana stacja do mikrosondowania. Jest to po prostu zespół mikrosond, które można podłączać do struktury układu. Jednym z jej głównych elementów jest mikroskop umożliwiający pracę z odległości około 8 mm pomiędzy obiektywem i powierzchnią struktury układu. Na stabilnej platformie dookoła złącza pakietu testowego, instaluje się kilka mikropozycjonerów, które umożliwiają przesuwanie ramienia sondy z bardzo wysoką precyzją nad powierzchnią struktury układu. Na tym ramieniu, instaluje się igłę sondy. Wykonana jest ona z elastycznego metalu tak, że umożliwia kontakt z elementami struktury chipu bez ich uszkodzenia.
Oczywiście przed podłączeniem takiej sondy należy usunąć warstwę pasywacyjną. Jest to górna warstwa przykrywająca aluminiowe doprowadzenia do struktury układu (zazwyczaj jest to tlenek krzemu). Zabezpiecza ona strukturę układu przed wpływem środowiska oraz migracją jonów. Czasami dodatkowo jest ona pokryta warstwą poliamidów, której nie usuwa kwas azotowy ale może ona zostać rozpuszczona przez ethylodiamine. Inną metodą pozbycia się warstwy pasywacyjnej jest jej usunięcie przy pomocy noża laserowego.
Ultrafioletowy lub zielony laser, mocowany jest na uchwycie kamery mikroskopu. Jego światło pada na niewielki, prostokątny obszar z bardzo dużą precyzją. Ostrożne dozowanie błysków lasera wypala warstwę pasywacyjną. Dodatkową zaletą tej metody jest możliwość odsłonięcia niewielkiego obszaru i odkrycie w ten sposób pojedynczej linii danych, tranzystora. Zabezpiecza to resztę struktury przed przypadkowymi zwarciami do sąsiednich linii a dodatkowo wykonany otwór stabilizuje pozycję sondy i czyni kontakt mniej wrażliwy na wibracje i zmiany temperatury. W ostateczności warstwę pasywacyjną można usunąć miejscowo poprzez zarysowanie, wiercenie lub nacięcie. Pamiętajmy jednak, że wszystko odbywa się w mikroskali! Jednak dopiero usunięcie warstwy pasywacyjnej gwarantuje, że sonda będzie miała właściwy kontakt ze strukturą układu.
Oczywiście nie jest praktykowane odtwarzanie wartości klucza kryptograficznego, poprzez kontakt sondy do poszczególnych komórek pamięci i odczyty stanów bitu. Zapamiętywane dane mogą zostać odczytane poprzez szynę danych pamięci w miejscu, gdzie wszystkie dane są dostępne w pojedynczej lokalizacji. Mikrosondowanie jest używane do obserwowania szyn rejestracji ich stanów. Jest jednak bardzo trudno obserwować szyny danych i adresową w całości. Wymaga to wykonania zazwyczaj ponad 20 połączeń do maleńkiej struktury układu, co nie jest rzeczą prostą. I tu stosowane są różne techniki obserwacji. Można na przykład wielokrotnie wykonać tę samą transakcję obserwując różne kombinacje bitów na szynie danych i adresowej, wykorzystując na przykład cztery sondy. Tak długo, jak procesor wykonuje tę samą sekwencję dostępu do danych w pamięci, mamy możliwość połączenia obserwowanych przebiegów w kompletny diagram zależności czasowych oraz informacji pojawiających się na szynach. Powtórne próbkowanie bitów w różnych kombinacjach nagrań, pomaga nam w synchronizacji przebiegów zanim zostaną one połączone.
W przypadku gdy chcemy odczytać wszystkie komórki pamięci bez uruchamiania oprogramowania mikrokontrolera, musimy uzyskać dostęp do komponentów procesora takich, jak licznik programu. Licznik rozkazów jest automatycznie zwiększany podczas każdego cyklu rozkazowego i używany do odczytu następnego adresu, co czyni go doskonale nadającym się do wykorzystania jako generator sekwencyjny adresów. Musimy tylko zabezpieczyć procesor przed wykonywaniem skoków, wywołań podprogramów oraz instrukcji powrotów, które przeszkadzają w sekwencyjnej pracy licznika programu. Niewielkie modyfikacje dekodera instrukcji lub obwodów licznika programu, które mogą być łatwo wykonane  przez otwarcie właściwego połączenia przy pomocy lasera, zawsze przynoszą pożądany efekt.
Inną metodą zrozumienia jak danych chip pracuje, jest tak zwany reverse engineering, to znaczy odtworzenie schematu struktury układu na podstawie jego analizy. Pierwszym krokiem w takim przypadku jest stworzenie mapy elementów procesora. Może to być zrobione przy użyciu mikroskopu optycznego z podłączoną kamerą CCD umożliwiającą wykonywanie zdjęć struktury procesora z dużą rozdzielczością. Proste elementy architektury, takie jak linie adresowe czy danych, mogą być rozpoznane całkiem szybko bez studiowania mozaiki połączeń, przy pomocy śledzenia przebiegu metalowych linii, które zakreślają bardzo widocznie komponenty struktury układu (ROM, RAM, EEPROM, ALU, dekoder instrukcji itd.) Wszystkie współpracujące ze sobą moduły są zazwyczaj podłączone to głównych szyn przy pomocy łatwo rozpoznawalnych przerzutników typu latch oraz wzmacniaczy prądowych. Włamywacz musi dobrze znać technologię opracowywania układów CMOS o wielkiej skali integracji i architektury mikrokontrolerów, ale potrzebna do tego celu wiedza znajduje się w praktycznie każdej bibliotece uniwersyteckiej czy księgarni technicznej.
Fotografie powierzchni struktury ukazują górną warstwę metalu, która nie jest przeźroczysta i dlatego też zasłania widok wielu struktur znajdujących się pod nią. Strukturę układu można co prawda rozpoznać po jej wysokości, jednak nie jest to metoda zbyt dokładna. Głębsze warstwy mogą być rozpoznane tylko w drugiej serii fotografii, po zdjęciu górnej warstwy metalu, co może być wykonane na przykład przez jej wytrawienie - zanurzenie na kilka sekund w kwasie hydrofluorowym (HF) w płuczce ultradźwiękowej. HF bardzo szybko rozpuszcza tlenek krzemu dookoła metalowych połączeń i odłącza je od powierzchni układu. Uwaga: HF jest ekstremalnie niebezpieczną substancją!
Jeśli znamy dobrze sposób implementacji, jest wiele dróg do pobrania informacji z procesora poprzez załączenie określonych bramek, czy bezpieczników albo poprzez nadpisywanie określonych obszarów pamięci.
Większość z aktualnie dostępnych mikrokontrolerów i procesorów SMARTCARD, ma rozmiar pojedynczego elementu na poziomie 0,5 do 1µm i tylko dwie warstwy. Mogą one być rozpoznane przy pomocy mikroskopu i poprzednio opisywanych technik. Dla przyszłych układów scalonych, z większą liczbą warstw metalowych i elementami o rozmiarach mniejszych niż długość fali światła widzialnego, będą musiały być użyte znacznie droższe narzędzia.
Większość wyrafinowanych narzędzi używanych na przykład w laboratoriach fizyki, takich jak stacje FIB, mogą zostać użyte do wykonania nowych linii połączeń a nawet nowych tranzystorów w strukturze układu! Stacja FIB zawiera komorę próżniową z rodzajem wyrzutni, porównywalnej z używaną w mikroskopie elektronowym. Jony są przyspieszane i skupiane od katody z płynnego metalu napięciem około 30kV w wiązkę o średnicy 5..10nm i prądzie strumienia od 1pA do 10nA. Poprzez zwiększanie prądu strumienia jonów, materiał chipu może zostać usunięty z rozdzielczością 5nm. Lepszą rozdzielczość można uzyskać w otoczeniu gazu. Stosując gaz można wykonywać otwory około 12 razy głębsze niż szersze i w ten sposób uzyskiwać dostęp do znajdujących się pod spodem warstw metalu. Stosując gaz tak zwany organometaliczny z zawartością platyny, można tworzyć nowe pola kontaktowe, natomiast stosując inne dodatki można powstały w ten sposób kontakt, zabezpieczyć przed zwarciem z otaczającymi go warstwami. Wprawny operator FIB, posługując się dodatkowo przyrządami laserowymi, może nawigować po powierzchni struktury z rozdzielczością nawet 0,15µm. Jest to dużo poniżej rozmiaru pojedynczego elementu struktury. Można również zdjąć warstwę podłoża struktury poprzez jej zeszlifowanie. Wówczas staje się możliwe nawet lokalizowanie pojedynczych tranzystorów i wykonywanie pomiędzy nimi połączeń. Ta „odtylna” technika nie jest  prawdopodobnie jeszcze stosowana już przez potencjanych włamywaczy, ale technologia i urządzenia stają się coraz bardziej dostępne i kto wie, co przyniesie przyszłość. W obecnym momencie większość zastosowań stacji FIB zmierza do wykonywania dostępu do interesujących połączeń. Otwór wykonywany jest do danej ścieżki sygnałowej, następnie wypełniany platyną tak, aby wyprowadzić sygnał na powierzchnię struktury, gdzie łatwy już jest dostęp do niego przy pomocy sondy.
Nowoczesne stacje FIB kosztują nieco mniej niż pół miliona dolarów i są dostępne nieco więcej niż setce organizacji. Mogą one być wynajęte od niektórych z nich za cenę kilkuset dolarów za godzinę pracy urządzenia.
Wszystkie ataki inwazyjne są skomplikowane. Wymagają wielu godzin pracy, specjalistycznego laboratorium i nie mogą się odbyć bez wiedzy właściciela badanego urządzenia – niszczą bowiem jego obudowę oraz czasami strukturę. Dodatkowo wymagają wysoko kwalifikowanych specjalistów oraz dużych nakładów finansowych. Oczywiście nie czyni to ich niemożliwymi do przeprowadzenia...

Atak semi-inwazyjny

Istnieje jeszcze trzeci, możliwy do przeprowadzenia atak nazywany włamaniem semi-inwazyjnym. Na czym ono polega? Tak, jak atak inwazyjny potrzebuje zdjęcia obudowy struktury mikrokontrolera, ponieważ konieczny jest dostęp do struktury układu. Warstwa pasywacyjna struktury pozostawiania jest nietkniętą, ponieważ metoda semi-inwazyjna nie wymaga depasywacji lub tworzenia kontaktów do wewnętrznych linii połączeniowych. Tak dzieje się dlatego, że do przeprowadzenia tego rodzaju ataku nie są konieczne mikrosondy. Atak semi-inwazyjny może być przeprowadzony za pomocą narzędzi takich jak światło UV, promieniowanie X i innych źródeł promieniowania jonizującego, laserów i pól elektromagnetycznych. Mogą one być używane indywidualnie lub w połączeniu, współpracując ze sobą i wzmacniając efekt.
W porównaniu do włamania nieinwazyjnego, atak semi-inwazyjny jest trudniejszy do przeprowadzenia, ponieważ wymaga zdjęcia obudowy układu. Nie jest jednak wymagany tak drogi osprzęt, jak do przeprowadzenia metody inwazyjnej. Dodatkowym atutem jest to, że może on być przeprowadzony w odpowiednio krótkim czasie.

Przegląd mikrokontrolerów

Podzielmy mikrokontrolery na dwie grupy : zwyczajną i „bezpieczną”. Mikrokontrolery „bezpieczne” przeznaczone są do aplikacji militarnych, bankowości, zastosowań medycznych itp. i używane przeważnie w formie SMARTCARD lub modułach bezpiecznych. Zapewniają różne tryby pracy, różne poziomy dostępu, szyfrowanie danych nie tylko tych używanych do komunikacji z otoczeniem ale również do komunikacji wewnątrz struktury samego układu. Rozpoznanie takiego układu wymaga specjalistycznego i bardzo drogiego osprzętu, wysokiego poziomu umiejętności i powinno być dyskutowane na osobności.
Popularne mikrokontrolery jako zasadę również mają zabezpieczenie przed odczytem programu i / lub danych ale programiści powinni być ostrożni, ponieważ czasami te zabezpieczenia są bardzo słabe. Przed dyskusją na temat możliwości włamań do popularnego mikrokontrolera, lepiej będzie podzielić je na różne klasy w zależności od typu pamięci programu. Tabela 1 ukazuje różnice pomiędzy różnymi rodzjami pamięci, jak również zalety i słabości każdego z nich.

 

Tabela 1. Porównanie różnych rodzajów pamięci

Typ pamięci programu

Metoda programowania

Możliwość zmiany kodu programu

Czas dostępu do pamięci (szybkość rdzenia CPU)

Szybkość programowania / czas do skasowania

Czas przechowywania danych

Mask ROM

przez producenta

brak

10ns (100MHz)

2-4 tygodni / brak możliwości

nieograniczony

OTP ROM (do jednokrotnego programowania)

programator

brak

100ns (10MHz)

50 słów na sek. / brak możliwości

10 lat

EPROM

programator lub programowanie in-circuit

do 100 razy

100ns (10MHz)

50 słów na sek./ 10..30 minut

10 lat

EEPROM

programator lub programowanie in-circuit

do 10000 razy

200ns (5MHz)

100 słów na sek. / 10ms

40 lat

FLASH EPROM

programator lub programowanie in-circuit

do 100000 razy

100ns (10MHz)

500 słów na sek. / 5ms

100 lat

Ferroelectric RAM

programator lub programowanie in-circuit

do 1012 razy

200ns (5MHz)

2MB na sek./ nie jest konieczne

40 lat

Static RAM

programowanie in-circuit

nieograniczone

20ns (50MHz)

20MB na sek./ nie jest konieczne

5 lat (czas zasilania bateryjnego)

 

Jak już poprzednio wspomniano, są dwie główne metody włamań: inwazyjna i nieinwazyjna. Pierwsza z nich polega na wyjęciu struktury z obudowy, wystawieniu jej części na działania promieni lasera lub wiązki jonów. Wymaga również zastosowania specjalnych sond oraz mikroskopu. Atak nieinwazyjny, to najczęściej manipulowanie sygnałami zegarowymi oraz napięciem zasilania w celu pozyskania określonej informacji.
Jeśli mikrokontroler ma pamięć typu Mask ROM wówczas z zasady jakikolwiek dostęp do pamięci programu jest zabroniony już na etapie wytwarzania układu. Jednak istnieje pewna metoda dostępu do pamięci, ponieważ do kodu programu często dołączany jest program monitora, umożliwiający dostęp do pamięci programu tak, aby była możliwa weryfikacja poprawności jej zapisu. Generalnie bardzo trudno jest znaleźć ten program i metodę jego uruchomienia, toteż najszybszą drogą okazuje się otwarcie układu i odczyt pamięci programu optycznie. Czasami, aby zwiększyć bezpieczeństwo, producenci używają w obrębie tej samej struktury tranzystorów o różnym progu załączenia zamiast obecności lub nieobecności tranzystora w komórce pamięci, w celu utworzenia bitu o stanie „0” lub „1”. Taki rodzaj pamięci ROM nie może być odczytany optycznie. W tym przypadku zawartość pamięci może być odtworzona przy pomocy techniki mikrosondowania lub używając selektywnych rozpuszczalników chemicznych.
Jeśli mikrokontroler wyposażony jest w pamięć OTP ROM, użytkownik końcowy może wybrać ustawienie zabezpieczenia programu podczas procesu programowania. Jednak nawet pomimo włączenia zabezpieczeń, nadal możliwe jest użycie zarówno techniki inwazyjnej, jaki i nieinwazyjnej. Przy ataku inwazyjnym z zasady stosuje się światło UV, wystawiając niektóre obszary struktury układu na jego działanie.  Inną metodą jest odcięcie linii zabezpieczających przy pomocy lasera albo też odtworzenie stanu bezpieczników (security fuses) na stacji do testowania struktur mikrokontrolerów, bądź też proste doprowadzenie sygnałów poza bezpiecznikiem. Atak nieinwazyjny przebiega w klasyczny sposób (manipulowanie napięciem zasilającym i sygnałami zegarowymi) do momentu aż wewnętrzne obwody zabezpieczeń „zapomną” o protekcji. Podobnie jest w przypadku mikrokontrolerów z pamięcią EPROM, ponieważ ma ona tę samą budowę – różnica polega tylko i wyłącznie na umieszczeniu okienka przepuszczającego światło UV w obudowie układu scalonego, bezpośrednio nad strukturą półprzewodnikową.
Pamięć EEPROM jest bardziej odporna na atak inwazyjny. Znacznie trudniej jest postępować z ładunkami elektrycznymi niż z tranzystorami. Jednak te same rodzaje ataku, co dla mikrokontrolera z pamięcią OTP nadal mogą być zastosowane. Nadal jest możliwe próbkowanie linii danych i adresowych wewnątrz układu, chociaż wymaga to bardzo wysokich umiejętności. Niestety - do tego samego rodzaju pamięci atak nieinwazyjny może być zastosowany bardzo łatwo. Dzieje się tak dlatego, ponieważ komórki pamięci EEPROM zachowują się w bardzo specyficzny sposób i są bardzo czułe na sygnały sterujące oraz zależności czasowe pomiędzy tymi sygnałami. To pozwala włamywaczowi łatwo znaleźć sposób obejścia systemu zabezpieczeń na przykład przez wyzerowanie bitów blokujących dostęp lub spowodowanie, że obwód kontroli zabezpieczeń otrzyma błędne dane na temat stanu bezpieczników. Sytuacja ta powtarza się również w przypadku użycia pamięci typu FLASH. Czasami zabezpieczenia tego typu mikrokontrolerów mogą być bardzo łatwo złamane, czasami jest to trudniejsze, ale sytuacja jest nadal zła. Tak więc są sposoby na złamanie zabezpieczenia układu mikrokontrolera używającego pamięci EEPROM lub FLASH.
W przypadku mikrokontrolera z pamięcią FRAM wydaje się być nieco lepiej, jednak nadal można użyć metody inwazyjnej i mikrosond aby odczytać zawartość pamięci. Najbardziej odporne na ataki są mikrokontrolery używające pamięci RAM jako pamięci programu. Dzieje się tak dlatego, ponieważ jakakolwiek próba włamania kończy się odłączeniem napięcia zasilania i utratą danych. Podobnie jest w przypadku stosowania typowych metod nieinwazyjnych – zawartość pamięci programu ulega najczęściej uszkodzeniu. Ale z powodu błędów w konstrukcji mikrokontrolerów oraz ich oprogramowaniu, również i tu możliwy jest odczyt danych. Jako przykład posłużyć może obejście zabezpieczenia produkowanego przez firmę Dallas Semiconductor mikrokontrolera z grupy „bezpiecznej” DS5002FP.
Najważniejsze jednak jest zabezpieczenie danych przed metodą nieinwazyjną, ponieważ generalnie jest ona tańsza i łatwiejsza do wykonania niż inwazyjna. Jeśli możesz napisać program lub kupić legalnie zaprogramowany mikrokontroler, będzie to tańsze niż wszelkie metody inwazyjne. Jednak niektóre metody ataku inwazyjnego mogą być bardzo tanie. Dzieje się tak dla przykładu wówczas, gdy bity bezpieczeństwa mogą być skasowane przy pomocy światła UV. Tak więc konstruując urządzenie z zastosowaniem mikrokontrolera powinieneś wybrać ten, który we właściwy sposób zabezpieczy twoją pracę. Nie jest możliwe wytworzenie idealnego zabezpieczenia, ale możesz uczynić odczyt programu w twoim urządzeniu na tyle trudny, że nieopłacalny finansowo.

Nieinwazyjne metody ataku dla mikrokontrolerów popularnych

Kilka słów o sprzęcie używanym do testowania zabezpieczeń mikrokontrolerów. Najważniejszą jego częścią jest specjalny programator, którego konstrukcja i elementy umożliwiają gwałtowne zmiany napięcia zasilania oraz napięć sygnałów wejściowych w szerokim zakresie. Blok sygnałowy programatora generuje 32 sygnały cyfrowe o zmiennych poziomach logicznych – niektóre z nich są typu „open drain”. Blok wejściowy posiada 16 wejść cyfrowych o właściwych, stałych poziomach logicznych. To jest całkowicie wystarczające dla większości mikrokontrolerów. Innymi elementami są płytki adapterów z gniazdami dla różnych typów mikrokontrolerów.
Przykład budowy takiego programatora, przedstawiony jest na fotografiach. Osobną kwestią jest program służący do kontrolowania jego funkcji. Dla przedstawionego na fotografii urządzenia, był to program napisany w języku C dla komputera PC.


Fotografie programatora zbudowanego przez S.Skorobogatova

W tabeli 2 zestawiono wyniki prób przeprowadzone dla różnych modeli mikrokontrolerów. Nazwa mikrokontrolera umieszczona w nawiasie oznacza, że nie był on testowany, jednak spodziewane jest podobne zachowanie, jak w przypadku pozostałych modeli z tej grupy. Oczywiście obecność mikrokontrolera w tabeli nie oznacza, że nowe wersje tego produktu nie mają usuniętej wady systemu zabezpieczeń.
W tabeli 2 zestawiono wyniki prób przeprowadzone dla różnych modeli mikrokontrolerów. Nazwa mikrokontrolera umieszczona w nawiasie oznacza, że nie był on testowany, jednak spodziewane jest podobne zachowanie, jak w przypadku pozostałych modeli z tej grupy. Oczywiście obecność mikrokontrolera w tabeli nie oznacza, że nowe wersje tego produktu nie mają usuniętej wady systemu zabezpieczeń.

Tabela 2. Wyniki prób zabezpieczeń pamięci programu dla różnych, popularnych mikrokontrolerów

Mikrokontroler

Wyposażenie

Metoda ataku

Uwagi

Motorola HC05
MC68HC05B6
MC68HC05B8
MC68HC05B16
(MC68HC05B32)
(MC68HC05X4)
MC68HC05X16
MC68HC05X32

Mask ROM, EEPROM, ustawiany bit bezpieczeństwa typu EEPROM

zmiany napięcia zasilania lub zmiany sygnału zegarowego

Ma zabezpieczenie przed zapisem przeciwko przypadkowemu skasowaniu pamięci danych

Motorola HC11
MC68HC11A8
MC68HC11E9
(MC68HC11E20)
MC68HC11L6
(MC68HC11KA2)
(MC68HC11KA)
(MC68HC11KG2) (MC68HC11KG4)

Mask ROM, EEPROM, ustawiany bit bezpieczeństwa typu EEPROM

zmiana napięcia zasilania

Bootloader z autokasowaniem pamięci danych jeśli bit bezpieczeństwa jest ustawiony

Microchip PIC
PIC16C84

pamięć programu w EEPROM, EEPROM do zapisu danych, bit bezpieczeństwa typu EEPROM

przekroczenie napięcia zasilania lub jego zmiany

tryb Chip Erase kasuje jednocześnie bit zabezpieczenia wraz z programem i pamięcią danych

Microchip PIC
PIC16F83
PIC16F84
HCS512

pamięć programu w FLASH EPROM, EEPROM do zapisu danych, bit bezpieczeństwa typu EEPROM

zmiany napięcia zasilania

tryb Chip Erase kasuje jednocześnie bit zabezpieczenia wraz z programem i pamięcią danych

Microchip PIC
PIC16F84A
PIC16F627
PIC16F628
(PIC16F870)
(PIC16F871)
(PIC16F872)
PIC16F873
PIC16F874
PIC16F876
PIC16F877

pamięć programu w FLASH EPROM, EEPROM do zapisu danych, bit bezpieczeństwa typu EEPROM

zmiany napięcia zasilania

tryb Chip Erase kasuje jednocześnie bit zabezpieczenia wraz z programem i pamięcią danych.

Ma wzmocniony mechanizm ochrony.

Atmel 8051
AT89C51
AT89C52
AT89C55
AT89C1051
AT89C2051
(AT89C4051)

pamięć programu w FLASH EPROM, bit bezpieczeństwa typu EEPROM

zmiany napięcia zasilania

tryb Chip Erase kasuje jednocześnie bit zabezpieczenia wraz z programem.

Atmel AVR
AT90S1200
AT90S2313
AT90S2323
(AT90S2343)
AT90S8515

pamięć programu w FLASH EPROM, EEPROM do zapisu danych, bit bezpieczeństwa typu EEPROM

zmiany napięcia zasilania

tryb Chip Erase kasuje jednocześnie bit zabezpieczenia wraz z programem i pamięcią danych.

NEC 78K/0S
(µPD78F9026)
(µPD78F9046)
µPD78F9116
(µPD78F9136)

pamięć programu typu FLASH EPROM, brak funkcji odczytu pamięci

zmiany napięcia zasilania

tryb Chip Erase pamięć programu

Texas Instruments
MSP430
MSP430F110
MSP430F112
MSP430F1101
MSP430F1121
MSP430F122
MSP430F123
MSP430F133
MSP430F135
MSP430F147
MSP430F148
MSP430F149
MSP430F412
MSP430F413

pamięć programu w FLASH EPROM, EEPROM do zapisu danych, programowalne hasło dostępu do pamięci (typu EEPROM)

zmiany sygnału zegarowego

tryb Mass Erase kasuje hasło wraz z pamięcią programu i danych

 

Dla niektórych z modeli mikrokontrolerów możliwe jest użycie kilku metod ominięcia zabezpieczeń. Dla niektórych z nich wyniki są powtarzalne, dla innych mniej niż 20% testów zakończyło się powodzeniem. Użycie większości z metod publikowanych w Internecie, kończyło się zazwyczaj spaleniem nie tylko samego układu mikrokontrolera ale również uszkodzeniem programatora.

Przykład ataku inwazyjnego, mikrokontroler PIC12C508

Panuje powszechne przekonanie, że atak inwazyjny jest bardzo skomplikowany i wymaga specjalistycznego przyrządów. Oczywiście – włamanie metodą inwazyjną jest kosztowne, wymaga wyposażenia na przykład w różnego rodzaju odczynniki chemiczne, jednak czasami może być zrobione bardzo łatwo. Niektóre z modeli mikrokontrolerów są bardzo odporne na próby włamania nieinwazyjnego, jednak zupełnie bezbronne wobec metod inwazyjnych. Podany przykład  zrywa z mitem, że włamanie metodą inwazyjną musi kosztować tysiące dolarów. Przytaczam go w celu ostrzeżenia konstruktorów urządzeń elektronicznych i pokazania, co może się zdarzyć. Oto przykład złamania zabezpieczeń mikrokontrolera PIC12C508 właśnie metodą inwazyjną, po lekturze którego każdy sam będzie mógł wyliczyć sobie spodziewany koszt przeprowadzenia włamania i wysnuć wnioski.

Po pierwsze trzeba zdjąć obudowę struktury. Może to być zrobione dwoma metodami: rozpuszczenie wszystkiego wokoło struktury (np. w oparach kwasu azotowego), albo poprzez usunięcie plastyku tylko znad struktury przy pomocy narzędzi mechanicznych. W tym drugim przypadku, trzeba to zrobić bardzo ostrożnie. Drugi sposób ma też tę zaletę, że struktura układu pozostaje zamocowana i przytwierdzona do podłoża – nie wymaga przeniesienia na płytkę adaptera i wykonania połączeń struktury do doprowadzeń. Jednak prawdopodobnie łatwiejsze do wykonania, będzie rozpuszczenie plastyku wokoło struktury. Przyjrzyjmy się więc temu sposobowi.
Jak już wcześniej wspomniano, można to zrobić przy pomocy oparów podgrzanego kwasu azotowego. Opary te rozpuszczą plastyk obudowy, nie naruszając połączeń struktury i wyprowadzeń. Nalot powstały w czasie rozpuszczania obudowy, jak również resztki oparów, można usunąć zanurzając strukturę w acetonie, w płuczce ultradźwiękowej. Taką płuczkę można bardzo łatwo zbudować samodzielnie, wykorzystując pojemnik szklany, pręt ferrytowy, prosty wzmacniacz prądowy i generator. Czystą strukturę przemywamy wodą i suszymy. Jeśli z jakiś powodów nie posiadamy lub nie jesteśmy w stanie zrobić płuczki ultradźwiękowej, można tę czynność pominąć. Co prawda na strukturze pozostanie nalot, jednak przepuszcza on promieniowanie UV, które użyte będzie w tym przykładzie.

Ostrożnie przenosimy strukturę na płytkę adaptera, mocujemy ją przy pomocy np. kropelki kleju, odcinamy oryginalne doprowadzenia i łączymy strukturę z naszą płytką testową.

Kolejnym krokiem będzie wystawienie tak zwanych bezpieczników na działanie światła UV. Aby to zrobić, należy odnaleźć miejsce w strukturze, gdzie są one umieszczone. Jeśli dysponujemy mikroskopem o powiększeniu 100x lub więcej, nie będzie z tym większego problemu. Trzeba po prostu prześledzić drogę ścieżki, od wyprowadzenia układu, na które podawane jest napięcie programujące. Po ich odnalezieniu, osłaniamy pamięć programu, na przykład przy pomocy kawałka papieru pakowego, a resztę struktury oświetlamy światłem UV przez okres około 5 minut. Bezpieczniki zostają „naprawione”, pamięć programu można odczytać przy pomocy zwykłego programatora...
Jeśli nie mamy mikroskopu, możemy również osłaniać część struktury, oświetlać światłem UV i obserwować rezultat. Oczywiście w ten sposób, można doprowadzić do utraty zawartości pamięci programu.

Groźby ataku i metody obrony

Teraz, mając informacje na temat różnych metod ataku, możemy domniemywać jakie są potencjalne zagrożenia  dla urządzeń budowanych przy użyciu mikrokontrolera.
-  Atak nieinwazyjny jest bardzo dużym zagrożeniem i jeśli mikrokontroler podatny jest na takie metody ataku ma on minimalny poziom zabezpieczeń. Jedynym wyposażeniem, które będzie potrzebne potencjalnemu piratowi, jest specjalny programator. Można go kupić na przykład za pośrednictwem Internetu.
-  Tanie ataki inwazyjne to naprawdę duży problem dla konstruktorów. Taki atak może być przeprowadzony praktycznie przez każdą osobę z podstawową wiedzą z zakresu chemii. Cały potrzebny osprzęt można kupić za 100 do 300 dolarów. Mikrokontrolery podatne na ten rodzaj ataku nie są wystarczająco bezpieczne.
-  Atak inwazyjny za pomocą mikrosond, może być przeprowadzony tylko przez bardzo zasobnego finansowo fachowca. Powoduje to, że mikrokontrolery podatne tylko na tego typu ataki, są bezpieczne. Zawsze jednak powinieneś skalkulować pieniądze potrzebne na wynajęcie, czy też zakup sprzętu, dodać do tego czas potrzebny na rozpoznanie zagadnienia i złamanie zabezpieczeń. Z całą pewnością nie otrzymasz w ten sposób kwoty tysiąca dolarów, jednak musisz brać to pod uwagę i nie możesz używać mikrokontrolerów podatnych na tego rodzaju atak w bardzo drogich projektach, gdy bezpieczeństwo danych jest niezbędne.
-  Odtwarzanie mapy połączeń struktury układu scalonego (reverse engineering)jest najdroższą z możliwych metod ataku. Daje ono jednak wszystkie potrzebne informacje na temat schematu układu scalonego oraz struktury i metod zabezpieczeń. Zajmuje jednak bardzo dużo czasu i wymaga dużych nakładów finansowych. Łatwo stać się jednak może przyczynkiem do opracowania metod ataku nieinwazyjnego.
Tak więc jeśli zabezpieczeń mikrokontrolera nie da się obejść w żaden z powyższych sposobów, jest on dobrze zabezpieczony. Aczkolwiek może to być tylko błąd jednego z włamywaczy, z który dostrzeże ktoś następny i poradzi sobie ze złamaniem zabezpieczeń bez większego problemu.
Teraz mamy już chyba świadomość, że praktycznie każdy z popularnie używanych mikrokontrolerów można odbezpieczyć używając którejś z powyższych metod. Zazwyczaj nie jest możliwe ponowne zaprojektowanie struktury układu mikrokontrolera z powodu tylko jego zabezpieczeń. Wiąże się to bowiem z bardzo dużymi kosztami wdrożenia nowego układu do produkcji oraz z tym, że nie będzie zachowana kompatybilność z wcześniejszymi jego wersjami.
Zazwyczaj mikrokontrolery „bezpieczne” konstruowane są dla potrzeb kart SMARTCARD, gdzie dostępne są tylko dwa wyprowadzenia interfejsu szeregowego. Oczywiście, możesz użyć „bezpiecznego” mikrokontrolera aby chronić swój projekt, jednak jeśli włamywacz zainteresowany będzie tylko tą częścią algorytmu zaimplementowanego w typowym mikrokontrolerze, może go zdobyć bez kłopotu.
Innym rozwiązaniem jest używanie zabezpieczeń sprzętowych zbudowanych na bazie programowanych układów logicznych (PAL, CPLD, EPLD itp.), które zazwyczaj oferują lepszy stopień ochrony niż standardowe mikrokontrolery. Nawet jeśli uda się włamać i odtworzyć ich kod, sporo czasu spędzi potencjalny włamywacz, zanim zrozumie jak to zabezpieczenie działa. Można również użyć pewnych nieudokumentowanych cech mikrokontrolerów. Jeśli używasz mikrokontrolerów z pamięcią OTP. EPROM, EEPROM czy FLASH, możliwe jest użycie szeregu komórek pamięci dla zabezpieczenia. Na czym polega idea? Wszystkie te rodzaje pamięci są pamięciami analogowymi, to oznacza, że każda komórka wewnątrz obszaru przechowuje ładunek zamiast stanu logicznego. Gdy dokonywany jest odczyt pamięci, ładunek elektryczny z odpowiedniej komórki zamieniany jest na wartość 0 lub 1 poprzez komparator. Jeśli zmienisz wartość ładunku komórki pamięci do poziomu będącego na progu zadziałania komparatora, ze względu na obecność zakłóceń wewnątrz struktury mikrokontrolera, za każdym razem otrzymasz inną wartość odczytując daną komórkę pamięci. Ta właściwość może zostać użyta jako dodatkowe zabezpieczenie wraz z normalnymi mechanizmami zabezpieczenia mikrokontrolera.
Inną możliwym sposobem zwiększenia poziomu bezpieczeństwa danych jest zniszczenie możliwości ponownego programowania. Może to być zrobione poprzez mechaniczne odcięcie określonych wyprowadzeń albo też poprzez przyłożenie do jednego z nich wysokiego napięcia tak, aby wewnętrzne połączenie uległo przepaleniu. Jednak takie działanie nie zapewnia ochrony przed atakiem inwazyjnym. Znacznie mądrzejszą i skuteczniejszą metodą jest uszkodzenie części struktury mikrokontrolera odpowiedzialnej za programowanie pamięci. Jednak w takim przypadku wymagana jest bardzo dobra znajomość struktury układu – konieczny wręcz staje się reverse engineering , co jednak czasami jest znacznie bardziej kosztowne aniżeli cały projekt.

Na podstawie artykułu Sergieja Skorobogatova (http://www.cl.cam.ac.uk/~sps32/)
Jacek Bogusz
j.bogusz@easy-soft.net.pl

http://www.tomaszbogusz.blox.pl/

Odpowiedzi

Rozpuszczanie układu

Ciekawy artykuł, stosujemy podobne metody by dobrać się do uszkodzonych kart SD i microSD, z tym że kwas azotowy niestety nie rozpuszcza obudowy, a szkoda. Jest też pewna nieścisłość, w artykule odnośnie rozpuszczania oparami kwasu nie da się tego zrobić pod bieżącą wodą.

Bardzo ciekawy artykuł

j/t

Dodaj nowy komentarz

Zawartość pola nie będzie udostępniana publicznie.