Oggi, guardare il mondo con lucidità significa avere consapevolezza del ruolo che internet riveste nella comunicazione. È un’immediata conseguenza attribuire la stessa centralità ai software per lo sviluppo di codici. Senza voler scendere nei meandri dell’informatica, basti sapere che esiste una differenza tra codice sorgente e codice oggetto: il codice sorgente è la versione di un algoritmo scritta in un linguaggio di programmazione comprensibile dall’essere umano, mentre il codice oggetto è un linguaggio comprensibile solo alla macchina (il compilatore). Il reverse engineering è un meccanismo che consente di ricavare il codice sorgente, partendo dal codice oggetto. Ma quanto è legale? O, meglio, esiste il rischio che il software reverse engineering comporti una violazione del copyright?
È un quesito sul quale vale la pena interrogarsi, considerato il rilievo che il diritto d’autore riveste in ambito digitale e le conseguenze che potrebbero accompagnarsi a un’eventuale infrazione. Soprattutto, è interessante notare quali e quante modalità di tutela vengano offerte all’autore del codice sorgente rispetto a un tentativo di decompilazione software.
Infatti, se per un verso è comprensibile che si vogliano evitare forme di plagio a danno di chi ha elaborato la versione originale del programma, per un altro lo è altrettanto non mettere alcun freno alla creatività e al progresso. Ne consegue che la questione relativa al software reverse engineering meriti di essere approfondita.
CONTENUTO DELL'ARTICOLO
Che cos’è il reverse engineering?
Guarda il video
In informatica, il reverse engineering (o ingegneria inversa) è un processo che consente di risalire al codice sorgente, partendo dal codice oggetto. Esso è altresì conosciuto con il nome di decompilazione. Per comprenderne la funzione, guardiamo ai meccanismi che lo caratterizzano.
La creazione di un software passa per l’utilizzo di un linguaggio informatico comprensibile all’essere umano, se non altro alla nicchia di professionisti che ne hanno studiato l’articolazione e hanno imparato a padroneggiarlo. Esistono diversi linguaggi informatici che uno sviluppatore può utilizzare: JavaScript, PHP, HTML, Phyton e così via. Solitamente, prende il nome di codice sorgente quel linguaggio di programmazione leggibile dall’essere umano.
Il reverse engineering si realizza in tutti quei casi in cui si parte da un codice oggetto, chiamato anche codice binario perché formato dai numeri 0 e 1 e leggibile soltanto dalle macchine, per ritornare al codice sorgente.
L’opposto del reverse engineering: la codificazione
Prima ancora di arrivare al reverse engineering, è necessario svolgere un passaggio preliminare che ponga le basi affinché il procedimento all’inverso possa essere compiuto. Stiamo parlando della codificazione.
Uno sviluppatore che voglia realizzare un software utilizzerà, come abbiamo già anticipato, uno dei linguaggi di programmazione a sua disposizione. Creerà, quindi, un codice sorgente perfettamente comprensibile da altre persone che, come lui, conoscono la materia.
Se lo sviluppatore in questione desidera che il software da lui realizzato venga eseguito da un computer, avrà bisogno di trasformare il codice sorgente in un codice binario, cioè un codice formato dai numeri 0 e 1. Compiuto questo passaggio, il codice prenderà il nome di codice oggetto e sarà leggibile esclusivamente dalle macchine. Il processo in grado di convertire il codice sorgente in codice oggetto è la codificazione.
Corso Tutela Proprietà Intellettuale
19 lezioni di teoria e pratica
Cosa imparerai?
- Aspetti fondamentali del diritto d’autore
- Alternative al Copyright come i copyleft
- Modalità di tutela delle proprie opere
- Nuovi sul copyright come gli NFT
Il rapporto tra software reverse engineering e copyright
Risalire al codice sorgente di un software, partendo dal suo codice oggetto, ha i suoi vantaggi. Innanzitutto, permette di studiarne le caratteristiche e l’idea di base, arrivando a comprenderne i vantaggi. Inoltre, può rappresentare un motivo di ispirazione per future elaborazioni.
In quest’ottica, dove e come si inserisce il copyright? E, soprattutto, è legittimo pensare che il software reverse engineering superi i confini della liceità al punto da rendere preferibile evitarne l’utilizzo per non incorrere in sanzioni?
In linea di massima, il diritto d’autore vuole garantire che il titolare del software sia l’unico a poter modificare e riprodurre la propria opera. Nel caso di specie, quindi, protegge sia il codice sorgente sia il codice oggetto come farebbe con una produzione musicale, artistica o letteraria.
Ne consegue che non è possibile ottenere una copia del software tramite il reverse engineering senza il consenso dell’autore, a pena di violare il copyright. Al tempo stesso, non è possibile neppure utilizzare una copia modificata del codice ottenuto mediante la decodificazione del software originario per lo stesso identico motivo.
Le violazioni del copyright: mancato consenso dell’autore
Poche parole sono bastate a stabilire come funzioni il software reverse engineering e quali siano le problematiche alla base del suo utilizzo. In particolare, la prima violazione del copyright nella quale si rischia di incorrere dipende dall’effetto stesso che produce il procedimento della decodificazione: produrre una copia del software senza il consenso dell’autore.
Se il diritto d’autore stabilisce che tutti i poteri di usabilità si concentrano sul titolare del software, è imprescindibile che qualsiasi sviluppatore desideri riprodurre quello stesso software necessiti del di lui consenso. In mancanza, la riproduzione deve considerarsi illecita agli occhi della legge e dunque perseguibile.
È così avvenuta una violazione del copyright.
Le violazioni del copyright: modifica del software
Il reverse engineering permette di ottenere una copia “sporcata” del codice sorgente originale, cioè una copia non perfettamente identica. Non è capitato poi così di rado che alcuni sviluppatori considerassero il risultato della decodificazione un input interessante sul quale orientare il proprio lavoro.
Creare un nuovo software che abbia questa copia come punto di partenza, tuttavia, rischia di comportare una violazione del diritto d’autore, in quanto integra una modifica dell’opera originale – un privilegio, questo, che spetta soltanto al suo titolare.
Guida Copyright
Guida legale completa – Dai uno sguardo, clicca sull’immagine per l’anteprima della tua nuova guida legale
I casi di liceità del software reverse engineering
Individuare i casi di liceità del software reverse engineering, stando a queste premesse, sembra molto complesso. Ciò non significa che sia impossibile. Esistono, infatti, delle modalità che creano le condizioni affinché il software reverse engineering possa essere praticato.
A tracciare i confini che consentono l’attuazione dell’ingegneria inversa è la Direttiva 24/2009, conosciuta con il nome di Direttiva sul diritto d’autore nel mercato unico digitale.
Oltre a chiarire e armonizzare il quadro normativo a livello europeo in materia di copyright su internet, questa Direttiva – recepita in Italia – ha stabilito che è possibile procedere al reverse engineering of software, anche senza il consenso del titolare del codice sorgente originale, quando il procedimento di ingegneria inversa mira a garantire l’interoperabilità con un altro programma.
In sostanza, nella legislazione italiana, è possibile ricorrere all’ingegneria inversa in deroga alle norme sul diritto d’autore solo quando ciò mira a migliorare l’operatività di quel software su un altro sistema, implementato con tecnologie più all’avanguardia.
Il Clean Room Design per evitare le violazioni del copyright
Tutto considerato, sembra che il software reverse engineering conduca sempre di fronte a una porta chiusa. Non importa quale e quanto sia l’impegno, il risultato avvicina inesorabilmente al rischio di una violazione del diritto d’autore. La tensione verso il progresso ne esce frustrata, se non addirittura sfiancata.
Esiste un metodo, però, che potrebbe cambiare le carte in tavola e che prende il nome di Clean Room Design. Si tratta di un metodo che consente di studiare il codice sorgente di un software e di crearne una copia, comprendendone l’idea di fondo, senza incorrere nella violazione del copyright.
In buona sostanza, il lavoro si articola nelle seguenti fasi:
- individuazione di un ambiente di lavoro controllato, dove può operare un primo team di sviluppatori eseguendo la decompilazione;
- analisi e studio del codice sorgente ottenuto;
- descrizione delle funzioni del sistema e invio a un legale, al quale spetta il compito di verificare che non ci siano violazioni del copyright;
- realizzazioni delle funzioni da parte di un secondo team di sviluppatori, diverso dal primo e mai entrato in contatto con il codice sorgente originale.
Il risultato sarà un software in grado di riprodurre le stesse funzioni, ma prodotto ex novo da sviluppatori che non hanno mai avuto occasione di analizzare direttamente il codice sorgente decompilato. Di conseguenza, non potrà esserci una violazione del diritto d’autore.
Gestire le complessità del software reverse engineering
Di fattori da tenere in considerazione, quando si parla reverse engineering, ne abbiamo visti parecchi sia sotto il profilo informatico sia sotto il profilo legale. A colpire è il rilievo attribuito alla titolarità del diritto d’autore e alla sua fruizione sul mercato unico digitale.
La legislazione europea e, a seguire, quella italiana hanno dimostrato una grande alacrità nel procedere alla creazione di un quadro normativo completo e chiaro, che prevedesse anche casi molto specifici come quello dell’ingegneria inversa.
Se sei uno sviluppatore o se hai un’azienda che si affida a team di sviluppatori e vuoi assicurarti di non incorrere in una violazione del copyright nel ricorrere al software reverse engineering, rivolgiti a Legal For Digital.
Lo studio legale digitale al servizio delle tue esigenze.