La steganografia è una tecnica che si prefigge di nascondere la comunicazione tra due interlocutori. Il termine è composto appunto dalle parole greche στεγανός (coperto) e γραφία (scrittura). Il primo utilizzo registrato del termine fu nel 1499 da Johannes Trithemius nella sua Steganographia, un trattato sulla crittografia e la steganografia, mascherato come un libro sulla magia. L'opera incominciò a circolare in corrispondenze private e suscitò reazioni così allarmate che l'autore decise di non darla alle stampe e ne distrusse addirittura larghe parti, ritenendo che non avrebbero mai dovuto vedere la luce. Continuò comunque a circolare in forma di minuta e fu pubblicata postuma nel 1606..

Generalmente, i messaggi nascosti sembrano essere (o fanno parte di) qualcos'altro: immagini, articoli, liste della spesa o un altro testo di copertura. Ad esempio, il messaggio nascosto può essere un inchiostro invisibile tra le linee di una lettera privata. Alcune implementazioni della steganografia che non utilizzano un segreto comune sono forme di security through obscurity, mentre gli schemi steganografici a chiave dipendono dal principio di Kerckhoffs.

La steganografia, a differenza della crittografia, consente di nascondere un messaggio all'interno di un vettore che possa consentirne il trasporto senza destare sospetti.

La steganografia comprende l'occultamento di informazioni all'interno di file di computer. Nella steganografia digitale, le comunicazioni elettroniche possono includere la codifica steganografica all'interno di un livello di trasporto, ad esempio un file di documento, un file di immagine, un programma o un protocollo. I file multimediali sono ideali per la trasmissione steganografica a causa della loro grande dimensione. Ad esempio, un mittente potrebbe inviare un file di immagine innocuo e regolare il colore di un pixel ogni cento per farlo corrispondere a un carattere alfabetico. La modifica è così lieve che è improbabile che qualcuno la noti, a meno che non la stia cercando in modo specifico.

Storia Tracce della steganografia si hanno già nell'antica Grecia, quando Erodoto narra di due esempi nelle sue Storie: Demarato di Sparta, che per avvisare i compatrioti di una possibile invasione persiana scrisse su una tavoletta un messaggio da nascondere, poi coprì la tavoletta di cera e sulla cera scrisse un messaggio innocuo. Poiché nell'antichità le tavolette di cera erano normalmente usate per scrivere testi provvisori, non destò sospetti. Istieo mandò un messaggio al suo vassallo, Aristagora, rasando la testa del suo servo più affidato, "scrivendo" il messaggio sul suo cuoio capelluto, poi mandandolo in viaggio una volta che i suoi capelli erano ricresciuti, con l'istruzione "quando arriverai a Mileto, di' ad Aristagora di rasarti i capelli e di guardarti la testa."

Modelli steganografici Nella steganografia si hanno due tipi di messaggi: un messaggio contenitore e un messaggio segreto, dove il primo, ben visibile, ha il compito di trasportare e nascondere il contenuto dell’altro, in modo tale da renderlo praticamente invisibile.

