Kako podesiti pametne telefone i računare. Informativni portal

Šifrovani dns. DNSCrypt - DNS šifriranje saobraćaja za paranoide

Ovaj članak je napisan na zahtjev jednog od čitatelja bloga. I moram reći - tema je vrlo zanimljiva.

U današnje vrijeme, pitanje zaštite prenesenog saobraćaja na Internetu postaje sve akutnije. Mnogi ljudi mogu poželjeti vaše podatke - od sajber kriminalaca koji će na svaki način htjeti doći do vaših lozinki do razne usluge, obavještajnim agencijama koje žele znati sve o svakom vašem koraku. I dalje zadato vreme, postoji veliki broj"samoodbrane" na internetu. Jedna tako jednostavna, ali vrlo efektivna sredstva, biće riječi u ovom članku - DNScrypt.

Postoji tako divan resurs koji se zove OpenDNS koji obezbeđuje svoje javne DNS servere. OpenDNS predlaže DNS rješenja za korisnike i preduzeća, kao alternativu korišćenju DNS servera koji nudi njihov provajder. Postavljanje servera kompanije u strateška područja i korištenje velikog keša imena domena dovodi do toga da OpenDNS po pravilu mnogo brže ispunjava zahtjeve, čime se povećava brzina otvaranja stranica. Rezultati DNS upita se keširaju neko vrijeme operativni sistem i/ili aplikacije, tako da se ova brzina ne može primijetiti kod svakog zahtjeva, već samo kod onih zahtjeva koji nisu keširani.

Pošto saobraćaj između DNS servera i vašeg računara nije šifrovano, ovo stvara ozbiljan rizik od presretanja saobraćaja. DNS šifriranje saobraćaja će zaštititi klijenta od napada "čovek u sredini" u kojoj se napadač uglavljuje u komunikacijski kanal i pretvara se da je DNS server. Osim toga, enkripcija sprječava praćenje prometa i blokira napadače da pogode ID-ove paketa ili da pošalju lažne DNS odgovore. jednostavno rečeno: DNS enkripcijaće spriječiti phishing napade kada se otvori zlonamjerna kopija stranice umjesto željene stranice na koju unesete svoje podatke. Sa svim onim što implicira. Osim toga, ISP-u će postati mnogo teže da otkrije koje ste stranice posjetili (jer u evidenciji neće biti informacija o zahtjevima za razlučivanje imena). Da bi sve ovo organizirao, OpenDNS projekt je objavio divan uslužni program s otvorenim kodom izvorni kod- DNScrypt.

Ovaj uslužni program će šifrirati sav preneseni promet između vašeg računala i OpenDNS servera. Ako vaš ISP blokira web stranicu svojim ime domena- sada ova stranica radi! Još jedan plus. Ovaj uslužni program dostupno na širokom spektru sistema. Opisat ću instalaciju i konfiguraciju koristeći primjer. Debian i Ubuntu / Linux Mint.

V Ubuntu 14.04 i Debian 8, ovaj uslužni program nije dostupan. Opcija 2: napravite sami ili koristite spremišta trećih strana. U slučaju Ubuntu-a, ovo će biti PPA:

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

U slučaju Debiana, samo preuzmite paket dnscrypt-proxy iz testnog repozitorija izdanja. I instalirajte sa GDebi, ili naredbom sudo dpkg -i dnscrypt-proxy_1.6.0-2_amd64.deb.

Za samostalnu montažu:

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

Tokom procesa instalacije, od vas će biti zatraženo da odaberete DNS server. Odaberite OpenDNS.

