Reverse Engineering

Il Reverse Engineering

Il reverse engineering in materia di software viene detto anche decompilazione. Quando uno sviluppatore realizza un nuovo software, lo fa scrivendo in un linguaggio di programmazione comprensibile per gli esseri umani, o almeno per quelli esperti in programmazione. Esempi di linguaggi di programmazione sono Java, Python, PHP, Swift etc. Un codice scritto in un linguaggio di programmazione comprensibile dall’essere umano prende il nome di codice sorgente.

Affinché possa essere eseguito da un computer, il codice sorgente deve essere trasformato in un codice binario fatto di 0 e 1. Il codice binario eseguito dal computer prende il nome di codice oggetto, oppure di codice macchina, appunto perché comprensibile dalle macchine ma non dagli esseri umani. Il processo di trasformazione del codice sorgente in codice oggetto viene detto compilazione.

La decompilazione, o reverse engineering, fa esattamente il contrario: è quel processo che consente di ricavare il codice sorgente partendo dal codice oggetto.

Adesso che abbiamo spiegato cos’è il reverse engineering (mi perdoneranno gli sviluppatori per aver ripetuto concetti a loro ben noti), dobbiamo chiederci: è legale?

Il software e la protezione del Copyright

Come ho spiegato in altri articoli del mio blog (ad esempio “Proprietà Intellettuale del Software: Come Proteggerla“), i software sono protetti dal diritto d’autore, o Copyright nei Paesi anglosassoni. Il Copyright protegge indifferentemente sia il codice oggetto che il codice sorgente, proprio come se fossero delle opere letterarie.

Questa protezione fa sì che solo l’autore, o chi ha acquisito i diritti di proprietà intellettuale, possa compiere determinate azioni su un software. Ad esempio, senza l’autorizzazione dell’autore non è possibile riprodurre un software, cioè farne una copia. Non è possibile modificarlo, venderlo (almeno per la prima volta), noleggiarlo etc. 

Il Copyright, tuttavia, non protegge l’idea che sta alla base del software ma solo la sua espressione. Ciò significa che chiunque potrà analizzare un software e realizzarne un altro che svolga esattamente le stesse funzioni. L’importante è che ci arrivi senza copiare, in tutto o in parte, il codice del software precedente.

Proteggere le idee che stanno alla base dei software rappresenterebbe infatti un ostacolo al progresso, impedendo la realizzazione di programmi sempre migliori.

Ma se così stanno le cose, perché non dovrebbe essere possibile decompilare un software per studiarne il codice sorgente e le idee che ne stanno alla base e poi riscriverlo in maniera diversa? Beh… la risposta non è così semplice.

Quando il reverse engineering rappresenta una violazione del Copyright

Accertato che copiare il codice sorgente di un programma, anche solo in parte, costituisce una violazione del Copyright, perché dovrebbe esserlo anche la decompilazione, se questa è finalizzata soltanto allo studio delle idee alla base del software. 

Innanzi tutto, il reverse engineering richiede la riproduzione in copia del software, anche molte volte. Ma la riproduzione, come abbiamo visto, rappresenta un diritto esclusivo dell’autore ed è quindi una violazione del Copyright se viene effettuata senza la sua autorizzazione.

In secondo luogo, il codice sorgente che si ricava da un processo di decompilazione non è mai identico all’originale, tant’è che ci si riferisce ad esso con il nome di pseudo-codice sorgente. Ciò potrebbe comportare la creazione di un’opera derivata, diversa dall’originale. Poiché anche la modifica del software è un diritto esclusivo dell’autore, anche sotto questo aspetto il reverse engineering potrebbe rappresentare una violazione del Copyirght.

Quando il reverse engineering è lecito

In Europa, la Direttiva Software consente la decompilazione del codice senza autorizzazione del suo autore quando è necessaria a garantire l’interoperabilità con un altro programma o sistema operativo. 

Affinché tale processo sia lecito, devono coesistere altri tre requisiti:

  1. chi effettua la decompilazione deve aver acquistato almeno una valida licenza d’uso;
  2. le informazioni necessarie a garantire l’interoperabilità non devono essere disponibili;
  3. la decompilazione deve essere limitata alle sole parti del programma necessarie a garantire l’interoperabilità.

La possibilità di effettuare liberamente il reverse engineering di un software per garantire l’interoperabilità non può essere derogata neppure in via contrattuale. Pertanto, è inutile vietare questa possibilità all’interno dell’EULA, in quanto la clausola sarebbe nulla.

Negli Stati Uniti, invece, il reverse engineering viene considerato un fair use e quindi consentito se finalizzato a garantire l’interoperabilità oppure lo studio di un software. Tuttavia, a differenza che in Europa, non esistono norme che impediscano di vietare la decompilazione in via contrattuale, attraverso le condizioni della licenza.

Il sistema della Clean Room per evitare violazioni del Copyright

Per le ragioni spiegate sopra, decompilare un software per realizzarne una copia potrebbe facilmente tradursi in una violazione del Copyright. Anche nel caso in cui il reverse engineering sia lecito o lo sviluppatore abbia accesso al codice sorgente, la copiatura del codice o di parti di esso costituirebbe comunque una violazione del diritto d’autore.

Diversamente, non si incorre in alcuna violazione se si riproducono le stesse funzioni di un software esistente con un codice diverso. 

Per evitare il rischio di copiature, si può ricorrere alla tecnica della c.d. “Clean Room”. Un primo team di sviluppatori decompila il software (quando consentito) e ne studia il codice sorgente. Fatto questo, descrive accuratamente le varie funzioni del programma senza fare alcun riferimento al codice. A questo punto, un secondo team di sviluppatori, che non ha mai visto il codice sorgente originale, tenterà di realizzare le funzioni descritte dal primo team scrivendo da zero un nuovo codice. In questo modo, si otterrà un software praticamente identico nelle funzionalità ma non copiato e quindi senza violare il Copyright.

BIBLIOGRAFIA

World International Property Organization (WIPO) 2021. Protecting your mobile App: Intellectual Property Solution. Geneva: WIPO.

Licenza Creative Commons
Quest’opera è distribuita con Licenza Creative Commons Attribuzione 4.0 Italia.

© 2021 - Avv. Massimo Bacci - Prato (IT) Via Valentini 23/a - P.IVA 06212440488 - Iscritto all'Ordine Avvocati di Prato

CONTACT US

We're not around right now. But you can send us an email and we'll get back to you, asap.

Sending

Log in with your credentials

Forgot your details?