Questo è solo per mantenere onesto il cliente onesto.Qual è il generatore di chiavi di licenza più semplice che posso sviluppare da solo in 1 giorno?
risposta
Esistono limitazioni del sistema operativo? Penso che il seguente approccio sarà abbastanza semplice:
Scegliere un modo per ottenere l'ID della macchina. Ad esempio, questa può essere la voce di registro
MachineGuid
inHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography
. (Generating a unique machine id)Definire le funzionalità che si prevede di concedere in licenza e il modo per identificarle. Puoi solo nominarli. Se il tuo prodotto è semplice può essere una funzionalità in sé.
Creare una coppia di chiavi pubblica/privata.
Recupera l'ID della macchina del cliente in qualche modo.Puoi chiedergli di inviarlo manualmente oppure puoi creare una semplice utility o può essere un comando speciale nella tua applicazione.
Combina ID funzione e ID macchina in qualche modo e firma il risultato con la tua chiave privata. Ad esempio puoi creare quella combinazione per concatenazione. In questo caso, la stringa di risultati potrebbe essere simile a questa: "YourApplicationName-12345678-9abc-def0-1234-56789abcdef0"
La firma sarà una sequenza di byte, quindi se si desidera passarla in forma di testo, è necessario effettuare alcune conversione ad esso. Ad esempio, è possibile convertire la firma nella stringa Base64. La combinazione di ID funzione, ID macchina e firma della loro combinazione sarà una chiave di licenza!
Includere la chiave pubblica nella distribuzione dell'applicazione e aggiungere la logica per la verifica della licenza. Se la licenza è valida, è necessario verificare che sia utilizzata sulla macchina corretta e nell'applicazione corretta.
Altro su operazioni con chiave pubblica/privata here.
Indicare se qualcosa non è chiaro e cercherò di fornire una risposta dettagliata.
EDIT: Sono sicuro che l'implementazione di tutto questo può essere eseguita in 1 giorno, ma sono d'accordo con gli altri che suggeriscono di utilizzare le soluzioni esistenti. Ce ne sono molte per piattaforme e linguaggi di programmazione diversi.
Perché non ne prendi uno da qualcun altro. Se sei disposto a metterti solo un giorno, non otterrai un buon prodotto.
Una chiave di licenza non si fermerà il cliente di installare un software del più volte se la chiave non è legato a un hash del nome del server ecc
Meglio non entrare in un argomento DRM qui, ti rimando alla mia lista dei motivi per cui il DRM è sbagliato: http://superuser.com/questions/14224/how-to-explain-drm-cannot-work/14764# 14764 Questo non vuol dire che non dovresti proteggere il tuo programma, solo più drm - più dolore per gli utenti legittimi. Una chiave di licenza è in genere sufficiente a impedire che il tuo software venga sfacciato in modo sfacciato. – RCIX
Se avete bisogno di codice appena pseudo (quello lang/piattaforma?) Puoi prendere l'indirizzo MAC del computer (che supponiamo sia univoco) e creare una funzione che combini alcuni altri parametri del computer e assicurarti di convalidarlo ogni volta che le app vengono eseguite contro il tuo DB, mantenendo l'email dell'utente in quella riga .
se qualcosa cambia - il software non funziona, ma l'utente può richiedere una nuova chiave - con la stessa mail - quindi è possibile revocare la vecchia chiave e dargli una nuova.
Cosa succede se l'utente cambia il proprio mobo o altri parametri pertinenti - Non proprio una buona idea, non voglio dover ottenere una nuova chiave di licenza quando aggiorno il mio computer. e cosa succede se qualcun altro richiede una chiave di licenza con la tua email? hmm? – RCIX
A. Non credo veramente nelle chiavi di licenza, ma ti importa abbastanza usarle, quindi, sì, quando l'utente aggiorna il suo hardware - è un problema (microsoft ha avuto questo problema con le licenze Vista - è necessario riattivare Vista se si cambia MB o talvolta anche una scheda video), Se si invia solo la licenza all'e-mail richiesta e si revoca la vecchia licenza quando arriva una nuova richiesta, il proprietario dell'email - che è il proprietario originale della licenza non avrà i problemi. ma hai ragione che c'è molto da considerare quando si imbocca questa strada. – Dani
correzione al commento. Il proprietario originale dovrà ri-emettere una richiesta di licenza. – Dani
Mettere le funzionalità del prodotto (numero di utenti, IP dell'host, data di scadenza, qualunque sia) in un file di testo normale. Firma il file con una chiave pubblica, quindi controlla la firma in fase di runtime.
Se sono motivati possono decompilare il codice, strappare gli assegni o qualsiasi altra cosa, ma scoraggeranno la manomissione, e sembreranno tutti belli e ufficiali.
L'IP dell'host non sembra un buon parametro, i laptop lo cambiano almeno due volte al giorno. – ZJR
Generatore di licenze semplice: un file ini con un checksum seminato, che contiene il nome del cliente e informazioni su quali moduli sono abilitati. Sarà abbastanza facile rompersi per un hacker, ma per i non-hacker, è sicuro. Il nome deve essere visibile nell'output dell'app che viene mostrato in pubblico, in modo che altri potenziali clienti non possano utilizzare il file di licenza.
Non c'è modo di fare un buon lavoro in un giorno e ci sono buone probabilità che l'effetto complessivo sia negativo. Infastidirà i tuoi clienti leali e onesti e non fermerà quelli disonesti.
Invece, passa quel giorno a inventare un modo per misurare in qualche modo la pirateria del tuo prodotto. Una volta che lo sai, puoi stimare quanti soldi stai perdendo e quanti sforzi dovresti davvero mettere in protezione o altri approcci.
Se si vuole comunque farlo, il modo più semplice è quello di raccogliere alcuni dati univoci per l'installazione (nome utente del sistema operativo, indirizzo e-mail, numero seriale CPU/scheda madre - qualsiasi cosa si desideri associare a), chiedere al all'utente di inviarlo a te e generare una chiave di licenza crittografandola con la tua chiave privata. Il tuo software dovrebbe raccogliere gli stessi pezzi di dati, decodificare la licenza con la tua chiave pubblica e confrontare i due blob.
Beh, sono sempre stato curioso di sapere come fanno i professionisti, quindi questa potrebbe essere una buona occasione per imparare. –
Se il professionista decide di scrivere da solo una soluzione, trascorrerà più di 1 giorno. – okutane