Il software di gestione delle licenze non è ancora un problema risolto, o almeno, farlo in modo sicuro, senza arrecare disturbo agli utenti e senza investire in infrastrutture importanti non è stato risolto.
La posizione/meccanismo con il quale si memorizza lo stato della licenza è per lo più irrilevante: il registro non è più sicuro di un file di testo: ci vogliono pochi secondi per accedere al contenuto e "nascondere" la voce in qualche remota backwater del registro non fa molto per aiutare.
Presumibilmente, il tuo software ha una sorta di persistenza in corso (database? File system?); è possibile utilizzare lo stesso meccanismo di persistenza per memorizzare lo stato della registrazione.
Naturalmente, tutto ciò che il software può leggere/scrivere può essere utilizzato da persone che cercano di ottenere l'accesso non autorizzato al software. Quindi, puoi crittografare il record; allora hai il problema di gestire la chiave per quel meccanismo di crittografia; Afaik, non ci sono soluzioni solide a questo in questo momento.
Quindi, si potrebbe avere un "server di licenza" su Internet; il tuo software potrebbe leggere un identificatore univoco per la tua macchina (MAC address per esempio), inviarlo al tuo server di licenza e chiedere al server di restituire lo stato della licenza. Ancora una volta, questo è abbastanza semplice da aggirare, e ora stai richiedendo ai tuoi utenti di essere online per usare il tuo software.
Se il software è esteticamente attraente per gli utenti, gli hacker interromperanno la protezione della chiave di licenza in pochi giorni e pubblicheranno istruzioni dettagliate su Internet. Apple fa di tutto per proteggere il software su Iphone/Ipad, eppure le app di jailbreak li sbloccano.
A mio parere, a meno che il software non valga un guadagno di decine di milioni di dollari, dovresti rendere la vita il più semplice possibile per gli utenti e non preoccuparti troppo dell'aspetto della sicurezza - usa qualcosa di diverso (come @bunting consiglia), o accontentarsi di un file di testo.
In particolare, lo farei:
- controllo per la presenza di un file di licenza valido all'avvio dell'applicazione
- se il file di licenza non è presente, chiedere all'utente di inserire un codice di licenza
- Confronti che, chiave con il codice di licenza
- scrivere un file "valido" sul file system, nella directory dell'app; in alternativa, modificare un file di configurazione esistente.
Questo è banalmente facile da rompere; quindi potresti fare un ulteriore passo avanti.
In primo luogo, le applicazioni Java sono facili da decompilare e un utente malintenzionato potrebbe facilmente leggere la costante della "licenza". Dovresti usare un obfuscator per renderlo difficile (anche se non impossibile).
In secondo luogo, è possibile crittografare i dati della licenza locale; anche questo renderebbe più difficile l'hacker totalmente casuale. È possibile includere alcuni dati locali nello schema di crittografia in modo che un hacker non possa semplicemente ridistribuire l'applicazione con una chiave di licenza funzionante (ad es. Moltiplicando la chiave di licenza per l'indirizzo MAC della macchina).
In entrambi i casi, si sta "cablando" la licenza nell'app; ci sono bacheche in cui gli hacker pubblicano le chiavi di licenza per le applicazioni, e non saresti in grado di rispondere se non rilasciando una nuova versione dell'app con una nuova chiave.
Fare in modo che il software "ricordi" qualcosa è facile. Rendendolo non banale da hackerare è un'altra cosa ... – Mysticial
Usa l'applicazione license4j ti aiuterà a controllare i loro video su youtube –