Come configurare smartphone e PC. Portale informativo

dns crittografati. DNSCrypt - Crittografia del traffico DNS per i paranoici

Questo articolo è stato scritto su richiesta di uno dei lettori del blog. E devo dire che l'argomento è molto interessante.

Al giorno d'oggi, il problema della protezione del traffico trasmesso su Internet sta diventando sempre più acuto. Molte persone possono desiderare i tuoi dati, da intrusi che vorranno in ogni caso ottenere le tue password servizi vari alle agenzie di intelligence che vogliono sapere tutto di ogni tua mossa. E via tempo a disposizione, esiste un gran numero di"mezzi di autodifesa" su Internet. A proposito di uno così semplice, ma molto mezzi efficaci, sarà discusso in questo articolo - DNScrypt.

C'è una risorsa meravigliosa chiamata OpenDNS, che fornisce i suoi server DNS pubblici. OpenDNS offerte Soluzioni DNS per utenti e aziende in alternativa all'utilizzo del server DNS offerto dal proprio ISP. Posizionando i server dell'azienda in posizioni strategiche e utilizzando una grande cache dei nomi di dominio, OpenDNS tende a completare le query molto più velocemente, aumentando così la velocità di apertura delle pagine. I risultati delle query DNS vengono memorizzati nella cache per un po' di tempo sistema operativo e/o applicazioni, quindi questa velocità potrebbe non essere percepibile su ogni richiesta, ma solo su quelle richieste che non sono memorizzate nella cache.

Dal momento che il traffico tra il server DNS e il tuo computer non crittografato, questo crea un serio pericolo di intercettazione del traffico. La crittografia del traffico DNS proteggerà il client dagli attacchi "uomo nel mezzo", in cui un utente malintenzionato si incunea nel canale di comunicazione e finge di essere un server DNS. Inoltre, la crittografia impedisce lo snooping del traffico e blocca le attività dannose legate all'identificazione di ID pacchetto o all'invio di risposte DNS fasulle. In poche parole: Crittografia DNS impedirà gli attacchi di phishing quando invece della pagina desiderata, la sua copia dannosa si apre dove inserisci i tuoi dati. Con tutte le conseguenze. Inoltre, sarà molto più difficile per l'ISP scoprire quali siti hai visitato (perché i registri non conterranno informazioni sulle richieste di risoluzione dei nomi). Per organizzare tutto questo, il progetto OpenDNS ha rilasciato una meravigliosa utility open source. codice sorgente- Crittografia DNS.

Questa utility crittograferà tutto il traffico trasmesso tra il tuo computer e i server OpenDNS. Se il tuo ISP sta bloccando un sito Web in base al loro nome del dominio- ora questo sito funzionerà! Un altro vantaggio. Questa utilità disponibile su un'ampia varietà di sistemi. Descriverò l'installazione e la configurazione con un esempio Debian e Ubuntu/Linux nuovo.

IN Ubuntu 14.04 e Debian 8, questa utilità non esiste. Opzione 2: costruisci te stesso o usa repository di terze parti. Nel caso di Ubuntu, questo sarà un repository PPA:

sudo add-apt-repository ppa:xuzhen666/dnscrypt
sudo apt-get update
sudo apt-get install dnscrypt-proxy

Nel caso di Debian, basta scaricare il pacchetto dnscrypt-proxy dal repository della versione di prova. E installa con GDebi, o dal comando sudo dpkg -i dnscrypt-proxy_1.6.0-2_amd64.deb.

Per l'autoassemblaggio:

wget https://raw.github.com/simonclausen/dnscrypt-autoinstall/master/dnscrypt-autoinstall.sh && chmod +x dnscrypt-autoinstall.sh && ./dnscrypt-autoinstall.sh

Durante il processo di installazione, ti verrà chiesto di selezionare un server DNS. Scegli OpenDNS.

Altre impostazioni non richiesto, il pacchetto ha tutto il necessario. Tutto ciò che serve è riconfigurare leggermente la connessione di rete. Apertura dell'impostazione le connessioni di rete, scegli il tuo, vai alla scheda IPv4, cambia Automatico (Automatico) sul Automatico (solo indirizzi) (Automatico (solo indirizzo) e specificare l'indirizzo DNS 127.0.2.1

Riavvia, connettiti e vai a

Pensi che il tuo anonimato sia ben protetto. Ma purtroppo non è così. C'è un canale molto importante per far trapelare le tue informazioni private - Servizio DNS. Fortunatamente, ci sono soluzioni anche per questo. Oggi ti mostrerò come crittografare il tuo traffico DNS utilizzando l'utilità DNSCrypt.

Quando si utilizza HTTPS o SSL, il traffico HTTP è crittografato, ovvero protetto. Quando utilizzi una VPN, tutto il tuo traffico è già crittografato (ovviamente, tutto dipende dalle impostazioni della VPN, ma, di regola, lo è). Ma a volte, anche quando utilizzi una VPN, le tue richieste DNS non vengono crittografate, vengono trasmesse così come sono, che si apre enorme spazio per la "creatività", inclusi gli attacchi MITM, il reindirizzamento del traffico e altro ancora.

