 |
Coders' city Nasza pasja to programowanie!
|
| Zobacz poprzedni temat :: Zobacz następny temat |
| Autor |
Wiadomość |
kropek
Dołączył: 17 Sie 2010 Posty: 8 Skąd: Wrocław
|
Wysłany: Wto Sie 17, 2010 9:36 pm Temat postu: Zabezpieczanie programów - własny serwer licencji/aktywacji |
|
|
Witam wszystkich,
Chciałbym zabezpieczyć swoje programy, za pomocą aktywacji programu przez internet. Serwerem licencji byłby zwykły hostingowany serwer LAMP. Czy ktoś z szanownych forumowiczów ma jakieś doświadczenia w tym temacie? |
|
| Powrót do góry |
|
 |
|
|
Garf

Dołączył: 25 Maj 2005 Posty: 3348 Skąd: Rzeszów
|
Wysłany: Sro Sie 18, 2010 8:19 am Temat postu: |
|
|
Doświadczeń w tym konkretnym przypadku nie, ale nie widzę żadnego problemu ze zrobieniem czegoś takiego. _________________ Zakochanie - to relacja międzyosobowa wynikająca z upodobania sobie w kimś, powodującego zależność emocjonalną od tego kogoś. Na miarę siły owej zależności następuje proporcjonalnie: utrata zdrowego rozsądku oraz zdolności do samodecydowania. o. Paweł Gużyński OP |
|
| Powrót do góry |
|
 |
kropek
Dołączył: 17 Sie 2010 Posty: 8 Skąd: Wrocław
|
Wysłany: Sro Sie 18, 2010 9:57 am Temat postu: |
|
|
Dzięki za odpowiedź:)
Też mi się wydaje to proste. Problem w tym, że nie mam dużego doświadczenia w php. Na upartego coś bym napisał, ale nie mając doświadczenia prawdopodobnie popełnię wiele błędów związanych z bezpieczeństwem.
A działało by to tak:
Użytkownik otrzymuje numer seryjny. Po wpisaniu w formularzu aktywacji, aplikacja wysyła na serwer zapytanie w postaci zaszyfrowanego numeru seryjnego. Na serwerze w mysql są 2 tabele: lista kluczy dopuszczonych do użytkowania (w postaci zaszyfrowanej) i druga tabela z dziennikiem zdarzeń. Po otrzymaniu zapytania serwer analizuje obie tabele i zwraca aplikacji odpowiedź (może być też zaszyfrowana), czy pozwala na uruchomienie aplikacji. Warunkiem udzielenia pozytywnej odpowiedzi jest to czy klucz jest prawidłowy (istnieje w pierwszej tabeli), oraz czy program nie był aktywowany więcej niż X razy w jakimś okresie Y. Wartości X i Y mogły by być dodatkowo przypisane do tabeli 1.
Wydaje mi się że zasada działania jest prosta.
Czy ma to sens Waszym zdaniem? |
|
| Powrót do góry |
|
 |
lethern

Dołączył: 09 Paź 2007 Posty: 729 Skąd: Bstok/Lublin
|
Wysłany: Sro Sie 18, 2010 1:50 pm Temat postu: |
|
|
Spróbuj sam pogłówkować, jak można obejść Twoje zabezpieczenie.
Ogólnie istnieje cracking programów, nie wiem czy czytałeś o tym. W przypadku np. aplikacji jest to możliwe - mimo braku internetu zasymulować przepływ pakietów (które można podejrzeć w przypadku autentycznym), napisać to w postaci programu (cracka) i każdy program będzie mógł być zarejestrowany tym samym kodem (mimo braku połączenia z internetem!). Dodam: tego nie da się obejść (na obecny stan wiedzy). _________________ używasz Dev-Cpp? tools->editor options -> use tab character (włącz), smart tabs (wyłącz)... albo ściągnij np. Code::Blocks lub Visual Studio C++ darmowe |
|
| Powrót do góry |
|
 |
kropek
Dołączył: 17 Sie 2010 Posty: 8 Skąd: Wrocław
|
Wysłany: Sro Sie 18, 2010 2:21 pm Temat postu: |
|
|
| lethern napisał: | Ogólnie istnieje cracking programów, nie wiem czy czytałeś o tym. |
Pierwsze słyszę ;)
OK, zdaję sobie sprawę z zagrożeń, ale nie jest to tak istotne w przypadku programów, które tworzę. Ze względu na grupę odbiorców, używanie crackowanych programów mojej produkcji nie ma sensu lub jest niemile widziane:) Zresztą wiele programów jest zabezpieczonych w ten sposób (z Windowsem włącznie) i ludzie to crackują, a producenci i tak jakoś zarabiają:)
Dlatego ponawiam prośbę o pomoc przy tworzeniu takiego rozwiązania. |
|
| Powrót do góry |
|
 |
