Matematyczne puzzle pozwolą na zabezpieczenie oprogramowania przed odwrotną inżynierią?

Matematyczne puzzle pozwolą na zabezpieczenie oprogramowania przed odwrotną inżynierią?01.08.2013 12:54

Dla wielu producentów oprogramowania, szczególnie tych, którzyrozwijają wysoce specjalistyczne narzędzia, techniki odwrotnejinżynierii stanowią spore zagrożenie – pozwalają konkurencjiodtworzyć kod źródłowy, poznać wykorzystywane algorytmy i zastosowaćje w swoich produktach. Zapewne podobnie myślą twórcy szkodliwegooprogramowania, poszukujący sposobów na zabezpieczenie swojego koduprzed antywirusowymi skanerami. Jedni i drudzy nie od dzisiaj więcszukają sposobów na takie zabezpieczenie programów, by stały się onedla osób postronnych „czarnymi skrzynkami”, a przy tymzachowywały wszystkie swoje funkcje, uruchomione na komputerachkońcowych użytkowników (czy ofiar). Za sprawą prac grupyamerykańskich informatyków nad szyfrowaniem funkcjonalnym inieodróżnialnym zaciemnianiem zabezpieczeniatakie miałyby stać się powszechnie wykorzystywane do ochronywłasności intelektualnej.Stojący na czele grupy prof. AmitSahai z University of California, wraz ze swoimi kolegami z IBMResearch i University of Texas, zajęli się problemem takiegoszyfrowania oprogramowania, by nie tylko zachowało ono wszystkieswoje funkcje, ale też było z zasady niemożliwe do dekompilacji,odporne na wszystkie znane techniki odwrotnej inżynierii. Dostępne dotej pory techniki zaciemniania kodu pozwalały co najwyżej nazwiększenie stopnia trudności dekompilacji – ale zdeterminowanynapastnik, poświęcając nieco czasu, mógł sobie z nimi ostatecznieporadzić i uzyskać wgląd w działanie programu.[img=reverseengineering]Sahai wyjaśnia, że kluczem donowej techniki zaciemniania są nowego rodzaju wieloliniowepuzzle: matematyczna układanka,której siłowe rozwiązanie wymagałoby setek lat pracy współczesnychkomputerów, która zamienia strukturę kodu w bezsensowne dlanapastnika ciągi liczb. To co dajemy to tylko matematyka,tylko liczby, sekwencja liczb. Jednak liczby te żyją w matematycznejstrukturze, poprzez którą te indywidualne elementy układanki, tesekwencje liczb mogą być połączone z innymi elementami tylko w ściśleokreślony sposób. Możesz to przeglądać z góry do dołu, z różnychstron, i wciąż nie będziesz wiedział, co zaciemniony program robi.Jedyne co możesz zrobić, to zestawić go razem tak, jak miał byćzestawiony; każde inne zestawienie – np. jakbyś chciał rozbićjeden element i zwrócić go w innej formie – zwróci ci tylkośmieci.W metaforze wieloliniowego puzzleposzczególne fragmenty kodu postrzegane są jako elementy puzzle –i podobnie jak w namacalnej układance, mogą być zestawione tylko wsposób zgodny z ich strukturą. Poprawna wieloliniowa forma tychelementów jest sugerowanym rozwiązaniem układanki, sugeruje, w jakisposób można połączyć jej części. Do tworzenia układankiwykorzystywane są dwa algorytmy: generator i weryfikator. Pierwszybuduje parametry systemu i elementy grup, drugi weryfikuje, czystanowią one poprawne rozwiązanie układanki. Jedynie ten, ktowygenerował parametry systemowe może zakodować ustawienie elementów.Podjęte przez zespół prace nadtechnikami zaciemniania oprogramowania przyniosły też inne znacząceosiągnięcie – możliwość wykorzystania w szyfrowaniufunkcjonalnym, czyli technice zastępowania zaszyfrowanych wiadomościzaszyfrowanymi funkcjami, dowolnej obliczalnej funkcji (do tej porymożliwe było wykorzystanie jedynie kilku ściśle określonych funkcji).Według Sahaiego technika ta może posłużyć do zabezpieczeniapojedynczej wiadomości rozsyłanej do dużej grupy odbiorców, tak bykażdy z nich otrzymał inną treść, uzależnioną od np. swojego adresu.W ten sposób odbiorca uzyskując odpowiedź na swoje zapytanie, niejest w stanie dowiedzieć się niczego więcej ponad to, co było dlaniego zamierzone.Artykuł pt. Candidate Indistinguishability Obfuscation and FunctionalEncryption for all circuits, w którym szczegółowo opisano tętechnikę zaciemniania kodu, to ponad 40 stron algebraicznychrozważań, których przeniesienie na język mniej formalny nie jestłatwym zadaniem. Z tego co bez głębszej analizy udało się nam wredakcji ustalić, obwody (ang. circuits) o którym mowa wtekście to liniowe zestawienia bramek logicznych AND, OR i NOT, którena wejściu przyjmują łańcuch bitów i zwracają kolejny łańcuch ookreślonej długości. Zaciemnianie polegałoby na przekształcaniuobwodów w ich równoważniki, uzupełnione losowo dobraną logiką, niewpływającą ostatecznie na wynik. A jak mogłoby to wyglądać od stronysamego uruchamiania kodu? Zapewne rezerwowany byłby odpowiednio dużyobszar pamięci, po którym następnie rozrzucane byłyby fragmenty kodu,połączone wieloma instrukcjami skoku i indeksami (strukturąukładanki, o której piszą autorzy).Oczywiście wątpliwości co doskuteczności takiego zabezpieczenia jest sporo. Wydaje się, żewydajność przetworzonego tak oprogramowania może znacznie spaść –sami autorzy piszą: choć nasza obecna konstrukcja zaciemnianiadziała w czasie wielomianowym, to jest prawdopodobnie za mało wydajnadla większości praktycznych problemów. Ważnym celem będziezwiększenie wydajności, by wykorzystać tę metodę w praktycznychzastosowaniach. Z drugiej strony nie wiadomo, jak takiezaciemnianie miałoby chronić przed napastnikiem uruchamiającymprogram w maszynie wirtualnej, pod kontrolą hiperwizora pozwalającegona zrzuty pamięci i zapis kompletnych stanów maszyny. W ten sposóbcierpliwy napastnik mógłby odtworzyć całe zachowanie algorytmu zinformacji o kolejnych krokach procesora i operacjach na pamięci.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.