Szyfrowanie klas?

0

Witam, wiem ze istnieje obfuskacja do zaciemniania kodu, ale latwo wyciagnac jakas wartosc przekazana np. do serwera. Slyszalem takze, ze istnieje szyfrowanie klas. Moglibyscie powiedziec na czym to polega? Wtedy trzeba tez edytowac kod wirtualnej maszyny javy? Czy mozna z tego korzystac np. w apk android czy raczej nie? Chodzi o to, ze chcialbym zbudowac pewna apk na androida, ktora sluzy do sprawdzania czy nie ma nielegalnych plikow i wysyla dane serwerowi. Problem polega na tym, ze aplikacja bedzie mala i te dane przesylane serwerowi bedzie mozna zmienic nawet jak obfuskacja zostala zastosowana. A przy szyfrowaniu mysle, ze wiekszosc "lamaczy kodu" by to odstraszylo. Dziekuje za odp.

0

Przecież jak ktoś będzie chciał, to i tak odpali Wiresharka czy jakiś odpowiednik i będzie miał gdzieś czy Twoja aplikacja jest obfuskowana, czy też nie ;-)

security by obscurity nie jest rozwiązaniem Twojego problemu.

0

Czyli [CIACH!] z tym. Dzieki za odpowiedz.

0

Ale czekaj, czekaj. Napisalem, ze wyciagnac wartosc przekazana do serwera, tyle ze zapomnialem dodac, ze to nie jest najwazniejsze tylko najwazniejszym dla mnie jest to zeby tej przekazanej wartosci nie mogl zmienic. Obfuskacje zlamac mozna i dostac sie do odpowiedniej metody (w ktorej zmieniamy wartosc wysylana do serwera np. uzytkownik nie ma zadnych nielegalnych plikow chociaz je ma i wysyla dane jako "czysty uzytkownik"), ale z szyfrowaniem to juz inna bajka? Tyle, ze jest mozliwe szyfrowanie klas/kodu klas do androida? Na czym to polega? Wiem, ze nie dam rady tego ogarnac (nie jestem wymiataczem), kilka dni temu dopiero o tym czytalem, ze istnieje jakies szyfrowanie kodu jakims tam kluczem.

0

Napisalem, ze wyciagnac wartosc przekazana do serwera, tyle ze zapomnialem dodac, ze to nie jest najwazniejsze tylko najwazniejszym dla mnie jest to zeby tej przekazanej wartosci nie mogl zmienic.

Skąd pomysł, że nie można modyfikować już nadanych pakietów? ;-)

Powtarzam: security by obscurity nie jest żadnym rozwiązaniem. Nie jest.

0

Patrze sobie na ten program i ma mozliwosc odczytywania i zmieniania pakietow w interfejsie uzytkownika. Zacny programik ;). Ale co jesli wysylane pakiety sa "przetwarzane w czasie rzeczywistym" i np. po 0.5s sa niewazne? Przeciez nikt nie bedzie na kompie mial odpalonego Wiresharka i na tel. probowal sie wbic gdzies tam jako czysty uzytkownik poprzez zmienienie wartosci w tym programie ;). Dam sobie reke uciac, ze ten Wireshark i odpowiedniki programu nie kompiluja programow z zedytowana wartoscia pakietu. To juz trzeba recznie robic a komu by sie chcialo szukac klucza do odszyfrowania kodu zrodlowego he (no chyba, ze by jakos spamil tymi pakietami non stop, ale mozna dodac do serwera jakis filter lub cos podobnego :D - po prostu nie uwzgledniajmy takich sposobow, bo sa malo prawdopodobne)? Czy niestety znowu wyszedlem na glupiego i security by obscurity nie jest żadnym rozwiązaniem :P?

0

Ale co jesli wysylane pakiety sa "przetwarzane w czasie rzeczywistym" i np. po 0.5s sa niewazne?

Brawo, zacząłeś sam sobie wymyślać problemy i rozwiązania na nie ;-)

Po prostu wykorzystaj szyfrowanie asymetryczne i ew. nawet obfuskację, ale pamiętaj, że jeśli ktoś będzie chciał, to i tak dorwie się do mechanizmu działania.

0

Dziękuję za odpowiedz. Poczytam o tych szyfrowaniach, kryptografii itd. Nigdy sie tym nie zajmowalem, ale czego sie naucze to moje :D. Jeszcze raz dzieki za pomoc :)!

0

odpali Wiresharka czy jakiś odpowiednik i będzie miał gdzieś

Wireshark nic nie poradzi na zwykłego ssla. Czyli pierwsza rzecz, transmitować przez https. Niestety trzeba tu też weryfikować certyfikaty, żeby zapewnić Cię, że ktoś się nie podszywa pod jedną albo drugą stronę (np. tworzy proxy Wiresharkiem będąc Man In The Middle). To już jest niebanalne do zaprogramowania, ale też nieskomplikowane.

i tak dorwie się do mechanizmu działania

Chyba tak. Skoro Microsoft został ostatnio rozpracowany przez Petyę itp., to trudno się łudzić, że napiszesz kod nie do podejrzenia. Ale może Android ma jakieś wbudowane zabezpieczenia, tak jak wyczytałeś. W zabezpieczeniach chodzi o to, żeby napastnikowi nie opłacało się ich łamać, bo zajmuje to za dużo czasu. Więc czasem wystarczy obfuskacja.

0

Wireshark nic nie poradzi na zwykłego ssla.

Np. edit -> preferences -> protocols -> ssl -> pre-shared keys albo edit -> preferences -> protocols -> ssl -> pre-master secret log filename (przed pierwszym "obroni" trochę cert pinning, drugie specyficzne do biblioteki).
Ew. poradzi sobie APIMon/inny hooker. Albo cuckoo. Albo timing attack/power analysis na własny system (tak, żart). SSL z założenia nie jest żadnym zabezpieczeniem na lokalnej maszynie i jest do złamania w 5 minut :P.

To już jest niebanalne do zaprogramowania, ale też nieskomplikowane.

Trochę jednak skomplikowane :P. Jedyny sposób na obejście MITM w wiresharku to cert pinning w kodzie (banalny do obejścia btw), a to powoduje olbrzymie komplikacje kiedy Twój prawdziwy certyfikat jednak wygaśnie/wycieknie i trzeba go będzie zmienić.

W zabezpieczeniach chodzi o to, żeby napastnikowi nie opłacało się ich łamać, bo zajmuje to za dużo czasu. Więc czasem wystarczy obfuskacja.

Tylko w specyficznych przypadkach, kiedy nie da się zabezpieczyć aplikacji tak żeby była nie do złamania. W tym przypadku:

Witam, wiem ze istnieje obfuskacja do zaciemniania kodu, ale latwo wyciagnac jakas wartosc przekazana np. do serwera.

Co takiego wysyła program, że użytkownik sam nie może tego widzieć? Zastanów się nad tym, i zrób coś żeby tego nie wysylać.
A jeśli martwisz się że ktoś inny przechwyci zapytanie, to porzuć swoje zmartwienia - od tego jest TLS.

1 użytkowników online, w tym zalogowanych: 0, gości: 1