Algoritmi steganografici

24 November 2008 da Marco

Nel precedente articolo avevo parlato dell’algoritmo LSB, che è il capostipite degli algoritmi steganografici basati sulla sostituzione dei bit ridondanti. In questo articolo descriverò abbastanza dettagliatamente uno degli algoritmi steganografici più utilizzati, ovvero quello di Andrew Brown, fra l’altro implementato in un software chiamato S-Tools.
Prima di arrivare a ciò, vorrei descrivere come la steganografia possa essere attaccata in modo da vanificarne gli scopi.

In primis va chiarito che colui che tenta di violare una trasmissione di informazioni segreta viene chiamato steganalista, e la sua materia di studio è la steganalisi. Secondo il principio di Kerckhoff, valido egualmente anche in crittografia, la sicurezza della steganografia non fa imputata al fatto che il sistema steganografico sia sconosciuto allo steganalista, ma bensì che la sola chiave per accedere all’informazione non sia nota.
Gli attacchi si possono raggruppare in due piccoli gruppi, quelli passivi e quelli attivi:

Attacchi passivi:

stego-only-attack: lo stegoanalista intercetta il file steganografato ed è in grado di analizzarlo. E’ il più importante tipo di attacco contro un sistema steganografico perché è quello che solitamente capita di utilizzare.
stego-attack: il mittente ha usato lo stesso cover ripetutamente per nascondere i dati. Lo steganalista possiede un file steganografato diverso ma originato dallo stesso cover. La differenza è che il messaggio celato all’interno sarà diverso, ma il compito di analisi sarà agevolato dal fatto che il file contenitore è il medesimo. Per rendere inutile questo tipo di attacco, come anche il precedente, basta avere l’accortezza di utilizzare sempre un file contenitore diverso, e soprattutto di scarsa notorietà.
cover-stego-attack: In questo caso lo steganalista intercetta un file steganografato ma è a conoscenza di quale file “vergine” è stato utilizzato come cover. Basterà fare un confrontro tra i due per identificare i bit modificati, ed in caso di assenza di protezioni aggiuntive, risalire all’informazione.
cover-emb-stego-attack: Bè, questo è il caso più favorevole, in cui lo stegoanalista possiede tutte le informazioni necessarie per estrapolare l’informazione. Tuttavia ad successiva sessione i dati potrebbero cambiare, e quindi costringere l’analista ad un stego-only-attack.

Attacchi attivi:

manipulating the stego data: L’analista è in grado di frapporsi tra il mittente ed il destinatario, modificare il file steganografato eliminando l’informazione occultata e quindi inviare il file modificato al destinatario. Una sorta di attacco man in the middle.
manipulating the cover data:
In questo caso si è in grado di manipolare il cover e intercettare il file steganografato. Si potrà risalire all’informazione nascosta attraverso passaggi più o meno compessi, magari sempre confrontando i due file cercando di scoprire i bit incriminati.


L’algoritmo di A. Brown e S-Tools

Andrew Brown è l’artefice di uno degli algoritmi steganografici più utilizzati, che lui stesso ha implementato in un software chiamato S-Tools (scaricabile qui).

Si tratta di un algoritmo sostitutivo appartenente alla famiglia LSB. E’ in grado di nascondere più messaggi nello stesso file, che in questo caso può essere un’immagine in formato gif o bitmap oppure un file sonoro con estensione wav. L’algoritmo procede attraverso tre fasi:

I primi due stadi sono dei preliminari e consentono di pretrattare i dati da nascondere secondo metodi distinti dalla steganografia; essi infatti vengono compressi in modo che occupino meno spazio e quindi criptati per avere un ulteriore grado di sicurezza. Il primo punto consente anche di avere un cover di dimensioni più piccole.

Il terzo passo è il più importante da un punto di vista steganografico. Tale fase si occupa di iniettare il messaggio nascosto nei bit meno significativi di alcuni byte scelti casualmente, o meglio, a seconda della password inserita dall’utente. Considerando come file di copertura un wav, è noto come quest’ultimo si ottiene attraverso la simultanea applicazione dei due procedimenti di campionamento e quantizzazione. Per esempio in Windows la quantizzazione è attuata con 8 o 16 bit, cosicché si può attingere rispettivamente a scale di 256 e 65536 valori. Cambiare il bit meno significativo di alcuni byte che operano la digitalizzazione, soprattutto nel secondo caso, produce modificazioni impercettibili anche alla più sensibile delle orecchie. Si stratta quindi di un processo del tutto analogo a quello adottato per le immagini. La particolarità dell’algoritmo di Brown sta nel fatto che i byte da modificare vengono scelti casualmente e dipendono sempre dalla password immessa dall’utente.

