Funzionamento della Steganografia in informatica con esempio pratico

Funzionamento della Steganografia in informatica con esempio

Introduzione alla steganografia

Il termine steganografia deriva dai vocaboli greci stèganos (nascosto) e gràfein (scrivere). Essa è un insieme di tecniche che consentono di nascondere messaggi, che devono essere intelligibili al solo destinatario, inserendoli all’interno di un contesto del tutto estraneo, che funge da contenitore, in grado non tanto di nascondere il contenuto ma la stessa esistenza della comunicazione, agli occhi di un eventuale osservatore. In altre parole, la steganografia è la scienza (o arte) di comunicare senza essere osservati, quindi una tecnica per nascondere informazioni importanti. La steganografia valuta la robustezza dei suoi algoritmi sia in condizioni di analisi da parte di individui (che il dato generato sia coerente, almeno alle apparenze, con dati simili) sia da parte di computer (quindi analisi matematiche, statistiche e di confronto con archivi).

A differenza della crittografia, dove l’avversario sa dell’esistenza della comunicazione, l’obiettivo della steganografia è nascondere l’esistenza stessa della comunicazione nascondendo il vero messaggio all’interno di un messaggio dal significato innocuo. Infatti, l’algoritmo di steganografia a differenza di un algoritmo crittografico deve tenere conto della forma plausibile che i dati generati devono avere, affinché non destino sospetti.

La stegoanalisi

La stegoanalisi rappresenta tutte quelle tecniche di analisi per la rivelazione di messaggi nascosti (anche senza decifrarli). Le possibili motivazioni sono numerose e tra queste si distinguono: contro-spionaggio, anti-terrorismo, controllo dell’opinione pubblica in regimi totalitari, raccolta di dati (anche sensibili) per motivazioni commerciali o per fini illeciti. Indipendentemente dalle motivazioni lo sviluppo di tecniche di steganalisi è indispensabile allo studio delle stesse tecniche di steganografia. Essendo che la stegoanalisi può essere anche definita come la scienza (nonché l’arte) del rompere la sicurezza di un sistema steganografico, da questo scaturisce che un attacco con successo ad uno stegosistema consiste nello scoprire che un determinato file contiene dati nascosti anche senza conoscerne il significato.

Nella stegoanalisi vale il principio di Kerckhoff. Il principio di Kerckoff definisce semplicemente che il sistema steganografico è conosciuto dall’attaccante e la sicurezza del sistema dipende dal solo fatto che la chiave segreta non sia conosciuta dallo stesso attaccante.

Lo stegosistema

Il sistema steganografico ( o stegosistema) prevede che due utenti, A e B, vogliano scambiarsi dati segreti. Per fare ciò, nascondono tali dati in frammenti di informazione che risultano innocui a chi riesca ad intercettarli. I dati da nascondere costituiscono il messaggio segreto (embedded) e vengono nascosti (incapsulati) in un altro frammento di informazione detto file contenitore (o file carrier) dando origine al frammento stego che è, appunto, una copia molto simile ma non identica del file contenitore.

Per effettuare l’incapsulamento (embedding) A utilizza una funzione steganografica f che, presi in input il contenitore, il messaggio segreto e una chiave segreta, produce il frammento stego. Una volta effettuato l’incapsulamento, A invia il frammento stego a B che lo riceve e, conoscendo la chiave segreta e la funzione di estrazione f-1 (inversa di f), riesce a risalire al messaggio segreto partendo dal frammento stego appena ricevuto.

Il sistema steganografico può essere così schematizzato:

Stegosistema

dove:

  • E è il messaggio segreto da nascondere;
  • C è il contenitore;
  • C’ è il frammento stego ottenuto incapsulando E in C;
  • K è la chiave segreta che A e B devono conoscere;
  • fK (C,E) è la funzione steganografica che nasconde E in C usando la chiave K;
  • fK-1 (C’) è la funzione inversa di f che, sfruttando la chiave K e partendo dal frammento stego C’ ricevuto, riesce a risalire ad E.

Se la chiave fornita è la stessa usata dal mittente per nascondere il messaggio segreto e se C’ è lo stesso frammento prodotto dal mittente (in quanto potrebbe essere stato modificato da un attaccante), allora la funzione di estrazione produrrà effettivamente il messaggio segreto originale E.

Lo stegosistema a chiave pubblica

Così come la crittografia anche la steganografia può essere a chiave pubblica. Il sistema steganografico visto nel paragrafo precedente parte dall’assunzione che esista (o sia esistito) un canale sicuro per far si che mittente e destinatario si siano potuti scambiare la chiave segreta.

Assumiamo adesso che A voglia inviare un messaggio segreto a B senza che nessuno lo sappia, e che essi non abbiano modo di scambiarsi una chiave steganografica prima della trasmissione di tale messaggio. Se B possiede una chiave pubblica e A la conosce, A può cifrare il messaggio segreto con la chiave pubblica di B, nascondendo il testo cifrato in un contenitore e mandando il risultante frammento stego a B. B può estrarre il testo cifrato dal frammento stego ricevuto e decifrarlo con la sua chiave privata.

Perché questo metodo funzioni, ognuno ha bisogno di sapere come estrarre il messaggio segreto da un potenziale file stego. Questo algoritmo di estrazione può essere applicato anche ai files che non contengono messaggi nascosti. Infatti, non è importante che un file contenga un messaggio segreto o meno, il risultato sarà comunque una stringa di dati random che solo B sarà capace di decifrare con successo.

Il sistema steganografico a chiave pubblica può essere così schematizzato:

Stegosistema a chiave pubblica

dove:

  • Pub è la chiave pubblica di B che A conosce;
  • ePub(E) è la funzione di encoding che prende in input la chiave pubblica di B (Pub) e il messaggio nascosto E da cifrare: il risultato di tale operazione è il messaggio E’, che costituirà l’input per l’algoritmo di steganografia vero e proprio;
  • E’ è il messaggio segreto e cifrato che viene incapsulato all’interno del cover C;
  • Pri è la chiave privata di B, grazie alla quale si riesce a risalire ad E partendo da E’;
  • dPri(E’) è la funzione di decoding che decifra il messaggio segreto e cifrato E’, sfruttando la chiave privata di B (Pri) e che dà in output il messaggio segreto E.

Lo svantaggio principale di questo sistema steganografico sta nel fatto che ogni qualvolta si riceve un potenziale file stego si deve estrarre il potenziale testo cifrato e provare a decifrarlo con la propria chiave privata (senza essere sicuri di trovare un messaggio). Più che uno scambio di messaggi, diventa una caccia al tesoro!.

Conclusioni

La steganografia garantisce un livello di sicurezza abbastanza alto, in caso di alterazione ed occultamento di un testo. Il problema prinicipale è che in quetso modo un criminale avrebbe la possibilità di nascondere le informazioni in modi così efficaci da rendere la polizia delle telecomunicazioni meno efficiente. I disonesti, infatti, non obbediranno mai ad una legge che imponga loro di non utilizzare alcuna forma di steganografia o altro. Di contro, la steganografia garantisce all’onesto cittadino di avere strumenti in grado di proteggere la propria sia la propria privacy sia i propri documenti da occhi indiscreti.

 

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *