15 Nov
This post was written for the italian cybersecurity blog Cyberment and published here.
Si può nascondere l’esistenza di un messaggio?
La privacy è un fattore critico per la vita privata delle persone e la confidenzialità è diventata una proprietà imprescindibile per le comunicazioni private. La maggior parte di queste, specialmente quelle che avvengono su internet, si basa infatti sulla crittografia per garantire al mittente e al destinatario la confidenzialità delle informazioni.
Talvolta, tuttavia, potrebbe essere più interessante nascondere l’esistenza del messaggio, piuttosto che il suo contenuto. Questo è ciò che spesso accade in alcuni Paesi del mondo per motivi politico-militari, oltre che per comunicazioni private che verrebbero bloccate dalla censura. La steganografia permette, tramite appositi algoritmi, di ottenere questo risultato.
La steganografia permette inoltre, tramite il watermark, di preservare ed evidenziare il diritto d’autore su file in rete. È dunque evidente l’importanza di questo tipo di tecniche. Di seguito verrà fornita una panoramica sulle principali tecniche di steganografia, evidenziando i principi alla base e i casi d’uso più comuni.
Cos’è la steganografia?
La steganografia è un insieme di tecniche che permettono di nascondere un messaggio, garantendo non tanto la confidenzialità della comunicazione, quanto la segretezza della stessa. Infatti, il messaggio da trasmettere viene inserito all’interno di un messaggio contenitore che viene inviato tramite il canale di comunicazione. Un osservatore che analizza la comunicazione non noterà quindi nulla di più del messaggio contenitore.
L’invenzione della steganografia è molto antica: se ne trovano tracce già nell’antica Grecia. È infatti noto un racconto di Erodoto nel quale un messaggio di ribellione viene tatuato sulla testa di uno schiavo, e “trasmesso” una volta che i capelli dello schiavo sono ricresciuti. Sebbene questo racconto venga talvolta presentato come un primo caso d’uso della crittografia, si tratta senz’altro di steganografia. Infatti, la segretezza del messaggio del racconto risiede nella segretezza della comunicazione stessa, non nella distorsione del messaggio.
Tecniche più moderne di steganografia sono state ampiamente utilizzate in tempi recenti. Basti pensare agli inchiostri invisibili, o alla tecnica delle cifre nulle, nella quale il messaggio viene desecretato unendo le lettere iniziali di ogni parola, periodo o capoverso. Questo tipo di tecniche, all’apparenza molto semplici e scenografiche, sono state utilizzate ad esempio durante la seconda guerra mondiale, per scambiare messaggi tra soldati o all’interno della resistenza.
La steganografia nell’informatica
La rapida evoluzione dell’informatica e delle telecomunicazioni ha portato alla definizione di nuove tecniche di steganografia, adatte ai contenuti digitali. Nel contesto della sicurezza informatica, la steganografia viene vista come una forma di security by obfuscation: la sicurezza della comunicazione è data dalla segretezza della stessa.
Nella steganografia digitale, i messaggi vengono nascosti all’interno di file multimediali: immagini, brani, video o altri messaggi. Nel tempo sono state sviluppate tecniche di steganografia che permettono di nascondere messaggi all’interno di svariati contesti:
- frame inseriti all’interno di video, con velocità elevata;
- codifica del messaggio all’interno dell’eco di un file audio;
- utilizzo di pacchetti corrotti o header inutilizzati nelle comunicazioni di rete;
- introduzione di rumore di fondo. La tecnica più utilizzata nella steganografia digitale è quella del rumore di fondo, o del bit meno significativo.
Least Significant Bit
La tecnica del bit meno significativo (LSB), è una delle tipologie più comuni di steganografia digitale, in quanto l’efficacia della tecnica sposa la semplicità dell’implementazione.
Questo tipo di tecnica viene utilizzata soprattutto tramite l’uso di immagini e video: la rappresentazione digitale di questo tipo di contenuti multimediali utilizza i pixel, ciascuno rappresentato da un determinato colore, a sua volta definito da una serie di bit. La modifica del bit meno significativo di un pixel non invalida il colore che rappresenta: la modifica del colore è impercettibile all’occhio umano.
Basandosi su ciò, la tecnica del LSB modifica il bit meno significativo di ogni pixel, codificando il messaggio all’interno del file multimediale senza compromettere l’aspetto del contenuto. Questo tipo di tecnica può essere utilizzata anche con file audio, sebbene il rumore di fondo introdotto potrebbe essere facilmente rilevabile. Per questo motivo si utilizzano altre tecniche per l’utilizzo di questo tipo di contenitori, come l’echo hiding, in cui si codifica il messaggio modificando l’eco all’interno del file.
…più segreto!
Nel paragrafo precedente è stato fornito un semplice algoritmo steganografico per la codifica di un messaggio all’interno di un’immagine. Questo potrebbe tuttavia non essere sufficiente per garantire la segretezza del messaggio. Infatti, se un eventuale osservatore (o attaccante) fosse in possesso dell’immagine contenitore non modificata, risulterebbero evidenti le differenze. Per questo motivo, alcuni algoritmi utilizzano una chiave, nota a mittente e destinatario, all’interno dell’immagine contenitore.
Per rafforzare ulteriormente questa tecnica e complicare la vita agli attaccanti, alcuni algoritmi utilizzano la chiave per decidere come suddividere il messaggio all’interno del file, distribuendo il messaggio tra i bit meno significativi. In ogni caso, quando la dimensione del file lo consente, è sempre consigliabile cifrare il messaggio prima di codificarlo all’interno del contenitore. In questo modo, qualora il messaggio risultasse sospetto ad un attaccante che tenta di analizzarlo, questi si scontrerebbe contro la crittografia.
Steganalisi e Distorsione
Un attacco steganografico è un attacco ad una comunicazione che fa uso di steganografia. Si parla di steganalisi quando si tenta di rilevare la presenza di un messaggio segreto all’interno di un contenitore, mentre si parla di attacco a distorsione quando vi è un tentativo di modifica del messaggio, in modo da eliminare l’informazione segreta o corromperla. Nel caso di steganografia LSB, si può effettuare un attacco a distorsione in modo molto semplice, riducendo la definizione dell’immagine. Questo provocherà una modifica della codifica dei pixel dell’immagine, corrompendo il messaggio segreto.
Le tecniche di steganalisi dipendono invece dalle informazioni in possesso dell’attaccante: egli potrebbe conoscere il contenitore originale utilizzato, potrebbe essere entrato in possesso di altri messaggi trasmessi utilizzando lo stesso contenitore, o potrebbe trovarsi nella condizione di poter analizzare esclusivamente il messaggio, senza alcuna informazione aggiuntiva.
Nel caso di LSB vi sono due tecniche di steganalisi principali:
Attacchi visuali: vengono utilizzati algoritmi di filtering per evidenziare i bit meno significativi in cui si nasconde il messaggio. L’immagine viene poi osservata dall’attaccante per determinare la presenza di un eventuale messaggio.
Attacchi statistici: vengono effettuati confronti statistici sulla base di distribuzioni di frequenza dei colori.
Altri utilizzi
La steganografia viene utilizzata in molti Paesi del mondo per aggirare la censura e introdurre una componente di anonimato al messaggio.
Viene inoltre utilizzata, in combinazione con la crittografia, per la trasmissione di informazioni confidenziali in ambito politico e militare. Utilizzando la tecnica del least significant bit, è possibile tramite la steganografia perseguire altri obiettivi. Il watermark è un’informazione che viene comunemente inserita all’interno di file multimediali, comunemente immagini, per evidenziare la paternità del file e preservarne i diritti d’autore. Non è semplice, infatti, controllare un’opera in rete e impedire che altre persone se ne approprino. Il watermark svolge in questo caso il compito di “firma”, contrassegnando in modo visibile o invisibile l’origine del file.
La steganografia può essere utilizzata anche per includere contenuti all’interno di un file, come nel caso di NFT, per nascondere attacchi e per l’esfiltrazione di dati.
Una delle applicazioni della steganografia più interessanti degli ultimi anni, è la codifica di codice all’interno di un’immagine. Un gruppo di ricercatori ha definito un tipo di attacco informatico noto come stegosploit, nel quale l’exploit utilizza come sorgente di codice un’immagine. L’inclusione di codice JS all’interno dell’immagine passa inosservato all’utente che naviga sul web, ma non viene ignorato dal browser, che interpreta il codice client-side.
In conclusione, la steganografia si rivela un’arma sottile ma efficace che, sebbene abbia origini antichissime, continua ad evolversi e adattarsi alle tecnologie del tempo, con applicazioni nel contesto della cybersecurity che non è possibile ignorare.