
I ricercatori polacchi hanno proposto un nuovo metodo di steganografia di rete basato sulle caratteristiche del protocollo di trasporto TCP, ampiamente utilizzato. Gli autori ritengono che il loro schema possa, ad esempio, essere utilizzato per inviare messaggi nascosti in paesi totalitari che applicano una rigorosa censura su internet. Cerchiamo di capire in cosa consiste l'innovazione e quanto sia realmente utile.
Prima di tutto, è necessario definire che cos'è la steganografia. In poche parole, la steganografia è la scienza della trasmissione nascosta dei messaggi. Cioè, utilizzando i suoi metodi, le parti cercano di nascondere il fatto stesso della trasmissione. Questa è 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 tende a guardare con disprezzo alla steganografia, a causa della sua affinità con il principio della «Sicurezza attraverso l'oscurità». Questo principio, ad esempio, è utilizzato da Skype Inc.: il codice sorgente della popolare applicazione di chiamate è chiuso e nessuno sa esattamente come avvenga la crittografia dei dati. Recentemente, a proposito, ne ha parlato anche la NSA, come ha riferito il noto esperto Bruce Schneier sul suo blog.
Tornando alla steganografia, rispondiamo alla domanda su quale sia il suo scopo, se esiste la crittografia. Infatti, è possibile crittografare un messaggio utilizzando un algoritmo moderno e, se si utilizza una chiave sufficientemente lunga, nessuno sarà in grado di leggerlo, a meno che voi non lo desideriate. Tuttavia, a volte può essere più utile nascondere il fatto stesso che una comunicazione segreta stia avvenendo. Ad esempio, se le autorità competenti intercettano il vostro messaggio crittografato e non riescono a decifrarlo, ma sono comunque motivate a farlo, alla fine potrebbero ricorrere a metodi non informatici di pressione e acquisizione di informazioni. Sembra distopico, ma ammettetelo, è comunque possibile. Pertanto, sarebbe meglio fare in modo che coloro ai quali non è concesso saperlo non sappiano affatto che una comunicazione ha avuto luogo. I ricercatori polacchi hanno proposto proprio un metodo del genere. Inoltre, suggeriscono di attuarlo tramite un protocollo che ogni utente di Internet utilizza mille volte al giorno.
Qui ci avviciniamo al Transmission Control Protocol (TCP). Spiegare tutti i suoi dettagli, ovviamente, non ha senso — è lungo, noioso, coloro che ne hanno bisogno già lo sanno. In breve, si può dire che TCP è un protocollo di trasporto (cioè opera "sopra" IP e "sotto" i protocolli di livello applicazione, come HTTP, FTP o SMTP) che garantisce una consegna affidabile dei dati dal mittente al destinatario. Una consegna affidabile significa che, se un pacchetto si perde o arriva con modifiche, TCP si preoccuperà di rinviare quel pacchetto. Nota che per modifiche in un pacchetto si intende non una distorsione intenzionale dei dati, ma errori di trasmissione che si verificano a livello fisico. Ad esempio, mentre il pacchetto viaggiava attraverso cavi di rame, alcuni bit potrebbero aver cambiato il loro valore in quello opposto o potrebbero essersi persi nel rumore (peraltro, per Ethernet, il valore del Bit Error Rate è generalmente considerato attorno a 10-8). La perdita di pacchetti lungo il percorso è anche un fenomeno relativamente frequente su Internet. Può verificarsi, ad esempio, a causa del sovraccarico dei router, che porta al riempimento dei buffer e, di conseguenza, all'abbandono di tutti i nuovi pacchetti in arrivo. Di solito, la percentuale di pacchetti persi è circa dello 0,1%, mentre con un valore di qualche punto percentuale TCP smette di funzionare normalmente — l'utente avrà un'esperienza di navigazione estremamente lenta.
Così vediamo che la ritrasmissione dei pacchetti è una pratica frequente e necessaria per TCP. Quindi perché non utilizzarla per esigenze di steganografia, considerando che TCP, come già accennato, è ampiamente utilizzato (secondo varie stime, oggi la quota di TCP su Internet raggiunge l'80-95%). L'idea del metodo proposto è di inviare nel messaggio trasmesso non ciò che era nel pacchetto originale, ma piuttosto i dati che stiamo cercando di nascondere. Scoprire un tale cambio non è affatto semplice, poiché bisogna sapere dove guardare: il numero di connessioni TCP simultanee che passano attraverso il fornitore è enormemente elevato. Se si conosce il livello approssimativo di ritrasmissione nella rete, è possibile adattare il meccanismo di ritrasmissione steganografica in modo tale che la tua connessione non si distingua affatto dalle altre.
Certo, questo metodo non è privo di difetti. Ad esempio, da un punto di vista pratico, la sua implementazione non sarà così semplice: richiederà modifiche allo stack di rete nei sistemi operativi, anche se non c'è nulla di insormontabile in questo. Inoltre, con un numero sufficiente di risorse, è comunque possibile rilevare pacchetti "nascosti"; per farlo, è necessario esaminare e analizzare ogni pacchetto in rete. Tuttavia, ciò è praticamente impossibile nella maggior parte dei casi, quindi di solito si cercano pacchetti e connessioni che si distinguono, e il metodo proposto rende la tua connessione del tutto anonima. Inoltre, nulla ti vieta di crittografare i dati sensibili, nel caso. Nel frattempo, la connessione può rimanere non crittografata, per suscitare meno sospetti.
Gli autori del lavoro (tra l'altro, per chi è interessato, lo) a livello di simulazioni hanno dimostrato che il metodo proposto funziona come previsto. Speriamo che in futuro qualcuno si occuperà dell'implementazione della loro idea nella pratica. E allora, speriamo, ci sarà un po' meno censura su Internet.
Fonte: habr.com
