implementacja kluczy produktów [zamknięta]

zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the question so it edytując ten post.

Zamknięte 5 lat temu .

Popraw to pytanie

Wdrażam małą aplikację w C, którą chciałbym później sprzedać jako shareware za rozsądną cenę. Rozpocznie się od 30-dniowego okresu próbnego, który jestem już całkiem pewien jak go wdrożyć.

Problem, który mam, jednak, jest to, że nie jestem do końca pewien, jak wdrożyć weryfikację klucza produktu. Mam na myśli to, że klient może zarejestrować się na mojej stronie (po wypróbowaniu produktu przez jakiś czas), zapłacić za produkt i uzyskać klucz produktu w postaci aaaaa-bbbbb-ccccc-ddddd-eeeee przez e-mail(lub może dostępny za pośrednictwem swojego profilu na mojej stronie). Jak na razie nie ma problemu. Następnie upuszcza klucz w odpowiednich polach klucza w mojej aplikacji i boom Aplikacja jest zarejestrowana.

Z tego co do tej pory mogłem się domyślić, ludzie albo polecają do tego AES albo RSA. Szczerze mówiąc, byłem w innym kierunku na studiach (nie kryptografii) i jedna klasa kryptografii, którą brałem jakiś czas temu. Ale z tego co pamiętam, AES to algorytm szyfrowania symetrycznego, co oznaczałoby, że będę miał tylko jeden klucz do szyfrowania i deszyfrowania, prawda? W jaki sposób mogę wygenerować tysiące kluczy produktów i nadal je sprawdzać w mojej aplikacji (co przy okazji nie będzie wymagało Internetu access....so bez sprawdzania na serwerze)?

Więc myślę, że RSA będzie dobrym rozwiązaniem? Ale czy RSA nie produkuje dość długich klawiszy (co najmniej dłuższych niż wymagane 25 znaków z góry)?

W kolejny wątek przeczytałem, że niektóre produkty nie będą nawet używać szyfrowania do generowania/weryfikacji klucza produktu, ale zamiast tego po prostu stosują pewne kontrole, takie jak "Dodaj 2. i 17. znak i to powinno być X".

Jaki jest najszybszy, najłatwiejszy i najbezpieczniejszy sposób, aby się tu dostać? :- ) Sample kodu to cukier!

Pozdrawiam,

Sebastian

P. S.: Oh...i proszę, nie mów mi, jak mój klucz może i zostanie złamany w pewnym momencie.....Wiem o tym, dlatego przede wszystkim nie chcę spędzać dużo czasu z tym problemem, ale jednocześnie nie ułatwiać go okazjonalnym krakersom.

Author: Community, 2009-03-14

5 answers

Algorytmy symetryczne są ograniczone, ponieważ każdy początkujący cracker z disassemblerem może znaleźć Twój klucz (lub algorytm użyty do jego wygenerowania) i utworzyć "keygen".

Z tego powodu, kryptologia asymetryczna jest drogą do zrobienia. Podstawowe założenie jest takie:

  • gdy użytkownik kupuje od Ciebie licencję, zbierasz pewne dane identyfikacyjne dotyczące użytkownika i / lub jego środowiska (zazwyczaj jest to tylko pełna nazwa; czasami również firma).
  • ty zrób 128-bitowy Skrót MD5 z tych informacji.
  • używając 128-bitowej krzywej eliptycznej krypto, Zaszyfruj ten hash używając prywatnego klucza na serwerze.
  • 128-bitowy zaszyfrowany tekst może być przedstawiony użytkownikowi jako 25-znakowy ciąg znaków składający się z liter i cyfr (Plus rozdzielające myślniki dla czytelności). Zauważ, że 26 liter + 10 cyfr = 36 wartości dyskretnych, i że 36^25 > 2^128.
  • użytkownik wpisuje ten klucz produktu w oknie rejestracji. Na oprogramowanie klienckie konwertuje go z powrotem na 128-bitowy numer (16 bajtów), odszyfrowuje go za pomocą klucza publicznego twojego EC crypto i porównuje wynik z Hashem MD5 danych osobowych Użytkownika, które muszą pasować do tego, co zostało użyte do rejestracji.

To oczywiście tylko podstawowa idea. Aby uzyskać więcej informacji i Kod źródłowy, zobacz Klucze produktu oparte na kryptografii krzywej eliptycznej .

 34
Author: P Daddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-17 13:40:22

Życie jest prostsze, jeśli po prostu kupisz rozwiązanie.

Http://www.kagi.com/kagisolutions/index.php

Kagi pozwala na pobieranie płatności i pomagają zarządzać kluczami.

 1
Author: S.Lott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-14 15:41:05

Facet napisał na blogu o tym, jak poradził sobie z kwestią numerów rejestracyjnych. Jednym z jego wpisów na blogu jest generowanie unikalnych numerów rejestracyjnych .

 0
Author: mouviciel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-14 15:54:41

Tak, RSA i AES to dwie bardzo różne rzeczy:

    RSA jest kryptografią klucza publicznego, obejmującą klucz publiczny i klucz prywatny, i jest dość powolna. Podstawowym zastosowaniem jest skonfigurowanie bezpiecznej wymiany klucza sesji szyfrowania symetrycznego.
  • AES to szyfrowanie symetryczne, które jest szybkie i bezpieczne.

Ponieważ Twoja aplikacja nie komunikuje się za pośrednictwem kanałów publicznych, a korzystanie z kryptografii ogranicza się do aktywacji/rejestracji produktu, będziesz chciał przejść z symetrycznym szyfr. Korzyści z szyfrów klucza publicznego polega na zarządzaniu kluczami, które będziesz obsługiwał na swojej stronie internetowej lub za pośrednictwem poczty e-mail.

Zauważ, że nie musisz rozprowadzać tego samego klucza dla każdego klienta. Możesz wygenerować hash niektórych informacji rejestracyjnych i XOR go z czymś innym(być może stałym kluczem sesji). Wyślij to do klienta, a program może wygenerować ten sam hash, a XOR będzie kluczem, który wysłałeś, aby wyprodukować oryginalny klucz stały.

Radzenie sobie z kryptografia nie jest czymś, co można zrobić lekko. Jak wspominasz, oczekujesz, że to zostanie złamane. Jeśli robisz swoje, to prawie na pewno się stanie. Nadal możesz użyć własnej implementacji ,aby "utrzymać uczciwych ludzi uczciwych", ale zdaj sobie sprawę, że to wszystko, co dostaniesz. Jeśli potrzebujesz czegoś mocniejszego, powinieneś kupić rozwiązanie po przeprowadzeniu dokładnych badań nad rozwiązaniami.

 0
Author: dwc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-14 16:23:43

Możesz sprawdzić ten artykuł Code Project . Opisuje implementację klucza oprogramowania opartego na adresie MAC komputera, na którym oprogramowanie jest wykonywane. Metoda nie jest idealna, jak przyznaje sam autor, i jest trochę inna od tego, czego szukasz, ale może może Ci pomóc.

 0
Author: Dani van der Meer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-14 18:39:17