2011-02-08 17 views
13

Pracuję na małym, wieloplatformowym produkcie dla systemów Windows i Mac napisanym w C++/Obj-C. Zostałem poproszony o wdrożenie modułu licencjonowania dla tego samego. Zadanie to jest częścią bardzo ambitnego projektu wprowadzenia licencji na wszystkie nasze produkty. Na koniec będziemy mieli kompletny system licencjonowania, w którym będziemy mogli sprzedawać licencje naszym klientom, którzy będą obsługiwać coroczne odnowienia, poziomy licencji itd. Moim problemem jest to, że nie wiem, co jest najważniejsze w implementacji kontrolerów licencji. Czy ktoś może mi wskazać, jak to zrobić? Czy są dostępne jakieś moduły licencjonowania typu open source?Wdrażanie biblioteki sprawdzania licencji

Odpowiedz

16

Używam systemu weryfikacji klucza częściowego (PKV), a ja zaimplementowałem to w języku C# z generatorem PHP. Google przedstawi różne hity, objaśnienia i implementacje; ale Brandon Staggs napisał dobry przegląd (aczkolwiek w Delphi!), tu:

http://www.brandonstaggs.com/2007/07/26/implementing-a-partial-serial-number-verification-system-in-delphi/

PKV działa poprzez zakodowanie pewnych informacji (typ licencji, seryjny produktu, data, itd) w kluczu wraz z hash nazwy użytkownika i skrótów zakodowanych informacji. Znaczna część klucza składa się z wielu różnych skrótów. Chodzi o to, aby sprawdzić tylko podzbiór tych skrótów. Dokładny podzestaw, który został wydany, może zostać zmieniony w miarę upływu czasu dla bezpieczeństwa i ochrony przed niektórymi rodzajami inżynierii wstecznej.

Chciałbym również zaszyfrować klucz, aby ukryć znaczenie każdego znaku w licencji. W przeciwnym razie ktoś z wieloma kluczami może określić pewne pozycje char oznaczają pewne rzeczy ("oh, znaki 3-4 to numer seryjny"). To może być szpara w twojej zbroi!

Każdy opracowany system licencji będzie niedoskonały. Będzie on dostępny do spacyfikowania, a jeśli twoje produkty będą popularne, zostaną popękane. Istnieje jednak silny argument, że istnieje system licencji, aby uczciwi uczciwi ludzie mogli produkować wystarczające przeszkody dla nieco nieuczciwych osób - ale nie tak wiele przeszkód, że staje się to zbyt dużym utrudnieniem (np.). Ci, którzy włamują się do twojego systemu prawdopodobnie nie zapłacą za to.

+2

+1 za ostatni akapit, nigdy nie będzie idealny, ale jeśli będzie wystarczająco twardy, wszystko będzie dobrze. –

+0

Uwielbiam twoje wyjaśnienie, a zwłaszcza ostatni akapit. Podsumowuje to wszystko! –