jestem założycielem i dyrektorem generalnym Apriorit, firmy programistycznej, która świadczy usługi inżynieryjne na całym świecie firmom technologicznym.

Widok Z Tyłu hakerki komputerowej kodującej przy biurku w biurze kreatywnym

getty

obecnie cyberprzestępcy są uzbrojeni w imponującą gamę broni, od prostego złośliwego oprogramowania po wyrafinowane narzędzia inżynierii odwrotnej. Demasemblery, Dekompilatory i inne narzędzia pozwalają hakerom na dostęp i analizę kodu źródłowego aplikacji. Dzięki tym informacjom hakerzy mogą nadużywać oprogramowania na różne sposoby: wyodrębniając poufne informacje, dodając złośliwy kod, a nawet klonując aplikacje.

ostatnie badania firmy zajmującej się bezpieczeństwem Positive Technologies ujawniły, że popularne aplikacje bankowości mobilnej są podatne na ataki hakerskie. Najczęstsze zidentyfikowane problemy związane z cyberbezpieczeństwem dotyczyły nazw klas i metod wyraźnie zapisanych w kodzie źródłowym, braku ochrony przed wstrzyknięciem kodu i braku zaciemnienia kodu.

zaciemnianie kodu w szczególności jest obiecującą praktyką zabezpieczania oprogramowania. Jeśli szukasz sposobów ochrony oprogramowania przed włamaniami, możesz zacząć od utwardzenia jego obrony poprzez zaciemnienie kodu.

jak działa zaciemnianie kodu?

metody zaciemniania umożliwiają utwardzenie kodu aplikacji poprzez przekształcenie go w ukrycie ukrytych wartości i ukrycie logiki. Środki te utrudniają nieautoryzowanym osobom trzecim zajrzenie pod maskę oprogramowania.

większość technik zaciemniania przekształca jeden z następujących aspektów kodu:

• dane: sprawiają, że elementy kodu wyglądają jak coś innego niż to, czym są

• przepływ sterowania: sprawiają, że logika wykonywalna jest nieterministyczna, jeśli oprogramowanie jest dekompilowane

• struktura układu: formatowanie danych, zmiana nazw identyfikatorów i usuwanie komentarzy do kodu

narzędzia do maskowania działają z kodem źródłowym, kodem maszynowym lub binarnym oraz kodem bajtowym. Aby określić, który typ kodu najlepiej zaciemnić, należy pamiętać o ograniczeniach każdego wyboru.

podczas zaciemniania kodu źródłowego możesz napotkać problemy w obsłudze i debugowaniu zamaskowanego kodu. Zaciemnienie binarne jest nie tylko bardziej skomplikowane niż pozostałe dwie opcje, ale musi być zastosowane do każdej architektury systemu.

w mojej firmie często wybieramy zaciemnienie kodu bajtowego, ponieważ w tym przypadku nie musimy obsługiwać kodu źródłowego ani kodu maszynowego. Jednak kiedy przechodzimy do przekształcania bajtkodu w kod maszynowy, trudno jest zachować wszystkie zamaskowane zastrzyki kodu całkowicie losowe.

w jednym z naszych ostatnich projektów, mój zespół użył kompilatora LLVM, który pomógł nam zapewnić wysoki poziom ochrony kodu bajtowego przy niewielkim wpływie na wydajność oprogramowania. Oprócz utwardzania kodu, kompilator ten może losowo umieszczać Weryfikatory licencji oprogramowania, które uniemożliwiają hakerom złamanie oprogramowania.

jak możesz chronić swoją aplikację za pomocą maskowania kodu?

chociaż zaciemnianie jest jedną z bezpiecznych praktyk kodowania zalecanych przez OWASP, nadal nie jest tak popularne wśród wielu programistów. Głównym powodem tego jest to, że gdy jest nadużywane, zaciemnienie kodu może zaszkodzić wydajności oprogramowania.

ale jeśli mówimy o, powiedzmy, mobilnej aplikacji bankowej, znaczenie zabezpieczenia danych konta bankowego użytkownika jest wystarczająco wysokie, aby uzasadnić poświęcenie dodatkowego czasu i wysiłku na zrównoważone utwardzanie kodu.

jeśli chcesz zaciemnić kod w najbardziej efektywny sposób, oto kilka rzeczy do rozważenia:

• przed zaciemnieniem kodu powinieneś zdecydować, które części kodu mogą być zaciemnione. Unikaj zaciemniania kodu krytycznego dla wydajności. Upewnij się również, że zaciemnienie nie wpływa w żaden sposób na funkcjonalność oprogramowania.

• zwróć uwagę na rozmiar i wydajność zamaskowanego kodu. Podczas utwardzania dużego fragmentu kodu czas wykonania może wzrosnąć nawet do 1000 razy.

• Dodaj nieprzezroczyste predykaty do zamaskowanego kodu, aby uniemożliwić zrozumienie, gdzie nastąpi wykonanie kodu. Spraw, aby wykres przepływu sterowania wyglądał jak wykonanie maszyny stanowej, a nie liniowe wykonanie kodu.

• używaj maskowania kodu tylko jako dodatkowej warstwy bezpieczeństwa, ponieważ nie może zastąpić innych praktyk bezpieczeństwa.

przy prawidłowej implementacji, zaciemnianie kodu jest skutecznym rozwiązaniem do ochrony oprogramowania przed nieautoryzowaną analizą. Nie jest to Srebrna kula, ale znacznie skomplikuje próby wykorzystania i skomplikowania oprogramowania.

Forbes Technology Council to społeczność zaproszona tylko dla światowej klasy cio, CTO i kadry kierowniczej ds. technologii. Czy się kwalifikuję?

Śledź mnie na Twitterze lub LinkedIn. Zajrzyj na moją stronę.

Ładowanie …

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.