ANALISI DEI PRESUPPOSTI
Software watermarking e code obfuscation sono due tecniche d'avanguardia per la
tutela del software, e rappresentano gli approcci più promettenti per la
protezione della proprietà intellettuale dei programmi.
Elenchiamo nel seguito rilevanti e recenti lavori nel campo dell'offuscamento e
del watermarking di codice:
1. Mila Dalla Preda, Matias Madou, Koen De
Bosschere and Roberto Giacobazzi. Opaque Predicates Detection by Abstract
Interpretation, 2006.
2. Mila Dalla Preda and Roberto Giacobazzi.
Control Code Obfuscation by Abstract Interpretation, 2005.
3. Mila Dalla Preda and Roberto Giacobazzi.
Semantic-based Code Obfuscation by Abstract Interpretation,2005.
4. Ginger Myles and Christian Collberg,
Software Watermarking via Opaque Predicates: Implementation, Analysis, and
Attack, 2004.
5. Sharat Kodi Udupta, Saumya Debray and
Matias Madou, Deobfuscation: Reverse Engineering Obfuscated Code, 2005.
Offuscamento e watermarking di codice possono anche essere combinati tra loro.
Ad esempio si può
pensare di prendere un programma, inserire la firma, e quindi offuscare il tutto
per impedire ad un utente
maleintenzionato di modificare la proprietà intellettuale. Esistono già dei
prototipi per l'offuscamento di
codice e il software watermarking: DIABLO è stato sviluppato in Belgio
dall'università di Ghent e
SANDMARK è stato sviluppato in Arizona (U.S.A) dall'università di Tucson. Questi
prototipi permettono di
applicare tecniche note di offuscamento di codice e di software watermarking a
programmi scritti in C++ e in
Java. Il punto debole di questi prototipi e delle tecnologie che implementano è
legato al fatto che essi si
basano principalmente su sperimentazioni. Ovvero le trasfromazioni di codice che
vengono fornite sono
state sviluppate ad hoc per una certa classe di programmi e facendo delle
assunzioni generali (dettate
dall'osservazione della realtà) sulle capacità e le risorse a disposizione degli
utenti maleintenzionati. Queste
tecniche in generale funzionano ma hanno una derivazione sperimentale, nata cioè
dall'osservazione di
caratteristiche di programmi che aiutano o ostacolano la violazione della
prorietà intellettuale (es: maggiore è
il numero delle linee di codice, il numero di cicli annidati..., maggiore sono
le risorse necessarie per farne il
reverse engineering). Quello che manca è la costruzione di un modello formale
del problema e delle possibili
soluzioni, in grado di poter affermare con rigorosità matematica il livello di
protezione garantito dall'applicazione di certe trasformazioni e allo stesso
tempo che possa suggerire nuove forme di protezione.