Garf

Dołączył: 25 Maj 2005 Posty: 3348 Skąd: Rzeszów
|
Wysłany: Pią Sie 20, 2010 8:19 am Temat postu: |
|
|
Podstawowe pytanie: jak mocno chcesz zabezpieczyć swój program? Bo można dojść nawet do stosowania kluczy sprzętowych (np. tych na USB), ale czy potrzebujesz aż czegoś takiego?
Większość aplikacji wymaga podania przy instalacji/pierwszym uruchomieniu klucza licencji. Możesz dodatkowo sprawdzać ten klucz przez internet na swoim serwerze. Warunek: serwer musi być zabezpieczony przed "odpytywaniem" o klucze. Ważne jest, aby zabezpieczenie nie było paranoiczne (czyli koszt wytworzenia zabezpieczenia przekracza wartość rzeczy zabezpieczanej). _________________ Zakochanie - to relacja międzyosobowa wynikająca z upodobania sobie w kimś, powodującego zależność emocjonalną od tego kogoś. Na miarę siły owej zależności następuje proporcjonalnie: utrata zdrowego rozsądku oraz zdolności do samodecydowania. o. Paweł Gużyński OP |
|
| Powrót do góry |
|
 |
kropek
Dołączył: 17 Sie 2010 Posty: 8 Skąd: Wrocław
|
Wysłany: Pią Sie 20, 2010 9:59 am Temat postu: |
|
|
Zabezpieczanie aplikacji w wersji bez aktywacji przez internet mam opanowane:) Jak dotąd zabezpieczeń nikt nie złamał, a wiem że ludzie szukają cracków - można znaleźć mnóstwo zapytań w sieci. Decydując się na aktywację przez internet, głównym moim celem jest ułatwienie życia legalnym użytkownikom i zautomatyzowanie procesu aktywacji programu.
Ponieważ nic tak nie motywuje do pracy, jak brak odpowiedzi na forum, poświęciłem wieczór i napisałem skrypt php który moim zdaniem załatwia sprawę. Zaledwie 30 linijek kodu:).
Wszystko bazuje na plikach tekstowych. W folderze na serwerze znajdują się pliki o nazwach odpowiadającym numerom seryjnym w postaci zaszyfrowanej. Te pliki są puste.
Podczas aktywacji program kliencki wysyła zapytanie mniej więcej takie ..../activation.php?key1=zaszyfrowany_nr_seryjny_&key2=kod_żądania
Skrypt sprawdza czy istnieje na serwerze plik zaszyfrowany_nr_seryjny. Jeżeli istnieje, to sprawdzane są inne warunki, np. czy ostatnie 2 aktywacje nie była robiona wcześniej niż 30 dni. Jeżeli te zaś pozwalają na aktywację programu, skrypt odpowiednio koduje kod_żądania i zwraca odpowiedz aplikacji klienckiej, dodatkowo zapisując fakt aktywacji w logu.
Jeżeli zaś plik zaszyfrowany_nr_seryjny nie istnieje lub nie są spełnione inne warunki pozwalające na aktywację, skrypt odpowiednio koduje kod_żądania (ale w sposób udawany, inaczej niż w przypadku pozytywnej odpowiedzi) i zwraca odpowiedz aplikacji klienckiej.
kod_żądania jest za każdym razem inny, więc odpada problem z zasymulowaniem przepływu pakietów.
Dopóki nie zostanie złamany sposób kodowania kodu_żądania powinno moim zdaniem działać ok. No chyba że ktoś się włamie na serwer :)
Czy są jeszcze jakieś inne zagrożenia? |
|
| Powrót do góry |
|
 |
samolot
Dołączył: 26 Sty 2006 Posty: 5404 Skąd: Toruń
|
Wysłany: Pią Sie 20, 2010 9:11 pm Temat postu: |
|
|
Może pisanie o tym jawnie na forum?
| Cytat: | | Zabezpieczanie aplikacji w wersji bez aktywacji przez internet mam opanowane:) |
| Cytat: | | poświęciłem wieczór |
Tylko? Uważam to za zbytnie zaufanie w swą niomylność. Jest takie powiedzenie, że wzsystko co człowiek zabezpieczył, to też czlowiek znajdzie na to antidotum. _________________ Vista SP2+VB 2008 EE + .NET 3.5 + IE 9.0.8112 /431 przykładowych programów do Warsztatu programisty (Helion) W życiu bowiem istnieją rzeczy , o które warto walczyć do samego końca. (P. Coelho) |
|
| Powrót do góry |
|
 |
