Ultime Notizie

Protezione del software

In questo ciclo di 2 articoli affronterò le 2 modalità di protezione del software utilizzabili ( hardware e software ) , cercando di analizzarne pregi e difetti.

Parlerò di 2 prodotti particolari ( facendo presente anche i motivi per cui ne ho scartati altri, dopo averli valutati )

Nei miei prodotti li utilizzo entrambi, perchè, come spesso succede, i pro ed i contro sono anche il gradimento dei clienti e la loro modalità di utilizzo del prodotto, per cui ci possono essere degli impedimenti all'utilizzo di una delle 2 soluzioni o magari qualche preconcetto che fanno sì che una delle 2 non sia gradita ( magari qualche esperienza pregressa non positiva, come spesso accade, ma spesso si tratta di cattive implementazioni e non di veri e propri problemi )

Un software è generalmente composto da più features, che possono essere installate ( e licenziate ) separatamente ; in genere un prodotto software consiste di una main feature ( il core del prodotto ), e di una serie di features accessorie ; in un programma di setup ( cfr: https://docs.microsoft.com/it-it/windows/desktop/Msi/feature-table ) sono spesso disponibili separatamente per l'installazione 

 

Le chiavette USB (modalità hardware)

 

Questa è sicuramente la soluzione più vecchia presente sul mercato ; prima di USB , si usavano magari chiavi che si connettevano alla porta parallela.

Le chiavette non richiedono drivers e vengono quindi viste senza problema dai moderni sistemi operativi.

Le chiavette possono essere programmate per aggiungere dei dati al suo interno ( leggibili dall'applicazione ), e anche fare dei calcoli di verifica ; è anche possibile scrivere dei dati sulla chiave, in zone diverse (una accessibile solo al programmatore della chiave, l'altra ad uso dell'applicazione e che si può ad esempio utilizzare per salvare la data di primo utilizzo , o altro , dando quindi la possibilità di implementare qualsiasi funzionalità richiesta da un prodotto di gestione licenze ) 

Una possibile implementazione potrebbe essere quella di abilitare la main feature se la chiavetta USB è presente, mentre si può scrivere l'elenco delle features attivate in un frammento XML, in maniera tale che da applicazione si può verificare l'attivazione di una particolare feature andando a processare questo frammento XML ; per la limitata capacità di questa zona di memoria è comunque consigliabile usare un formato più breve ( ad esempio, un elenco separato da virgole )

Da notare che per la scrittura di questa zona di memoria sono richieste chiavi aggiuntive rispetto a quelle richieste per la lettura , quindi l'utilizzatore finale non sarà in genere abilitato a modificarle ; nondimeno, possiamo realizzare dei piccoli software da inviare la cliente e tramite i quali riscrivere questa zona ( per abilitare nuove features, ad esempio , o comunque variare le licenze )

Per le versioni di prova , è possibile scrivere la data di primo utilizzo e/o il numero di utilizzi , tramite il quale limitare l'utilizzo del prodotto ; da notare che comunque l'attivazione di una versione di prova richiede una chiave hardware ( che ha un costo, se acquistata da un fornitore , di circa 50 euro , e poi comunque è problematico distribuirle a chiunque )

Un vantaggio di questa soluzione è che funziona ( bene ) anche su macchine virtuali ; mentre vedremo che una soluzione software , pur potendo funzionare anche in ambiente virtuale , in realtà funzionando in questo modo la protezione può essere aggirata, e quindi in genere per un ambiente virtuale si sconsiglia l'implementazione di una protezione software e l'unica soluzione praticabile è quella hardware

Una chiavetta USB può anche essere prodotta in casa con una scheda arduino ( presenterò in seguito un progetto per una protezione USB basata su Arduino )

 

Questa è la chiavetta USB che ho di norma utilizzato : https://rockey.it/rockey2/