
I ricercatori polacchi hanno proposto un nuovo metodo di steganografia di rete basato sulle caratteristiche di funzionamento del protocollo di trasporto TCP, ampiamente utilizzato. Gli autori del lavoro ritengono che il loro schema, ad esempio, possa essere utilizzato per inviare messaggi nascosti in paesi totalitari che impongono una rigorosa censura su Internet. Cerchiamo di capire in cosa consiste effettivamente questa innovazione e quanto sia realmente utile.
Innanzitutto, è necessario definire cosa sia la steganografia. In effetti, la steganografia è la scienza della trasmissione nascosta di messaggi. Cioè, utilizzando i suoi metodi, le parti cercano di nascondere il fatto stesso della trasmissione. In questo consiste la differenza tra questa scienza e la crittografia, che cerca di rendere il contenuto del messaggio illeggibile. È importante notare che la comunità professionale dei crittografi ha un atteggiamento piuttosto disprezzante nei confronti della steganografia a causa della sua vicinanza al principio del “Security through obscurity” (non so come si traduca correttamente in russo, qualcosa come “Sicurezza attraverso l'ignoranza”). Questo principio, ad esempio, è utilizzato dalla Skype Inc.: il codice sorgente dell'applicazione di chiamata popolare è chiuso e nessuno sa veramente come venga effettuata la crittografia dei dati. Recentemente, peraltro, anche nella NSA si sono lamentati di ciò, come ha riferito il noto esperto Bruce Schneier nel suo blog.
Tornando alla steganografia, risponderemo alla domanda sul perché essa sia necessaria, se esiste la crittografia. Infatti, è possibile cifrare un messaggio con un algoritmo moderno e, utilizzando una chiave sufficientemente lunga, nessuno potrà leggerlo, a meno che non lo desideriate. Tuttavia, a volte può essere più utile nascondere il semplice fatto della trasmissione segreta. Ad esempio, se le autorità competenti intercettano il vostro messaggio cifrato, non possono decifrarlo, ma lo vorrebbero molto sapere, quindi alla fine ci sono metodi non informatici di influenza e raccolta di informazioni. Sembra distopico, ma, ammettetelo, è sostanzialmente possibile. Pertanto, sarebbe meglio fare in modo che coloro che non dovrebbero conoscere affatto la trasmissione non ne siano a conoscenza. I ricercatori polacchi hanno proposto proprio un tale metodo. Inoltre, intendono realizzarlo tramite un protocollo che ogni utente di Internet utilizza mille volte al giorno.
Qui ci siamo avvicinati al Transmission Control Protocol (TCP). Spiegare tutti i suoi dettagli, ovviamente, non ha senso: è lungo, noioso, chi ne ha bisogno lo sa già. In breve, si può dire che il TCP è un protocollo di livello di trasporto (cioè funziona "sopra" IP e "sotto" i protocolli di livello applicazione, come HTTP, FTP o SMTP), che garantisce la consegna affidabile dei dati dal mittente al destinatario. La consegna affidabile significa che se un pacchetto si è perso o è arrivato con delle modifiche, il TCP si assicurerà di rinviare quel pacchetto. Va notato che per modifiche nel pacchetto si intendono non distorsioni volontarie dei dati, ma errori di trasmissione che si verificano a livello fisico. Ad esempio, mentre un pacchetto viaggiava attraverso fili di rame, alcuni bit hanno cambiato il loro valore in opposizione, o si sono persi nel rumore (a proposito, per Ethernet il Bit Error Rate è solitamente considerato circa 10-8). La perdita di pacchetti durante il percorso è anche un fenomeno relativamente comune su Internet. Può verificarsi, ad esempio, a causa del sovraccarico dei router, che porta a un overflow dei buffer e, di conseguenza, al rifiuto di tutti i nuovi pacchetti in arrivo. Di solito, la quota di pacchetti persi ammonta a circa lo 0,1 %, e con valori di qualche punto percentuale, il TCP smette di funzionare correttamente — l'utente sperimenterà notevoli ritardi.
Abbiamo quindi visto che la ritrasmissione dei pacchetti è un fenomeno frequente e in realtà necessario per il TCP. Perché non usarlo per le necessità della steganografia, dato che il TCP, come già accennato, è utilizzato in modo diffuso (secondo varie stime, attualmente la quota di TCP su Internet raggiunge l'80-95 %). Il punto del metodo proposto è inviare messaggi che non contengano ciò che era nel pacchetto originale, ma i dati che stiamo cercando di nascondere. Tuttavia, rilevare un tale scambio non è affatto semplice. Infatti, bisogna sapere dove guardare: il numero di connessioni TCP simultanee che passano attraverso il fornitore è semplicemente enorme. Se si conosce il livello approssimativo di ritrasmissioni nella rete, è possibile adattare il meccanismo di invio steganografico in modo tale che la tua connessione non si distingua da altre.
Certo, questo metodo non è privo di difetti. Ad esempio, dal punto di vista pratico, implementarlo non sarà così semplice: richiederà la modifica dello stack di rete nei sistemi operativi, anche se non c'è nulla di impossibile in questo. Inoltre, con una quantità sufficiente di risorse, è comunque possibile rilevare i pacchetti "segreti"; per questo è necessario esaminare e analizzare ogni pacchetto in rete. Tuttavia, questo è praticamente impossibile, quindi di solito si cercano pacchetti e connessioni che si distinguano per qualcosa, e il metodo proposto fa sì che la tua connessione non si distingua per nulla. Inoltre, nulla ti vieta di cifrare i dati riservati per ogni evenienza. In questo caso, la connessione stessa può rimanere non cifrata per suscitare meno sospetti.
Gli autori del lavoro (a proposito, per chi è interessato, esso) a livello di simulazioni hanno dimostrato che il metodo proposto funziona come previsto. Forse in futuro qualcuno si occuperà di mettere in pratica la loro idea. E allora, ci si augura, ci sarà un po' meno censura su Internet.
Fonte: habr.com
