home page link area riservata e-mail
Dipartimento di Informatica Università di Verona
Regione Veneto
 
PRESENTAZIONE UFFICIALE
DEL 19 DICEMBRE 2007


DOCUMENTAZIONE
DEMO
PEOPLE
FILMATI

OBIETTIVI DEL PROGETTO
Una dei principali problemi che è necessario affrontare quando si sviluppa del software è quello di difendere le idee elaborate internamente che spesso sono frutto di notevoli investimenti. Il software è un modo di espressione della mente umana, per questo per la sua protezione si è pensato di usare strumenti noti per la tutela delle opere dell'ingegno come il copyright e il brevetto. Il copyright tutela un programma per il modo in cui è scritto, per cui se viene riscritto un programma che esegue la stessa funzione, seguendo le stesse fasi, ma con una “scrittura” diversa non si ha violazione del copyright. Quindi il copyright permette di operare il reverse enginnering del software, ovvero ammette che un utente maleintenzionato possa riutilizzare l'algoritmo (metodo generale per la soluzione in un numero finito di passi di un problema) da cui è stato poi codificato il programma.
Per proteggere l'idea (algoritmo) che sta alla base di un programma si ricorre alla brevettazione del software. L'European Patent Convention (EPC) del 1973 dichiara all'Articlo 52 che non è possibile brevettare i programmi, quindi la brevettazione del software risulta essere una strada non percorribile per la protezione della proprietà intellettuale del codice. Questo rende necessario lo sviluppo di nuove tecniche per tutelare il software. Negli ultimi anni si è cominciato ad affrontare il problema della protezione della proprietà intelletuale del software anche da un punto di vista tecnologico. A questo scopo si sono studiate e sviluppate metodologie in grado di prevenire il reverse engineering e la violazione del copyright del software. Queste tecnologie sono conosciute come software watermarking e code obfuscation. Queste rappresentano esattamente le più promettenti tecniche di tutela della proprietà intellettuale del software, e sono entrambe di recente nascita. Software watermarking e code obfuscation sono al momento sviluppate come prototipi solo in ambiente accademico, mentre lavori tecnici e sperimentali si trovano in letteratura a partire dal 2000. In generale software watermarking e code obfuscation prevedono la trasformazione del programma originale in modo tale da tutelarne la proprietà intellettuale. Più in particolare il software watermarking prevede l'inserimento di
una firma all'interno del programma, in modo tale che sia sempre possibile identificare il proprietario del codice al fine di prevenire la violazione del copyright. Diverse sono le tecniche di software watermarking esistenti; l'idea comune è quella di codificare la firma e poi nasconderla all'interno del programma. La tecnica di code obfuscation ha lo scopo generale di prevenire il reverse engineering del programma. Offuscare un programma significa trasformarlo in modo da renderne difficile il reverse engineering, mantenendone però la funzionalità. Le tecniche di offuscamento possono agire per esempio mascherando l'originale flusso di controllo del programma, rendendo così più complesso l'estrazione dell'algoritmo.
Questo progetto ha l'obiettivo di sviluppare un prototipo per la trasformazione automatica del codice, per effettuare il watermarking e l'offuscamento di codice di programmi scritti in linguaggi ad oggetti (Java, C++).
In particolare il prototipo presenterà:
1. Interfaccia per la definizione del livello di sicurezza legato al grado di offuscamento e all'inserimento di firme. A seconda del tipo e del grado di offuscamento apportato al software è possibile definire quali sono gli attacchi (utenti maleintenzionati) da cui il programma offuscato è tutelato. Allo stesso modo è possibile identificare gli attacchi che sono sicuramente respinti dalle diverse tipologie di software watermarking.
2. Modulo per la trasformazione del software. Verranno messe a disposizione dell'utente diverse metodologie di offuscamento del codice e di software watermarking.
Tecniche di offuscamento del codice:
– Offuscamento di controllo: cerca di modificare l'originale flusso di controllo del programma (es:inserimento di predicati opachi, loop unrolling,...)
– Offuscamento dei dati: opera sulla struttura dati usata dal programma (es. : alterando l'ordine di memorizzazione dei dati, il raggruppamento dei dati, l'interpretazione dei dati,...)
– Offuscamento di layout: agisce sulle informazioni del programma che non sono necessarie alla sua esecuzione (es. : rimozione dei commenti, rinomina degli identificatori,...).
Tecniche di software watermarking:
– Watermarking statico: nasconde la firma nei dati o nel codice del programma. Nel caso dei dati si può introdurre una variabile che contiene una stringa di copyright. Nel caso del codice è possibile nascondere la firma usando rindondanza nel codice, riordinamento di comandi indipendenti, ....
– Watermarking dinamico: in questo caso la firma viene nascosta all'interno di uno stato di esecuzione del programma. Ad esempio il watermarking dinamico può inserito nel programma in modo tale che l'esecuzione del programma restituisca il messaggio di copyright quando viene sollecitata da particolari valori di input.
– Watermarking astratto: la firma viene inserita all'interno della semantica del programma in modo tale che possa essere estratta solo attraverso una particolare analisi statica dello stesso.
3. Interfaccia grafica sulla struttura del programma. Si vuole fornire una rappresentazione grafica dei programmi, prima e dopo l'applicazione delle trasformazioni di offuscamento del codice e di software watermarking, al fine di dare anche un idea intuitiva all'utente delle modifiche che stanno avvenendo nel
codice. I programmi verranno rappresentati graficamente tramite i rispettivi call-graph.
4. Pacchetto di valutazione delle prestazioni. L'offuscamento del codice e l'inserimento di firma nel programma causa in generale una degradazione delle prestazioni originali del programma. Questo pacchetto permette quindi di tenere monitorata la perdita di prestazioni in modo che l'utente possa regolare la trasformazione del programma tenendo conto anche di questo importante parametro.


 
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
2007 © Copyright FAS-NET COMUNICAZIONE. Tutti i diritti riservati. 
 
richiesta informazioni