Efektywne zabezpieczenie kopiowania

0

Witajcie Panowie.
Mam nadzieję, że to odpowiedni dział na pytanie...

Otóż nie ja jeden pewnie mam z tym problemy. Czy jesteście w stanie zaproponować jakiś sensowny system który uniemożliwiałby wykorzystanie programu na nielegalnym serialu? Np klient łączy się z serwerem i sprawdza poprawność/wykorzystanie klucza...coś w tym rodzaju.
W grę wchodzi oczywiście możliwość(a nawet konieczność) sprawdzania danych via internet.

Dodatkowo prosiłbym o jakiś przykład implementacji prostego algorytmu szyfrowanie/deszyfrowanie klucza/seriala odpowiednim algorytmem. Ja generuje klucz, wysyłam gosciowi, a on tym samym ale odwrotnym algiem rozkodowuje go i sprawdza poprawność. Oczywiście przykład miałby posłużyć do nauki.

Z góry dzięki.

ps. mialem jedną koncepcję, ale przedstawie ją moze poźniej - zobacze co tu w ogóle proponujecie.

0

o zabezpieczaniu programu było nie raz - wystarczy poszukać

BTW nie ma idealnego zabezpieczenia, są tylko lepsze lub gorsze bo każde można złamać

0

Tak jak już wspomniał Misiekd o zabezpieczeniach było już pare razy. Poszukaj i wyciągnij z tego najważniejsze informacje(troche śmieci też tam jest :-/ ) i zapoznaj się(przynajmniej pobieżnie) z technikami łamania programów.

prostego algorytmu szyfrowanie/deszyfrowanie klucza/seriala

Efektywne zabezpieczenie

W tym wypadku te dwa stwierdzenia są sprzeczne...

Jeśli stworzysz już jakieś zabezpieczenie to wrzuć je na forum - jak "przetrzyma" ponad tydzień to znaczy, że jest wystarczająco dobre - wystarczy ;-)

0

Hm... Efektywne, łatwe w obsłudze i w miarę dobre, ale dość drogie to kombinacja:

  • wymóg imiennej rejestracji każdej kopii z potwierdzeniem tożsamości np. kopia dowodu (Adobe Student brał legitymację)
  • pendrive przypisany do kopii programu (tak jak np. Zuzia)
  • dodatkowe urządzenie do generowania kluczy jednorazowych do VPNa
  • certyfikat pobierany po VPNie z serwera, generowany na bazie klucza jednorazowego i certyfikatu z pena

Zabezpieczenie da się złamać, ale jak już zostanie złamane to będzie wiadomo gdzie nastąpił przeciek.

ps. ci którym wydaje się to paranoją. Tak, ja mam tak zabezpieczonego kompa w pracy i jeszcze mam ActiveCard do niektórych aplikacji.

0

Akurat powyższe łatwo obejść jeżeli tylko ma się możliwość zmodyfikowania programu.

Dodatkowo prosiłbym o jakiś przykład implementacji prostego algorytmu szyfrowanie/deszyfrowanie klucza/seriala odpowiednim algorytmem.

Serial walidowany po stronie serwera to czarna skrzynka, starcza dowolny z popularnych algorytmów kryptograficznych. Po długosści seriala ew. można wywnioskować jaki algorytm jest używany ale nie co się konkretnie z nim i pozostałymi danymi dzieje.

Ja generuje klucz, wysyłam gosciowi, a on tym samym ale odwrotnym algiem rozkodowuje go i sprawdza poprawność.

Tak działa wiekszość autorskich zabezpieczeń no i crackme oczywiście. Problem jest taki, że skoro algo jest odwracalne to wiedząc jak ma wyglądać serial na wyjściu /budowa/ odwraca się algo i przepuszcza dane o strukturze spełniającej warunki końcowe - tak się keygen'y kodzi.

Jeśli stworzysz już jakieś zabezpieczenie to wrzuć je na forum - jak "przetrzyma" ponad tydzień to znaczy, że jest wystarczająco dobre - wystarczy

Jeżeli ze mną wytrzyma tydzień to znaczy, że jest kiepskie - wyszedłem z formy ;-P. A poważnie to najlepiej zainwestować w komercyjny protector - z taką Themidą mają problemy nawet analitycy w gorszych laboratoriach antywirusowych /lepsi analitycy w kiepskich labach nie siedzą/. Dla przykładu oba polskie antywirusy za bardzo tego protectora nie kochają... Zabawka droga, bardzo droga, z tańszych polecić z czystym sumieniem mogę polskiego PELock'a, jest bardzo mocny i ma świetny system licencyjny /nie widziałem ani jednego złamanego softu nim zabezpieczonego/.
Wracając jeszcze do walidacji po stronie serwera - posiadając skradzioną licencję można wszystkie potrzebne dane z serwera pobrać i odbudowac program bez nich. Pewnym rozwiązaniem byłaby generacja fragmentu kodu programu po stronie serwera z właściwościami zależnymi od ziarna wygenerowanego przez program ale... to tylko pozorna komplikacja, wymaga napisania prostego programu i z głowy.

  • wymóg imiennej rejestracji każdej kopii z potwierdzeniem tożsamości np. kopia dowodu (Adobe Student brał legitymację)