È qui che viene in soccorso l'utilità open source DNSCrypt, sviluppata dai noti creatori di OpenDNS, un programma che consente di crittografare le query DNS. Dopo averlo installato sul tuo computer, anche le tue connessioni saranno protette e potrai navigare in Internet in modo più sicuro. Naturalmente, DNSCrypt non è una panacea per tutti i problemi, ma solo uno degli strumenti di sicurezza. Devi comunque utilizzare una connessione VPN per crittografare tutto il traffico, ma abbinato a DNSCrypt sarà più sicuro. Se questa breve spiegazione ti soddisfa, puoi saltare immediatamente alla sezione in cui descriverò l'installazione e l'uso del programma.

Proviamo ad andare più a fondo. Questa sezione è per i veri paranoici. Se apprezzi il tuo tempo, puoi procedere immediatamente all'installazione del programma.
Quindi, come si suol dire, è meglio vedere una volta che ascoltare cento volte. Guarda l'immagine.

Diciamo che il client (il laptop nella foto) sta tentando di accedere a google.com.
risolvere un nome host simbolico in un indirizzo IP. Se la configurazione di rete è tale da utilizzare il server DNS del provider (connessione non crittografata, linea rossa nella figura), l'autorizzazione nome simbolico L'indirizzo IP si verifica su una connessione non crittografata.

Sì, nessuno saprà quali dati trasferirai a dkws.org.ua. Ma ci sono cose molto fastidiose. In primo luogo, il provider, guardando i log DNS, sarà in grado di scoprire quali siti hai visitato. Ne hai bisogno? In secondo luogo, sono probabili attacchi di spoofing DNS e snooping DNS. Non li descriverò in dettaglio, molti articoli sono già stati scritti su questo. In poche parole, la situazione può essere la seguente: qualcuno tra te e il provider può intercettare la richiesta DNS (e poiché le richieste non sono crittografate, non sarà difficile intercettare la richiesta e leggerne il contenuto) e inviarti un " risposta falsa". Di conseguenza, invece di visitare google.com, andrai sul sito dell'attaccante, come due gocce d'acqua simili a quella di cui hai bisogno, inserirai la tua password dal forum, ma poi lo sviluppo di eventi, penso, è chiaro.

Questa situazione è chiamata perdita di DNS. La perdita di DNS si verifica quando il tuo sistema anche dopo la connessione a Server VPN oppure Tor continua a interrogare i server DNS del provider per risolvere i nomi di dominio. Ogni volta che visiti un nuovo sito, ti connetti a un nuovo server o ne avvii uno applicazione di rete, a cui fa riferimento il tuo sistema provider DNS per risolvere il nome in IP. Di conseguenza, il tuo provider o chiunque si trovi sull'"ultimo miglio", ovvero tra te e il provider, può ottenere tutti i nomi degli host a cui accedi. L'opzione di spoofing IP sopra è piuttosto crudele, ma in ogni caso è possibile tracciare i siti che visiti e utilizzare queste informazioni per i tuoi scopi.

