In ambito comunicativo, con il termine obfuscation si intende una pratica che rende di difficile comprensione una comunicazione altrimenti facile da interpretare. In ambito software, invece, l'obfuscation è quella modalità di sviluppo del codice che consente di proteggere la proprietà intellettuale dei programmatori rendendo difficile (se non impossibile) mettere in atto tecniche di ingegneria inversa (reverse engineering) sul codice sorgente del software stesso. Grazie all'obfuscation, viene reso più difficile a chiunque copiare un qualsiasi software (o parte di esso) che non abbia realizzato in prima persona.
La pratica dell'obfuscation può coinvolgere diversi algoritmi di crittografia per "nascondere" in parte o totalmente il codice sorgente del software; è possibile evitare di rendere visibili metadata di grande rilevanza; permette di rinominare classi e variabili con nomi di fantasia e senza significato; consente di inserire decine e decine di righe di codice totalmente inutili se non per complicare la vita a chi stia tentando di ricostruirne il funzionamento.
Gli obfuscator
L'obfuscating non richiede necessariamente di essere un programmatore, conoscere linguaggi di programmazione o possedere capacità nello sviluppo software. È sufficiente una rapida ricerca in Rete per trovare programmi – chiamati obfuscator – che automatizzano le procedure di "offuscamento" delle righe di codice dei software. Diversi i tool disponibili online: dagli obfuscator realizzati da sviluppatori terzi ai prodotti commerciali realizzati da software house, passando per strumenti open source e obfuscator sperimentali creati da laboratori di ricerca universitari in giro per il mondo.
Solitamente, gli obfuscator intervengono direttamente sul codice sorgente oppure sui framework operativi e piattaforme di sviluppo utilizzate da linguaggi come Java e .NET. Altri, invece, sono in grado di agire su linguaggi come C e C++ che hanno bisogno di un compilatore (una sorta di traduttore tra linguaggio di programmazione e linguaggio macchina) per poter creare software funzionanti.
Vantaggi delle tecniche di obfuscation
Mettere in pratica tecniche di obfuscation assicura ai programmatori diversi vantaggi. Il più evidente è quello relativo alla difesa della proprietà intellettuale: crittografando le righe di codice, un obfuscator rende molto complessa la vita di quegli sviluppatori e hacker che mettono in atto tattiche di ingegneria inversa per copiare o hackerare programmi, spesso con scopi illeciti come trafugare segreti industriali oppure bypassare sistemi di sicurezza.
L'obfuscation può essere utilizzata anche per altri scopi. Torna utile, ad esempio, per ridurre le dimensioni del codice sorgente di un programma o per "travestire" moduli di software perfettamente legittimi ma che potrebbero essere identificati come malware da software antivirus sin troppo efficienti.
Svantaggi delle tecniche di obfuscation
Quest'ultima tecnica, però, può essere sfruttata anche da pirati informatici e programmatori con intenzioni tutt'altro che amichevoli. Anche i malware, infatti, possono essere "mascherati" grazie agli obfuscator e passare inosservati agli "occhi digitali" degli scanner antivirus. Un esempio è dato dalla vulnerabilità scoperta dagli esperti di sicurezza informatica di Check Point nel codice sorgente di eBay.
Grazie a questa falla, gli hacker sono in grado di aggirare i sistemi di sicurezza dei server eBay e inserire del proprio codice nei moduli JavaScript alla base del funzionamento del sito di aste. Questa tecnica, denominata JSFUCK, permetterebbe agli hacker di distribuire software maligno tramite i server eBay attraverso il quale poter poi mettere in atto tattiche di phishing.