Tego wymaga HexRays - plug-in do Interactive Disassemblera, do tego może go kupić jedynie firma, nie osoba prywatna. Mimo wszystko zabawka wyciekła, ma ją spora część ludzi zajmujących się psuciem oprogramowania... ale jak dla mnie to jest niegroźny jeżeli odpowiednio napisze się kod w asm - analiza się wykłada.

  • pendrive przypisany do kopii programu (tak jak np. Zuzia)

Czym to się róźni od serial'a czy keyfile'a? O ile nie użyje się własnego drivera do komunikacji z nim, odpowiednio skomplikowanego, to można się banalnie pozbyć - albo zaemulować albo poskładać program do pracy bez tego. Jezeli mówimy o poważnym, komercyjnym kluczu sprzętowym to sprawa ma się już lepiej... ale i tak są ludzie specjalizujący się w łamaniu softu z kluczami sprzętowymi, wcale tak wielkiej pewności to nie daje chociaż to już całkiem sensowne rozwiązanie.

  • dodatkowe urządzenie do generowania kluczy jednorazowych do VPNa
  • certyfikat pobierany po VPNie z serwera, generowany na bazie klucza jednorazowego i certyfikatu z pena
    Wszystko fajnie tylko jest jeden problem - walidacja... program po stronie klienta musi coś sprawdzić, a to można oszukać, bez odpowieniego zabezpieczenia po tej stronie cały ten utrudniający użytkownikowi życie system na nic się nie zda.

Zabezpieczenie da się złamać, ale jak już zostanie złamane to będzie wiadomo gdzie nastąpił przeciek.

Dobre protectory mają możliwość wstawiania znaków wodnych w pliki wykonywalne - puszczony wykradziony soft\licencja ew. złamany nadal ma zachowane markery i można ustalić od kogo pochodzi, oraz zablokować użycie danej licki.
Jeżeli program jest faktycznie tak cenny to radzę zainwestować w protector, jeśli PELock nie spełnia wszystkich wymagań - proponuję się skontaktować z panem Bartoszem Wójcikiem w sprawie ew. jego modyfikacji.
Odpocznę to może coś konkretniej napiszę...

p.s. ciekawi mnie Twoja koncepcja, przedstaw ją jak najszybciej.
p.s. 2. Jak już przy zabezpieczeniach oprogramowania jesteśmy - może za jakiś czas wrzucę na 4p proste crackme, chodzi mi po głowie pewna koncepcja, jeżeli ją zapimlementuje to będziecie mięli zabawę, czegoś takiego jeszcze nie widziałem w sumie :-)

0

Hmm z tego co widzę to problem jest bardziej skomplikowany niż się wydaje.
Chcialem to zrobic w nastepujący sposób(teraz to w ogóle wydaje mi się prymitywny).

Klient otrzymuje ode mnie klucz(jakiś ciąg, może z zakodowanym adresem e-mail klienta)
Wklepuje kod do programu, a ten łączy się z serwerem i :
a) w pierwszej tabelce sprawdza(porównuje) czy klucz jest prawdziwy(czyli czy ja mu go dałem)
b) w drugiej tabelce sprawdza czy klucz nie jest na liście zablokowanych(jak jest - to wiadomo co)

To dalej nie rozwiązuje sprawy wielokrotnego wykorzystania klucza. Więc pomyślałem sobie, żeby utworzyć jeszcze jedną tabelkę. W niej zaś byłyby informacje typu klucz + cecha charakterystyczna kopii programu która jest odpalana na danej maszynie(dane dodawane przy pierwszym uruchomieniu).

c) w trzeciej tabelce sprawdzałoby się czy kopia programu która łączy się z serwerem spełnia warunek(klucz + cecha charakterystyczna)

Wady? Chyba pełno:
Co byłoby tą cechą charakterystyczną? Gdzie ją przechowywać w kompjuterze, aby potem ją sprawdzić(to już duża wada ze o stronie klienta cokolwiek byłoby przechowywane)

Głównie to chodzi mi o zarys metody jaką chciałem ograniczyć możliwość łatwego wykorzystywania tego samego klucza.

Myślałem też nad tym, aby trzecią tabelką była tymczasowa sesja - na czas działania programu dane zapisywane są do tabelki, że klucz jest w użyciu. I podczas wyłączania programu należałoby się wylogować. Tylko co jeżeli komuś ...zabrało prąd? Zawiesiło kompa i się nie wylogował? Przy następnej próbie odtrzymywałby wiadomość, że jego klucz jest w uzyciu.