Se hai "paura" del tuo ISP o semplicemente non vuoi che vedano quali siti visiti, puoi (tranne per l'utilizzo di VPN e altre misure di sicurezza, ovviamente) configurare ulteriormente il tuo computer per Utilizzo del DNS server del progetto OpenDNS (www.opendns.com). Sul questo momento questi sono i seguenti server:

208.67.222.222
208.67.220.220

Non hai bisogno di nessun altro aggiuntivo Software. Basta impostare il tuo sistema per utilizzare questi server DNS.

Ma resta il problema dell'intercettazione delle connessioni DNS. Sì, non stai più accedendo al DNS del provider, ma a OpenDNS, ma puoi comunque intercettare i pacchetti e vedere cosa contengono. Cioè, se lo desideri, puoi scoprire a quali nodi hai avuto accesso.

Veniamo quindi a DNSCrypt. Questo software ti consente di crittografare il tuo Connessione DNS. Ora il tuo ISP (e tutti quelli tra te e loro) sicuramente non saprà quali siti visiti! Ancora una volta lo ripeterò. Questo programma non sostituisce Tor o VPN. Come prima, il resto dei dati che trasmetti viene trasmesso senza crittografia se non utilizzi né una VPN né un Tor. Il programma crittografa solo il traffico DNS.


COME CONCLUSIONE

L'articolo si è rivelato non molto grande, poiché il programma stesso è molto facile da usare. Ma sarebbe incompleto se non menzionassi anche la VPN. Se hai letto questo articolo e ti interessa, ma non stai ancora utilizzando un provider VPN per crittografare i tuoi dati, allora è il momento di farlo.
Il provider VPN ti fornirà un tunnel sicuro per trasferire i tuoi dati, mentre DNSCrypt proteggerà le tue connessioni DNS. Certamente, Servizi VPN i fornitori sono pagati, ma devi pagare per la sicurezza?

Ovviamente puoi anche usare Tor, ma Tor è relativamente lento e, qualunque cosa si possa dire, questa non è una VPN: tutto il traffico non può essere "torificato". In ogni caso (qualunque opzione tu scelga) le tue connessioni DNS sono ora sicure. Resta solo da decidere i mezzi per crittografare il traffico (se non l'hai già fatto).

Ultimo aggiornamento entro il 30 ottobre 2016 .

Nei browser e in questo articolo parleremo sulla perdita di traffico DNS. Il che riguarda tutti, e anche coloro che utilizzano i servizi VPN e pensano di essere dietro un muro di pietra.

Ciao amici! Oggi ti dirò cos'è una perdita DNS, perché dovresti conoscerla e come proteggerti da essa utilizzando l'utilità gratuita DNSCrypt.

  • Prefazione
  • Cosa significa una perdita DNS?
  • Come verificare la presenza di una perdita DNS
  • Come riparare una perdita DNS utilizzando DNSCrypt
    • Scarica DNSCrypt
    • Installazione di DNSCrypt
    • Usando DNSCrypt
  • DNSCrypt nel browser Yandex
  • DNSCrypt nel router
  • Conclusione
  • Valutazione e recensioni

Cosa significa una perdita DNS?

Quando utilizzi HTTPS o SSL, il tuo traffico HTTP è crittografato, ovvero sicuro (non perfetto, ma sicuro). Quando utilizzi una VPN, tutto il tuo traffico è completamente crittografato (ovviamente, il livello e la qualità della protezione dipendono impostazione corretta VPN, ma di solito tutto è impostato e funziona correttamente).

Ma ci sono situazioni in cui, anche se utilizzando una VPN, le tue richieste DNS vengono inviate in forma chiara e non crittografata. Questo apre l'attaccante grandi opportunità per la creatività. può reindirizzare il traffico, eseguire un attacco MITM (man in the middle) e fare un sacco di altre cose che possono compromettere la tua sicurezza e anonimato online.

Proviamo a capire questo problema in modo più approfondito. Se non sei interessato alla teoria ma sei preoccupato per la sicurezza, puoi saltare al capitolo successivo. Se vuoi saperne di più, siediti, ora ti lascerò a bocca aperta.

Nel nostro esempio nella figura seguente, si vede come l'utente (computer) tenta di accedere al sito www.. Per accedere al sito, deve prima risolvere il nome simbolico dell'host in un indirizzo IP.

Se la configurazione di rete è tale da utilizzare il server DNS del provider (una connessione non crittografata, contrassegnata da una linea rossa), il nome simbolico viene risolto in un indirizzo IP su una connessione non crittografata.

Cosa c'è di così terribile?

Innanzitutto, in una situazione del genere, il provider può visualizzare Cronologia DNS e scopri quali siti hai visitato. Ovviamente non saprà che tipo di dati sono stati trasmessi, ma potrà facilmente visualizzare gli indirizzi dei siti.

In secondo luogo, c'è Grande occasione essere una vittima attacco hacker. Ad esempio: snooping della cache DNS e spoofing DNS.

Che cos'è lo snooping e lo spoofing DNS?

Brevemente per chi non lo sapesse.

Snooping DNS- utilizzando questo attacco, un utente malintenzionato può scoprire da remoto quali domini sono stati risolti di recente sul server DNS, ovvero quali domini la vittima ha visitato di recente.

Spoofing DNS- un attacco basato sull'infezione della cache del server DNS della vittima con un falso record di corrispondenza del nome host DNS di cui la vittima si fida.

Poiché le richieste non sono crittografate, qualcuno tra te e l'ISP può intercettare e leggere la richiesta DNS, quindi inviarti una falsa pagina di risposta, ma anche l'url in barra degli indirizzi), dopodiché inserirai il tuo nome utente e password, e poi tu stesso capirai cosa accadrà. I dati di autorizzazione saranno nelle mani di un utente malintenzionato.

Questa situazione è chiamata perdita di DNS. Si verifica quando il tuo sistema risolve i nomi di dominio anche dopo la connessione a un server VPN o la rete Tor continua a chiedere Server DNS il tuo fornitore. Ogni volta che tenti di accedere a un sito, di connetterti a un nuovo server o di avviare un'applicazione di rete, il tuo sistema esaminerà i server DNS dell'ISP per risolvere il nome in un indirizzo IP. Di conseguenza, alcuni hacker o il tuo ISP saranno in grado di scoprire tutti i nomi degli host a cui stai accedendo.

Se hai qualcosa da nascondere, ti suggerisco di utilizzare una soluzione semplice: DNSCrypt. Naturalmente, puoi registrare altri server DNS e far passare il traffico attraverso di essi. Ad esempio il server di Google 8.8.8.8 o lo stesso OpenDNS 208.67.222.222, 208.67.220.220. In questo caso, ovviamente, nasconderai la cronologia delle visite ai siti al provider, ma comunicherai a Google i tuoi viaggi in rete. Inoltre, non ci sarà la crittografia del traffico DNS, e questo grande svantaggio. Non so voi, ma non mi accende, preferirei installare DNSCrypt.

Come verificare la presenza di una perdita DNS

Prima di passare all'utilità stessa, vorrei presentarti servizi online speciali. Ti consentono di verificare la presenza di perdite DNS.

Il programma richiede Microsoft . NET Framework 2.0 e superiori.

Puoi scaricare DNSCrypt per Mac OS X dal link di Gitab o dal link di condivisione file sopra.

Sviluppatore del programma OpenDNS.

Installazione di DNSCrypt

In questo articolo analizzeremo come lavorare con la versione console dell'utilità. Configureremo DNSKript su Windows 10. L'installazione su altre versioni di Windows non è diversa.

Quindi, decomprimi l'archivio scaricato e posiziona il contenuto della cartella dnscrypt-proxy-win32 ovunque sul computer. Nel mio esempio, ho individuato nella cartella "C:\Programmi\DNSCrypt\".

Quindi apri un prompt dei comandi come amministratore.


Esegui il prompt dei comandi come amministratore in Windows 10

Ora in riga di comando vai alla cartella DNSCrypt. Puoi farlo con il comando:

cd "C:\Programmi\DNSCrypt"

Fare clic se non è possibile copiare i comandi.

Dopodiché, prepariamoci a installare il servizio proxy. Per prima cosa devi scegliere un provider DNS. Ho inserito il file dnscrypt-resolvers.csv nell'archivio. Questo file contiene un elenco della maggior parte dei provider DNS supportati da DNSCrypt. Ogni singolo provider ha un nome, una descrizione, una posizione e un supporto per DNSSEC e Namecoin. Inoltre, il file contiene gli indirizzi IP e le chiavi pubbliche necessari.

Seleziona un qualsiasi provider e copia il valore nella prima colonna. Nel mio caso, userò CloudNS, quindi ho copiato "cloudns-can". Ora devi assicurarti che il proxy possa connettersi. Puoi farlo con questo comando:

dnscrypt-proxy.exe -R "cloudns-can" --test=0

Se non ci sei riuscito, prova a scegliere un provider diverso e riprova.

Se tutto è andato bene, continua con l'installazione e inserisci il seguente comando:

dnscrypt-proxy.exe -R cloudns-can --install

Se tutto funziona correttamente, vedrai il seguente output:

Screenshot di come dovrebbe apparire sulla riga di comando:

Successivamente, è necessario accedere alle impostazioni del protocollo TCP / IP in Windows e modificare le impostazioni DNS su 127.0.0.1.

Per rimuovere il servizio DNSCrypt, devi tornare impostazioni di rete DNS allo stato iniziale. Questo viene fatto con questo comando:

dnscrypt-proxy --uninstall

Questo comando può essere utilizzato anche per modificare il provider DNS. Dopo l'applicazione, è necessario ripetere l'installazione con i parametri di un altro provider.

Se, dopo tutta questa procedura, per qualche motivo, durante il controllo, hai ancora Indirizzo IP DNS il tuo provider Internet, fai clic sul pulsante "Avanzate", che si trova sotto l'IP registrato 127.0.0.1. Nella finestra apparsa " Opzioni extra...", vai alla scheda "DNS" ed elimina tutti gli indirizzi dei server DNS tranne "127.0.0.1".

Ecco fatto, ora la perdita DNS è stata corretta.

Potresti anche essere interessato all'articolo "", che parlava dell'eliminazione record DNS sul computer.

DNSCrypt nel browser Yandex

Di recente, nel browser Yandex è apparso il supporto per DNSCrypt. Cosa posso dire, i ragazzi di Yandex stanno lavorando e cercando di proteggere l'utente: è fantastico, ma a differenza dell'utilità DNSCrypt, la protezione Yandex è implementata solo a livello di browser e non a livello dell'intero sistema.

DNSCrypt nel router

Inoltre, il supporto per DNSCrypt è implementato in popular Firmware OpenWrt. Maggiori informazioni sull'installazione e altro Informazioni aggiuntive puoi scoprirlo sulla pagina.

Conclusione

Naturalmente, l'utilità DNSCrypt e la crittografia DNS in generale non sono una panacea, anzi in informazioni di sicurezza non esiste una cosa come una panacea. Possiamo solo migliorare la nostra sicurezza e anonimato il più possibile, ma sfortunatamente non funzionerà per rendere la nostra presenza sulla rete invulnerabile al 100%. La tecnologia non si ferma e ci saranno sempre scappatoie. Pertanto, vi invito ad iscrivervi alle nostre novità in nei social network per essere sempre aggiornati. È gratis.

Sono tutti amici. Spero che questo articolo ti abbia aiutato a risolvere il tuo problema di perdita DNS. Buona fortuna nel nuovo 2017, sii felice!

Valutazione dell'utilità DNSCrypt

La nostra valutazione

DNSCrypt- utilità gratuita per proteggere il traffico DNS Crittografando il traffico DNS e utilizzando i server DNS. La nostra valutazione è molto buona!

Voto dell'utente: 4.25 (36 valutazioni)

Le persone spesso chiedono cos'è DNSCrypt e perché ne hai bisogno. Tempo fa ho già scritto di , poi si trattava di supporto nella versione beta del browser. Questa volta esamineremo la tecnologia in dettaglio e Yandex.Browser fungerà da esempio e fonte di dati di laboratorio. Analizzo i pacchetti in Wireshark, per il quale ho scritto un piccolo parser DNSCrypt (nella terminologia di Wireshark, questo è un dissettore, su Lingua Lua; Non sono riuscito a identificare il normale parser DNSCrypt in Wireshark).

DNSCrypt è un servizio proxy che crea un canale sicuro tra un resolver DNS lato client e un resolver DNS ricorsivo in esecuzione sul server. DNSCrypt, rispettivamente, ha due parti: client e server. Attraverso il traffico DNS, che normalmente viene inviato a modulo aperto, le informazioni sui siti visitati potrebbero essere trapelate. Inoltre, le query DNS sono un vettore di attacco comune per lo spoofing degli indirizzi. La sostituzione dell'indirizzo del risolutore del sistema DNS con un indirizzo del server non autorizzato è luogo comune Troiani per molti anni. Lo stesso vale per gli attacchi ai router domestici. DNSCrypt consente di crittografare (e anche, in misura limitata, di proteggere dallo spoofing) sia le query che le risposte DNS. È possibile autenticare il server e il client, ma questa possibilità non è sempre utilizzata. In generale, il tema dell'occultamento del traffico DNS (DNS Privacy) ha ora guadagnato notevole popolarità. Oltre a DNSCrypt, esiste, ad esempio, il protocollo "DNS over TLS" (DNS over TLS è l'ultimo RFC 7858, che, nonostante qualche "inversione", non sembra peggiore di DNSCrypt). Ci sono anche altri sviluppi.

DNSCrypt. Il protocollo può utilizzare sia TCP che UDP come trasporto. In pratica, UDP è preferito se disponibile, ma la specifica richiede rigorosamente il supporto TCP (non UPD, che è opzionale). TCP, ovviamente, attrae la natura della sessione. Ma UDP è molto più veloce, soprattutto per i servizi occupati. A causa di problemi con gli attacchi DDoS e altri problemi di sicurezza, ora c'è un movimento alla moda verso la traduzione numero massimo servizi su TCP, questo è particolarmente vero per DNS. Tuttavia, di seguito considero il funzionamento di DNSCrypt solo su UDP, poiché questa è l'opzione tradizionale per DNS. Il numero di porta DNSCrypt (server) consigliato è 443 (di solito è aperto in reti aziendali; la pratica di utilizzare 443/udp, ad esempio, è standard per un certo numero di VPN e altri servizi; 443/tcp è TLS/HTTPS, fondamento dei servizi web). Tuttavia, Yandex utilizza un numero non privilegiato nella sua implementazione di DNSCrypt: 15353, probabilmente a causa di alcune idee per superare varie barriere di rete.

Un po' di più sulle barriere: non ci saranno problemi con il blocco del traffico DNSCrypt, se il provider del canale ha un tale desiderio. Come risulterà chiaro dalla descrizione che segue, questo protocollo non cerca di nascondere il fatto stesso del suo utilizzo. Nel traffico questo protocollo accendere marcatori standard, che ti permetterà di rilevare e filtrare i pacchetti anche sui router più primitivi, utilizzando una semplice regola a due righe. In questo caso, ad esempio, rimarrà l'accesso per altre sessioni TCP in esecuzione sulla porta 443.

In DNSCrypt, la creazione di una sessione tra un client e un server inizia con una normale query DNS inviata all'indirizzo e al numero di porta corrispondente dell'host che fornirà le funzioni di risoluzione dei nomi. Questa è una richiesta di un record TXT per un nome tipo speciale(ovvero, la richiesta può già essere facilmente filtrata). Ad esempio, nel caso del servizio Yandex: 2.dnscrypt-cert.browser.yandex.net. Questo nome speciale non può essere delegato. Valore 2: corrisponde alla versione di DNSCrypt. La versione attuale è la seconda. In risposta, il server dovrebbe inviare uno o più certificati DNSCrypt (sottolineo: non hanno nulla a che fare con i certificati SSL).

Lo screenshot mostra un pacchetto con un certificato dal server Yandex DNSCrypt.

Un certificato è un insieme di diversi campi: versione del certificato, valore della firma, chiave pubblica server, byte magici per il client (serviranno come identificatore per le richieste del client - il server sarà in grado di capire quale chiave utilizzare quando risponde), numero di serie e periodo di validità.

La specifica presuppone che il server trasmetta una chiave pubblica di breve durata come parte del certificato. (Tuttavia, nel caso del server Yandex, chiave data non è cambiato almeno dalla fine di marzo, quando è stata lanciata una versione beta del browser abilitato per DNSCrypt.) La firma sul certificato deve essere generata da una coppia di chiavi diversa. La chiave pubblica di questa coppia è nota al client: è necessaria per verificare la firma. Ovviamente non ha senso firmare il certificato con la stessa chiave utilizzata all'interno della sessione. Non ho controllato se convalida certificato del server"Browser Yandex". Il fatto è che nel modello di minaccia per cui DNSCrypt viene utilizzato in Yandex Browser, la convalida del certificato non ha molto senso, così come confrontare il valore della chiave con una copia salvata (tornerò su questo punto di seguito).

Come primitive crittografiche, DNSCrypt utilizza costrutti dal cifrario Salsa20 (XSalsa20), la funzione hash Poly1305 (per implementare la crittografia autenticata) e l'algoritmo X25119-hsalsa20 per generare una chiave di sessione condivisa (l'algoritmo utilizza la curva ellittica Curve25119 e l'hash hsalsa20 funzione). Questi design sono stati progettati da Daniel J. Bernstein e sono stati a lungo riconosciuti come molto solidi. L'algoritmo per ottenere un segreto condiviso (chiave di sessione) è matematicamente correlato all'algoritmo di Diffie-Hellman. Noto che il segreto comune in questo casoè possibile eseguire il ripristino dopo il fatto se è nota la chiave segreta corrispondente da una coppia di chiavi del server (o client), ciò consentirà di decrittografare il traffico registrato in precedenza, motivo per cui la specifica consiglia di utilizzare chiavi di breve durata.

Il codice XSalsa20 in modalità di crittografia autenticata richiede una lunghezza di 192 bit (24 byte). Non è consentito il riutilizzo della stessa combinazione di chiave e nonce. Ciò è dovuto all'architettura del cifrario XSalsa20 − riutilizzo nonce risulterà in una perdita: l'ascoltatore conoscerà il valore XOR da una coppia di abbinamento testi aperti. Pertanto, il nonce deve essere ogni volta nuovo, ma non necessariamente casuale. Il parametro nonce in DNSCrypt è presente in due incarnazioni: client e server.

Diamo un'occhiata al crittografato richiesta del cliente inviato da Yandex.Browser.

Il primo campo della query è il valore magico del client (Client query magic bytes): utilizza la parte della chiave pubblica del server ottenuta in precedenza. Se necessario, questi "byte magici" possono fungere da firma che consente di scegliere tra le richieste di traffico inviate a DNSCrypt;
Il campo successivo è una chiave pubblica client a breve termine (chiave pubblica client);
Il valore nonce del client è 96 bit (12 byte), metà del valore nonce richiesto per la cifratura XSalsa20 (secondo la specifica DNSCrypt, riempito con byte con valore 0). Puoi usare l'uno o l'altro contatore, "Yandex.Browser" fa proprio questo: a quanto pare, qui viene trasmesso un valore di 64 bit del timestamp (tempo di formazione della richiesta), a cui sono quattro byte di valori pseudo-casuali aggiunto. Nel caso sia reale tempo esatto trasmesso in chiaro, noto che i parametri di deriva Orologio di sistema servire come una buona indicazione di un particolare dispositivo hardware, - cioè può essere utilizzato per la deanonimizzazione;
L'ultimo campo è la richiesta crittografata stessa. Per la crittografia viene utilizzata una chiave segreta condivisa, che viene calcolata dalle parti in base alle chiavi pubbliche trasferite. Nel caso di un client, la chiave pubblica viene trasmessa nel pacchetto di richiesta DNS (vedi sopra). Yandex.Browser segue la pratica standard e genera una nuova coppia di chiavi (pubblica/segreta) per X25119-hsalsa20 ogni volta che si avvia il browser. Per allineare i dati su un limite di blocco di 64 byte, come prescritto dalla specifica, viene utilizzato il riempimento standard (ISO/IEC 7816-4: 0x80 e byte nulli come richiesto).

Il blocco di dati crittografato è molto probabilmente il risultato dell'utilizzo della funzione crypto_box dalla libreria libsodium (o NaCl, a cui fa riferimento la specifica DNSCrypt; libsodium è un fork di NaCl). Ho ipotizzato che il codice di autenticazione a 16 byte (MAC), utilizzato per verificare l'integrità del messaggio prima della decrittazione, sia probabilmente all'inizio del blocco. Tuttavia, poiché non ho provato a decrittografare i dati, determinare la posizione del codice non è così importante. Per la decrittazione, puoi utilizzare la chiave segreta, che viene conservata in memoria mentre il browser è in esecuzione, ma per estrarla è necessario armeggiare per un po' con il debugger e il disassemblatore.

Risposta crittografata ricevuta dal server:

(È facile vedere che la risposta presentata nello screenshot è arrivata quasi cinque secondi dopo la richiesta del motivo per cui ciò è accaduto, apparentemente un argomento per una nota separata.)

Il pacchetto viene aperto per magia, in questo caso byte contenenti il ​​token di risposta DNSCrypt (di nuovo, una buona firma per rilevare il traffico). Questi byte sono definiti dal protocollo e devono essere presenti all'inizio di qualsiasi risposta del server a una richiesta di risoluzione DNS;
Il campo successivo è il nonce (Risposta nonce). Il campo contiene il valore nonce utilizzato dal server durante la crittografia di questa risposta. Il campo è formato da due parti uguali, 12 byte ciascuno: il nonce dalla corrispondente richiesta del client e il complemento del server;
La parte finale del pacchetto è costituita dai dati di risposta crittografati, il formato è simile alla richiesta.

Ora torniamo al modello di minaccia, usando Yandex.Browser come esempio. Se le impostazioni del browser consentono l'uso di DNSCrypt, ad esempio, tramite i server Yandex, ma l'accesso al server corrispondente è bloccato, il browser (come la versione beta) in modo trasparente, senza preavviso, passa all'utilizzo del risolutore di sistema. Perché ciò invalida la necessità di convalidare i certificati del server DNSCrypt? Perché un utente malintenzionato attivo che può falsificare i pacchetti a livello IP per disabilitare DNSCrypt nel browser può semplicemente bloccare l'accesso al server, invece di sprecare risorse per creare risposte. Da ciò possiamo concludere che il modello di minaccia Yandex non include lo spoofing dei pacchetti attivo sulla strada dal server DNSCrypt al client.

Per concludere, qualche parola su come DNSCrypt si relaziona con DNSSEC. DNSSEC - non nasconde i dati sul traffico DNS, ma li protegge dallo spoofing, indipendentemente dal canale di scambio delle informazioni. Nel caso di DNSSEC, non importa su quale canale sono stati ricevuti i dati dal DNS, l'importante è che le chiavi siano a posto. DNSCrypt: nasconde il traffico e lo protegge in misura limitata dallo spoofing nel percorso dal risolutore ricorsivo (servizio di risoluzione) al client. Se i dati sono stati falsificati sulla strada per il resolver (o sul server del resolver stesso) e non supportano DNSSEC, il client riceverà informazioni danneggiate, anche se attraverso un canale DNSCrypt sicuro. I server che forniscono DNSCrypt possono anche supportare DNSSEC.

Avanti: opinioni e discussioni

(I messaggi sottostanti vengono inseriti dai lettori del sito, tramite il form che si trova in fondo alla pagina.)

Chiunque pensi all'anonimato su Internet lo sa ottimo modo nascondere il tuo indirizzo IP su Internet è un servizio VPN. Tuttavia, anche con una connessione VPN, spesso le query al server DNS rimangono non protette e puoi facilmente monitorare dove vanno le tue query DNS. In altre parole, questo si chiama "DNSleaks" o "DNS leak".

Diamo un'occhiata più da vicino a cos'è il DNS e quali problemi esistono.

Come sapete, ogni computer su Internet ha un proprio indirizzo IP, senza conoscere l'indirizzo IP del computer, è impossibile inviargli informazioni o richieste. Un indirizzo IP è un numero di 4 byte separato da punti (ad esempio, 162.234.12.110 o 78.31.54.226).

Per uomo comune ricordare un gran numero di indirizzi IP non è facile, quindi all'inizio dello sviluppo di Internet c'era bisogno di uno strumento che rendesse la vita più facile agli utenti di Internet. Il DNS, o Domain Name System, è diventato uno strumento del genere. Un server DNS è uno strumento che consente di determinare un indirizzo IP da un nome di dominio.

Ad esempio, hai inserito l'indirizzo del sito nella riga del browser, il browser ha inviato una richiesta al server DNS, che è specificato nelle impostazioni della tua connessione Internet. Il server restituisce un pacchetto di risposta contenente l'indirizzo IP del sito desiderato.

Da un lato, tutto è fatto comodamente: hai semplicemente collegato il cavo scheda di rete, ti è stato assegnato automaticamente il server DNS del provider con una risposta rapida e tutto funziona. Ma d'altra parte, ci sono due problemi con questo schema:

1) Nessuna crittografia della connessione. Ciò significa che qualsiasi utente malintenzionato sarà in grado di intercettare il tuo traffico e falsificare il tuo indirizzo IP. Ad esempio, mostrarti una pagina di Internet banking falsa. È inoltre auspicabile nascondere questo traffico dal provider o da forze dell'ordine(non sai mai cosa J).

2) I server DNS dei provider sono tenuti per legge a salvare i log(da quale IP, quali siti visitati e tempo di connessione), nonché su richiesta delle forze dell'ordine di fornire questi registri (spero che tutti lo sapessero? J). Dirò ancora di più, il 99% dei server DNS del mondo scrive log e non lo nasconde.

