2013-07-15 16 views
8

Będę pracował z bardzo wrażliwymi danymi w aplikacji. Obfuskacja według mojej definicji nie dodaje bezpieczeństwa, tylko opóźni krakera z skończonym czasem. Czy to możliwe, że Proguard robi to tak dobrze, że można to nazwać dodatkowym zabezpieczeniem?Jak bezpieczne jest proguard przeciwko inżynierii wstecznej?

Najbardziej wrażliwe są niektóre połączenia sieciowe. Ciężko będzie powąchać hasło, ponieważ wygenerujemy hasło po obu stronach i sprawdzimy jego ważność za pomocą znaczników czasu. Problem polega na tym, że aplikacja może zostać poddana inżynierii wstecznej, a algorytm generowania może zostać wykorzystany.

Nie jest możliwe zachowanie algorytmu lokalnie w pliku, ponieważ z zrootowanym telefonem cracker może go odzyskać. Nie ma potrzeby pobierania algorytmu z serwera, ponieważ ten sam problem dotyczy tutaj, jeśli inżynier odwrotny sprawdzi aplikację, z której będzie mógł odczytać algorytm.

Wszelkie uwagi dotyczące sposobu postępowania są bardzo mile widziane!

Edit

Co staram się chronić to generuje algorytm tak cracker nie może wysłać wiele danych na naszym serwerze.

+0

Zabezpiecz przed _what_? Jakie konkretne ataki próbujesz zapobiec? – SLaks

+0

@SLaks Proszę zobaczyć moją edycję. –

+0

Odpowiedziałeś na swoje pytanie w pierwszym wierszu: "Obfuskacja według mojej definicji nie dodaje bezpieczeństwa" proszę oznaczyć jako rozwiązany i usunąć go :) –

Odpowiedz

12

Generalnie można sprawić, że krakersy staną się trudniejsze. Im ciężej zrobisz, tym mniej pozostanie. Zwłaszcza, jeśli zachęta finansowa jest ograniczona.

Twoje opcje kodu zaciemniania są:

  • Zastosowanie PROGUARD, robi dobrą robotę, nie idealny, oczywiście, ale dobre
  • Zastosowanie DexGuard, która może sprawić, inżynierię odwrotną jeszcze trudniej, jak szyfrując sznurki lub kod wykrywania ingerencjami
  • części krytycznych
  • pisać w C

Niezależnie od zaciemniania kodu, dokonać protokół sieciowy też trudno męczą się: szyfrowanie i podpisywanie wiadomości, upewnianie się, że wiadomości nie mogą być powtarzane (przez użycie czasu lub sekwencji) i uwierzytelnianie klienta. Nie zapisuj na dysku żadnych czytelnych tekstów, które są poufne.

+2

Bardzo dobre punkty. Bardzo podobało mi się "Pisz krytyczne części w C". –

+2

Dlaczego pisanie części krytycznych w C jest dobrym pomysłem? – Micro