Dodatne postavke nije potrebno, paket sadrži sve što vam treba. Sve što trebate učiniti je malo rekonfigurirati svoju mrežnu vezu. Otvorite postavku mrežne veze, odaberite svoj, idite na karticu IPv4, promijenite automatski (automatski) na Automatski (samo adrese) (Automatski (samo adresa) i navedite DNS adresu 127.0.2.1

Ponovo pokrenite, povežite se i idite na

Mislite da je vaša anonimnost zaštićena. Nažalost, to nije slučaj. Postoji jedan veoma važan kanal za curenje vaših privatnih informacija - DNS usluga... No, srećom, i za to je izmišljeno rješenje. Danas ću vam pokazati kako šifrirati svoj DNS promet pomoću uslužnog programa DNSCrypt.

Kada koristite HTTPS ili SSL, vaš HTTP promet je šifriran, odnosno zaštićen. Kada koristite VPN, sav vaš promet je već šifriran (naravno, sve ovisi o VPN postavkama, ali u pravilu je tako). Ali ponekad, čak i kada koristite VPN, vaši DNS zahtjevi nisu šifrirani, oni se prenose takvi kakvi jesu, što se otvara ogroman prostor za "kreativnost" uključujući MITM napade, preusmjeravanje prometa i još mnogo toga.

Tu u pomoć dolazi uslužni program otvorenog koda DNSCrypt, koji su razvili kreatori vama dobro poznatih OpenDNS-a - programa koji vam omogućava šifriranje DNS zahtjeva. Nakon što ga instalirate na računar, vaše veze će također biti zaštićene i moći ćete sigurnije surfovati Internetom. Naravno, DNSCrypt nije lijek za sve probleme, već samo jedan od sigurnosnih alata. I dalje morate koristiti VPN vezu za šifriranje cijelog prometa, ali će biti sigurnije kada se upari s DNSCrypt. Ako ste zadovoljni ovako kratkim objašnjenjem, možete odmah preći na dio u kojem ću opisati instalaciju i korištenje programa.

Pokušajmo to shvatiti dublje. Ovaj dio je za istinski paranoične. Ako cijenite svoje vrijeme, onda možete odmah preći na instalaciju programa.
Dakle, kako kažu, bolje je jednom vidjeti nego sto puta čuti. Pogledaj crtež.

Recimo da klijent (laptop na slici) pokušava pristupiti google.com Prije svega, trebao bi
razriješi simboličko ime hosta u IP adresu. Ako je mrežna konfiguracija takva da se koristi DNS server provajdera (nešifrirana veza, crvena linija na slici), tada je rezolucija simbolično ime na IP adresu dolazi preko nešifrirane veze.

Da, niko neće znati koje podatke ćete prenijeti na dkws.org.ua. Ali postoje neke vrlo frustrirajuće tačke. Prvo, provajder će, gledajući DNS logove, moći da sazna koje ste sajtove posetili. Da li ti treba? Drugo, vjerovatni su napadi DNS lažiranja i DNS njuškanja. Neću ih detaljno opisivati, o tome je već napisano mnogo članaka. Ukratko, situacija može biti sljedeća: neko između vas i provajdera može presresti DNS zahtjev (a pošto zahtjevi nisu šifrirani, neće biti teško presresti zahtjev i pročitati njegov sadržaj) i poslati vam " lažni” odgovor. Kao rezultat toga, umjesto da posjetite google.com, otići ćete na stranicu napadača, kao dva graška u mahuni sličnoj onoj koja vam je potrebna, unesite lozinku sa foruma, a onda je razvoj događaja, mislim, jasno.

Ova situacija se naziva curenje DNS-a. Do curenja DNS-a dolazi kada vaš sistem čak i nakon povezivanja na VPN server ili Tor nastavlja da ispituje DNS servere ISP-a za razrešenje imena domena. Svaki put kada posjetite novu stranicu, povežite se na novi server ili pokrenite neki mrežna aplikacija, na koji se odnosi vaš sistem DNS provajder da razriješite ime u IP. Kao rezultat toga, vaš provajder ili bilo ko ko je na "posljednjoj milji", odnosno između vas i provajdera, može dobiti sva imena čvorova kojima pristupate. Gornja opcija sa lažiranjem IP adrese je potpuno okrutna, ali u svakom slučaju moguće je pratiti stranice koje ste posjetili i koristiti ove informacije u vlastite svrhe.

Ako se "plašite" svog provajdera ili jednostavno ne želite da on vidi koje stranice posjećujete, možete (naravno, osim korištenja VPN-a i drugih sigurnosnih alata) dodatno konfigurirati svoj računar da Upotreba DNS-a OpenDNS projektni serveri (www.opendns.com). Na ovog trenutka ovo su sljedeći serveri:

208.67.222.222
208.67.220.220

U isto vrijeme, nije vam potreban nikakav drugi dodatni softvera... Samo konfigurišite svoj sistem da koristi ove DNS servere.

Ali problem presretanja DNS veza i dalje ostaje. Da, već pristupate ne DNS-u provajdera, već OpenDNS-u, ali još uvijek možete presresti pakete i vidjeti šta je u njima. To jest, ako želite, možete saznati kojim čvorovima ste pristupili.

Tako dolazimo do DNSCrypt-a. Ovaj softver vam omogućava da šifrirate svoje DNS veza... Sada vaš ISP (i svi između vas i njih) neće tačno znati koje stranice posjećujete! Ponovit ću se. Ovaj program nije zamjena za Tor ili VPN. Kao i prije, ostatak podataka koje prenosite prenosi se bez enkripcije ako ne koristite ni VPN ni Tor. Program šifrira samo DNS promet.


KAO ZAKLJUČAK

Pokazalo se da članak nije bio dug, jer je sam program vrlo jednostavan za korištenje. Ali bilo bi nepotpuno da ne pomenem i VPN. Ako ste pročitali ovaj članak, zanima vas, ali još uvijek ne koristite usluge VPN provajdera za šifriranje vaših podataka, onda je vrijeme da to učinite.
VPN provajder će vam osigurati siguran tunel za prijenos vaših podataka, a DNSCrypt će osigurati vaše DNS veze. svakako, VPN usluge provajderi su plaćeni, ali morate platiti sigurnost?

Možete, naravno, koristiti Tor, ali Tor je relativno spor, a ovo, kako god da se kaže, nije VPN - sav promet se ne može "torificirati". U svakom slučaju (koju god opciju da odaberete) vaše DNS veze su sada sigurne. Ostaje samo da se odlučite za alat za šifriranje prometa (ako to još niste učinili).

Zadnji put ažurirano 30. oktobra 2016.

U pretraživačima iu ovom članku biti će Curenje DNS saobraćaja. Što pogađa sve, čak i one koji koriste VPN usluge i vjeruju da su iza kamenog zida.

Zdravo, prijatelji! Danas ću vam reći šta je curenje DNS-a, zašto biste to trebali znati i kako se zaštititi od njega pomoću besplatnog uslužnog programa DNSCrypt.

  • Predgovor
  • Šta znači curenje DNS-a?
  • Kako provjeriti curenje DNS-a
  • Kako popraviti curenje DNS-a pomoću DNSCrypt-a
    • Preuzmite DNSCrypt
    • Instaliranje DNSCrypt-a
    • Koristeći DNSCrypt
  • DNSCrypt u Yandex pretraživaču
  • DNSCrypt u ruteru
  • Zaključak
  • Ocjena i recenzije

Šta znači curenje DNS-a?

Kada koristite HTTPS ili SSL, vaš HTTP promet je šifriran, što znači siguran (nije savršen, ali siguran). Kada koristite VPN, sav vaš promet je potpuno šifriran (naravno, razina i kvaliteta zaštite ovisi o tome ispravno podešavanje VPN, ali obično je sve postavljeno i radi kako treba).

Ali postoje situacije u kojima čak i sa koristeći VPN, vaši DNS upiti se prenose u jasnom nešifrovanom obliku. Ovo se otvara napadaču velike prilike za kreativnost. može preusmjeriti promet, koristiti napad čovjeka u sredini (MITM) i učiniti gomilu drugih stvari koje mogu ugroziti vašu sigurnost i anonimnost na mreži.

Pokušajmo dublje razumjeti ovo pitanje. Ako vas ne zanima teorija, ali ste zabrinuti za sigurnost, možete preskočiti na sljedeće poglavlje. Ako želiš da znaš više, raskomoti se, sad ću ti izvaditi mozak.

U našem primjeru na donjoj slici vidite kako korisnik (računar) pokušava pristupiti stranici www .. Da bi došao do stranice, prvo mora razriješiti simbolično ime hosta u IP adresu.

Ako je mrežna konfiguracija takva da se koristi DNS server provajdera (nešifrovana veza, označena crvenom linijom), tada se simbolično ime razrješava na IP adresu preko nešifrirane veze.

Šta je tu strašno?

Prvo, u takvoj situaciji, provajder može pregledati DNS istorija i saznajte koje ste stranice posjetili. Naravno, neće saznati kakvi su podaci preneseni, ali može lako vidjeti adrese stranica.

Drugo, postoji Velika šansa biti žrtva hakerski napad... Kao što su: njuškanje DNS keša i lažiranje DNS-a.

Šta je DNS njuškanje i lažiranje?

Ukratko, za one koji ne znaju.

DNS njuškanje- uz pomoć ovog napada napadač može daljinski saznati koji su domeni nedavno riješeni na DNS serveru, odnosno koje je domene žrtva nedavno posjetila.

DNS lažiranje- Napad se zasniva na inficiranju keša DNS servera žrtve lažnim unosom o podudarnosti imena DNS hosta kojem žrtva vjeruje.

Pošto zahtjevi nisu šifrirani, neko između vas i provajdera može presresti i pročitati DNS zahtjev, a zatim vam poslati lažni odgovor...com ili vk.com, bićete odvedeni na lažni ili kako kažu , haker (ne samo stranice obrasca, već i url u adresna traka), nakon čega upisujete svoje korisničko ime i lozinku, a onda i sami razumijete šta će se dogoditi. Podaci o autorizaciji bit će u rukama napadača.

Ova situacija se naziva curenje DNS-a. To se dešava kada vaš sistem razriješi imena domena čak i nakon povezivanja na VPN server ili Tor mrežu nastavlja da pita DNS serveri vaš ISP. Svaki put kada pokušate da posetite veb lokaciju, povežete se na novi server ili pokrenete neku vrstu mrežne aplikacije, vaš sistem će kontaktirati DNS servere vašeg ISP-a da razreši ime u IP adresu. Kao rezultat toga, neki haker ili vaš ISP moći će saznati sva imena čvorova kojima pristupate.

Ako imate nešto da sakrijete, onda predlažem da koristite jednostavno rješenje - DNSCrypt. Možete, naravno, registrovati neke druge DNS servere i pustiti promet preko njih. Na primjer Google server 8.8.8.8 ili isti OpenDNS 208.67.222.222, 208.67.220.220. U ovom slučaju ćete, naravno, sakriti historiju posjeta sajtu od provajdera, ali ćete reći Google-u o svojim online putovanjima. Osim toga, neće biti enkripcije DNS prometa, i to veliki nedostatak... Ne znam za vas, ali mene ne pali, bolje da instaliram DNSCrypt.

Kako provjeriti curenje DNS-a

Prije nego što pređemo na sam uslužni program, želio bih da vas upoznam sa posebnim online uslugama. Omogućavaju vam da provjerite curenje DNS-a.

Za program je potreban Microsoft. NET Framework 2.0 i novije verzije.

Možete preuzeti DNSCrypt za Mac OS X koristeći vezu sa Gitaba ili sa gornje veze za deljenje datoteka.

Programer OpenDNS softvera.

Instaliranje DNSCrypt-a

U ovom članku ćemo analizirati kako raditi s konzolnom verzijom uslužnog programa. Konfigurisaćemo DNSCript na Windows 10. Instalacija na drugim verzijama Windowsa se ne razlikuje.

Dakle, raspakujte preuzetu arhivu i postavite sadržaj foldera dnscrypt-proxy-win32 bilo gde na računaru. U mom primjeru, locirao sam ga u folderu "C: \ Program Files \ DNSCrypt \".

Zatim otvorite komandnu liniju kao administrator.


Pokrenite komandnu liniju kao administrator u Windows 10

Sada unutra komandna linija idite u fasciklu DNSCrypt. Ovo se može uraditi pomoću naredbe:

cd "C: \ Program Files \ DNSCrypt"

Kliknite ako ne možete kopirati komande.

Nakon toga, pripremimo se za instaliranje proxy usluge. Prvo morate odabrati DNS provajdera. Stavio sam datoteku dnscrypt-resolvers.csv u arhivu. Ova datoteka sadrži listu većine DNS provajdera koje DNSCrypt podržava. Svaki pojedinačni provajder ima ime, opis, lokaciju i podršku za DNSSEC i Namecoin. Osim toga, datoteka sadrži potrebne IP adrese i javne ključeve.

Odaberite bilo kojeg provajdera i kopirajte vrijednost u prvoj koloni. U mom slučaju, koristiću CloudNS, pa sam kopirao “cloudns-can”. Sada morate biti sigurni da se proxy može povezati. Ovo se može uraditi pomoću ove naredbe:

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

Ako ne uspijete, pokušajte odabrati drugog provajdera i pokušajte ponovo.

Ako je sve prošlo kako treba, nastavite s instalacijom i unesite sljedeću naredbu:

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

Ako sve radi kako treba, vidjet ćete sljedeći izlaz:

Snimak ekrana kako bi to trebalo izgledati u komandnoj liniji:

Zatim morate otići na TCP / IP Windows postavke i promijeniti DNS postavke na 127.0.0.1.

Da biste uklonili DNSCript uslugu, morate se vratiti mrežne postavke DNS u početno stanje. Ovo se radi pomoću ove naredbe:

dnscrypt-proxy --uninstall

Ova komanda se također može koristiti za promjenu DNS provajdera. Nakon prijave potrebno je ponoviti instalaciju sa parametrima drugog provajdera.

Da li nakon sve ove procedure, iz nekog razloga, tokom provjere, još uvijek morate utvrditi DNS IP adresa vašeg internet provajdera, kliknite na dugme "Napredno" koje se nalazi pod registrovanim IP 127.0.0.1. U prozoru koji se pojavi “ Dodatne opcije… ”, Idite na karticu „DNS” i izbrišite sve adrese DNS servera osim „127.0.0.1”.

To je to, sada je curenje DNS-a popravljeno.

Možda će vas zanimati i članak "", koji je govorio o uklanjanju DNS zapisi na kompjuteru.

DNSCrypt u Yandex pretraživaču

Nedavno je Yandex pretraživač dodao podršku za DNSCripts. Pa, šta da kažem, momci iz Yandexa rade i pokušavaju zaštititi korisnika - ovo je odlično, ali za razliku od uslužnog programa DNSCrypt, Yandexova zaštita implementirana je samo na razini preglednika, a ne na razini cijelog sistema.

DNSCrypt u ruteru

Takođe, podrška za DNSCript je implementirana u popularnim OpenWrt firmver... Više o instalaciji i ostalom Dodatne informacije možete saznati na stranici.

Zaključak

Naravno, uslužni program DNSCript i DNS enkripcija općenito nisu lijek, i zaista u sigurnost informacija ne postoji panaceja. Možemo samo maksimizirati našu sigurnost i anonimnost, ali nažalost neće raditi da naše prisustvo na mreži učinimo 100% neranjivim. Tehnologija ne stoji mirno i uvijek postoje rupe u zakonu. Stoga predlažem da se pretplatite na naše vijesti u na društvenim mrežama da uvek budem u toku. Slobodno je.

To su sve prijatelji. Nadamo se da vam je ovaj članak pomogao da riješite problem s curenjem DNS-a. Sretno u novoj 2017, budite sretni!

Procjena uslužnog programa DNSCrypt

Naš rejting

DNSCrypt - besplatni uslužni program za zaštitu DNS prometa Šifriranjem DNS prometa i korištenjem DNS servera. Naša ocjena je veoma dobra!

Ocjena korisnika: 4.25 (36 ocjena)

Često se postavlja pitanje šta je DNSCrypt i zašto je potreban. Prije nekog vremena sam već pisao, tada se radilo o podršci u beta verziji pretraživača. Ovaj put ćemo detaljno pogledati tehnologiju, a Yandex Browser će poslužiti kao primjer i izvor laboratorijskih podataka. Pakete analiziram u Wiresharku, za koji sam napisao mali DNSCrypt parser (u Wireshark terminologiji, ovo je disektor, na Lua jezik; Nisam mogao pronaći standardni DNSCrypt parser u Wiresharku).

DNSCrypt je proxy usluga koja kreira siguran kanal između klijentovog DNS razrjeđivača i rekurzivnog DNS razrjeđivača koji radi na serveru. DNSCrypt ima dva dijela, odnosno klijenta i servera. Putem DNS saobraćaja, koji se redovno prenosi na otvorena forma, informacije o posjećenim stranicama mogu procuriti. Osim toga, DNS upiti su uobičajeni vektor napada za lažiranje adresa. Promjena adrese razrešivača DNS sistema u lažnu adresu servera je zajedničko mjesto Trojanci dugi niz godina. Isto se odnosi i na napade na kućne rutere. DNSCrypt vam omogućava da šifrirate (i također da pružite ograničenu zaštitu od lažiranja) i DNS zahtjeva i odgovora. Moguće je autentifikovati server i klijent, ali se ova funkcija ne koristi uvijek. Općenito, tema skrivanja DNS prometa (DNS Privacy) sada dobiva primjetnu popularnost. Osim DNSCrypt-a, postoji, na primjer, “DNS over TLS” protokol (DNS over TLS je svježi RFC 7858, koji, unatoč nekoj “inverziji”, ne izgleda ništa gore od DNSCrypt-a). Ima i drugih pomaka.

DNSCrypt. Protokol može koristiti i TCP i UDP kao transport. U praksi se preferira UDP ako je dostupan, ali specifikacija striktno zahtijeva da TCP bude podržan (ne UPD, što je opciono). TCP prirodno privlači svojom prirodom sesije. Ali UDP je mnogo brži, posebno za zauzete usluge. Zbog problema sa DDoS napadima i nekih drugih sigurnosnih problema, sada je trend prevođenja. maksimalan broj usluge na TCP, posebno DNS. Ipak, u nastavku smatram da DNSCrypt radi samo preko UDP-a, jer je ovo tradicionalna opcija za DNS. Preporučeni broj DNSCrypt (serverskog) porta je 443 (obično je otvoren na korporativne mreže; praksa korištenja 443 / udp, na primjer, standardna je za brojne VPN-ove i druge usluge; 443 /tcp je TLS / HTTPS, temelj web servisa). Međutim, Yandex u implementaciji DNSCrypt-a koristi neprivilegirani broj: 15353, vjerovatno zbog nekih ideja za prevazilaženje raznih mrežnih barijera.

Još malo o barijerama: neće biti problema s blokiranjem DNSCrypt prometa, ako provajder kanala ima takvu želju. Kao što će biti jasno iz opisa u nastavku, ovaj protokol ni na koji način ne pokušava sakriti činjenicu njegove upotrebe. U saobraćaj ovog protokola uključeno standardni markeri koji će vam omogućiti da otkrijete i filtrirate pakete čak i na najprimitivnijem ruteru, koristeći jednostavno pravilo dva reda. U ovom slučaju, na primjer, pristup za druge TCP sesije koje rade na portu 443 će biti sačuvan.

U DNSCrypt-u, uspostavljanje sesije između klijenta i servera počinje redovnim DNS zahtjevom koji se šalje na adresu i odgovarajući broj porta hosta koji će pružiti funkcije rješavanja imena. Ovo je zahtjev za TXT zapisom za ime posebna vrsta(odnosno, zahtjev se već može lako filtrirati). Na primjer, u slučaju usluge Yandex: 2.dnscrypt-cert.browser.yandex.net. Ovo posebno ime ne može biti delegirano. Vrijednost 2 odgovara verziji DNSCrypt-a. Trenutna verzija je druga. Kao odgovor, server bi trebao poslati jedan ili više DNSCrypt certifikata (naglašavam: oni nemaju nikakve veze sa SSL certifikatima).

Snimak ekrana prikazuje paket sa certifikatom Yandex DNSCrypt servera.

Certifikat je skup od nekoliko polja: verzija certifikata, vrijednost potpisa, javni ključ server, magični bajtovi za klijenta (oni će služiti kao identifikator za zahtjeve klijenta - server će moći da shvati koji ključ će koristiti kada odgovara), serijski broj i datum isteka.

Specifikacija pretpostavlja da server prenosi kratkoročni javni ključ kao dio certifikata. (Međutim, u slučaju Yandex servera, dati ključ nije se promijenio barem od kraja marta, kada je pokrenuta beta verzija pretraživača sa podrškom za DNSCrypt.) Potpis na certifikatu mora biti generisan iz drugog para ključeva. Javni ključ ovog para je poznat klijentu - potrebno je provjeriti potpis. Očigledno, nema smisla potpisivati ​​certifikat istim ključem koji se koristi u sesiji. Nisam provjerio da li je validan serverski sertifikat"Yandex pretraživač". Činjenica je da u modelu prijetnji za koji se DNSCrypt koristi u Yandex pretraživaču, validacija certifikata nema previše smisla, kao ni poređenje vrijednosti ključa sa sačuvanom kopijom (vratit ću se na ovu tačku u nastavku).

Kao kriptografske primitive, DNSCrypt koristi konstrukcije iz Salsa20 šifre (XSalsa20), Poly1305 hash funkciju (za implementaciju autentificirane enkripcije) i X25119-hsalsa20 algoritam za generiranje dijeljenog ključa sesije (algoritam koristi funkciju Curve25119 curve25119 ). Ove dizajne je razvio Daniel J. Bernstein i dugo su bili prepoznati kao vrlo čvrsti. Algoritam za dobijanje zajedničke tajne (ključ sesije) je matematički povezan sa Diffie-Hellman algoritmom. Imajte na umu da je zajednička tajna u u ovom slučaju moguće je povratiti post factum ako odgovarajući tajni ključ iz para serverskih (ili klijentskih) ključeva postane poznat, to će omogućiti dešifriranje prethodno snimljenog prometa, zbog čega specifikacija preporučuje korištenje kratkoročnih ključeva.

XSalsa20 u načinu šifriranja s provjerom autentičnosti zahtijeva 192-bitni (24 bajta) jednokratni unos. Ponovna upotreba iste kombinacije ključa i nonce nije dozvoljena. To je zbog arhitekture XSalsa20 šifre - ponovo koristiti nonce će procuriti: strana koja sluša će znati XOR vrijednost iz para uparivanja otvoreni tekst... Prema tome, nonce bi svaki put trebao biti nov, ali ne nužno slučajan. DNSCryptov nonce dolazi u dvije inkarnacije: klijent i server.

Pogledajmo šifrovano zahtjev klijenta poslao Yandex pretraživač.

Prvo polje upita je magija vrednosti klijenta (Client query magic bytes), koja koristi deo javnog ključa servera dobijenog ranije. Ako je potrebno, ovi "magični bajtovi" mogu poslužiti kao potpis koji omogućava prometu da izabere zahtjeve koji se šalju na DNSCrypt;
Sljedeće polje je klijentov javni ključ;
Klijentsko jednoznačno mjesto je 96 bita (12 bajtova), polovina potrebnog nonce za šifru XSalsa20 (prema DNSCrypt specifikaciji, dopunjeno sa 0 bajtova). Možete koristiti jedan ili drugi brojač, a Yandex Browser radi upravo to: očigledno, ovdje se prenosi 64-bitna vrijednost vremenske oznake milisekundi (vrijeme generiranja zahtjeva), kojoj se dodaju četiri bajta pseudo-slučajnih vrijednosti . U slučaju da zaista jeste tačno vreme prenosim u čistom tekstu, napominjem da su parametri odstupanja sistemski sat služe kao dobar znak koji identifikuje određeno hardverski uređaj, - odnosno može se koristiti za deanonimizaciju;
Posljednje polje je sam šifrirani zahtjev. Za enkripciju se koristi zajednički tajni ključ, koji strane izračunavaju na osnovu prenesenih javnih ključeva. U slučaju klijenta, javni ključ se prenosi u paketu DNS zahtjeva (vidi gore). Yandex pretraživač prati standardnu ​​praksu i generiše novi par ključeva (javni/tajni) za X25119-hsalsa20 svaki put kada se pretraživač pokrene. Za usklađivanje podataka sa granicom bloka od 64 bajta, kako specifikacija nalaže, koristi se standardni komplementar (ISO / IEC 7816-4: 0x80 i nula bajtova prema potrebi).

Blok šifriranih podataka je najvjerovatnije rezultat korištenja funkcije crypto_box iz biblioteke libsodium (ili NaCl, na koju upućuje DNSCrypt specifikacija; libsodium je vilica NaCl). Pretpostavio sam da je 16-bajtni kod za autentifikaciju (MAC) koji se koristi za provjeru integriteta poruke prije dešifriranja vjerovatno na početku bloka. Međutim, pošto nisam pokušao da dešifrujem podatke, nije toliko važno odrediti lokaciju koda. Za dešifriranje možete koristiti tajni ključ koji se nalazi u memoriji dok je pretraživač pokrenut, ali da biste ga izdvojili, potrebno je neko vrijeme petljati s programom za otklanjanje pogrešaka i rastavljačem.

Šifrirani odgovor primljen od servera:

(Lako je vidjeti da je odgovor prikazan na snimku ekrana primljen skoro pet sekundi nakon zahtjeva, zašto se to dogodilo - očigledno, tema za posebnu napomenu.)

Paket se otvara magično, u ovom slučaju, to su bajtovi koji sadrže DNSCrypt token odgovora (opet, dobar potpis za detekciju saobraćaja). Ovi bajtovi su definisani protokolom i moraju se pojaviti na početku bilo kog odgovora servera na zahtjev za rješavanje DNS-a;
Sljedeće polje je nonce (Response nonce). Polje sadrži nonce vrijednost koju poslužitelj koristi prilikom šifriranja ovog odgovora. Teren je izgrađen od dva jednaki dijelovi, po 12 bajtova: nonce iz odgovarajućeg klijentskog zahtjeva i serverskog komplementa;
Završni dio paketa su šifrirani podaci odgovora, format je sličan zahtjevu.

Vratimo se sada na model prijetnji, koristeći primjer Yandex pretraživača. Ako je korištenje DNSCrypt-a omogućeno u postavkama preglednika, na primjer, preko Yandex servera, ali je pristup odgovarajućem serveru blokiran, tada pretraživač (kao i beta verzija) transparentno, bez upozorenja, prelazi na korištenje sistemskog rezolvera. Zašto ovo čini besmislenim provjeru valjanosti certifikata DNSCrypt servera? Zato što aktivni napadač koji može lažirati pakete na IP nivou može jednostavno blokirati pristup serveru kako bi onemogućio DNSCrypt u pretraživaču, umjesto da troši resurse na davanje odgovora. Iz ovoga možemo zaključiti da Yandex model prijetnje ne uključuje aktivno lažiranje paketa na putu od DNSCrypt servera do klijenta.

Konačno, riječ ili dvije o tome kako se DNSCrypt odnosi na DNSSEC. DNSSEC ne skriva podatke o DNS saobraćaju, ali ih štiti od lažiranja, bez obzira na kanal razmjene informacija. U slučaju DNSSEC-a, nije bitno na kom kanalu se podaci primaju od DNS-a, glavna stvar je da su ključevi na svom mjestu. DNSCrypt - skriva promet i ograničeno ga štiti od lažiranja na putu od rekurzivnog razrjeđivača (usluga rješavanja) do klijenta. Ako su podaci promijenjeni na putu do razrjeđivača (ili na samom serveru za razrješenje), a ne podržavaju DNSSEC, tada će klijent primiti oštećene informacije, doduše preko kanala zaštićenog DNSCryptom. Serveri koji pružaju DNSCrypt mogu također podržavati DNSSEC.

Dalje - mišljenja i rasprave

(Poruke u nastavku dodaju čitaoci stranice putem obrasca koji se nalazi na kraju stranice.)

Svako ko razmišlja o anonimnosti na internetu zna odličan način sakriti svoju IP adresu na internetu je VPN usluga. Međutim, čak i sa VPN vezom, upiti prema DNS serveru često ostaju nezaštićeni i lako možete pratiti kuda idu vaši DNS upiti. Naziva se i “DNSleaks” ili “DNS curenje”.

Pogledajmo pobliže šta je DNS i koji su problemi.

Kao što znate, svaki računar na Internetu ima svoju IP adresu, a bez poznavanja IP adrese računara, nemoguće je poslati mu informaciju ili zahtev. IP adresa je u obliku 4-bajtnog broja, odvojenog tačkama (na primjer, 162.234.12.110 ili 78.31.54.226).

Za običan čovek zapamtiti veliki broj IP adresa nije lako, pa se na početku razvoja interneta pojavila potreba za alatom koji bi korisnicima Interneta olakšao život. DNS je postao takav alat - sistem imena domena. DNS server je alat koji vam omogućava da odredite IP adresu po imenu domene.

Na primjer, uneli ste adresu web stranice u liniju pretraživača, pretraživač je poslao zahtjev na DNS server, koji je naveden u postavkama vaše internet veze. Server šalje nazad paket odgovora koji sadrži IP adresu željene lokacije.

S jedne strane, sve je urađeno zgodno - samo ste priključili kabel mrežna kartica, automatski vam je dodijeljen DNS server ISP-a s brzim odgovorom i sve radi. Ali s druge strane, postoje dva problema s ovom šemom:

1) Ne postoji enkripcija veze... To znači da svaki napadač može presresti vaš promet i lažirati vašu IP adresu. Na primjer, pokazati vam lažnu stranicu Internet banke. Također je preporučljivo sakriti ovaj promet od provajdera ili od sprovođenje zakona(nikad se ne zna šta J).