Se all'improvviso non vuoi che qualcuno intercetta i tuoi dati o legga i log delle tue visite, c'è opzione affidabile. Cosa dovrebbe essere fatto:

1) Devi crittografare la connessione. Per fare ciò, esiste un programma DNSproxy. Si connette al server DNS non direttamente, ma crittografato tramite il risolutore DNS (semplicemente reindirizza le richieste al server DNS). A sua volta, il resolver trasmette i dati al server DNS anche su una connessione crittografata. Cioè, in questo modo, utilizzando sniffer (ad esempio WIreshark), puoi scoprire solo l'indirizzo IP del resolver. Ma poiché i pacchetti vengono crittografati utilizzando la "crittografia a curva ellittica" (crittografia ellittica), è impossibile determinare con quale server DNS specifico stiamo scambiando dati.

2) È necessario utilizzare server DNS che non conservano i log. Come capisci, i server del provider scompaiono immediatamente. Inoltre, per anonimato, non è possibile utilizzare i server DNS di Google o Yandex, poiché ammettono onestamente di archiviare informazioni (leggi la loro Informativa sulla privacy). Ma ci sono server DNS che ci aiuteranno. Questo è www.opennicproject.org. Il sito dice che i server non scrivono alcun log (beh, credetemi). Ma, sfortunatamente, questi server sono instabili e talvolta cadono. Per risolvere questo problema, puoi utilizzare il programma Proxy DNS acrilico". Ti consente di effettuare richieste non a un server DNS, ma a 10 contemporaneamente. E il pacchetto dal server che arriva più velocemente sarà accettato dal programma. Pertanto, risolveremo due problemi contemporaneamente: riduciamo al minimo la perdita di velocità di query (perché la maggior parte scambio veloce i dati di solito si verificano con i server DNS del provider) e livelliamo l'instabilità di qualsiasi server.

