Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Numery seryjne
nasty
post
Post #1





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Piszac aplikacje desktopowa dla klienta (.NET) zaczol mnie nurtowac pewien problem, jak do tej pory robilem jakies komercyjne programy to wymyslalem sobie jakis sposob na sprawdzanie poprawnosci seriala, co trudno nazwac algorytmem, bo głównie bylo to takie proste cos w stylu ze 3 litera klucza byla
czwarta litera md5 dziesiatej i podobne duperele, ale mysle ze to nie jest najlepsze rozwiazanie, szukalem po sieci o algorytmach numerow seryjnych to mi daje cos o generowaniu numerow produktow (jak barkody, czy numery IMEI komórek).

Innym pomyslem ktory robilem, to opieranie serialu (tez takie czord wie co tongue.gif), o configuracje sprzetu, jak np. ID. BIOS-u, itd....


I kupowanie gotowych zabezpieczen jest bez sensu bo sa popularne, a jak cos sie staje popularne to przestaje byc bezpieczne bo rosnie wtedy liczba
osob pubujacych to zlamac dla "sportu", tak wiec prosilbym bardzo o jakies linki do stron z takimi algorytmami, albo dac jakas idee.

Pozdrawiam i dziekuje.


--edit: Kto mi tu tak koloruje na czerwono ? biggrin.gif

Ten post edytował nasty_psycho 3.09.2006, 22:06:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
NetJaro
post
Post #2





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Był o tym temat.. ale ja polecam ionCube - więcej info na google.
Mogę "Cię kodować" jak chcesz ;-) To na prawdę świetne rozwiązanie i bezpieczne smile.gif A tak to nie ma dobrego rozwiązania.. bo wszystko można złamać..
Go to the top of the page
+Quote Post
nasty
post
Post #3





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


hmm, na poczatku pisalem wyraznie ze to jest aplikacja .net. winksmiley.jpg
I nie szukam aplikacji, czy przykladowego kodu, tylko ideei.
Go to the top of the page
+Quote Post
NetJaro
post
Post #4





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ahh, faktycznie - sorry smile.gif

Idee były właśnie w tym temacie co wyżej napisałem - bo był już spory temat na ten temat smile.gif
Go to the top of the page
+Quote Post
mr.r
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 14.08.2006

Ostrzeżenie: (0%)
-----


Program napisany w .net warto zabezpieczyc obfuscatorem, wtedy narzedzia typu .net reflector nie produkuja już tak ładnego kodu zrodlowego.

Jezeli chodzi o seriale, to warto w tym miejscu zainteresowac sie RSA albo jakims systemem sygnatur (DSA albo ElGamal) z rozsadna dlugoscia klucza. Jezeli chcesz jeszcze bardziej zmiejszyc prawdopodobienstwo zlamania i zmiejszyc dlugosc seriali to ECC jest dobrym wyborem (lub system sygnatur oparty na krzywych eliptycznych). Jezeli aplikacja do dzialania wymaga internetu to mozna pobawic sie z sprawdzaniem seriala na serwerze z baza seriali osob, ktore kupily program.

Oczywiscie na sposoby sa inne sposoby i tak system sygnatur mozna zlamac gdy sa za krotkie klucze lub zostaly zle wygenerowane. Gdy klucze sa odpowiedniej dlugosci zawsze mozna wygenerowac swoje i podmienic w programie, w takim wypadku warto zainteresowac sie jakimis sumami kontrolnymi z kodu programu. Tak samo mozna postapic z aktywacja przez internet i poprostu zapatchowac ja winksmiley.jpg

Najlepszym wyjsciem jest polaczenie kilku technik.

Jezeli w programie jest sprawdzanie tego typu: if(wprowadzony_serial == generuj_serial(name)) to takie zabezpieczenie jest nic nie warte nawet gdy oparte jest na konfiguracji sprzetu. .Net reflector produkuje kod swietnej jakosci (o ile program nie byl pojechany obfuscatorem) i zrobienie keygena to kwestia przekopiowania funkcji generuj_serial do projektu w Visual Studio

Mam nadzieje, ze chociaz minimalnie rozjasnilem kwestie zabezpieczenia Twojego programu smile.gif

Ten post edytował mr.r 3.09.2006, 21:31:21
Go to the top of the page
+Quote Post
nasty
post
Post #6





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Cytat
Program napisany w .net warto zabezpieczyc obfuscatorem, wtedy narzedzia typu .net reflector nie produkuja już tak ładnego kodu zrodlowego.

No, ja poszedlem jeszcze dalej, bo znalazlem soft co kopiluje dll-ki .NET-u do natywnych, i jak otwiram je w jakims reflectorze, to pokazuje tylko skielety funkcji, bez ich
"wnetrznosci" winksmiley.jpg cos jakby to byl interfejs albo klasa abstrakcyjna.
A obfuscator w tej sytuacji jest warty tyle co obfuskatory do php, tylko opuzni prace krakerowi, a skopilowana biblioteka sie dekompiluje tylko jako asm.

