Reverse engineering

Cosa è il reverse engineering (ingegneria inversa)

Il reverse engineering, o ingegneria inversa, è il processo mediante il quale un prodotto (hardware o software) viene smantellato per analizzarne l'architettura, il funzionamento, le caratteristiche intrinseche. Questo processo, quando applicato al software, permette in alcuni casi di ricostruire il codice sorgente partendo dall'eseguibile, ovvero dal programma finito.

Sono disponibili sul mercato diversi tools (disassemblatori e decompilatori, per es. IDA PRO) in grado di analizzare un software, interpretarne il funzionamento e, soprattutto nel caso di linguaggi facilmente reversibili (come nel caso dell'ambiente .NET o di JAVA), ricostruire quasi completamente il codice sorgente.

Proteggere il codice con gli offuscatori

Una possibilità per rendere difficile, anche se non impossibile, la strada della ricostruzione del codice è quella di utilizzare offuscatori, programmi in grado di mescolare le carte per limitare il più possibile il processo di reverse engineering.

Tali applicazioni hanno un costo decisamente importante: per le versioni professionali si arriva tranquillamente a spendere qualche migliaia di euro all'anno o, per una licenza perpetua, il costo può salire ed assestarsi tra i 10.000€ ed i 15.000€.

Ci sono ovviamente versioni gratuite di questi applicativi ma la loro efficacia è decisamente molto limitata rispetto a pacchetti professionali completi.

Perché xCore impedisce del tutto il reverse engineering

Il modo migliore per impedire il reverse engineering è che il codice non sia presente e non sia eseguito sul PC: sembra un controsenso ma è proprio ciò che fa l'architettura xCore.

Il funzionamento, schematizzato, può essere così riassunto:

Gli algoritmi che verranno eseguiti a bordo dei dispositivi non sono accessibili: solo lo sviluppatore li conosce e, una volta preparati e criptati per l'utilizzo da parte di xCore, sarà di fatto impossibile ricostruirne anche solo il funzionamento.

Far eseguire al dispositivo xCore anche piccole parti di codice, algoritmi più o meno semplici, porta ad avere un elevatissimo livello di protezione non ottenibile con alcun'altra soluzione presente sul mercato.

Il segreto? Autenticazione e protezione dinamica

La comunicazione  con i dispositivi xCore prevede innanzitutto l'apertura di una sessione autenticata; Il codice eseguito a bordo viene poi inviato runtime e può essere modificato in qualsiasi momento. Ciò significa che la protezione può cambiare di continuo ed adattarsi alle esigenze contingenti.

Ma cosa eseguire a bordo del device? Lo spazio a disposizione per l'esecuzione permette di  implementare algoritmi anche di notevole importanza ed estensione ma sia che si scrivano algoritmi banali, sia che si preparino algoritmi specialistici, il risultato sarà un'eccezionale livello di protezione e l'impossibilità di effettuare il reverse engineering.

Per il codice da eseguire a bordo OxySec mette anche a disposizione librerie specializzate utilizzabili tramite API  interne: