La steganografia (dal greco steganos, nascosto, e graphia, scrittura) è la pratica di nascondere l’esistenza di una comunicazione incorporando un messaggio segreto all’interno di un mezzo portante (carrier o cover) apparentemente innocuo — un’immagine, un file audio, un video, un documento. Si distingue dalla crittografia per obiettivo: la crittografia rende il messaggio incomprensibile ma ne rivela l’esistenza; la steganografia nasconde il fatto stesso che esista un messaggio. Le due tecniche sono complementari e spesso usate insieme: un messaggio cifrato e poi nascosto steganograficamente è sia incomprensibile sia invisibile.
Principio generale
Il meccanismo fondamentale sfrutta la ridondanza percettiva del mezzo portante: i sistemi sensoriali umani non rilevano piccole modifiche nei dati di un’immagine o di un audio. Un file immagine PNG a 24 bit contiene tre byte per pixel (R, G, B); modificare l’ultimo bit di ciascun canale (LSB — Least Significant Bit steganography) cambia ogni componente di colore al massimo di 1/255 — impercettibile all’occhio ma sufficiente a codificare 1 bit di messaggio per canale.
LSB Steganography su immagini
Per un’immagine di pixel a 24 bit, la capacità teorica è:
Il messaggio viene scritto bit per bit nei LSB dei pixel, nell’ordine. La modifica è statisticamente rilevabile tramite analisi steganoanalisi (le distribuzioni dei LSB di immagini naturali hanno pattern specifici che vengono alterati).
Tecniche principali
LSB insertion (immagini): la più semplice. Vulnerabile a steganalisi statistica.
DCT domain (JPEG): tecniche come JSteg e F5 modificano i coefficienti DCT (Discrete Cosine Transform) del formato JPEG anziché i pixel grezzi. Più robuste alla compressione ma con capacità ridotta.
Spread spectrum: il messaggio viene distribuito su tutto lo spettro del carrier, rendendo ogni singola modifica impercettibile e resistente al ritaglio o alla compressione.
Testo (whitespace steganography, zero-width characters): nascondere dati in documenti di testo usando spazi bianchi extra, caratteri Unicode a larghezza zero o variazioni di formattazione.
Network steganography (covert channels): sfruttare campi non utilizzati nei protocolli di rete (padding IP, timing dei pacchetti, numero di sequenza TCP) per trasmettere dati nascosti. Usata da malware avanzati per comunicazioni C2 steganografate nel traffico HTTP legittimo.
Steganalisi
La steganalisi è la disciplina opposta: rilevare la presenza di messaggi nascosti in un carrier sospetto. Le tecniche principali:
- Analisi statistica: le immagini naturali hanno distribuzioni specifiche dei LSB; l’inserimento steganografico le altera in modo rilevabile (test chi-quadrato, RS analysis).
- Steganalisi strutturale: rilevare artefatti specifici degli strumenti steganografici noti.
- Machine learning: classificatori addestrati su grandi dataset di immagini con e senza payload nascosti. Le tecniche moderne (SRNET, YeNet) raggiungono alta accuratezza su payload piccoli.
Applicazioni in sicurezza
Watermarking digitale: incorporare un identificatore invisibile nei contenuti multimediali per tracciarne la distribuzione non autorizzata. Applicato a immagini, video, e-book.
Comunicazioni covert: usata da attori malévoli per comunicazioni C2 che eludono ispezione del traffico (il payload del malware sembra traffico web legittimo con immagini). Documentata in campagne APT.
Digital forensics: la steganalisi è parte del toolkit forense per analizzare dispositivi sequestrati alla ricerca di comunicazioni nascoste.
La steganografia non offre sicurezza per costruzione — se il canale viene ispezionato, la presenza del messaggio può essere rilevata. La sicurezza reale richiede l’uso combinato con crittografia robusta.