Proteggere i propri software gestionali con strumenti software o hardware è importante, per fare in modo che il lavoro di tanto tempo non vada perduto, ma occorre dire da subito che la panacea a tutti i mali non esiste e prima o poi il programma potrebbe subire attacchi di hacker senza scrupoli e cadere nelle mani di qualcuno che senza licenza utilizza a piacere il nostro programma, frutto di tanti investimenti e lavoro.
Realizzare un programma e vederlo funzionare è sicuramente una gioia per il programmatore, riuscire poi ad avere molte installazioni è un’altra grande soddisfazione. Se queste copie però sono illegali ed abusive, allora la gioia si trasforma ben presto in disperazione. Occorre allora una protezione che consenta di utilizzare il programma solo dopo un eventuale acquisto; ci sono due tipi di protezione da utilizzare: quelle software e quelle hardware, le seconde sono certamente più affidabili, ma non è detto.
La prima modalità di protezione software che andremo ad analizzare è il numero seriale o chiave. Attraverso un codice è possibile differenziare le capacità del programma, difatti al cambiamento di alcuni caratteri si avrebbe l’attivazione di determinate caratteristiche. Altro uso è quello di cambiare un carattere per permettere la prova o l’uso completo del software. Il problema principale di questo metodo è dove salvare il codice seriale; si potrebbe utilizzare un file o una chiave del registro di sistema, ma ci sono dei programmi che consentono di vedere gli accessi sia al registro sia ai file nell’hard disk. Che fare dunque? possiamo adottare quello che si chiama reverse engineering, ossia facendo una modifica diretta al file eseguibile in modo che compia un percorso diverso di esecuzione. Se poi la modifica è contenuta nel file eseguibile stesso, allora siamo di fronte a codice automodificante.
Così come esistono i codici seriali, esistono anche quelli che sono definiti key file ( file chiave ). In questi casi all’interno dell’eseguibile non è contenuto nessun algoritmo di memorizzazione, ma solamente uno per il riconoscimento del file tramite lettura dello stesso. Normalmente quindi l’autore del programma distribuisce questo key file insieme al programma, che ne dovrà solo verificarne la presenza e l’autenticità. In queste tecniche però basta copiare il codice seriale sul file di configurazione o nel registro di sistema oppure il file chiave su un altro computer e la nostra protezione sarà totalmente inefficace. Per ovviare a questi problemi occorre creare un sistema di chiave e controchiave univoco per ogni computer: si prende ad esempio l’ID dell’hard disk o del processore o della scheda madre ( BIOS ) e quel codice funzionerà solo su una macchina. Il risvolto della medaglia di questa tecnica è che se l’utente cambia computer occorre dare un nuovo codice seriale e ben presto ci ritroveremmo a gestire migliaia di questi codici o file chiave. Un’altra tecnica di protezione software è la compilazione condizionale in tutti quei linguaggi di programmazione che hanno il preprocessore, in questo caso però occorre tenere due copie del programma, una demo ed una retail; tipiche protezioni di questo tipo sono utilizzate nei videogiochi. In questo caso si è ricorso moltissimo alla tecnica del cdrom check, ossia controllare che nel cdrom inserito vi sia la propria copia originale del software. Altri metodi consistono nell’utilizzare dei software ad hoc per mascherare il codice eseguibile.
Ad affiancare i prodotti software per la protezione dei programmi, abbiamo dei dispositivi esterni chiamati in gergo chiavi hardware. Normalmente si tratta di un componente hardware che contiene del codice che possiamo aggiungere al nostro programma tramite delle API. Intervenendo direttamente sul codice della nostra applicazione si raggiunge un grado di sicurezza maggiore, ben più rispetto a quello che si otterrebbe con un programma esterno che modifica il nostro eseguibile.
RGPSoft CodAccess 2010 – Software Calcolo Codice Fiscale |
Il dilemma di uno sviluppatore è quindi quello di adottare una strategia software che richiede tempo ed applicazione, ma che costa nulla dal punto di vista delle spese di gestione, oppure un sistema hardware che implica però delle spese maggiori di gestione. Sarebbe meglio avere dei software gratuiti da usare liberamente e vivere sull’assistenza tecnica, ma questo tipo di approccio è lontano ( forse perché si guadagna poco o nulla ) dalla realizzazione; in assenza di questo occorre proteggere i propri lavori che altrimenti verrebbero scaricati selvaggiamente da chiunque; i buon samaritani non riescono a sopravvivere in questo mondo di impresa. Vi consiglio a questo proposito di leggere un mio articolo a riguardo, nel quale prendo in esame il problema dell’investimento delle aziende nei software gestionali.