Zabezpieczenie aplikacji w Java

Zabezpieczenie aplikacji w Java
tomasz79
  • Rejestracja:około 15 lat
  • Ostatnio:ponad rok
  • Postów:52
0

Witam wszystkich.
Napisałem aplikację w Java i chciałbym ją jakoś zabezpieczyć przed kopiowaniem.
Czy jest sens zabezpieczania programów w Java kluczami sprzętowymi?
Trochę było poruszanej tematyki zabezpieczeń programów na forum, ale o kluczach sprzętowych nic nie znalazłem.
Przymierzam się do tego rodzaju kluczy "ROCKEY4ND" http://rockey.pl/pl/.

Pozdrawiam Tomasz

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 5 godzin
0

Stawiam skrzynkę piwa, że gdzieś na świecie jest haker, który rozpieprza hurtowo tego typu zabezpieczenia.

W ogólności:
Nie da się zabezpieczyć samodzielnej aplikacji, ale da się nieco wydłużyć proces łamania. Musisz rozważyć wszystkie za i przeciw. Jednym z argumentów przeciw jest to, że jeśli tylko ty będziesz znał kod, to tylko ty będziesz w stanie stwierdzić, że ktoś ci kod podpieprzył. Oczywiście zakładając, że podpieprzający kod nie zastosuje jakiegoś silnego zabezpieczenia przed tobą :P


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:13 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Za duże koszty zarówno samego zabezpieczenia jak i później supportowania tego rozwiązania. Pamiętaj, że w razie problemów klient będzie męczył ciebie, a nie producenta klucza. Pewnym rozwiązaniem wydaje się tu być odpowiednio skonfigurowany zestaw podpisów cyfrowych + java web start + dociąganie kodu z serwera. Choć tu też mogą pojawić się problemy.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
0

Dzisiaj najlepszym kluczem sprzętowym jest po prostu internet. Nawet najsłabsze połączenie komórkowe 9 kbs jest w stanie dorzucić tyle zabezpieczonego kodu ile potrzeba. Tak więc potraktuj swój własny serwer jako najlepszy istniejący klucz sprzętowy, który na dodatek będzie miał ten bonus, że będziesz się orientować ile legalnych kopii softu działa. Klucz sprzętowy to była taka namiastka, która dzisiaj jest technologią starożytną. Jeżeli internet odpada, to innym najlepszym zabezpieczeniem jest obudowanie softu w maszynie. Tak działa sprzedaż wszelkiego sprzętu medycznego, telewizorów itp. Soft wpakowuje się do skrzynki i sprzedaje się żuczkom skrzynkę, w której soft jest w zasadzie ukryty. To drugie podejście jest bardzo rozpowszechnione w przypadku Javy bo daje pozory sprzedawania sprzętu, choć tak naprawdę opycha się soft - którego zresztą nikt tam nie szuka.

ps. Zauważ, że to ostatnie podejście zostało wykorzystane w przypadku "Rockey4ND". Tu też sprzedają Ci soft "opakowany sprzętem".


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?
edytowany 1x, ostatnio: Olamagato
TO
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 8 lat
0

Tak się zastanawiam nad tym na ile klucz sprzętowy chroni aplikację java.
Zakłądając najprostszy wariant - program przy starcie odczytuje coś z klucza i porównuje czy jest odpowiednie, jeśli tak to dzialą jak nie to się wyłącza. Nie wnikając w szczegóły, ktoś może użyć disaseblera i wywalić kod który robi sprawdzanie(w jave jest jest bardzo proste). Mam rację ?
Poza tym, kluczem sprzetwych chyba ciężko zabezpieczyć kod aplikacji ? Nawet jeżeli klucz zwracałby ten cenny kawałęk kodu to i tak ten kod będzie ładowany do pamięci skąd go można zczytać.

Może na przykładzie będzie prościej to wyjaśnić.
Załóżmy że mamy prosty program który wykonuje oprację na plikach z liczbami - ustawia odpowiednie wartośći w odpowiednich miejscach. I teraz chce chronić 2 rzeczy. Pierwsza aby nie dało się łatwo uruchomić nieautoryzowanej kopi programu. Druga to żeby nikt nie posiadł informacji co gdzie ustawić i na jakiej zasadzie jest to robione bo to jest bardzo ważna tajemnica.
To klucz sprzętowy utrudni pierwszą rzecz oraz możę trochę drugą (jeżeli na kluczu będzie zakodowany kawałęk kodu). Obfuscator utrudni drugą rzecz ale jej nie umożliwi.
Co o tym sądzicie jak najlepiej zabezpieczyć te 2 rzeczy ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.