La steganografia è una tecnica che si prefigge di nascondere la comunicazione tra due interlocutori. Essa può trovare uso in ogni forma di comunicazione, è sufficiente che mittente e destinatario abbiano concordato un codice non vincolato ai normali simboli alfabetici.
La steganografia si pone come obiettivo il mantenere nascosta l’esistenza di dati a chi non conosce la chiave atta ad estrarli, a differenza della crittografia, che invece si incentra sul non rendere accessibili i dati nascosti a chi non conosce la chiave.
Esiste, tuttavia, la possibilità che la crittografia possa essere decifrata. Se la chiave viene rubata, ad esempio, la segretezza dei dati è compromessa, oppure la chiave potrebbe non essere efficace, oppure si potrebbe subire un attacco di crittanalisi: la crittanalisi è l’attacco alla crittografia, che mira ad estrarre i dati cifrati senza chiave.
Tuttavia, affinché ci sia una crittanalisi, deve esserci prima una steganalisi. L’obiettivo della steganalisi non è quello di estrarre i dati nascosti, ma semplicemente di dimostrarne l’esistenza.
La steganografia digitale è una forma di Sicurezza tramite segretezza, l’algoritmo di steganografia deve tenere conto della forma plausibile che i dati generati devono avere, affinché non destino sospetti.
La steganografia valuta la robustezza dei suoi algoritmi sia in condizioni di analisi da parte di individui (che il dato generato sia coerente con dati simili) sia da parte di computer (quindi analisi matematiche, statistiche e di confronto con archivi).
LSB (Least Significant Bit, bit meno significativo) è la tipologia di steganografia più diffusa. Si basa sulla teoria secondo la quale l’aspetto di un’immagine digitale ad alta definizione non cambia se i colori vengono modificati in modo impercettibile.
Ogni pixel è rappresentato da un colore differente, cambiando il bit meno significativo di ogni pixel, il singolo colore non risulterà variato in modo significativo e il contenuto dell’immagine sarà preservato nonostante questa manipolazione.
In alcuni contesti, piuttosto che usare un contenitore per nascondere dei dati al suo interno, un software di steganografia può ricevere in input la chiave (K) e il dato (D) e generare autonomamente un dato steganografato. Di fatto il contenitore viene generato basandosi su di una base di dati preesistente.