2) DNS serveri provajdera su zakonski obavezni da vode evidenciju(sa kojeg IP-a, koje stranice su posjećene i vrijeme povezivanja), kao i, na zahtjev agencija za provođenje zakona, dostaviti ove zapise (nadam se da su svi ovo znali? J). Štaviše, 99% svjetskih DNS servera piše dnevnike i ne skriva ih.

Ako odjednom ne želite da vaše podatke neko presretne ili da pročitate dnevnike vaših posjeta, postoji pouzdana opcija... Šta treba učiniti:

1) Morate šifrirati vezu. To je ono čemu služi DNSproxy program. Ne povezuje se direktno na DNS server, već je šifrovan preko DNS rezolvera (jednostavno preusmerava zahteve na DNS server). Zauzvrat, rezolver prenosi podatke na DNS server takođe preko šifrovane veze. Odnosno, na ovaj način, koristeći njuškare (na primjer, WIreshark), možete saznati samo IP adresu rezolvera. No, pošto su paketi šifrirani korištenjem "kriptografije eliptičke krivulje", nemoguće je odrediti s kojim specifičnim DNS serverom razmjenjujemo podatke.

2) Morate koristiti DNS servere koji ne vode evidenciju. Kao što i sami razumijete, serveri provajdera odmah nestaju. Također, radi anonimnosti, ne možete koristiti Googleove ili Yandexove DNS servere, jer oni iskreno priznaju da pohranjuju informacije (pročitajte njihove Ugovore o privatnosti). Ali postoje DNS serveri koji nam mogu pomoći. Ovo je www.opennicproject.org. Sajt kaže da serveri ne pišu nikakve logove (pa, da verujemo). Nažalost, ovi serveri su nestabilni i ponekad padaju. Da biste riješili ovaj problem, možete koristiti program "Akrilni DNS proxy". Omogućava vam da postavljate upite ne jednom DNS serveru, već 10 odjednom. A paket sa servera koji najbrže stigne, program će prihvatiti. Stoga ćemo riješiti dva problema odjednom - minimiziramo gubitak brzine zahtjeva (jer najviše brza razmjena podaci se obično javljaju sa DNS serverima provajdera) i nivo nestabilnosti bilo kog servera.