Una prima classificazione dei modelli steganografici si divide in steganografia iniettiva e steganografia generativa: La steganografia iniettiva è la più utilizzata, consiste nell’inserire (iniettare) il messaggio segreto all’interno di un altro messaggio che funge da contenitore, in modo tale da costruire un messaggio contenitore (a volte detto steganogramma) praticamente indistinguibile dall’originale, con il messaggio segreto che sia invisibile all’occhio umano. La steganografia generativa consiste nel prendere il messaggio segreto e costruirgli un opportuno contenitore in modo tale da nascondere il messaggio nel miglior modo possibile. Una seconda classificazione ripartisce le tecniche steganografiche in tre sottoclassi: steganografia sostitutiva, selettiva e costruttiva. La steganografia sostitutiva è la più diffusa, si basa sull'osservazione della maggior parte dei canali di comunicazione (linee telefoniche, trasmissioni radio, ecc.); essi trasportano segnali accompagnati da qualche tipo di rumore. Il rumore (o parte di esso) può essere sostituito dal messaggio segreto. La modifica al messaggio contenitore è impercettibile agli umani, solo con un'approfondita analisi si può rilevare (preferibilmente avendo il messaggio originale) che nel messaggio contenitore ci sono modifiche non riconducibili a rumore. La steganografia selettiva, invece, non viene utilizzata nella pratica, ma è puramente teorica. Consiste nel fare una selezione dei contenitori a disposizione per poi procedere a tentativi finché non vengono rispettate determinate condizioni. È una tecnica molto dispendiosa in termini di tempo e non permette un inserimento di una grande quantità di informazioni da nascondere, ma solo una quantità limitata, per questo motivo non viene utilizzata. Un modello molto simile alla steganografia sostitutiva è la steganografia costruttiva, con la differenza che nel modificare il file contenitore si tiene conto di un modello di rumore, cioè si tenta di sostituire il rumore presente con il messaggio segreto nel rispetto delle caratteristiche statistiche del rumore originale. È un approccio apparentemente valido, ma non è esente da svantaggi. Infatti, non è per niente immediato costruire un modello del rumore, ciò richiede tempo e grandi sforzi per la selezione di informazioni. Inoltre, se il modello utilizzato cadesse nelle mani del nemico, egli lo potrebbe analizzare e cercarne i possibili punti deboli e difetti. In questo modo si fornirebbe involontariamente uno strumento di attacco molto efficace contro il proprio sistema.

Tecniche La steganografia può trovare uso in ogni forma di comunicazione, è sufficiente che mittente e destinatario abbiano concordato un codice non vincolato ai normali simboli alfabetici. Ad esempio: Alice e Bob si accordano sull'uso di un sistema steganografico: il numero di virgole presente in una singola pagina sarà tra 1 e 21, questo numero corrisponderà a una lettera dell'alfabeto (le lettere, concatenate tra loro, costituiscono il messaggio reale). Qualora Alice e Bob dovessero trovarsi in un regime di comunicazione controllata, potrebbero scrivere pagine di copertura narrando informazioni prive di valore per loro, ma facendo un uso accurato delle virgole, riuscirebbero a nascondere il vero messaggio con questa tecnica steganografica.

Fisico La steganografia è stata ampiamente utilizzata per secoli. Ecco alcuni esempi fisici: Messaggi nascosti su carta scritti in inchiostri segreti, sotto altri messaggi o su parti vuote di altri messaggi.

Messaggi scritti in codice Morse su filo e poi lavorati a maglia in un capo indossato da un corriere.

Messaggi scritti su buste nell'area coperta dai francobolli.

Durante entrambe le guerre mondiali, le spie femminili utilizzavano il lavoro a maglia per inviare dei messaggi crittografati, ad esempio facendo un punto irregolare nel tessuto oppure lasciando un buco intenzionale nel tessuto. Durante la seconda guerra mondiale, Velvalee Dickinson, una spia del Giappone nella città di New York, inviò informazioni ai contatti in Argentina. Lei era una commerciante di bambole e utilizzava esse per fornire informazioni sulla Marina degli Stati Uniti. Il suo caso divenne famoso e divenne nota come la donna delle bambole.

Durante la seconda guerra mondiale, il vetro fotosensibile fu dichiarato segreto e usato per trasmettere informazioni agli eserciti alleati.

Jeremiah Denton ha ripetutamente battuto le palpebre in codice Morse durante una conferenza stampa televisiva del 1966, scandendo "TORTURE" e confermando per la prima volta all'intelligence navale degli Stati Uniti che i prigionieri di guerra americani venivano effettivamente torturati dai nord-vietnamiti.