Cytat
Jezeli chodzi o seriale, to warto w tym miejscu zainteresowac sie RSA albo jakims systemem sygnatur (DSA albo ElGamal) Z rozsadna dlugoscia klucza. Jezeli aplikacja do dzialania wymaga internetu to mozna pobawic sie z sprawdzaniem seriala na serwerze z baza seriali osob, ktore kupily program.

System sygnatur? czytasz mi w myslach bo wpadlem na taki pomysl zeby olac numery seryjne, bo za duzo zachodu bedzie o to, i zastosowac plik licencyjny o takiej struktuze:
  1. <?xml version="1.0" encoding="utf-8" standalone="yes"?>
  2. <LicenseProvider>
  3.  <EntryGroup name="Product">
  4.    <Entry name="Name">Nazwa Produktu</Entry>
  5.    <Entry name="Version">Versja</Entry>
  6.    <Entry name="Test">Jakies inne dane o produkcie</Entry>
  7.  </EntryGroup>
  8.  <EntryGroup name="License">
  9.    <Entry name="Owner">Nazwa klienta</Entry>
  10.    <Entry name="Rules">
  11.      <Rule name="Expire">timestamp</Rule>
  12.      <Rule name="Test">Jakies inne warunki</Rule>
  13.    </Entry>
  14.    <Entry name="HardwareSignarure">Hasz identifikujacy sprzet komputera</Entry>
  15.  </EntryGroup>
  16.  <EntryGroup name="File">
  17.    <Entry name="Signature">I tutaj bedzie hasz z sygnatura tego pliku</Entry>
  18.  </EntryGroup>
  19. </LicenseProvider>

gdzie nie bede musial nawet szyfrowac tego pliku bo bedzie on chroniony przed modyfikacja haszem z File->Signature...
Co myslisz o tym rozwiazaniu?

ps. Zna ktos jakies pozadne forum .NET? bo na deveopers.pl jest kiepsko sad.gif a szukalem, to mi pokazuje jakies dot-net.fora.pl czy inne pierdoly... sad.gif
Go to the top of the page
+Quote Post
mr.r
post
Post #7





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 14.08.2006

Ostrzeżenie: (0%)
-----


Cytat(nasty_psycho @ 3.09.2006, 23:05:53 ) *
gdzie nie bede musial nawet szyfrowac tego pliku bo bedzie on chroniony przed modyfikacja haszem z File->Signature...
Co myslisz o tym rozwiazaniu?


Moze byc, keyfile bedzie nawet wygodniejszy dla koncowego uzytkownika. Tylko nie zadna ochrona przed modyfikacja hashem. W wezle <Entry name="Signature"> musi byc sygnatura DSA, ElGamal, ECDSA albo cos podobnego zrobiona z grupy Product i License. Piszac sygnatura nie mam na mysli hasha SHA1 czy MD5 tylko sytem sygnatur oparty na kluczu publicznym i prywatnym. Tak, ze Ty generujesz klucz prywatny i publiczny. Prywatny idzie do Twojego programu do generowania licencji a publiczny do chronionego programu (w uproszczeniu). Teraz potencjalny reverser nie majac klucza prywatnego nie moze wygenerowac sygnatury. Bez klucza prywatnego reverser moze go zdobyc tylko poprzez faktoryzacje N (w RSA) lub rozwiazujac DLP (w DSA lub ElGamalu) co jest strasznie czasochlonne jezeli klucze sa odpowiednich rozmiarow.

Dobrym rozwiazaniem zeby reverser mial duzo roboty jest uzywanie hidden checkow czyli sprawdzanie "jakis tam" czesci sygantury, seriala czy czegokolwiek w roznych miejscach programu, czy np. podczas zapisywania albo otwierania plikow, mozna dodac tez odrobine losowosci i nie zawsze sprawdzac tylko co np. pare dni.

Jezeli chodzi o Strong name signature to tez nie za bardzo chroni plik exe czy dll przed modyfikacja bo bardzo latwo mozna podmienic klucze.

Mam nadzieje, ze nie zamotalem zabardzo ale zabezpieczenia programow to dosc zlozony temat smile.gif

I jedna sprawa: czym zabezpieczenie jest bardziej "swoje", mam na mysli, ze nie kupione to tym wiecej cracker musi spedzic czasu nad nim. I nie jest powiedziane, ze jak zobaczy cos zamotanego to da sobie spokoj winksmiley.jpg
Go to the top of the page
+Quote Post
nasty
post
Post #8





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


dzieki za wypowiedzi, i czy zna ktos jakies dobre forum o .NET ? zeby bylo na podobnym poziomie co forum.php.pl winksmiley.jpg
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 03:47