[C] Copyright Software
Ciao a tutti,
sapreste dirmi come faccio a "proteggere" un software?
In particolare vorrei sapere se è possibile collegarlo ad un singolo indirizzo MAC (o qualcosa di simile) in modo che sia io a decidere in che pc dovrà funzionare il software.
Grazie in anticipo a chiunque voglia aiutarmi
sapreste dirmi come faccio a "proteggere" un software?
In particolare vorrei sapere se è possibile collegarlo ad un singolo indirizzo MAC (o qualcosa di simile) in modo che sia io a decidere in che pc dovrà funzionare il software.
Grazie in anticipo a chiunque voglia aiutarmi

Risposte
Sicuramente è possibile (anche se bisognerebbe cercare nel tuo linguaggio di preferenza come interfacciarsi direttamente al sistema operativo per avere informazioni sull'hardware), però hai considerato che il codice MAC di una scheda di rete può essere modificato a paicimento?
Di modi possibili mi viene in mente l'uso di un server che decide chi può usare il software e chi no, tramite una richiesta di un codice specifico all'avvio del programma o l'uso di un file criptato da qualche parte nel pc. Se il programma lo trova con il contenuto che vuole lui, sia vvia, se no viene bloccata l'esecuzione (ovviamente deve anche essere legato all'ora e alla data di creazione, altrimenti basterebbe un semplice copia incolla).
Più complicata è quella di aggiungere hardware dedicato in grado di mandare un segnale personalizzato riconoscibile dal software, ma è abbastanza complicato da realizzare per una persona che non lavora nell'ambito della progettazione driver e sistemi embedded.
Conta comunque che se si riesce ad ottenere il file eseguibile, è possibile (difficile ma non impossibile) fare il reverse engineering del programma, in modo da andare a cercare e bypassare le misure di protezione incluse. Dovresti aggiungere delle misure di protezione per il tuo software, tipo offuscamento e cose simili, ma questo dipende molto dal progetto specifico, e non saprei dirti molto altro se non le cose base che puoi imparare in due giorni leggiucchiando un qualuinque libro di reverse engineering e di sicurezza del software.
Di modi possibili mi viene in mente l'uso di un server che decide chi può usare il software e chi no, tramite una richiesta di un codice specifico all'avvio del programma o l'uso di un file criptato da qualche parte nel pc. Se il programma lo trova con il contenuto che vuole lui, sia vvia, se no viene bloccata l'esecuzione (ovviamente deve anche essere legato all'ora e alla data di creazione, altrimenti basterebbe un semplice copia incolla).
Più complicata è quella di aggiungere hardware dedicato in grado di mandare un segnale personalizzato riconoscibile dal software, ma è abbastanza complicato da realizzare per una persona che non lavora nell'ambito della progettazione driver e sistemi embedded.
Conta comunque che se si riesce ad ottenere il file eseguibile, è possibile (difficile ma non impossibile) fare il reverse engineering del programma, in modo da andare a cercare e bypassare le misure di protezione incluse. Dovresti aggiungere delle misure di protezione per il tuo software, tipo offuscamento e cose simili, ma questo dipende molto dal progetto specifico, e non saprei dirti molto altro se non le cose base che puoi imparare in due giorni leggiucchiando un qualuinque libro di reverse engineering e di sicurezza del software.
Normalmente si usano una delle due seguenti soluzioni:
1. utilizzo di server di licenze tipo FlexNet oppure Reprise License Manager (immagino ce ne siano altri ma questi sono i principali che conosco);
2. Utilizzo di un semplice file criptato contenente le informazioni che ti servono per identificare la o le macchine sul quale far girare il tuo codice. Quando fai partire l'applicazione controlli il file e verifichi che la macchina sia tra quelle sul quale l'utente è in grado di far girare il programma.
La soluzione 1 può ovviamente costare parecchio a seconda della soluzione scelta. La seconda soluzione è in generale meno sicura.
1. utilizzo di server di licenze tipo FlexNet oppure Reprise License Manager (immagino ce ne siano altri ma questi sono i principali che conosco);
2. Utilizzo di un semplice file criptato contenente le informazioni che ti servono per identificare la o le macchine sul quale far girare il tuo codice. Quando fai partire l'applicazione controlli il file e verifichi che la macchina sia tra quelle sul quale l'utente è in grado di far girare il programma.
La soluzione 1 può ovviamente costare parecchio a seconda della soluzione scelta. La seconda soluzione è in generale meno sicura.
Intanto vi ringrazio per le risposte!
Apatriarca ma il secondo metodo ovviamente è gratuito giusto? Anche se fosse meno sicuro al momento mi interessa una protezione "accettabile". Tuttavia non saprei come creare il file criptato contenente le informazioni e verificare la correttezza del file nel singolo pc. Sapresti dirmi come fare?
Ovviamente so creare il "pacchetto d'installazione" (con Visual è semplicissimo), anche se non ho ancora capito come destinare determinati file in cartelle diverse da quelle del programma (nel caso di file da nascondere insomma).
Il secondo metodo cosa comporterebbe? A livello di costi e di progettazione intendo..
Grazie ancora!
Apatriarca ma il secondo metodo ovviamente è gratuito giusto? Anche se fosse meno sicuro al momento mi interessa una protezione "accettabile". Tuttavia non saprei come creare il file criptato contenente le informazioni e verificare la correttezza del file nel singolo pc. Sapresti dirmi come fare?
Ovviamente so creare il "pacchetto d'installazione" (con Visual è semplicissimo), anche se non ho ancora capito come destinare determinati file in cartelle diverse da quelle del programma (nel caso di file da nascondere insomma).
Il secondo metodo cosa comporterebbe? A livello di costi e di progettazione intendo..
Grazie ancora!
Certo che è gratuito il secondo metodo. Devi semplicemente scriverti un programma che usa un qualche metodo particolare per criptare il file. Il metodo ovviamente lo scegli tu. La sicurezza dipenderà ovviamente dal metodo scelto. Può essere anche qualcosa di semplice come un hash del MAC address.
"apatriarca":
Certo che è gratuito il secondo metodo. Devi semplicemente scriverti un programma che usa un qualche metodo particolare per criptare il file. Il metodo ovviamente lo scegli tu. La sicurezza dipenderà ovviamente dal metodo scelto. Può essere anche qualcosa di semplice come un hash del MAC address.
Cioè nello specifico cosa dovrei fare? Come ho detto non ho mai fatto nulla di simile quindi sto iniziando ora..sapresti indicarmi come fare?
Grazie ancora!
Nello specifico dovresti creare un programma che costruisca un file con un formato che conosci solo tu (e che scriva i dati in qualche modo criptati) a partire da tutte le informazioni che vuoi scrivere all'interno del file di licenza. Dopodiché, quando farai partire il tuo programma, dovrai confrontare le informazioni nel file di licenza con quelle del computer sul quale sta girando il programma e se non corrispondono, dare un messaggio di errore e far terminare il programma.
Non c'è un vero e proprio procedimento da seguire.. Parte della sicurezza viene anche dall'essere segreto il modo in cui tali informazioni sono memorizzate nel file (o altre persone saranno in grado di creare file di licenza personali senza problemi). Quindi devi essere in qualche modo creativo tu..
Non c'è un vero e proprio procedimento da seguire.. Parte della sicurezza viene anche dall'essere segreto il modo in cui tali informazioni sono memorizzate nel file (o altre persone saranno in grado di creare file di licenza personali senza problemi). Quindi devi essere in qualche modo creativo tu..