Messaggi digitali La steganografia moderna è entrata nel mondo nel 1985 con l'avvento di personal computer applicati a problemi di steganografia classica. Lo sviluppo successivo è stato molto lento, ma da allora è decollato, passando a un gran numero di software di steganografia disponibili. Nascondere messaggi all'interno dei bit meno significativi di immagini o audio. Nascondere dati all'interno di dati crittografati o all'interno di dati casuali. Immagini incorporate nel materiale video (opzionalmente riprodotte a velocità più bassa o più veloce). Inserimento di ritardi impercettibili ai pacchetti inviati tramite la rete dalla tastiera. Ritardi nella pressione dei tasti in alcune applicazioni (telnet o software desktop remoto) che possono essere utilizzati per codificare i dati. Modifica dell'eco di un file audio. Steganografia per segnali audio.

Steganografia di segmentazione della complessità del bit-plane.

Testo digitale Utilizzo di caratteri Unicode che assomigliano al set di caratteri ASCII standard (come nell'attacco omografico). Sulla maggior parte dei sistemi non c'è differenza visiva dal testo normale.

Rendere il testo dello stesso colore dello sfondo nei documenti di elaborazione testi, e-mail e post sul forum.

Utilizzo di caratteri (di controllo) nascosti e uso ridondante del markup (ad es. grassetto, sottolineato o corsivo) per incorporare le informazioni all'interno del codice HTML, che è visibile esaminando l'origine del documento. Le pagine HTML possono contenere codice per ulteriori spazi vuoti e schede alla fine delle linee e colori, tipi di carattere e dimensioni, che non sono visibili quando vengono visualizzati. Utilizzo di caratteri Unicode non stampabili Zero-Width Joiner (ZWJ) e Zero-Width Non-Joiner (ZWNJ). Questi caratteri sono usati per unire e disgiungere lettere in arabo e persiano, ma possono essere usati negli alfabeti romani per nascondere le informazioni perché non hanno significato negli alfabeti romani: poiché sono "a larghezza zero" non vengono visualizzati. ZWJ e ZWNJ possono rappresentare rispettivamente "1" e "0". Incorporare un messaggio segreto sotto forma di quelli che sembrano errori, in realtà intenzionali, e correzioni contrassegnate in un documento di elaborazione testo, utilizzando la funzione di rilevamento delle modifiche del programma di elaborazione testi.

Steganografia sociale In alcune comunità antiche, ma anche in quelle moderne, le persone usano la steganografia per nascondere messaggi in idiomi, video, canzoni molto spesso anche pubblicati in internet e sui social network. Alcuni esempi includono: Nomi o parole errate che sono popolari nei media in una determinata settimana, per suggerire un significato alternativo. Nascondere un'immagine che può essere tracciata usando Paint o qualsiasi altro strumento di disegno. Nascondere un messaggio in un video che a prima vista non ha significato, ma in realtà solo le persone che conoscono bene l'autore di esso possono cogliere il vero significato.

Rete Tutte le tecniche di occultamento delle informazioni che possono essere utilizzate per lo scambio di steganogrammi nelle reti di telecomunicazione possono essere classificate sotto il termine generale della steganografia di rete. Questa nomenclatura è stata originariamente introdotta da Krzysztof Szczypiorski nel 2003. Nel 2016, un primo libro sulla steganografia di rete è stato pubblicato da Mazurczyk et al. Tuttavia, il nascondere le informazioni nella rete era già applicato alla fine degli anni '80 da Girling e Wolf. Contrariamente ai tipici metodi steganografici che utilizzano i media digitali (immagini, file audio e video) per nascondere i dati, la steganografia di rete utilizza gli elementi di controllo dei protocolli di comunicazione e le loro intrinseche funzionalità. Di conseguenza, tali metodi possono essere più difficili da individuare ed eliminare.

I tipici metodi di steganografia di rete implicano la modifica delle proprietà di un singolo protocollo di rete. Tale modifica può essere applicata alla PDU (Protocol Data Unit),alle relazioni temporali tra le PDU scambiate, o entrambe (metodi ibridi).