Quindi dobbiamo crittografare la connessione a DNS sicuro server. Questo è utile non solo per chi non utilizza una VPN (come risolvere il problema della perdita DNS verrà scritto più avanti). Iniziamo:

2) Nelle tue impostazioni connessione di reteè necessario inserire manualmente l'indirizzo DNS. Vai a Centro rete e controllo accesso pubblico» -> «Collegamento tramite rete locale» -> «Proprietà» -> «Protocollo Internet versione 4 TCP/IPv4». Abbiamo messo 127.0.0.1 lì. La seconda riga dovrebbe essere lasciata vuota.

3) Per avviare AcrylicDNSProxy, vai su Start e fai clic su " Avvia servizio acrilico". Dovrebbe apparire un messaggio di successo.

4) Ora controlliamo i nostri server DNS su www.perfect-privacy.com/dns-leaktest . Dovrebbe essere qualcosa come nello screenshot:


Riso. 2

Puoi aggiungere un file AcrilicoController.exe per caricare automaticamente.

5) Ora crittografiamo le nostre richieste ai server DNS utilizzando il programma DNScrypt.

6) Decomprimere ed eseguire dnscrypt-winclient.exe. Lì selezioniamo la nostra scheda di rete e facciamo clic su Installa. La connessione ai server DNS è ora crittografata.