Dakle, moramo šifrirati vezu na siguran DNS server. Ovo je korisno ne samo za one koji ne koriste VPN (kako možete riješiti problem curenja DNS-a bit će napisano kasnije). Počnimo:

2) U postavkama vašeg mrežna veza morate ručno registrovati DNS adresu. Idemo u „Centar za upravljanje mrežom i opšti pristup"->" Veza do lokalna mreža"->" Svojstva "->" Internet protokol verzija 4 TCP / IPv4 ". Tamo smo stavili 127.0.0.1. Drugi red treba ostaviti prazan.

3) Za pokretanje AcrylicDNSProxy prođite kroz Start i kliknite na " Pokrenite uslugu akrila". Trebala bi se pojaviti poruka o uspješnom početku.

4) Sada provjeravamo naše DNS servere na www.perfect-privacy.com/dns-leaktest. Na ekranu bi trebalo biti nešto poput:


Rice. 2

Možete dodati fajl AcrylicController.exe za pokretanje.

5) Sada šifriramo naše zahtjeve prema DNS serverima pomoću programa DNScrypt.

6) Raspakujte i pokrenite dnscrypt-winclient.exe. Tamo biramo našu mrežnu karticu i kliknemo Instaliraj. Veza sa DNS serverima je sada šifrovana.