.

Steganografia nei testi : Texto

Alcuni algoritmi sono in grado di nascondere dei messaggi all’interno di frasi opportunamente generate, ed è proprio questo il caso di Texto (sorgenti scaricabili qui), un programma sviluppato da Kevin Maher. Va detto subito che le frasi prodotte, pur avendo un significato grammaticale, assumono un indiscutibile valore semantico, apparendo il più delle volte come periodi demenziali. Ovviamente le frasi generate da Texto sono in inglese, essendo lo stesso autore di lingua anglosassone. Maher ha approntato un dizionario di parole divise in categorie che sono: oggetti, luoghi, verbi, avverbi e aggettivi. Inoltre ha generato delle frase che fanno da template da completare con le parole appena menzionate.
Ogni categoria è costituita da 64 alternative, quindi si possono codificare fino a 6 bit, ed essendo gli spazi vuoti cinque (per ciascun template), il testo segreto per ogni frase può essere costituito da un massimo di 30 bit. Il tutto funziona se il mittente ed il destinatario utilizzano il medesimo dizionario, inoltre è facile intuire come l’esigua quantità di parole faciliti il compito dello steganalista. Tuttavia la sicurezza può essere aumentata ampliando il dizionario ed il numero di template, o magari cifrando il testo prima di steganografarlo.


Permutazioni pseudo-casuali

Gli algoritmi di permutazione pseudo-casuale appartengono sempre alla famiglia degli LSB e si basano ugualmente sulla modifica dei bit meno significativi. La differenza sta nella scelta dei byte da modificare, che non viene fatta come una sequenza seppure random come nel caso di S-Tools, ma con la permutazione di un sottoinsieme di tali byte. Una permutazione di n oggetti è la nuova disposizione degli stessi secondo un nuovo ordine. Il numero totale di permutazioni aumenta in modo esponenziale all’aumentare del numero di oggetti – byte in questo caso. In particolare le permutazioni di n byte sono n! (n fattoriale), quindi anche una piccola frase da 512 bit può essere permutata in talmente tanti modi che l’analizzarli tutti richiederebbe – anche ad un computer – un tempo non indifferente. Scegliendo come successione di byte da modificare una permutazione del sottoinsieme prescelto si perde la caratteristica di ordine, cosicché il messaggio occultato viene “sparpagliato” tra i byte del cover. La distribuzione non ordinata dei bit modificati tra i byte disponibili fornisce un ulteriore elemento di sicurezza contro eventuali attacchi.
Questa è una tecnica utilizzata molto anche in crittografia, ma ovviamente le modalità di impiego sono ben diverse.

.

Conclusione

Bè, si fa per dire. D’altronde di cose da esporre sulla steganografia ce ne sarebbero ancora molte, ma diciamo che per il momento è tutto. Per il futuro ho intenzione di illustrarvi come funziona un’altra interessante applicazione pratica della steganografia, ovvero i file system steganografati. Continuate a seguirci ;)

Condividi l'articolo!
  • Digg
  • del.icio.us
  • Facebook
  • Diggita
  • StumbleUpon
  • Technorati
  • Twitter

Tags: , , ,
Pubblicato in Informatica | Commenti (2)

2 Risposte a “Algoritmi steganografici”

  1. Neverwhere ha scritto:

    Non conoscevo Texto ma penso sia un prodotto interessante, sarebbe altrettando interessante riuscire a fare la stessa cosa con la nostra povera lingua italiana. Chissà, magari nei testi di tiziano ferro si nasconde qualche byte sensato.

  2. Marco ha scritto:

    sì, e non sarebbe nemmeno troppo difficile da fare visto che il codice sorgente è libero. con qualche modifica si potrebbe adattarlo alla lingua italiana.
    credo che il risultato assomiglierebbe molto ad alcuni discorsi di politici. asd

Leave a Reply