2009-02-17 11 views
7

Sto lavorando a un'app che mi piacerebbe vendere un giorno, prima o poi! Mi piacerebbe sviluppare uno schema di numeri seriali ragionevolmente semplice per proteggerlo.Qual è un buon approccio per lo sviluppo di un semplice generatore/verificatore di numeri di serie?

  • una semplice combinazione numero/lettera non più lungo di 25-30 caratteri alfanumerici (si pensi chiavi di prodotto Microsoft)
  • Non richiede all'utente di inserire informazioni personali (come un indirizzo di posta elettronica) come parte del verifica

Ho pensato a questo (molto poco) bit, e penso che la crittografia a chiave pubblica sia un buon punto di partenza. Potrei generare una stringa che identifica la licenza (come SKU + plain ole 'numero di serie integrale), cancellarla, crittografarla e codificare il numero di serie + identificatore in una chiave alfanumerica di 25 cifre (o così). L'app decodificherebbe quindi la chiave in un numero seriale e "firma", genererebbe un hash dell'identificatore, decrittò la "firma" utilizzando una chiave pubblica corrispondente e la confronterebbe con l'hash dell'identificatore generato.

In sostanza, il codice prodotto contiene due dati: il numero di serie che l'utente dichiara di possedere, più una firma di sorta che il programma può utilizzare per verificare tale reclamo. Non so se 25 caratteri alfanumerici (che codificano 5 bit ciascuno per un totale realistico di 120 bit) è sufficiente per tutto questo. Ma non deve essere crittograficamente sicuro, quanto basta che i codici non siano facilmente ipotizzabili. Sto bene con brevi chiavi e brevi hash.

quanto riguarda l'attuazione va, l'applicazione è scritto in Objective-C per Mac OS X, ma dato quanto sia facile è quello di iniettare codice in applicazioni Cocoa, io probabilmente scrivere il codice di verifica in rettilineo C.

risposta

9

Non utilizzerei alcuna crittografia avanzata, dal momento che è necessario decrittografarlo comunque, rendendo i keygen o almeno le crepe facili da fare.

Farei quanto segue: prendere un numero di 25 cifre. Ora aggiungere alcune regole, come ad esempio: - numero deve essere divisibile per 31 - deve iniziare e terminare con l'ultima lettera ...

generano sempre chiavi utilizzando queste regole. Usa 20 regole o più (più sono e meglio). Quando si distribuisce l'app, utilizzare un numero inferiore di regole, ad es. 10 per verificare se la chiave è valida. Queste regole verranno quindi disasseminate e utilizzate per creare keygen.

Su ogni aggiornamento abilitare una delle regole che non si utilizzava prima. Se le regole sono selezionate correttamente, disabiliterai la maggior parte delle chiavi generate dai keygen.

+0

In che modo la crittografia può essere più facile da decifrare? Qualsiasi metodo che utilizzo per controllare la chiave può essere compromesso, quindi cosa rende la crittografia più vulnerabile? Come scriveresti un generatore di numeri conformi a quelle molte regole? Sembra che sarebbe difficile da fare. – Alex

+0

@Alex: Gli algoritmi di crittografia vengono solitamente implementati in librerie standard (non si dovrebbe mai implementare la propria implementazione di crittografia a meno che non si sappia veramente cosa si sta facendo). Il tuo codice contiene la chiave privata, quindi i cracker devono solo ottenerlo, senza necessità di invertire il codice del gestore. – bh213

1

Mi piace il metodo di @ bh213, tuttavia non impedirà la correzione dei key-gens man mano che si aggiornano le regole del numero di serie.

Su una preferenza di preferenza personale, preferisco il generatore di chiavi basato su un metodo di set di regole perché se gli hacker devono patchare un binario, si ottiene una recensione negativa sul software a causa di una patch di hacker non valida e il conseguente battaglia tra te e gli hacker.

La mia preferenza si basa su un software universale verità: Il software può essere e verrà violato se è abbastanza popolare, non esiste uno schema, nessun metodo ingegnoso che impedisca che ciò accada. Questa battaglia è tra lo sviluppatore che ha risorse limitate e tempo limitato e un gruppo di hacker con un tempo illimitato nelle loro mani.

vostro schema di generazione della chiave è in realtà solo per mantenere i clienti onesti onesti - è più facile ottenere un taglio assegno da conti da pagare quello che è di ottenere la sicurezza di firmare un generatore di chiavi.

+0

Chiunque riveda il software utilizzando una copia rotta non è probabilmente il tipo di persona che attirerebbe comunque i clienti paganti, giusto? Ma hai ragione. Qualsiasi schema verrà aggirato. È un dato di fatto.Sto cercando di non sovraccaricare indebitamente i clienti onesti. – Alex

1

Poiché Redbeard 0x0A è corretto, i CD-Key servono a mantenere onesti i clienti onesti. Deve solo essere leggermente meno difficile comprare il tuo prodotto piuttosto che trovare un keygen.

Se si sta vendendo il prodotto online, il modo migliore per farlo è fornire un file contenente il numero di serie. In questo modo il numero di serie può essere comunque lungo e il tuo pagando i clienti non deve perdere tempo a immettere un numero seriale.

Uno schema seriale può essere molto semplice:

  1. hanno un ampio spazio seriale (25 alfa numerico è di circa 10 , ma basta usare un file seriale e fare 80 caratteri x 16 righe per una chiave spazio di 10)
  2. Selezionare alcune regole per ridurre valida spazio il numero di serie a 100 volte quello che si pensa di vendere nel vostro sogni più selvaggi

Se il prodotto ha un componente online (come il modo in cui i giochi hanno multiplayer online), è possibile ridurre ulteriormente i numeri seriali validi utilizzando un generatore di numeri casuali crittograficamente forte (per selezionare un sottoinsieme delle chiavi basate su regole, la regola di utilizzo del prodotto per controllare seriale, il server utilizza l'elenco seriale vero finale) . Quando il tuo prodotto richiede assistenza dal tuo server, il server può controllare la seriale.

+0

No, non c'è un componente online. Non vorrei seguire il percorso del file di licenza perché sembra troppo complicato. Penso che una chiave sia ciò che le persone conoscono e anche la più semplice. Come hai detto tu, deve essere più facile comprarlo che craccarlo. – Alex

1

Tutte le regole possono essere individuate e decifrate se personalizzate o basate su crittografia. Pensa a chi stai costruendo la tua domanda. Molti dei miei prodotti sono destinati alle aziende, quindi lo compreranno o non lo faranno. In genere non eseguiranno una versione compromessa sulle loro reti. Le persone che cercano un keygen non sono propensi ad acquistare il prodotto a prescindere. Vuoi solo assicurarti di non annoiare il tuo cliente fino al punto in cui non vogliono più comprare la tua app.

Detto questo, ho scritto una libreria per questo tipo di cose da utilizzare nelle mie applicazioni basate sulla crittografia AES. Lo sto vendendo per $ 25, e usa una passphrase e una salt per rendere unico il tuo numero seriale. Se sei interessato lo puoi trovare qui: http://simpleserials.com

0

C'è un post sul blog sigpipe.macromates.com che spiega come si usa la chiave privata/pubblica per crypto il controllo di un numero seriale. Può verificare che l'utente e il numero di serie corrispondano. (Firma/Verifica). Probabilmente aggiungerei un po 'di sale, solo per essere sicuro.

Poiché questo post è del 2004, è necessario prendere in considerazione la lunghezza chiave raccomandata su keylength.com.

Problemi correlati