Oj bagno bagno... ; /

0

Tylko co jeżeli komuś ...zabrało prąd?

Ping co 10 minut... i jeśli nie ma odpowiedzi to go wywala(obie strony by się wzajemnie pingowały).

Cech charakterystycznych może być wiele: numer seryjny dysku(przepuszczony przez jakiś algo szyfrujący), ip(jak mu sie net wywali to najwyżej poczeka sobie 10 minut ;-P ), email(raczej nie polecam - nie wiem czemu,ale wydaje mi się, że to nie jest najlepszy pomysł)..... Oczywiście wszystko trzeba przesyłać do serwera po przepuszczeniu przez jakiś DOBRY algo szyfrujący/skrót(nie wiem czy to jest poprawnie gramatycznie ;-) - mam na myśli np. MD5).
W drugiej tabelce sprawdź jeszcze czy jego ID nie jest teraz na liście używanych.

@deus:To może napiszesz jakiś kurs? Przydałby się dobry art/kurs na temat zabezpieczeń na 4p(to co jest teraz jest niezłe, ale tylko podstawy :( ), a Ty z tego co zdążyłem zauważyć jesteś najlepiej obeznany w temacie. Co do cm - czekam(y) ;-)

P.S.
Jak mi przyjdzie coś sensownego do głowy to jeszcze napisze - na razie styknie(czas wrócić do mniej przyjemnych rzeczy.... :-/ )

0

Ja tylko powiem, że widywałem już rozprowadzanie zabezpieczonych aplikacji w postaci.. kopii maszyny wirtualnej. Na maszynie aplikacja jest rejestrowana i wystarczy ją skopiować i odpalić. Badanie cech peceta (seriale dysku, id sprzętu, itp, itd) na nic się nie zdadzą.

0

Szczawik napisał:

Ja tylko powiem, że widywałem już rozprowadzanie zabezpieczonych aplikacji w postaci.. kopii maszyny wirtualnej. Na maszynie aplikacja jest rejestrowana i wystarczy ją skopiować i odpalić. Badanie cech peceta (seriale dysku, id sprzętu, itp, itd) na nic się nie zdadzą.
Ale chyba aktualne IP się w ten sposób nie zapamiętuje? Powiedziałbym raczej, że może nietyle na nic się nie zdadzą, co jest to dość typowym i łatwym do wykrycia sposobem.... I tutaj pojawia się pytanie co nim nie jest :> ? Moim zdaniem najlepiej skorzystać z kilku(nastu) wymienionych wyżej rozwiązań no i przede wszystkim walnąć zabezpieczenia nie tylko w jednym miejscu, ale w kilku(np. ponowne sprawdzenie seriala/czy co to tam bedzie/ przy probie zapisu/odczytu pliku itp.).

0

Program nie może być oparty na zewnętrznym IP, bo co ma powiedzieć ktoś na przykład z neostradą? Z drugiej strony ustawienie statycznego IP też nie jest problemem dla maszyny wirtualnej.

Najlepszym zabezpieczeniem wg. mnie jest zabezpieczenie proste i nieskomplikowane. Domowy użytkownik sobie z nim i tak nie poradzi, a wprawny złodziej oprogramowania tak czy siak ominie.

0

Jeden z moich cwiczeniowcow na studiach mowil: Najpierw zacznijcie pisac jakiekolwiek programy, pozniej zacznijcie je poprawiac, zeby dojsc do wprawy. Z programu mozecie byc z dumni jesli znajdziecie do niego cracka w sieci, bo to znaczy, ze ktos uznal, ze warto go crackowac.

Pytanie wiec do autora, czy program w ogole wart jest skomplikowanych zabezpieczen, ktore i tak kiedys ktos zlamie, jesli bedzie widzial w tym korzysc.

0

Prosty sposob na zabezpieczenie programu zrobic sobie jakis key generator oparty o np. mac karty sieciowej itp. :P
@johny_bravo - ja bym nie byl dumny jak bym znalazl cracka, wrecz byl bym wku......... :P

0

najlepszy to dolacznie klucza jako urzadzenia podpinanego do portu usb przykladowo

0
PinguVanEx napisał(a)

Prosty sposob na zabezpieczenie programu zrobic sobie jakis key generator oparty o np. mac karty sieciowej itp. :P
@johny_bravo - ja bym nie byl dumny jak bym znalazl cracka, wrecz byl bym wku......... :P

Prawie wszystkie współczesne karty pozwalają software'owo na zmianę MACa.

0

No wlasnie - jezeli program sprawdza po MAC karty, to ma w sobie zapisany akceptowalny MAC. A jezeli ma zapisany, to mozna go wyciagnac, mozna tez zmienic na inny.