7) Verifichiamo cosa ci mostreranno ora i nostri servizi di verifica. Vai a www.perfect-privacy.com/dns-leaktest . Nessuno dei nostri server dovrebbe essere determinato.

E se vai su http://whoer.net , l'unica cosa che può mostrare è l'indirizzo del risolutore DNS attraverso il quale passano le richieste DNS. I server stessi sono "sconosciuti".


Riso. 3

Crittografia VPN + DNS

La figura mostra uno schema di connessione tipico per la tua connessione quando ti connetti ai server VPN.


Fig 4.

Come puoi vedere, esiste una vulnerabilità: le richieste DNS possono essere inviate contemporaneamente tramite il server VPN e direttamente al server DNS specificato della tua connessione di rete.

Sembrerebbe che tu possa semplicemente registrare manualmente il server DNS nelle impostazioni di connessione come 127.0.0.1 in modo che non ci siano richieste extra al DNS del provider. Ma, ovviamente, quando ci si disconnette da Internet VPN non funzionerà perché quando ci si connette a una VPN, vengono utilizzati i propri server DNS. Se inserisci solo due server del progetto www.opennicproject.org, ciò ridurrà la velocità di navigazione in Internet quando la VPN è disabilitata. In questo caso si consiglia anche di installare il programma AcrylicDNSProxy, che non permetterà di diminuire la velocità di navigazione. Ma una volta installato AcrylicDNSProxy, perché non installare anche DNScrypt?

Se utilizzi i servizi VPN il 100% delle volte, puoi semplicemente registrare un indirizzo IP Impostazioni DNS: 127.0.0.1. Questo sarà sufficiente.

Pertanto, è stato trovato uno schema interessante per rendere anonime e nascondere le richieste DNS, il che aiuterà un po' se ti imbatti in "autorità" e se un hacker locale malvagio decide di reindirizzare le richieste DNS e mostrare i siti dei tuoi figli invece di "Aspetta solo" - siti per adulti.

Nota: se tutto questo non ti serve, installa AcrylicDNSProxy specificando i server del tuo provider, Yandex, Google, ecc., che ti daranno una notevole accelerazione della navigazione in Internet.

Grazie per l'attenzione.

Articoli correlati in alto