Guide: passo per passo
Cominciamo a vedere qualche metodo per nascondere informazioni nei file comuni, come ad esempio le immagini.
Per un computer, un'immagine è un array di numeri che rappresenta le intensità di luce di vari punti (i pixel). Questi pixel specificano le caratteristiche di un'immagine; abbiamo ad esempio che le foto più comuni sono di 640 X 480 pixel e 256 colori (cioè 8 bit per pixel). Le immagini digitali sono tipicamente strutturate in file da 24 o 8 bit; un'immagine da 24 bit ha più spazio a disposizione per nascondervi informazioni.
Tutte le variazioni di colore per i pixel derivano dai tre colori primari: rosso (R), verde (G) e blu (B). Ciascun colore primario è rappresentato da un byte, quindi le immagini da 24 bit usano 3 byte per pixel per rappresentare il valore di un colore. Questi 3 byte possono essere rappresentati tramite valori esadecimali, decimali o binari. In molte pagine web, ad esempio, il colore dello sfondo è rappresentato da un numero di sei cifre esadecimale, formato quindi da tre coppie che rappresentano i colori primari RGB. Uno sfondo bianco avrà quindi il valore FFFFFF: 100% di rosso (FF), 100% di verde (FF) e 100% di blu (FF). In valore decimale saranno 255, 255 e 255, mentre in binario 11111111, 11111111 e 11111111.
Per nascondere dei dati in un'immagine avremo quindi bisogno di due file: innanzitutto una foto di copertura (che chiameremo C in base allo schema precedente con avversario passivo) che possa sembrare innocente a prima vista e che nasconderà le informazioni, e poi il messaggio che vogliamo nascondere (che sarà E). Questo messaggio potrà essere del testo in chiaro, un testo cifrato, un'altra immagine, o comunque qualsiasi altra informazione codificata in bit. Una volta combinati insieme, i due file genereranno la stego-immagine S.
Le informazioni possono quindi essere nascoste utilizzando metodi diversi. Tra gli approcci più comuni per farlo vanno ricordati:LSB: Inserimento nel Bit meno Significativo
Algoritmi e Trasformazioni
L'inserimento nel bit meno significativo (LSB) è il più comune e semplice tra gli approcci per nascondere informazioni di qualsiasi tipo in un'immagine. Sfortunatamente, è molto vulnerabile in caso di una anche minima manipolazione dell'immagine da parte di terzi.
Usando ad esempio un'immagine da 24 bit, possiamo immagazzinare 3 bit in ogni pixel, e all'occhio umano la stego-immagine risultante apparirà identica all'immagine di partenza. Volendo ad esempio nascondere la lettera A (in binario 10000011) nei seguenti 3 pixel:
(00100111 11001000 11101001)
(11001000 00100111 11101001)
otterremo il seguente risultato:
(0010011[b]0[/b] 11001000 1110100[b]0[/b])
(11001000 00100111 11101001)
I bit in grassetto sono i soli tre che sono stati cambiati. In generale, quindi, LSB richiede che in media vengano cambiati la metà dei bit che vengono ritoccati. Volendo si può nascondere l'immagine utilizzando anche il secondo bit meno importante, e ancora l'occhio umano non noterebbe la differenza.
Se però Eva ritoccasse leggermente l'immagine, ad esempio schiarendola anche di pochissimo, l'intera informazione nascosta andrebbe persa irrimediabilmente.
Con determinati algoritmi e trasformazioni invece vengono sfruttate, ad esempio, le caratteristiche della compressione JPEG (e quindi le trasformate di Fourier e le trasformate discrete del coseno) per includere il messaggio nascosto direttamente nell'immagine prima di crearla. Queste tecniche nascondono il testo in aree più significative dell'immagine manipolando ad esempio proprietà come la luminosità, e sono quindi più robuste rispetto ad LSB.
Lo scopo dei metodi basati su trasformazioni è quello di rendere l'informazione nascosta parte integrante dell'immagine, in modo tale che cercando di eliminarla o di disabilitarla si distrugga la stego-immagine stessa, e quindi sia inutilizzabile.
Sono stati presentati svariati algoritmi per nascondere dati, tra cui va segnalata una tecnica in cui si utilizza il messaggio per modulare un segnale portante, che viene poi combinato con la stego-immagine in sezioni di blocchi non sovrapposti. Il messaggio verrà quindi estratto da una correlazione incrociata tra la stego-immagine e l'elemento originale ricostruito.
Esistono poi metodi statistici che calcolano le proprietà di "dithering" di un'immagine: vengono scelti opportuni pixel in base alle loro caratteristiche ed il valore in quei punti viene sostituito con l'informazione nascosta. Un ulteriore algoritmo utilizza la compressione di immagini frattali: un bit di informazione è nascosto nella stego-immagine trasformando un blocco simile nell'approssimazione di un altro; i dati vengono decodificati usando una chiave visuale che specifica la posizione delle regioni che contengono il messaggio; sfortunatamente, la quantità di dati che possono essere nascosti usando questo metodo è piccola e suscettibile a errori di bit; e come se non bastasse, la ricerca di blocchi simili nell'operazione di codifica ed il processo di comparazione nella decodifica sono entrambe operazioni computazionalmente molto costose.
Indice 1. Cenni Storici 2. Giovanni Tritemio 3. Terminologia 4. Limiti teorici 5. Nascondere informazioni nelle immagini 6. Software: S-Tools 7. Watermark e Fingerprint 8. File System Steganografico 9. Altri metodi 10. Preghiera di Tritemio |
Guide correlate a "": |