Niewazne jakie beda zabezpieczenia - i tak zawsze da sie to zrobic. Tylko albo bedzie to bardziej utrudnione albo mniej.

0

Dlatego IMHO nie można podchodzić do zabezpieczenia na czuja i ładować gdzie popadnie jakichś trików, tylko kompleksowo podejść do sprawy.

Dobre wyobrażenie o tym, jak podejść do zabezpieczania programu można mieć np po przeczytaniu (wg mnie bardzo dobrego) artykułu o łamaniu zabezpieczeń w XBoxie

0

Witam a mój problem polega na tym że po wykonaniu operacji na PELock otrzymuję takie komunikaty:
user image
user image
user image

0

Wygląda mi to na błędną obsługę TLS w aplikacji Delphi...

Wina leży po stronie PELock-a, a dokładniej po jego przestarzałej wersji demo, która wisi obecnie na stronie www.

Jeśli chciałbyś zobaczyć jak działa z najnowszą wersją skontaktuj się przez http://www.pelock.com/contact

bartek

0

zdaje się, że dla delphi 7 pelock jeszcze działa... czyli można go jednak choć troszkę przetestować... :)

0

madmikeowszem ale wierz nie na każde. Na skomplikowanych aplikacjach, powoduje powyższe błędy. Nie wiem jaka jest zależności. Ściągnąłem z necika Obsidium ale nie umiem się nim posługiwać Wydaje mi się że tam jest jakiś kreator który przygotowuje opcje zabezpieczenia

0

powinno to wystarczyć, żeby sprawdzić sam program... chociaż w sumie szkoda, że na stronie nie ma nowej wersji pelocka - zastanawiam się właśnie czy nie użyć tego do zabezpieczeń, zamiast kombinowania ze swoimi, ale troszkę pracochłonne jest sprawdzanie na starszej wersji, czy spełnia moje wymagania... samo oglądanie zabezpieczonego programu nic mi nie daje... może autor pelocka zrobi nam tę przyjemność i umieści aktualną wersję demo na stronie...

0
johny_bravo napisał(a)

Jeden z moich cwiczeniowcow na studiach mowil: Najpierw zacznijcie pisac jakiekolwiek programy, pozniej zacznijcie je poprawiac, zeby dojsc do wprawy. Z programu mozecie byc z dumni jesli znajdziecie do niego cracka w sieci, bo to znaczy, ze ktos uznal, ze warto go crackowac.

Powiedz swojemu wykladowcy ze ja wcale dumny nie jestem ;/ a znalazlem :-[
P.s. na szczescie juz nie dziala ale musze jakos inaczej zabezpieczyc aplikacje.

Moze jakis wykladowce ze studiow mi pomoze...

0

@PinguVanEx: to taki zart raczej, chociaz swiadczy o tym, ze Twoja aplikacja jest warta czasu poswieconemu na stworzenie cracka. Ja, osobiscie, tez bym nie skakal z radosci jakbym do swoich znalazl ;)

0

johny_bravo, w wielu wypadkach nie łamie się softu ze względu na jego walory, robi się to dla sportu - co tylko w łapy wpadnie. Czas poświęcony na zrobienie cracka przekłada się na zdobywane umiejętności i zabawę po prostu.

0

No tak, co nie zmienia faktu, ze aby zabrac sie za taki program trzeba o nim najpierw uslyszec ;) Jezeli znajde cracka na jakiejs stronie w Taiwanie do swojego programu to najprawdopodobniej wie o nim ktos wiecej niz tylko ja i moi kumple ;)

I generalnie zgodze sie z tym 'dla sportu'. Ja w zyciu zcrackowalem z 5 programow w zasadzie tylko z ciekawosci, zeby sie dowiedziec jak to w ogole wyglada.

0

Można ominąć ten problem tworząc programy jako Public Domain (chociaż to dość hardcorowe ;) ). Przynajmniej wszystkie moje są albo GPL albo j/w.

0
Oleksy_Adam napisał(a)

Można ominąć ten problem tworząc programy jako Public Domain (chociaż to dość hardcorowe ;) ). Przynajmniej wszystkie moje są albo GPL albo j/w.

Public Domain wcale nie jest takie różowe...
poza tym lepiej sobie wybić z głowy publikowanie czegokolwiek na public domain, to już chociażby licencje MIT wykorzystać...

This “Give-It-Away” license provides no protection for anyone if the donated software causes harm. Obviously one cannot intentionally give away something he knows to be dangerous; that is criminal behavior. But, neither can one escape a lawsuit because his gift was only accidentally harmful. The risk of such a license is far greater than the warm feelings that enrich the soul of the giver. One important value of a license is the opportunity to disclaim warranties and distribute the software “AS IS”. If you give software away, you may retain a risky warranty obligation.

całość tekstu: http://www.linuxjournal.com/article/6225

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