7) Hajde da provjerimo šta će nam sada pokazati naše usluge verifikacije. Idite na www.perfect-privacy.com/dns-leaktest. Nijedan od naših servera ne bi trebao biti definiran.

A ako odete na http://whoer.net, jedino što može pokazati je adresa DNS razrjeđivača kroz koji prolaze DNS zahtjevi. Sami serveri su "nepoznati".


Rice. 3

VPN + DNS enkripcija

Slika prikazuje tipičan dijagram vaše veze kada se povezujete na VPN servere.


Slika 4.

Kao što vidite, postoji ranjivost - DNS zahtjevi se mogu slati istovremeno i preko VPN servera i direktno na navedeni DNS server na vašoj mrežnoj konekciji.

Čini se da jednostavno možete ručno registrovati DNS server u postavkama veze kao 127.0.0.1 tako da nema nepotrebnih zahtjeva na DNS provajdera. Ali, očigledno, kada se isključite iz VPN internet neće raditi jer VPN koristi vlastite DNS servere. Ako samo unesete dva servera projekta www.opennicproject.org, to će smanjiti brzinu surfanja internetom kada je VPN onemogućen. U tom slučaju se preporučuje i instaliranje programa AcrylicDNSProxy, koji neće dozvoliti da vam brzina surfanja padne. Ali pošto je AcrylicDNSProxy instaliran, zašto ne instalirate i DNScrypt?

Ako koristite VPN usluge 100% vremena, možete jednostavno registrirati jednu IP adresu DNS postavke: 127.0.0.1. Ovo će biti dovoljno.

Tako je pronađena zanimljiva šema koja vam omogućava da anonimizirate i sakrijete DNS zahtjeve, što će vam malo pomoći ako naiđete na "autoritete", te ako lokalni zli haker odluči da preusmjeri DNS zahtjeve i pokaže vašoj djeci web stranice umjesto "Čekaj minut" - stranice za odrasle...

Napomena: ako vam sve ovo nije potrebno, samo instalirajte AcrylicDNSProxy navodeći servere vašeg provajdera, Yandex, Google, itd., što će vam dati opipljivo ubrzanje surfanja Internetom.

Hvala vam na pažnji.

Top srodni članci