FOTOGRAFIA DIGITALE: ERROR LEVEL ANALYSIS
Quante volte ci siamo chiesti se una certa fotografia digitale fosse ‘taroccata’ oppure no? Per capirlo, l’Osint ci mette a disposizione uno strumento potente, denominato ‘Error Level Analysis’. In un’epoca in cui le immagini digitali vengono prodotte con l’ausilio dell’Intelligenza Artificiale, l’identificazione di rimaneggiamenti e contraffazioni può diventare decisiva.
Massimo Morelli
Cos’è e a cosa serve la Error Level Analysis
Di tutto l’ampio ventaglio di discipline che costituiscono il corpus dell’OSINT, l’analisi tecnica di video e fotografie (spesso chiamata ‘Photo Forensics’) alla ricerca di eventuali rimaneggiamenti e contraffazioni, è sicuramente uno degli aspetti più interessanti.
Questa attività analitica viene svolta principalmente con i formati compressi – in particolare il jpeg – proprio perché con questi è possibili applicare la tecnica dell’Error Level Analysis. Non facciamoci intimorire dal nome e vediamo in breve di che si tratta.
Come funziona la compressione jpeg
Il sistema visivo umano percepisce più facilmente le basse frequenze rispetto alle alte e proprio per questo ogni volta che un’immagine fotografica viene salvata con un sistema di compressione lossy, ovvero con perdita di informazione, vengono sacrificate soprattutto le alte frequenze. Se proprio dobbiamo perdere dell’informazione (e con il jpeg dobbiamo, anzi vogliamo perderne al fine di alleggerire il peso del file), tanto vale che rinunciamo alle alte frequenze che siamo meno propensi a percepire distintamente. Perdiamo, e va bene, ma perdiamo relativamente poco.
Il procedimento è piuttosto complesso ma qui ricordiamo gli aspetti fondamentali. Innanzitutto i pixel originali dell’immagine sono divisi in blocchi di 8×8 pixel, a ognuno dei quali viene applicata la Trasformata Discreta del Coseno (Discrete Cosine Trasforming) che converte i punti dell’immagine nella loro equivalente rappresentazione in termini di frequenze. In seguito i risultati della DCT sono sottoposti a un processo di quantizzazione(passaggio da valori continui a valori discreti), ed è qui che si verifica la maggior parte della perdita di informazione (soprattutto sulle alte frequenze). Il risultato di questo processo è la tipica tabella di quantizzazione, che possiamo esaminare insieme.
Come si nota, tutto il range delle frequenze disponibili nell’immagine è stato diviso in una tabella 8×8 in cui ogni casella rappresenta un byte di informazione con valori da 1 a 255. I valori migliori, ovvero con minor perdita di informazione sono quelli bassi, i peggiori quelli alti. Di fatto se la tabella di quantizzazione contenesse tutti 1, l’immagine rappresentata sarebbe identica all’originale e quindi non vi sarebbe alcuna perdita di informazione. In alto a sinistra abbiamo le frequenze più basse e in basso a destra quelle più alte, quindi scendendo diagonalmente dall’angolo in alto a sinistra verso quello in basso a destra ci muoviamo dalle frequenze più basse a quelle più elevate. Si nota subito che i valori crescono mano a mano che ci si sposta verso l’angolo in basso a destra, il che significa che la compressione ha sacrificato soprattutto le alte frequenze in termini sia di luminosità che di cromie. Siccome praticamente ogni apparecchio (macchina fotografica, smartphone, ecc.), o perlomeno ogni apparecchio prodotto da una determinata azienda, usa delle sue specifiche tabelle di quantizzazione, spesso esaminando le tabelle di quantizzazione di un’immagine jpeg è possibile risalire all’apparecchio utilizzato.
I diversi livelli di compressione
Come abbiamo visto, ogni volta che salviamo un jpeg, sia che abbiamo eseguito delle modifiche sia che non le abbiamo eseguite, introduciamo una compressione e quindi una perdita di informazione concentrata soprattutto sulle alte frequenze di luminosità e di cromia. Al momento del salvataggio, i software di editing delle immagini come Photoshop, Gimp, ecc. ci permettono di scegliere il livello di qualità del jpeg: un livello pari al 95% perderà meno informazione del livello 85% e così via. Se vogliamo un file più leggero sceglieremo un livello basso, se lo vogliamo più definito, con meno perdita di informazione, sceglieremo un livello più alto.
Ora, se noi interveniamo più volte su una stessa immagine jpeg e quindi la salviamo ripetutamente nel corso del tempo, introduciamo diversi livelli di compressione che vanno a costituire una specie di stratificazione geologica: ci sarà il livello dell’immagine originale, quello del primo salvataggio, quello del secondo, del terzo e così via. Ecco, è proprio su questa stratificazione che interviene lo strumento chiamato ‘Error Level Analysis’.
Come usare la error level analysis in modo facile e divertente
Quando analizziamo un’immagine jpeg con lo strumento di Error Level Analysis (due ottimi tool si trovano presso fotoforensics.com e 29a.ch/photo-forensics/#forensic-magnifier) di fatto siamo in grado di identificare aree con livelli di compressione diversi. In un’immagine originale, tutte le aree dell’immagine dovrebbero mostrare lo stesso livello di compressione, mentre in un’immagine modificata compaiono delle aree a livelli di compressione diversi che possono (attenzione, possono…) indicare degli interventi di ritocco/alterazione digitale.
1. Il livello di luminosità del fondo

Due diverse immmagini dello stesso soggetto sottoposte ad ELA
Il primo aspetto da esaminare è il livello generale di luminosità dell’immagine sottoposta ad ELA: un’immagine su cui si è intervenuti molte volte e che quindi è stata salvata molte volte ha perso per strada molte delle alte frequenze originali e quindi risulta molto scura. Questo è il primo indizio: un’immagine che sotto ELA mostra un fondo molto scuro ha probabilmente subito degli interventi. Per capire meglio usiamo un esempio tratto da fotoforensics. La prima in alto a sinistra è l’immagine originale, mentre alla sua destra c’è l’analisi ELA, che risulta abbastanza chiara e ricca di dettagli (alte frequenze). L’immagine in basso a sinistra è invece stata salvata una volta e quindi ha perso parecchia informazione. Mentre nell’immagine fotografica questa differenza non si nota, nell’analisi ELA a destra in basso la differenza si nota immediatamente: il fondo è parecchio più scuro, segno che molte delle alte frequenze sono state perse con il salvataggio.
2. Il rainbowing
Il jpeg opera sui colori separandoli in due canali diversi: luminosità e cromia. In un’immagine jpeg salvata almeno una volta (non per forza ritoccata, basta che sia salvata) questa separazione dei colori in due canali distinti può dare origine a un fenomeno rilevabile attraverso l’analisi ELA che viene denominato ‘rainbowing’ (arcobalenizzazione suona un po’ strano, come la traduciamo?). Di fatto nell’ELA appaiono delle aree (spesso dei contorni) spiccatamente multicolore. Questa volta prendiamo un esempio dall’altra piattaforma suggerita, ovvero forensically (29a.ch/photo-forensics).

Fotografia raffigurante un falso disco volante

Elaborazione ELA
Quella sopra è un’immagine evidentemente contraffatta che rappresenta un disco volante incombente su una città e, in alto a destra, un altrettanto improbabile parachute flyer (anche le proporzioni sono evidentemente fasulle). Sotto troviamo invece l’analisi ELA, la quale ci mostra senza ambiguità interpretative un diverso livello di compressione per il disco volante e un forte rainbowing visibile in particolare sulla distesa metropolitana, sul disco volante e sul parachute flyer. Facile no?
A questo punto dobbiamo tuttavia sottolineare che il fenomeno di rainbowing viene prodotto con grande evidenza dai software Adobe come Photoshop, Lightroom eccetera. Gimp a volte lo produce, ma in misura minore.
Riassumendo, quindi, cosa rivela la presenza di rainbowing in un’analisi ELA? Rivela che l’immagine ha subito perlomeno un salvataggio e che con ogni probabilità è stata aperta e salvata con un software Adobe. Non rivela invece necessariamente la presenza di un ritocco, perché appunto basta un semplice salvataggio senza altri interventi per generare il rainbowing.
3. Bordi, texture e superfici.
In un’immagine non ritoccata, bordi simili, texture simili e superfici simili dovrebbero avere lo stesso livello di compressione. Se ciò invece non accade e compaiono bordi e/o texture e/o superfici con livelli di compressione evidentemente diversi, allora probabilmente è stato eseguito un ritocco. Ridiamo un’occhiata al disco volante e al parachute flyer dell’immagine precedente. Non c’è dubbio che si tratti di un ritocco, e in questo caso ce la siamo cavata con poco. Ma non è sempre così facile. Su fotoforensic.com c’è una sezione che propone dei challenge, delle sfide, ovvero dei problemi da risolvere per allenarsi a usare correttamente l’Error Level Analysis (https://fotoforensics.com/messages.php?challenge=1). I primi esercizi sono semplici; eseguiteli, se volete, per impratichirvi. Gli ultimi cinque sono invece un po’ più complessi e vi invitiamo a studiarli attentamente. Chiediamoci sempre: ma i bordi, le texture e le superfici simili mostrano tutte lo stesso livello di compressione oppure no?
Noi per il momento ci limitiamo a proporvi un challenge relativamente facile ma eclatante. Quando Kim Jon Un divenne leader della Repubblica della Corea del Nord una sua immagine fece il giro del mondo. In quella originale, Kim teneva in mano una carta d’identità, ma in varie versioni che circolarono su internet, gli fu messo in mano di tutto: floppy disk, biglietti della lotteria e altro. Provate voi stessi a cimentarvi con questo challenge: https://fotoforensics.com/messages.php?read=1419609850635&challenge=1
Ma attenzione…se non vedete subito qual è l’unica immagine non ritoccata lasciamo perdere, l’Error Level Analysis non fa per voi!