Un offuscatore è un processo o un dispositivo che ha lo scopo di rendere un programma più difficile da capire. In genere, l’approccio dell’offuscatore consiste nel prendere un programma relativamente semplice e rendere più complesso il codice sottostante. Anche se è improbabile che l’utente finale noti una differenza nel modo in cui viene eseguito il codice, la funzione dell’offuscatore rende più difficile hackerare il codice e dirottare il programma. Da questo punto di vista, l’utilizzo di questo tipo di strumento può essere visto come una misura di sicurezza.
Il nome del dispositivo o del processo è preso in prestito dalla parola “offuscare”, che si riferisce alla complicazione di una presentazione verbale nel tentativo di confondere o sconcertare. Allo stesso modo, l’offuscatore cerca di rendere alquanto perplesso il processo di comprensione del codice. Ciò essenzialmente rende più difficile l’indebolimento del codice, poiché la vera carne del codice è così profondamente sepolta o offuscata che è difficile estrarre le parti essenziali del codice.
Esistono diversi linguaggi di programma che tendono a rispondere molto bene al processo di offuscamento. Il C++ è tra i linguaggi più popolari e consente di utilizzare un offuscatore con relativa facilità senza danneggiare la funzione del codice di base. Allo stesso modo, anche C e Perl tendono a funzionare bene con l’uso dell’offuscamento, rendendo relativamente facile aggiungere un elemento di protezione a qualsiasi programmazione scritta in questi tre linguaggi.
Sebbene lo scopo di un offuscatore sia rendere intenzionalmente più difficile da svelare il codice, c’è anche la necessità di assicurarsi che le persone autorizzate a lavorare con la programmazione possano farlo senza essere ostacolate dal processo di offuscamento. A tal fine, è possibile utilizzare varie tecniche per superare le complicazioni aggiunte e arrivare al codice di base. Questo processo è noto come reverse engineering, poiché implica essenzialmente l’annullamento delle complicazioni per vedere il quadro reale. Lo slicing del programma è un esempio di tecniche di reverse engineering utilizzate per de-offuscare un insieme di codice.
Sebbene l’offuscatore fornisca un certo grado di protezione, è importante rendersi conto che questo processo non dovrebbe essere l’unico mezzo di sicurezza impiegato per proteggere la programmazione. Dovrebbero essere impiegate anche altre strategie di sicurezza per garantire che gli inserimenti malevoli non vengano ricevuti dalla rete e che siano autorizzati a farsi strada nei codici esistenti.