Domanda

Vorrei distribuire un'applicazione, ma ho una chiave di licenza che possono inserire per sbloccare. Che cos'è un buon algoritmo per creare una chiave concisa che contenga informazioni su quale versione hanno acquistato, nonché cose aggiuntive come la durata della licenza, ecc.

Mi rendo conto che questa protezione può essere decifrata, ma mantiene oneste le persone oneste. Potrei o meno implementare l'attivazione online, ma mi occupo principalmente di un buon modo per generare queste chiavi.

Abbiamo visto tutti questa situazione, quale algoritmo funziona meglio? Devo chiedere un nome in chiaro dell'utente e utilizzarlo per creare un codice prodotto univoco basato sulle proprie informazioni?

Esiste un sistema che può essere usato per rendere quasi impossibile generare una chiave valida?

Forse una situazione di crittografia della coppia di chiavi pubblica / privata in cui solo il produttore ha la chiave privata e i dati possono essere convalidati da una chiave pubblica, ma la chiave pubblica non può essere dirottata per creare chiavi valide.

Dato che si tratta di un codice Product Key, sarebbe fantastico se fosse abbastanza corto, 64 caratteri o forse 128 massimo, ma più corto è il migliore, 32 o meno sarebbe ottimo.

È stato utile?

Soluzione

Non hai detto su quale piattaforma ti trovi, ma eccone una in Microsoft .Net:

http://jclement.ca/devel/dotnet/reallysimplelicensing.html

  

Questa pagina documenta un modo molto semplice   schema di licenza che è possibile utilizzare con   la tua applicazione .NET. È inteso   essere abbastanza sicuro, facile da implementare   e facile da estendere. La versione di esempio   consente di fornire file di licenza   con un nome client incorporato in essi   ma puoi facilmente estenderlo per aggiungere   altre informazioni identificative, macchina   vincoli, date di scadenza, ecc.

     

Questo schema utilizza Microsoft   Libreria RSA e firma XML. Fondamentalmente   metti quello che vuoi in un XML   Documenta e firma quel documento. Poi   puoi fornire quel file al tuo   il cliente e l'applicazione possono leggere   le informazioni sulla licenza da ciò   file. Dal momento che il file è in formato digitale   firmato il file di licenza NON può essere   manomesso a meno che non rilasci il tuo   chiave privata (che davvero   non dovrebbe farlo).

Altri suggerimenti

Nessun accesso a Internet e chiavi di scatto

Per quanto riguarda le dimensioni della chiave seriale, c'è un compromesso tra chiavi leggibili / umane ( meno sicuro ) e con chiavi lunghe o possibilmente file di licenza ( più sicuro ).

Se vuoi chiavi leggibili e brevi che ti consentano di memorizzare cose come la data e le caratteristiche di scadenza, potresti usare SKGL insieme a Software Protector, che sono entrambi open source ( https://help.cryptolens.io/faq/what-is-skgl ).

Tuttavia, lo svantaggio è che molto probabilmente useranno la crittografia simmetrica e / o memorizzeranno l'algoritmo di generazione delle chiavi all'interno dell'applicazione. Ciò significa che l'utente finale può tentare di trovare la chiave di crittografia e / o l'algoritmo (consultare http://www.codeproject.com/Articles/764610/Licensing-systems-in-NET ).

Accesso a Internet (o offline con file di attivazione)

Un'alternativa migliore è quella di utilizzare un sistema basato su cloud che tiene traccia di tutte le chiavi di licenza e consente di modificarle in qualsiasi momento.

Se si dispone di un sistema di licenze basato sul Web, è possibile ridurre le chiavi e non è necessario archiviare le informazioni all'interno della chiave effettiva (come nel caso della maggior parte dei sistemi basati su offline).

Inoltre, sarai in grado di supportare più modelli di licenza, ad esempio un modello basato su abbonamento.

Le soluzioni sono:

  • costruisci tu stesso tale sistema , il che richiederà molto tempo e ti distrarrà dalle funzionalità principali dell'app.

  • utilizza un sistema open source esistente come punto di partenza - sebbene possa essere allettante dal momento che è open source e gratuito, ci vorrà del tempo per portarli sul cloud + configura per le tue esigenze particolari + mantenerlo. i sistemi open source che ho osservato tendono ad essere molto ampi in termini di funzionalità, il che contribuisce alla complessità.

  • esternalizzare a terzi - lo svantaggio è che la maggior parte di essi non è gratuita.

A mio avviso, l'intera procedura dovrebbe essere esternalizzata a una terza parte specializzata nello sviluppo di quel particolare componente. Una volta ridimensionato, potrebbe essere necessario modificare la logica delle licenze. Invece di svilupparlo da soli, è probabile che la terza parte supporti già quello scenario.

Esistono diverse soluzioni ( assicurati di cercare quelle basate sul web ), Cryptolens è un esempio. Se stai sviluppando un'applicazione .NET, ecco un esempio passo passo: https: // help. cryptolens.io/examples/key-verification.


Disclaimer : sono l'autore di SKGL / Software Protector, l'articolo sui sistemi di licenza e Cryptolens.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top