Storia di questo post:
- riscrittura ed espansione periodica del post (iniziato il 21/03/2007)
- essermi dimenticato di questo post (il 16/07/2007)
- aver scritto su wikipedia la pagina di steganografia seriamente (il 24/03/2008)
- aver creato una pagina di riferimento in italiano, su delirandom, con i software di steganografia e steganalisi, da linkare da quella pagina e così da estrapolare da questo lungo e noioso papiro i software (da fare, ma ci credo).
Su wikipedia il mio argomento preferito (la steganografia) è tristemente uno stub, così ho pensato di scrivere le parti relative questi argomenti. Una volta completato aggiornerò le pagine online. Attualmente la steganografia è incompleta, del watermarking non c’e’ traccia e dei cover channel si è persa ogni notizia. L’information hiding, che dovrebbe racchiudere tutte queste arti, viene trattato solo nella sua accezzione inerente la programmazione.
Per cui, ho organizzato quest’albero:
- information hiding [bozza]
- steganografia [da chiudere]
- steganografia su rumore di fondo [da chiudere]
- canali sovraliminari [da chiudere]
- steganografia a chiave simmetrica/asimmetrica [da chiudere]
- steganalisi [da chiudere]
- steganografia digitale [forse rimarrà sempre in bozza, se sottostò ai software...]
- sicurezza delle applicazioni steganografiche [bozza]
- applicazioni stabili & user frendly [bozza]
- applicazioni per il 5% dei lettori [bozza]
- watermarking [non fatto]
- plausible denaiability [bozza]
- steganografia [da chiudere]
INFORMATION HIDING:
- (ultimo aggiornamento: 19 Marzo 2007)
Information Hiding è una categoria di studio che compete la sicurezza dell’informazione. Essa è dedicata alle tecnologie ed alle applicazioni atte a nascondere dei dati all’interno di altri dati, indipendentemente dal fatto che questi ultimi siano previsti o meno per questo scopo. (en: Information hiding laboratory, en-pdf: Information hiding - a survey, en-book: information hiding: tecniques for steganography and digital watermarking).
Questo campo di studio è meno noto dei i tre principali sottogruppi che lo compongono:
- Steganografia: E’ una tecnica che consente a due entità di scambiarsi messaggi senza che una terza parte in grado di sorvegliare le loro comunicazioni, possa sospettare lo scambio di dati in atto. Si tratta di una tecnica che può essere applicata a qualunque trasmissione. Storicamente viene citato l’uso di succo di limone per scrivere su pergamene, in modo che il messaggio venisse rivelato solo all’avvicinarsi di una candela. In questo caso la pergamena, apparentemente vuota, svolge il ruolo di contenitore. L’azione di avvicinare la candela è la chiave per estrarre il messaggio nascosto, ed il messaggio steganografico è quello che il mittente ha scritto con il succo di limone. Con l’avvento delle tecnologie digitali gli studi sulla steganografia sono fortemente aumentati, per lo più, per consentire delle comunicazioni riservate all’interno di regimi dittatoriali nei quali la crittografia è vietata, per cui diventa necessario non solo nascondere il contenuto di alcune informazioni ma nascondere l’esistenza stessa di ogni informazione non esplicitamente autorizzata.
- Watermark: E’ una tecnica di marcatura univoca. Un watermark adeguatmente studiato può essere applicato ad un dato digitale (documenti di testo, contenuti multimediali) in modo da tenere traccia dei marcatore e della relativa fonte di distribuzione (siti internet, distribuotori, rivenditori…). Se in un secondo momento si vorrà analizzare la diffusione del contenuto, tramite il marcatore univoco sarà possibile identificare quali copie sono state diffuse. Un uso naturale di questa tecnologia è stata la protezione del copyright nei contenuti multimediale, ogni cinema ed ogni anteprima personale dei maggiori film viene equipaggiata di watermark al fine di evitare la diffusione prematura del contenuto.
- Negazione plausibile: Libera traduzione di plausibile denaiability, indica una serie di tecniche in grado di cifrare dati in modo ripudiabile. Un dato viene definito ripudiabile quando non è possibile affermare con certezza che il dato estrapolato sia realmente quello che l’utente intende proteggere.
Dal punto di vista pratico, steganografia e watermarking possono sembrare simili, poiché entrambi hanno come principale requisito l’inserimento del loro dato in contenitori. Le loro differenze peculiari sono:
- Steganografia: la presenza del messaggio non deve essere individuabile, ad analisi automatiche e umane, di conformità, di contenuti e proprietà statistiche. La capacità di contenere grandi quantità di dati non è necessaria anche se preferibile. Non deve essere robusta, se chi controlla le informazioni in transito può deformare e ricreare il dato, anche il messaggio nascosto può risultare danneggiato.
- Watermark: la presenza del messaggio può anche essere individuata da un analista esperto, non è necessario ai fini della sicurezza del watermak che non si sappia della sua presenza. La quantità di dati che può essere inserita può essere prevista a priori. La robustezza dell’inserimento è una peculiarità del watermark, chi manipola il dato non dovrebbe riuscire ad eliminare interamente il watermark senza compromettere la qualità del dato in modo eccessivo.
STEGANOGRAFIA:
- (ultimo aggiornamento: 1 Aprile 2007)
Il termine steganografia è composto dalle parole greche stèganos (nascosto) e gràfein (scrittura) e individua una tecnica risalente all’antica Grecia che si prefigge di nascondere la comunicazione tra due interlocutori, e fu teorizzata dall’abate Tritemio attorno al 1500 nell’omonimo libro. La “Steganographia” di Tritemio si proponeva di poter inviare messaggi tramite l’uso di linguaggi magici, sistemi di apprendimento accelerato e senza l’utilizzo di simboli o messaggeri. L’opera iniziò a circolare in corrispondenze private e suscitò reazioni tanto 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.Il tipico scenario d’uso della steganografia vede Alice e Bob vittime di un Regime di controllo che impedisce loro comunicazioni differeti da quelle consentite. R può vedere tutte le comunicazioni tra A e B. Qualora A volesse comunicare a B dati non permessi da R, potrebbe prendere un dato permesso che svolgerebbe la funzione di contenitore, prendere il proprio dato in chiaro (messaggio steganografico) e la chiave (K) precedentemente scambiata con B. Utilizzando un sistema steganografico A otterrà un dato in tutto simile al contenitore, in modo che quando R lo osserverà non noterà anomalie. B invece, conoscendo la chiave K sarà in grado di estrarre il messaggio steganografico dal contenitore.
Le tecniche di applicazione steganografica sono potenzialmente infinite, poiché per ogni convenzione di encoding di dato possono esistere più tecnologie steganografiche applicabili. La diffusione la si deve al successo nella steganografia digitale, tuttavia risultano applicabili in qualuque ambito controllabile dall’uomo.
Le tecniche steganografiche non possono, o non sono mai state, riassunte in macrocategorie. Solitaente vengono contestualizzate ad una specifica tipologia di contenitori. Il fatto di poter utilizzare un file multimediale darà possibilità differenti dall’uso di una lettera scritta a mano. E’ bene vedere alcune delle tecniche classiche.
Steganografia su rumore di fondo: Il rumore di fondo può essere riassunto come la quantità di informazioni inutili all’interno di un contenuto. Normalmente viene associato alla qualità di una riproduzione audio: più è alta la qualità e meno saranno avvertibili dei disturbi rispetto alla produzione originale. La perdita di qualità in questo caso è dovuta alla conversione, ad imperfezioni nell’elettronica degli strumenti, ad interferenze fisiche o magnetiche. Questi possibili discostamenti dalla versione originale sono presenti nei contenuti continui, in contrapposizione a quello che avviene nei contenuti discreti. Ogni contenuto continuo può avere del rumore di fondo: il quadro di un artista può avere delle piccole sbavature sul naso della signorina in basso a destra, il filmato di piazza San Marco può avere delle sfuocature al passaggio dei gabbiani. In un contenuto
discreto come un libro, se c’è scritto “ciao” per tutte le 200 pagine, sarà così inoppugnabilmente per tutti, senza possibili imperfezioni di contenuto. Tutti i contenuti continui sono comprensibilmente vittime di alcune imperfezioni, e la steganografia sul rumore di fondo si basa sulla presenza plausibile di queste imperfezioni. L’esempio classico di steganografia su rumore di fondo è: un’immagine digitale composta da una serie di pixel che disegnano le figure. ogni pixel ha un colore informaticamente descritto da un numero. se cambio l’ultima cifra di quel numero il colore varierà di poco, a sufficienze che l’occhio non noti imperfezioni (o se dovesse notarle, potrebbero essere imputate ad una bassa qualità dell’immagine). Ma se il cambiamento dell’ultima cifra di ogni colore/pixel non fosse casuale, ma controllata dal mittente, in un secondo momento qualcuno potrebbe estrapolare i dati nascosti, riassemblarli ed aver così un dato che è viaggiato nascosto nell’immagine. Questa spiegazione viene erroneamente associata come unica applicazione steganografica, ma si tratta solo di una applicazione specifica (sostituzione dei bit meno significativi) in un contesto (lo scambio di immagini digitali) di una tecnica (steganografia su rumore di fondo). Questa tecnica è applicabile in qualunque ambito nel quale l’umano ha controllo e si presuppone plausibile una scelta casuale del suo comportamento. Ad esempio: la sbavatura sul naso della signorina, presente in un quadro di un tal pittore, può essere un caso d’errore plausibile per qualunque osservatore, ma l’autore avrebbe potuto definire con un destinatario un codice per cui la sbavatura sul naso avrebbe avuto un significato, se fosse stata fatta sul piede o sull’orecchio avrebbe avuto altri significati.
Formulando una definizione: ogni elemento plausibilmente accettabile come errore, come privo di significato o come imprevisto, se adeguatamente controllato e definito può contenere dei dati steganografati.
Canali sovraliminari: Il nome sovraliminare non è molto frequente, è più conosciuto il suo opposto, subliminale. La comunicazione subliminale prende questo nome dalla sua natura sottostante al mezzo di comunicazione portante. La comunicazione subliminale come la steganografia basata sul rumore di fondo, sono suscettibili ad attacchi di manipolazione (tamper attack). Se in un regime di informazione controllata venisse effettuata la conversione di formato di ogni contenuto continuo quest’opera renderebbe non estrapolabile qualunque dato potenzialmente nascosto. La resistenza alla manipolazione definisce la robustezza dell’algoritmo, molto spesso non assicurata. La conversione di un formato è un attacco facilmente applicabile, che non causa grosse problematiche in un sistema informativo e consente di reprimere l’uso di quella tecnica nelle sue differenti applicazioni. I canali sovraliminari agiscono nascondendo dati in elementi non manipolabili perchè sarebbe necessaria un’azione troppo invasiva in grado di snaturare qualunque contenuto. Ad esempio: il mittente potrebbe pubblica una serie fotografie dal soggetto inequivocabile (un cavallo, un palazzo, ecc…), per quanto l’attaccante effettui delle conversioni non cambierà il soggetto ritratto. Se il mittente ed il destinatario hanno condiviso una lista di soggetti con un valore corrispondente (dizionario steganografico) chi invia può convertire i propri messaggi nei valori definiti e comunicare questi valori tramite il soggetto fotografico. Il destinatario interpreterà i soggetti in relazione al proprio dizionario, otterrà la sequenza di valori comunicati e li convertirà, ottenendo il messaggio del mittente.
Steganografia pura e con chiave: Il processo steganografico si presuppone composto da almeno tre elementi: messaggio, contenitore e funzione steganografica. In quello stato viene definita steganografia pura. Il sistema si limita ad assicurare la generazione di un messaggio steganografico coerente, sia visivamente che statisticamente, ai i contenitori dello stesso tipo. E’ necessario che un sistema a tre fattori venga tenuto segreto, poichè un attaccante in grado di effettuare l’algoritmo al contrario, estrarrebbe i dati nascosti. Diventa necessaria l’aggiunta di un fattore segreto, in modo che l’algoritmo possa essere reso pubblico e sia il segreto condiviso tra mittente e destinatario a rendere impossibile ad un attaccante l’estrazione dei dati. Un segreto condiviso è anche noto come password simmetrica. In questa condizione, l’operazione invertibile diventa possibile solo a chi ha la password, ed un eventuale attaccante deve ricorrere a meccanismi di steganalisi per individuare la presenza di dati nascosti ed in seguito (se non fosse sufficente) a crittanalisi, per accedervi. L’uso di un segreto può avere prevalentemente due utilizzi: la cifratura preventiva e l’unicità dell’algoritmo steganografico. La cifratura preventiva è un procedimenti che può essere esterno al processo steganografico, mira a trasformare il dato in una serie di byte ad altra entropia in modo che, una volta estratto dall’analista, non sia riconoscibile dall’estrazione di rumore che avverrebbe in caso di mancate steganografia. normalmente viene ottenuto tramite compressione ed applicazione crittografica. Qualunque tipo di applicazione crittografica può essere utilizzato in questo punto: simmetrica, asimmetrica, Diffie-Hellman ed altri. Per unicità dell’algoritmo steganografico si intende un algoritmo in grado di cambiare le sequenze di injection steganografica in relazione ad una chiave. Ed esempio: avere un dizionario il quale ordine è influenzato dalla chiave o sparpagliare i punti di azione all’interno di una bitmap in relazione ad una chiave. L’effetto ai fini della sicurezza del sistema è lo stesso, ma in questo caso non sarebbe applicabile della crittanalisi a seguito di steganalisi, i due attacchi devono avvenire in concomitanza.
Steganalisi: la steganalisi rappresenta l’attacco alla quale la tecnica e l’applicazione steganografica vengono sottoposte prima di poter essere considerate sicure. Come per la crittanalisi, esistono vari tipi d’attacco, differenziati dalle informazioni che l’attaccante possiede. Questa differenza è necessaria in quanto l’utente che ne fa uso può valutare le differenti casistiche di compromissione che può subire e contestualizzare il suo rischio effettivo, a fronte di attacchi noti. Principalmente si tratta di queste sei forme d’attacco:
- Stego-only attack: Solamente il messaggio steganografico è in possesso dell’attaccante, che deve comprendere se ci sono dati nascosti o no. Si tratta della tecnica d’attacco più complicata viste le poche informazioni in mano all’attaccante. Gli attacci efficaci di questo gruppo si basano su alcune particolari tracce lasciate dal software steganofagico (detta signature) o su anomalie statistiche presenti nel messaggio steganografato.
- Know cover attack: Un attacco che si basa sulla conoscenza del contenitore prima di essere utilizzato per steganografia. Se pensiamo ad un’immagine o ad un file multimediale comprendiamo più facilmente l’efficacia di questo attacco. Un attaccante in grado di controllare le nostre comunicazioni può sapere quali immagini abbiamo scaricato negli ultimi periodi, e nel caso ne dovesse vedere una uscire, potrebbe facilmente verificare che visivamente è simile ma il suo contenuto digitale differente. Per concludere l’attacco dovrebbe verificare che le modifiche non sono imputabili ad alcun sistema di fotoritocco, in modo da poter escludere quella possibilità abbastanza frequente.
- Know message attack: Questo attacco viene applicato quando si presuppone che la parte ricevente abbia rivelato, o gli sia stato preso, il messaggio ricevuto stramite steganografia. L’attaccante vuole scoprire in un secondo momento chi ha inviato il messaggio ed effettua degli attacchi che possono godere di queste informazioni. Il messaggio ha una sua caratteristica di lunghezza e di distribuzione statistica, per cui è possibile in alcuni messaggi steganografati riconoscere questi tratti discriminanti.
- Chosen stego attack: la tecnica steganografica utilizzata ed il messaggio steganografato sono noti all’attaccante, può quindi valutare se le modifiche apportate dall’applicazione corrispondono a quelle individuabili sul messaggio.
- Chosen message attack: l’attaccante conosce l’applicazione di steganografia e può generare messaggi steganografati (questo tipo di attacco si presta bene su applicazioni che generano autonomamente il contenitore). A seguito di queste generazioni può effettuare comparazioni tra il database così creato e il traffico dell’utente.
- Know stego attack: L’attaccante conosce l’applicazione steganografica, il contenitore originale ed il messaggio steganografato. Questo è l’attacco più difficile al quale resistere, l’unico segreto è la chiave crittografica.
Alcuni documenti sull’argomento sono:Detecting Hidden Information in Images: A Comparative Study, A Mathematical Approach to Steganalysis, Steganalysis of JPEG Images: Breaking the F5 Algorithm
STEGANOGRAFIA DIGITALE:
- (prima stesura: 26 Marzo 2007, molto da rivedere sulle modalità d’esposizione :)
Per steganografia digitale si intendono le tecniche e le applicazioni steganografiche utilizzabili su contenitori digitali. La divisione che di seguito viene fatta è legata esclusivamente all’usabilità dell’applicazione. Essendo la steganografia un campo di ricerca, i software sviluppati possono non avere come finalità l’uso da parte dell’utente, ma la dimostrazione di una tecnologia.
Sicurezza delle applicazioni steganografiche: L’attacco alla steganografia è la steganalisi, la steganalisi no è un attacco finalizzato ad estrarre l’evidenza dei dati che sono transitati, ma semplicemente a dire se questi dati ci sono o no. La possibiltià per l’attaccante di dare una risposta così limitata (SI/NO) gli fornisce una serie di armi altrimenti non considerate in altri ambiti quali la crittanalisi. La steganalisi è un attacco teoricamente applicabile a differenti livelli: sia su un computer rubato ed acquisito interamente, sia su una directory raggiungibile tramite freenet, sia su una mailbox condivisa, su un CD distribuito da una rivista. qualunque scenario è plausibile, quello che cambia è la quantità di informazioni che l’attaccante dispone. Ogni volta che viene teorizzato un attacco di steganalisi si presuppone quindi il caso peggiore: l’attaccante conosce tutto quello che è pubblico, l’attaccante è in grado di conoscere il traffico di entrata e d’uscita dell’utente (fisico e virtuale), l’attaccante è in grado deformare i messaggi e fare attacchi attivi (si intende quindi la possibilità di riinviare dati, inviarne di falsi, modificare i presenti, ecc…)
La steganografia si applica ad un contesto ben specifico (normalmente legata all’uso di un contenitore) ed un utilizzo estensivo della stessa può rappresentare un anomalia a causa di un uso troppo pedante del contenitore stesso se non adeguatamente motivato. Ad esempio, che io diffonda immagini su internet è sensato, ad esempio potrei pubblicare ogni lunedì la foto del weekend e li’ nascondere dei dati, ma sarebbe meno motivabile se i contenuti delle immagini non fossero vincolati ad un’esigenza temporale e personale.
La steganalisi si basa sull’individuazione delle anomalie, possiamo estrmizzare l’esempio in questo modo: prendendo il bit meno significativo di una BMP, raramente si ottiene una sequenza di dati ad alta entropia (bassa ridondanza) ma sovente, prima di utilizzare una tecnica steganografica, si comprime il dato da nascondere e lo si cifra (o lo si cifra e basta) in entrambi i casi il dato che verrà iniettato nel contenitore sarà ad alta entropia. La presenza di un dato ad alta entropia nei bit meno significativi non è certamente una dimostrazione di steganografia, ma è un’anomalia che può essere considerata.
L’utilizzo di ogni tecnica steganografica che nasconde dei dati all’interno di posti nei quali i dati non ci dovrebbero stare, sta andando a cambiare alcune proprietà, note o meno, del contenitore. E’ importante, quando si sviluppano tecnologie ed applicazioni, che l’anomalia non si avvertibile o che lo sia il meno possibile ad un’analisi statistica. Un palliativo naturale è l’uso di molte applicazioni utilizzate a rotazione, in modo che eventuali anomalie non si ripetino con una frequenza eccessiva, ma essendo diffuse nel tempo possano risultare più “accettabili”. Si stà parlando di attacchi del tutto teorici tuttavia, al momento non so quanti si metterebbero a fare analisi statistica dei bit meno significativi tra le immagini inviate in un anno di email, tra gli spazi bianchi delle email in HTML, tra i file musicali passati tramite MSN/Skype :)
L’utilizzo di applicazioni steganografiche differenti in parallelo consente inoltre un aumento sensibile della banda utilizzabile. Se ogni contenitore può fornire al massimo 1/20 - 1/8 della propria capacità, l’utilizzo di più contenitori farà aumentare la quantità finale dispinibile. L’utilizzo di alcuni contenitori a rotazione tra molti possibili renderà l’individuazione molto più difficile.
Qui un esempio di pratical steganalysis, L’attaccante conosce il software, conosce il funzionamento dello stesso (che non è implicito), può studiarlo e dimostrare la vulnerabilità. In linea teorica quindi, la sicurezza di un sistema di steganografia è vincolato strettamente all’algoritmo di hiding che utilizza. Questo in casi reali però non è sufficente: Un’analista che deve rispondere SI/NO potrà affidarsi anche ad altri elementi, esterni al semplice algoritmo steganografico, che lo porteranno a raggiungere una conclusione. Questi altri elementi sono la dimostrazione di come, per quanto l’algoritmo sia sicuro, la persona non lo sia. Per questo è necessario scindere ciò che compete la steganografia da quello che sottostà ad altri sistemi di sicurezza:
- Applicazione di steganografia presente sul disco: La segretezza dell’applicazione steganografica non è un requisito necessario, ma può dare indicazini sulla tipologia di steganalisi da applicare. La presenza di una applicazione steganografica in un regime controllato, dove la crittografia viene vietata, è automaticamente indice di sospetto. Per questo motivo l’applicazione ed il suo utilizzo può essere nascosto con altre tecnologie:full disk encryption, file system remoti (gmailfs), plausible denaiability, crittografia ripudiabile, utilizzo di software anti forense (in grado di rendere un’analisi di un disco rubato molto meno facile), exe packing.
- Presenza di contenitore inalterato e di contenitore steganografato: Questa sembrerebbe l’evidenza che il problema non stà nella tecnologia ma nell’utilizzatore :) Ma in verità, un attaccante in grado di controllare il traffico può discriminare con facilità che un dato scaricato da internet aveva un certo checksum, e nonostante sembri apparentemente identico a prima, il checksum risulta quando l’utente lo riinvia. Per questo motivo bisognerebbe negare la possibilità ad un attaccante di confrontare altre versioni del contenitore, quindi è suggeribile generare autonomamente il proprio contenitore, in modo da poter eliminare l’unica versione “pulita” a seguito dell’iniezione steganografica.
- Dato plausibilmente estratto: E’ possibile che un attaccante possa avere in mano il dato estratto (può essere perso dal destinatario o essere in suo possesso per altri motivi), Questo consente di effettuare attacchi analoghi al known-plaintext, che è uno scenario d’attacco la quale sicurezza viene delegata alla parte crittografica dell’applicazione steganografica, a dimostrazione del fatto che diventa necessario comprimere e poi cifrare, prima di iniettare il dato.
- Comunicazione non sicura dei dati: L’uso di applicazioni steganografiche remote (come spammimic o mozaiq) che non preservano la riservatezza dei dati (per quanto spammimic sia in HTTPS non la fornisce in quanto è possibile effettuare attacchi di correlazione sulle transazioni SMTP che ne conseguono) per cui diventa naturale proteggere quell’aspetto con delle tecnologie adeguate (essendo la steganografia una tecnologia che preserva sia l’anonimato che la riservatezza, l’utente potrà optare per delle soluzioni di semplice cifatura come SSL, o d’anonimato come mixminion, TOR)
Questa considerazioni di sicurezza sono da considerare necessarie e indipendenti dalla tecnologia steganografica applicata. Sono le principali accortezze che consentono di non rompere la catena della sicurezza, che altrimenti avrebbe il canale steganografico come punto forte ed una serie di inaccortezze come anelli attaccabili. Una più corretta valutazione di queste precauzioni va fatta a seguito di un’analisi del proprio modello di minaccia, passo necessario per poter equilibrare gli sforzi alla necessità.
Applicazioni stabili & facilmente usabili:
- Puff: software italiano di steganografia e watermarking per windows, scritto da Oliboni Cosimo, supporta 16 formati come contenitori possibili. Ha il supporto di feature uniche nel suo genere tra i software free.
- stegomagic: Software visuale, solo Windows supportato, per la steganografia in testi, file musicali e bitmap, buona documentazione sugli algoritmi utilizzati.
- spammimic: una delle applicazione più fantastuplendide esistenti nella stegointernet :) conente di inviare email di apparente spam che nascondono invece dei dati validi. Lo spam, il suo traffico quotidiano, la sua plausibile insensatezza sono in questo caso la copertura.
- MSU StegoVideo: Applicazione di steganografia su video, buona documentazione fornita dal gruppo di sviluppo, per Windows.
- (A questo punto ho scoperto stegoarchive in ogni caso la raccolta delle applicazioni stabili principali continua perchè mi interessa una lista in italiano. Inoltre si trova una spiegazione bella della steganografia qui).
- outguess: Il software è per linux, è stato studiato dall’autore di stegdetect, uno dei pochi software di steganalisi su .jpg. Nel suo studio Niels Provos dimostra la debolezza di parecchi software di steganografia ad analisi statistiche. Il documento deve essere un riferimento per tutti coloro che vogliono creare software di steganografia. Nello stile di ogni buon ricercatore, altri 3 esperti hanno attaccato outguess trovando anche in esso delle debolezze. A seguito di questo è stata prodotta una versione, speriamo definitiva, del software di steganografia.
- steghide: Software di steganografia all’interno di file multimediali (JPG, BMP, WAV, AU), utilizzabile per l’inserimeto di blocchi di dati in blocchi di copertura. qui la documentazione ed esempi, viene gia’ distribuito per windows e per linux. da command line.
- mozaiq: applicazione di steganografia classica: dato+password+immagine = pacchetto steganografato. la bellezza dell’applicazione sta nel fatto che è via web. Certo se fosse stato messo raggiungibile tramite https saremmo stati più felici, ma pace.
Applicazioni per il 5% di persone interessate più della media:
- steganography in php: simpatico hack in php, che converte una JPG in PNG e consente di steganografare dei dati al suo interno, l’uso di php come script lo rende simile ad ogni altro software locale, ma l’uso di PHP come servlet consente di integrare della steganografia in relazione ad operazioni web. Con un po’ di hacking ulteriore sarebbe possibile sviluppare un framework per la comunicazione nascosta selettiva per utente in seguito ad identificazione.
- steganografia su sessioni di rete, nello stesso periodo sia io che synacklabs abbiamo presentato due software differenti che fanno la stessa cosa: steganografia su sessioni di rete utilizzando l’IP ID. Qui stegtunnel, qui ipidsteg.
- mod_stego: sviluppato da bakunin, un modulo per apache in grado di applicare trasparentemente steganografia alle pagine richieste.
- Il SANS nel 2000 con questo articolo di Christian Smith ha recensito svariati tools per effettuare cover channel di amministrazione remota, all’interno la completa bibliografia.
- hydan: Steganografia all’interno di file eseguibile per linux (ELF), in linea teorica sarebbe importante tenere l’applicazione di steganografia stessa nascosta, poichè la presenza di un software di steganografia potrebbe essere già un feedback per una steganalisi molto, molto approsimativa. Un software di protezione eseguibi è burneye, converte degli eseguibili ELF in una variante cifrata eseguibile solo con password (qui il difficile attacco). hydan nasconde dati all’interno di eseguibili, unendo questa tecnologia a quella di burneye, sarebbe possibile ottenere dei binari a doppio uso, che nel caso venga provvista una password eseguino il software steganografato all’interno di un binario altrimenti comune (già un packer che effettua una verifica sarebbe qualcosa).
- NiceText: software per la conversione di dati generici in linguaggio pseudo naturale, in modo da fare occultazione di dati all’interno di file di testo plausibili.
- SNOW: un acronimo che stà per Steganographyc Nature Of Whitespace, modifica file di testo in file con lo stesso testo, ma con degli spazi bianchi messi apparentemente “meno bene”. Questo plausibile comportamento è l’azione di questo software.
- StegFS: FileSystem per linux steganografato, studiato in vari paper ed esempio di “piuttosto che l’informazione cada in mano al nemico, la perdo”. Il filesystem steganografato funziona utilizzando i dati spuri presenti nelle parti non utilizzate di un hard disk, questo implica che al primo utilizzo verrano sovrascritti. Al momento un utilizzo più moderno di un filesystem steganografato dovrebbe sfruttare gli archivi di file multimediali che si trovano plausibilmente in ogni computer. Tramite FUSE sarebbe possibile implementare delle routine di steganografia in un modulo apposito, in modo da avere un filesystem virtuale che sfrutta i dati steganografabili all’interno di JPEG, AVI ed MP3, in completa lettura e scrittura, senza rischio di perdere dati.
Applicazioni trasparenti, su flussi e su blocchi: Oltre ai differenti contenitori di supporto, le applicazioni di steganografia vanno divise in almeno 3 macrocategorie. Le applicazioni a blocchi consentono la steganografia di una porzione di dati scelta dall’utente verso un contenitre sufficentemente grande da contenere il dato. Questo non è utilizzabile in tutti i contesti perchè può essere che il dato da nascondere sia troppo grande e non sia possibile scegliere arbitrariamente un contenitore. Le applicazioni su flussi si intendono applicazioni che non sono vincolate alla grandezza del contenitore, già la possibilità di poter fare una catena di contenitori è sufficente. In questo modo un contenitore previsto in anticipo può essere utilizzato. Le applicazioni trasparenti sono in certi casi le applicazioni più efficaci, stanno a fornire dato steganografato tramite un contenitore che non c’è ancora. Le applicazioni di rete sono un esempio efficace. Se un webserver mi comunica dati steganografati con mod_stego, è sufficente che le continui a navigare sul sito finchè il dato non è stato inviato interamente. Per applicazione trasparente si intende anche dire che l’iniezione di dati steganografati e l’estrazione non avviene con applicazioni fatte su misura, ma avviene parallelamente ad un uso comune degli strumenti. Se per interpretare i dati letti con mod_stego fosse necessario un browser apposito ed un web server apposito nessuno lo utilizzerebbe, invece se la steganografia risulta applicabile tramite plugin, redirection, proxy ed altre tecniche analoghe, diventa anche possibile applicarla in modo trasparente all’utente ed al suo software preferito.
WATERMARK:
CRITTOGRAFIA NEGABILE:
(buttato giù il 16 Luglio 2007)
Il termine Plaiusible daniability è sempre stato inteso in ambito politico/strategico. In ambito informatico è stato associato ad alcune caratteristiche offerte da crittografia e stranografia. Rappresenta la protezione di cui gode un’informazione che è “plausibilmente negabile”. Si identificano le informazioni per quello che contengono. La loro esistenza c’è perchè i bit, piuttosto che la pergamena scritta o la lettera stampata ci sono. L’esistenza dell’informazione non può essere negata. Facendo parte di un mondo oberato di informazioni diventa plausibile che si abbiano informazioni ricevute consapevolmente o inconsapevolmente, sia che non siano presenti reali informazioni in alcuni contenitori, sia che non siano rilevanti (basti pensare alla visualizzazione di una pagina con dati random, o alla visualizzazione esadecimale di un file eseguibile, si tratta sempre di informazioni inutilizzabili nonostante la loro esistenza).
Queste considerazioni: cos’è importante, cos’è rilevante, cos’è univoco e discriminatorio viene fatto da qualunque persona sta cercando di impadronirsi delle vostre informazioni. Questa considerazioni ed il processo (quasi empirico) che porta un’analista (forense ?) a giudicare quale informazione è di vostra pertinenza e quale sia infosmog è il processo che la plausible deniability va ad attaccare.
Si tratta di nascondere l’esistenza di un’informazione non impedendone l’individuazione (come farebbe la steganografia) ma confondendo l’analista, che attribuirebbe l’anomalia riscontrata ad una spiegazione plausibile.
Pensate di memorizzare dei testi scritti nella cache del browser. se si fa attenzione alla data, al formato dei nomi ed altre caratteristiche tipiche della cache, un’analista considererebbe la proprietà di quei file non nostra, perchè apparentemente scaricati da internet.
La dicitura plausible deniability ha preso senso in letteratura informatica solo in ambito correlato alla crittografia ed alla steganografia. per questo motivo si usa distinguere tra Plaiusible daniability e Deniable encryption.
Gli esempi classici di crittografia negabile sono:
- truecrypt: software di crittografia su filesystem, in grado di creare dei volumi cifrati all’interno di file contenitore. La caratteristica di truecrypt è di non lasciare alcun tipo di magic number, di checksum o altre informazioni necessarie per poter riconoscere se decifrazione del dato è andata a buon fine. nulla di strano, del resto una delle forze di chi protegge un dato è di non lasciare una verifica semplice all’attaccante che effettua bruteforce. truecrypt consente di creare volumi all’interno di file apparentemente random, e di incapsulare file all’interno di volumi a loro volta cifrati. Questo non è sufficente, poichè la presenza di file apparentemente randomica va spiegata allo stesso modo di un software di cifratura. truecrypt implementando gli hidden volumes consente la creazione di volumi cifrati estrapolando i dati da porzioni di disco non riconducibili ad un singolo file.
- 2c2 e 4c: implementazione pratica di software in grado di cifrare con due chiavi differenti. la prima chiave estrae un dato, la seconda un altro. ad analisi stastistica del dato cifrato non risulta la presenza del dato realmente cifrato, oltre a quello “di copertura”.
- steganografia linguistica: http://www.nicetext.com implementa un sistema di steganografia (stegonagrafia, a loro dire :) che si basa sulla scelta di un sinonimo piuttosto che un altro. il documento di ricerca è qui: http://www.nicetext.com/doc/infrasec02.pdf e rispecchia gli standard di negazione plausibile in quando la scelta di una parola piuttosto che un suo sinonimo è nella plausibile libertà di ogni persona che scrive, e in assenza della chiave non può essere estrapolato un significato aggiuntivo.
- Plaiusible daniability toolkit: del nomad mobile research center è un toolkit pensato perchè il proprio computerabbia una serie di contromisure attive affinchè un’analisi del disco fornisca sufficenti dubbi all’analista prima di potervi attribuire la paternalità di un’azione.
L’interpretazione non informatica della negazione plausibile: [todo]
April 10th, 2007 at 12:23 pm
Per chi fosse interessato ad approfondire la steganografia, vorrei sottoporre all’attenzione l’uscita imminente di uno straordinario libro in cui sono svelati i segreti delle comunicazioni informatiche dei terroristi di Al-Qaeda attraverso la steganografia. Sembra sia unico nel suo genere il Italia…dal momento che esistono solo testi in inglese che parlano esclusivamente di steganografia.
Il titolo del libro è “la steganografia da Erodoto a Bin Laden”.
Questo libro è organizzato in maniera tale da prendere per mano il lettore ed accompagnarlo in un lungo viaggio alla scoperta delle tecniche elusive della comunicazione.
I primi tre capitoli, oltre che definire la steganografia e spiegare il sistema di watermarking e come attaccarlo, ci portano attraverso la sua evoluzione storica facendoci entrare dentro le varie tecniche utilizzate, a volte rudimentali, altre a dir poco geniali, in un viaggio che ci porterà da Erodoto sino alle tecnologie moderne di Bin Laden, passando attraverso Tritemio, Cardano, la scitala spartana, l’inchiostro invisibile, l’acrostico e tanti altri.
Il quarto capitolo entra un po’ di più nello specifico della materia analizzando la steganografia moderna dal punto di vista tecnico, fornendo utili spiegazioni ed esempi sui modelli steganografici utilizzati al giorno d’oggi.
Il quinto capitolo invece é dedicato al moderno software steganografico. In esso é spiegato l’utilizzo dei software maggiormente in uso, ove reperirli, destinazione d’uso ed esempi su come celare un testo segreto all’interno di un file sonoro o all’interno di una immagine. Il sesto ed ultimo capitolo é dedicato alla stegoanalisi. Ossia, in netta contrapposizione alla steganografia, che come vedremo ha lo scopo di celare la comunicazione, la stegoanalisi é la scienza che si occupa di “rompere” i sistemi steganografici cercando di scoprire il messaggio nascosto all’interno di un messaggio contenitore.
Maggiori informazioni su http://it.geocities.com/steganomania
Grazie per l’attenzione.
Nicola Amato
July 12th, 2007 at 9:01 am
Davvero interessante e ben fatto questo articolo.
Sto studiando la steganografia per la tesi e trovo molto utile le cose che hai scritto. Mi interessa la steganografia perchè ho realizzato un “tunnelling” inviando dati all’interno dell’header IP. Sai darmi qualche dritta su hidden channel?
Grazie mille!
PS: ma “DIVORANO CHI CONTROLLA L’INFORMAZIONE” è un messaggio nascosto??? :-D
CIAO
July 13th, 2007 at 12:17 pm
ah, tunnelling nell’ip header, questo è del 2000 ma puo’ essere un buon inizio: http://www.s0ftpj.org/docs/covert_shells.htm
poi ne ho parlato un po’ qui: http://www.s0ftpj.org/bfi/dev/BFi12-dev-10.tar.gz
Dovresti alla fine aver sufficenti keyword per proseguire :)