kropek
Dołączył: 17 Sie 2010 Posty: 8 Skąd: Wrocław
|
Wysłany: Pią Sie 20, 2010 10:43 pm Temat postu: |
|
|
| samolot napisał: | Może pisanie o tym jawnie na forum?
| Cytat: | | Zabezpieczanie aplikacji w wersji bez aktywacji przez internet mam opanowane:) |
Napisałem tak, ponieważ chcę żeby ten wątek skupił się na serwerowej części zabezpieczenia. Nie uważam że moje dotychczasowe zabezpieczenia są jakieś rewelacyjne, wręcz przeciwnie, są proste i głupie i czasem się dziwię że tego nikt nie złamał. Chociaż tłumaczę sobie to faktem, że są to programy specyficzne, których nie można nawet uruchomić nie mając wiedzy z branży, dla której te programy są przeznaczone.
| Cytat: | | poświęciłem wieczór |
Tylko? Uważam to za zbytnie zaufanie w swą niomylność. |
Gdybym wierzył w swoją nieomylność, nie zapuścił bym tego tematu na forum. Ponieważ nie znalazłem nic w sieci, liczyłem na to, że uda mi się skontaktować z kimś, kto ma jakieś doświadczenie w temacie, żeby wymienić się poglądami, kodami, podyskutować, od tego chyba jest forum? Przedstawiłem swoje podejście do rozwiązania problemu, mając nadzieję że być może dostanę jakieś wskazówki, uwagi od specjalistów. Proszę więc o pomoc, radę, jeżeli oczywiście ktoś ma ochotę pomóc, doradzić.
| Cytat: | | Jest takie powiedzenie, że wzsystko co człowiek zabezpieczył, to też czlowiek znajdzie na to antidotum. |
To ma być pomoc? Przecież wiem, nie jestem kretynem, każde zabezpieczenie da się złamać. |
|
| Powrót do góry |
|
 |
samolot
Dołączył: 26 Sty 2006 Posty: 5404 Skąd: Toruń
|
Wysłany: Pią Sie 20, 2010 11:31 pm Temat postu: |
|
|
| Cytat: | | czasem się dziwię że tego nikt nie złamał |
W żadnym razie nie chciałem Cie urazić. Żeby złamać , to trzeba najpierw chcieć złamać. I tu nie chodzi akurat o Twoj program, którego przecież nie znam. Ponadto wiem ile to trzeba włożyc wysiłku i w pisanie programu i w to by działał bez błędów. Znam to uczucie checi zabezpieczenia swego programu. To jest naturalne.
| Cytat: | | wymienić się poglądami |
Tak , wyzej wymieniłem swój pogląd.
| Cytat: | | podyskutować, od tego chyba jest forum? |
A to nie dyskusja?
Jeżeli w wyniku zrozumienia sensu mojej wypowiedzi zmienisz zdanie , lub, powiedzmy zweryfikujesz to, co na temat zabezpieczeń programów sam sadzisz, to będzie to jakieś przybliżenie sedna sprawy. Nie wiem jak długo piszesz programy, nie wiem jakie one są. Jednak z doswiadczenia i obserwacji wiadomo, że ta chęć zabezpieczenia swego programu u ludzi , którzy napisali jeden , dwa programy, jest przemożna. (to nie jest przytyk do Ciebie, to jest ogólna uwaga) Wartość kazdego (dobrego) programu wzrasta wraz z jego rozpowszechnieniem, jesli jest dobry, to bedzie wiedziało o tym wiecej ludzi, a w konsekwencji wiecej ludzi bedzie chcialo go mieć.
| Cytat: | | Przedstawiłem swoje podejście do rozwiązania problemu |
Ja też, i nie złość się od pierwszego posta :) _________________ Vista SP2+VB 2008 EE + .NET 3.5 + IE 9.0.8112 /431 przykładowych programów do Warsztatu programisty (Helion) W życiu bowiem istnieją rzeczy , o które warto walczyć do samego końca. (P. Coelho) |
|
| Powrót do góry |
|
 |
|
|
Możesz pisać nowe tematy Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Możesz dodawać załączniki na tym forum Możesz pobierać pliki z tego forum
|
 Debug: strone wygenerowano w 1.67405 sekund, zapytan = 7
|