2012-05-11 16 views
13

Sto avendo un grosso problema. Questo è "Come creare una licenza per il mio software".Come creare la licenza per il mio software Java?

OK, Penso che questo è il mio codice di licenza - 12345YW

quando l'utente entrare in questo codice di licenza, il software dovrebbe permettergli di utilizzare il software. Va bene, una volta che l'utente ha inserito la chiave di licenza, il mio software deve ricordare che ha inserito la chiave valida, giusto? (Perché dalla prossima volta in poi, non è necessario aprire la finestra di dialogo della licenza) La mia domanda è: Come posso fare la mia software per ricordare che l'utente aveva inserito la licenza? Nelle app basate su Windows, ciò che la maggior parte di loro fa è inserire una voce nel registro di Windows. Posso fare lo stesso? (E che dire di Ubuntu e Mac?)

Ho pensato di scrivere un file .txt in modo che il software possa leggerlo e scoprire se la licenza è inserita o meno. Tuttavia questo è il sistema più senza protezione a cui riesco a pensare.

Quindi, se inserisco il suddetto codice di licenza, come posso fare in modo che il mio software lo ricordi? Sono davvero felice se riesci a darmi un esempio di codice (ad esempio: non so come modificare il registro, in caso di registro di Windows, ecc.). Per favore aiutami ...

+4

Fare in modo che il software "ricordi" qualcosa è facile. Rendendolo non banale da hackerare è un'altra cosa ... – Mysticial

+0

Usa l'applicazione license4j ti aiuterà a controllare i loro video su youtube –

risposta

18

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.

+3

O ancora meglio, un semplice pop-up che dice 'Ciao, puoi usare questo software quanto vuoi, ma per favore, se lo trovi utile, mandami un po' d'amore tramite Paypal '. – mcfinnigan

+0

Sì, @mcfinnigan, sarebbe meglio - anche se lo considero un inconveniente - "nagware" scompare molto rapidamente dal mio PC ... concesso –

+0

. Il nagware più bello si annoda solo una volta :) Ma sì, capisco il tuo punto. – mcfinnigan

3

Sembra che tu stia cercando di creare licenze nel tuo software. Hai considerato di utilizzare una libreria per questo invece di farlo a mano? Forse dare un'occhiata a True License, dovrebbe fare quello che ti serve.

+0

Grazie mille per il bunting di risposta, lo apprezzo molto. Ad ogni modo, è gratuito? (perché dice "Applicazione di sincronizzazione file TrueMirror disponibile per un periodo di prova gratuito su http://truemirror.schlichtherle.de/en/".) –

+0

Vedi la pagina delle licenze: http://truelicense.java.net/license .html –

+0

Grazie molto bunting :) Lo apprezzo molto :) –

6

Sono sorpreso che una possibilità è stata trascurata. Il modo più semplice per proteggere i dati da un client inaffidabile è non lasciare mai che il client ce l'abbia. Diverse architetture di applicazioni consentono questo: un'applicazione Web, un client desktop RPC a un server remoto o un thin client ad alte prestazioni che si connette a un desktop virtualizzato su un server remoto. Le app Web sono già apprezzate per i loro vantaggi in termini di installazione, backup dei dati e manutenzione.

Quindi, piuttosto che tentare di ottenere un onorario dottorato Comp Sci facendo software che applica una politica di sicurezza aziendale su un client male ...

(estremamente improbabile)

si ... semplicemente metti la proprietà intellettuale su un server fidato e il client ha solo l'interfaccia utente (e la logica non confidenziale). Questa strategia ha i suoi segreti. Tuttavia, il suo track record è decisamente migliore della protezione da copia del client.

Nota: un vantaggio è che si ottiene un flusso costante di entrate per "gestire" il software per i propri clienti.

Problemi correlati