Kako postaviti pametne telefone i računala. Informativni portal

šifrirani dns. DNSCrypt - DNS šifriranje prometa za paranoične

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

U današnje vrijeme, pitanje zaštite prenesenog prometa na Internetu postaje sve akutnije. Mnogi ljudi mogu poželjeti vaše podatke - od uljeza koji će svakako htjeti doći do vaših lozinki razne usluge obavještajnim agencijama koje žele znati sve o svakom vašem pokretu. I dalje dano vrijeme, postoji veliki broj"sredstva samoobrane" na internetu. O jednom takvom jednostavnom, ali vrlo djelotvorna sredstva, bit će riječi u ovom članku - DNScrypt.

Postoji divan resurs tzv OpenDNS, koji pruža svoje javne DNS poslužitelje. OpenDNS ponude DNS rješenja za korisnike i tvrtke kao alternativu korištenju DNS poslužitelja koji nudi njihov ISP. Postavljanjem poslužitelja tvrtke na strateška mjesta i korištenjem velike predmemorije naziva domene, OpenDNS ima tendenciju puno brže dovršavati upite, čime se povećava brzina otvaranja stranica. Rezultati DNS upita se neko vrijeme spremaju u predmemoriju operacijski sustav i/ili aplikacije, tako da se ta brzina možda neće primijetiti na svakom zahtjevu, već samo na zahtjevima koji nisu predmemorirani.

Budući da promet između DNS poslužitelja i vašeg računala nije šifrirano, to stvara ozbiljnu opasnost od presretanja prometa. Šifriranje DNS prometa zaštitit će klijenta od napada "čovjek u sredini", u kojem se napadač uglavljuje u komunikacijski kanal i pretvara se da je DNS poslužitelj. Osim toga, enkripcija sprječava njuškanje prometa i blokira zlonamjerne aktivnosti povezane s pogađanjem ID-ova paketa ili slanjem lažnih DNS odgovora. Jednostavno rečeno: DNS enkripcija spriječit će phishing napade kada se umjesto željene stranice otvori njezina zlonamjerna kopija gdje unesete svoje podatke. Sa svim posljedicama. Osim toga, ISP-u će biti puno teže otkriti koje ste stranice posjetili (jer u zapisnicima neće biti informacija o zahtjevima za razrješenje imena). Kako bi sve to organizirao, OpenDNS projekt je izdao prekrasan open source uslužni program. izvorni kod- DNScrypt.

Ovaj uslužni program će šifrirati sav preneseni promet između vašeg računala i OpenDNS poslužitelja. Ako vaš ISP blokira web stranicu na temelju svojih naziv domene- sada će ova stranica raditi! Još jedan plus. Ovaj uslužni program dostupno na raznim sustavima. Opisat ću instalaciju i konfiguraciju na primjeru Debian i Ubuntu/Linux Mint.

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

sudo add-apt-repository ppa:xuzhen666/dnscrypt
sudo apt-dobi ažuriranje
sudo apt-get install dnscrypt-proxy

U slučaju Debiana, samo preuzmite paket dnscrypt-proxy iz repozitorija testnog izdanja. I instalirajte s 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

Tijekom procesa instalacije od vas će se tražiti da odaberete DNS poslužitelj. Odaberite OpenDNS.

Dodatne postavke nije potrebno, paket ima sve što vam treba. Sve što trebate je malo rekonfigurirati svoju mrežnu vezu. Otvaranje postavke 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

Ponovno pokrenite, povežite se i idite na

Mislite da je vaša anonimnost dobro zaštićena. Ali nažalost to nije slučaj. Postoji jedan vrlo važan kanal za curenje vaših privatnih podataka - DNS usluga. Srećom, i za to postoje rješenja. Danas ću vam pokazati kako šifrirati svoj DNS promet pomoću uslužnog programa DNSCrypt.

Kada koristite HTTPS ili SSL, vaš HTTP promet je kriptiran, tj. zaštićen. Kada koristite VPN, sav vaš promet je već šifriran (naravno, sve ovisi o VPN postavkama, ali u pravilu jest). 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.

Ovdje u pomoć dolazi uslužni program DNSCrypt otvorenog koda, koji su razvili poznati kreatori OpenDNS-a - program koji vam omogućuje šifriranje DNS upita. Nakon što ga instalirate na svoje računalo, vaše veze će također biti zaštićene i moći ćete sigurnije surfati internetom. Naravno, DNSCrypt nije lijek za sve probleme, već samo jedan od sigurnosnih alata. I dalje trebate koristiti VPN vezu za šifriranje cijelog prometa, ali uparivanje s DNSCryptom bit će sigurnije. Ako vam ovo kratko objašnjenje odgovara, možete odmah preskočiti na dio u kojem ću opisati instalaciju i korištenje programa.

Pokušajmo ići dublje. Ovaj dio je za prave paranoične. Ako cijenite svoje vrijeme, možete odmah nastaviti s instalacijom programa.
Dakle, kako kažu, bolje je jednom vidjeti nego sto puta čuti. Pogledaj sliku.

Recimo da klijent (laptop na slici) pokušava pristupiti google.com.
razriješi simboličko ime hosta u IP adresu. Ako je mrežna konfiguracija takva da se koristi davateljev DNS poslužitelj (nekriptirana veza, crvena linija na slici), tada dopuštenje simbolično ime IP adresa se javlja preko nešifrirane veze.

Da, nitko neće znati koje ćete podatke prenijeti na dkws.org.ua. Ali postoje neke vrlo neugodne stvari. Prvo, davatelj će, gledajući DNS zapisnike, moći saznati koje ste stranice posjetili. Trebaš li to? Drugo, vjerojatni 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: netko između vas i davatelja može presresti DNS zahtjev (a budući da 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 dvije kapi vode slične onoj koja vam treba, uvest ćete svoju lozinku s foruma, ali onda razvoj događaja, mislim, jasno je.

Ova situacija se naziva curenje DNS-a. Do curenja DNS-a događa se kada vaš sustav čak i nakon povezivanja na VPN poslužitelj ili Tor nastavlja ispitivati ​​davateljeve DNS poslužitelje da razriješi nazive domena. Svaki put kada posjetite novu stranicu, povežite se s novim poslužiteljem ili pokrenite neki mrežna aplikacija, na koji se odnosi vaš sustav DNS pružatelj usluga da biste naziv razriješili u IP. Kao rezultat toga, vaš davatelj usluga ili bilo tko tko je na "posljednjoj milji", odnosno između vas i davatelja, može dobiti sva imena hostova kojima pristupate. Gore navedena opcija lažiranja IP-a prilično je okrutna, ali u svakom slučaju, moguće je pratiti web-mjesta koja posjećujete i koristiti te podatke u vlastite svrhe.

Ako se "bojite" svog ISP-a ili jednostavno ne želite da vide koje stranice posjećujete, možete (osim korištenja VPN-a i drugih sigurnosnih mjera, naravno) dodatno konfigurirati svoje računalo za Korištenje DNS-a poslužitelji projekta OpenDNS (www.opendns.com). Na ovaj trenutak ovo su sljedeći poslužitelji:

208.67.222.222
208.67.220.220

Ne trebate nikakve druge dodatne softver. Samo postavite svoj sustav da koristi ove DNS poslužitelje.

No, problem presretanja DNS veza i dalje ostaje. Da, više ne pristupate DNS-u davatelja, već OpenDNS-u, ali i dalje možete presresti pakete i vidjeti što je u njima. To jest, ako želite, možete saznati kojim ste čvorovima pristupili.

Tako dolazimo do DNSCrypta. Ovaj softver vam omogućuje šifriranje vašeg DNS veza. Sada vaš ISP (i svi između vas i njih) sigurno neće znati koje stranice posjećujete! Još jednom ću ponoviti. 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 baš velik, budući da je sam program vrlo jednostavan za korištenje. Ali bilo bi nepotpuno da nisam spomenuo i VPN. Ako ste pročitali ovaj članak i zanima vas, ali još ne koristite VPN davatelja za šifriranje svojih podataka, onda je vrijeme da to učinite.
Davatelj VPN-a osigurat će vam siguran tunel za prijenos vaših podataka, dok će DNSCrypt osigurati vaše DNS veze. Sigurno, VPN usluge pružatelji su plaćeni, ali morate li platiti sigurnost?

Naravno, možete koristiti i Tor, ali Tor je relativno spor, i, što god netko rekao, ovo nije VPN - sav promet se ne može "torificirati". U svakom slučaju (koju god opciju odaberete) vaše su DNS veze sada sigurne. Ostaje samo odlučiti o načinu šifriranja prometa (ako to već niste učinili).

Zadnji put ažurirano 30. listopada 2016.

U preglednicima i u ovom članku pričat ćemo o curenju DNS prometa. Što pogađa sve, pa čak i one koji koriste VPN usluge i misle da su iza kamenog zida.

Pozdrav prijatelji! Danas ću vam reći što 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
  • Što znači curenje DNS-a?
  • Kako provjeriti curenje DNS-a
  • Kako popraviti curenje DNS-a pomoću DNSCrypt-a
    • Preuzmite DNSCrypt
    • Instalacija DNSCrypt-a
    • Korištenje DNSCrypt-a
  • DNSCrypt u pregledniku Yandex
  • DNSCrypt u ruteru
  • Zaključak
  • Ocjena i recenzije

Što znači curenje DNS-a?

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

Ali postoje situacije u kojima, čak i ako korištenjem VPN-a, vaši se DNS zahtjevi šalju u jasnom, nešifriranom obliku. Ovo otvara napadača velike prilike za kreativnost. može preusmjeriti promet, izvesti MITM napad (čovjek u sredini) i učiniti hrpu 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 vas brine sigurnost, možete preskočiti na sljedeće poglavlje. Ako želiš saznati više, opusti se, sad ću te raznijeti.

U našem primjeru na donjoj slici vidite kako korisnik (računalo) 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 davateljev DNS poslužitelj (nešifrirana veza, označena crvenom linijom), tada se simbolički naziv razrješava na IP adresu preko nešifrirane veze.

Što je tu strašno?

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

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

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

Ukratko za one koji ne znaju.

DNS njuškanje- pomoću ovog napada napadač može daljinski saznati koje su domene nedavno razriješene na DNS poslužitelju, odnosno koje je domene žrtva nedavno posjetila.

DNS lažiranje- napad koji se temelji na inficiranju predmemorije žrtvinog DNS poslužitelja lažnim zapisom o podudaranju imena DNS hosta kojem žrtva vjeruje.

Budući da zahtjevi nisu šifrirani, netko između vas i ISP-a može presresti i pročitati DNS zahtjev, a zatim vam poslati lažni odgovor.stranicu, ali i url u adresna traka), nakon čega ćete unijeti svoje korisničko ime i lozinku, a onda i sami razumijete što će se dogoditi. Podaci o autorizaciji bit će u rukama napadača.

Ova situacija se naziva curenje DNS-a. To se događa kada vaš sustav razriješi nazive domena čak i nakon povezivanja na VPN poslužitelj ili mreža Tor nastavlja pitati DNS poslužitelji vaš pružatelj usluga. Svaki put kada pokušate pristupiti web stranici, spojiti se na novi poslužitelj ili pokrenuti neku mrežnu aplikaciju, vaš će sustav pogledati DNS poslužitelje ISP-a kako bi razriješio ime u IP adresu. Kao rezultat toga, neki haker ili vaš ISP moći će saznati sva imena hostova kojima pristupate.

Ako imate što sakriti, onda predlažem da koristite jednostavno rješenje - DNSCrypt. Naravno, možete registrirati neke druge DNS poslužitelje i pustiti promet preko njih. Na primjer Google poslužitelj 8.8.8.8 ili isti OpenDNS 208.67.222.222, 208.67.220.220. U tom ćete slučaju, naravno, sakriti povijest posjećivanja web stranica od davatelja, ali obavijestiti Google o svojim putovanjima po mreži. Osim toga, neće biti enkripcije DNS prometa, i to veliki nedostatak. Ne znam za vas, ali mene to ne pali, radije bih instalirao DNSCrypt.

Kako provjeriti curenje DNS-a

Prije nego što prijeđemo na sam uslužni program, želio bih vas upoznati s posebnim online uslugama. Omogućuju vam provjeru curenja DNS-a.

Program zahtijeva Microsoft . NET Framework 2.0 i više.

Možete preuzeti DNSCrypt za Mac OS X s veze s Gitaba ili s gornje veze za dijeljenje datoteka.

Programer OpenDNS programa.

Instalacija DNSCrypt-a

U ovom članku analizirat ćemo kako raditi s konzolnom verzijom uslužnog programa. Konfigurirat ćemo DNSKript na Windows 10. Instalacija na drugim verzijama sustava Windows se ne razlikuje.

Dakle, raspakirajte preuzetu arhivu i postavite sadržaj mape dnscrypt-proxy-win32 bilo gdje na računalu. U mom primjeru nalazio sam se u mapi "C:\Program Files\DNSCrypt\".

Zatim otvorite naredbeni redak kao administrator.


Pokrenite naredbeni redak kao administrator u sustavu Windows 10

Sada unutra naredbeni redak idite u mapu DNSCrypt. To možete učiniti naredbom:

cd "C:\Program Files\DNSCrypt"

Kliknite ako ne možete kopirati naredbe.

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

Odaberite bilo kojeg davatelja i kopirajte vrijednost u prvom stupcu. U mom slučaju koristit ću CloudNS, pa sam kopirao "cloudns-can". Sada morate biti sigurni da se proxy može povezati. To možete učiniti s ovom naredbom:

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

Ako niste uspjeli, pokušajte odabrati drugog pružatelja usluge i pokušajte ponovno.

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

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

Ako sve radi ispravno, vidjet ćete sljedeći izlaz:

Snimak zaslona kako bi trebao izgledati na naredbenoj liniji:

Nakon toga morate otići na postavke TCP / IP protokola u sustavu Windows i promijeniti DNS postavke na 127.0.0.1.

Da biste uklonili uslugu DNSCrypt, morate se vratiti mrežne postavke DNS u početno stanje. To se radi ovom naredbom:

dnscrypt-proxy --deinstalirati

Ova se naredba također može koristiti za promjenu davatelja DNS-a. Nakon prijave morate ponoviti instalaciju s parametrima drugog davatelja.

Ako nakon cijelog ovog postupka, iz nekog razloga, tijekom provjere, još uvijek imate DNS IP adresa vašeg internetskog davatelja, kliknite na gumb "Napredno" koji se nalazi pod registriranom IP 127.0.0.1. U prozoru koji se pojavi " Dodatne opcije...", idite na karticu "DNS" i izbrišite sve adrese DNS poslužitelja osim "127.0.0.1".

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

Možda će vas također zanimati članak "", koji je govorio o brisanju DNS zapisi na računalu.

DNSCrypt u pregledniku Yandex

Nedavno se u pregledniku Yandex pojavila podrška za DNSCrypt. Što da kažem, dečki iz Yandexa rade i pokušavaju zaštititi korisnika - ovo je sjajno, ali za razliku od uslužnog programa DNSCrypt, zaštita Yandexa implementirana je samo na razini preglednika, a ne na razini cijelog sustava.

DNSCrypt u ruteru

Također, podrška za DNSCrypt implementirana je u popularnim OpenWrt firmver. Više o instalaciji i više dodatne informacije možete saznati na stranici.

Zaključak

Naravno, uslužni program DNSCrypt i DNS enkripcija općenito nisu lijek, i doista u sigurnost informacija ne postoji panaceja. Možemo samo poboljšati našu sigurnost i anonimnost koliko god je to moguće, ali nažalost neće uspjeti učiniti našu prisutnost na mreži 100% neranjivom. Tehnologija ne miruje i uvijek će postojati rupe. Stoga vas pozivam da se pretplatite na naše vijesti u na društvenim mrežama da uvijek bude u toku. Slobodno je.

To su sve prijatelji. Nadam se da vam je ovaj članak pomogao riješiti problem s curenjem DNS-a. Sretno u novoj 2017., budi sretna!

Procjena uslužnog programa DNSCrypt

Naša procjena

DNSCrypt- besplatno korištenje za zaštitu DNS prometa Šifriranjem DNS prometa i korištenjem DNS poslužitelja. Naša ocjena je jako dobra!

Korisnička ocijena: 4,25 (36 ocjena)

Ljudi često pitaju što je DNSCrypt i zašto vam je potreban. Prije nekog vremena već sam pisao o , tada se radilo o podršci u beta verziji preglednika. Ovaj put ćemo detaljno pogledati tehnologiju, a Yandex.Browser poslužit će 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 identificirati uobičajeni DNSCrypt parser u Wiresharku).

DNSCrypt je proxy usluga koja stvara siguran kanal između DNS razrjeđivača na strani klijenta i rekurzivnog DNS razrjeđivača koji se izvodi na poslužitelju. DNSCrypt, odnosno, ima dva dijela: klijenta i poslužitelja. Putem DNS prometa, koji se inače šalje na otvoreni oblik, informacije o posjećenim stranicama mogu procuriti. Osim toga, DNS upiti su uobičajeni vektor napada za lažiranje adresa. Zamjena adrese razrješača DNS sustava s lažnom adresom poslužitelja je zajedničko mjesto Trojanci godinama. Isto vrijedi i za napade na kućne usmjerivače. DNSCrypt vam omogućuje šifriranje (i također, u ograničenoj mjeri, zaštitu od lažiranja) i DNS upita i odgovora. Moguće je autentifikovati poslužitelj i klijent, ali se ta mogućnost ne koristi uvijek. Općenito, tema skrivanja DNS prometa (DNS Privacy) sada je stekla značajnu popularnost. Osim DNSCrypt-a, postoji npr. “DNS over TLS” protokol (DNS over TLS je najnoviji 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 strogo zahtijeva TCP podršku (ne UPD, što je izborno). TCP, naravno, privlači prirodu sesije. Ali UDP je mnogo brži, posebno za prometne usluge. Zbog problema s DDoS napadima i nekih drugih sigurnosnih problema, sada je trend prevođenja maksimalan broj usluge na TCP-u, to posebno vrijedi za DNS. Međutim, u nastavku razmatram rad DNSCrypt-a samo preko UDP-a, budući da je to tradicionalna opcija za DNS. Preporučeni broj DNSCrypt (poslužiteljskog) porta je 443 (obično je otvoren u 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 usluga). Međutim, Yandex koristi neprivilegirani broj u svojoj implementaciji DNSCrypt: 15353, vjerojatno zbog nekih ideja za prevladavanje raznih mrežnih barijera.

Još malo o preprekama: neće biti problema s blokiranjem DNSCrypt prometa, ako davatelj kanala ima takvu želju. Kao što će biti jasno iz opisa u nastavku, ovaj protokol ne pokušava sakriti samu činjenicu njegove uporabe. U prometu ovaj protokol upaliti standardni markeri, koji će vam omogućiti da otkrijete i filtrirate pakete čak i na najprimitivnijem usmjerivaču, koristeći jednostavno pravilo dva reda. U ovom slučaju, na primjer, ostat će pristup za druge TCP sesije koje se izvode na portu 443.

U DNSCrypt-u, uspostavljanje sesije između klijenta i poslužitelja počinje normalnim DNS upitom koji se šalje na adresu i odgovarajući broj porta hosta koji će pružiti funkcije razlučivanja imena. Ovo je zahtjev za TXT zapis za ime posebna vrsta(to jest, zahtjev se već može lako filtrirati). Na primjer, u slučaju usluge Yandex: 2.dnscrypt-cert.browser.yandex.net. Ovaj poseban naziv ne smije biti delegiran. Vrijednost 2 - odgovara verziji DNSCrypt-a. Trenutna verzija je druga. Kao odgovor, poslužitelj bi trebao poslati jedan ili više DNSCrypt certifikata (naglašavam: oni nemaju nikakve veze sa SSL certifikatima).

Snimka zaslona prikazuje paket s certifikatom Yandex DNSCrypt poslužitelja.

Certifikat je skup nekoliko polja: verzija certifikata, vrijednost potpisa, javni ključ poslužitelj, čarobni bajtovi za klijenta (oni će služiti kao identifikator za zahtjeve klijenta - poslužitelj će moći razumjeti koji ključ koristiti kada odgovara), serijski broj i rok važenja.

Specifikacija pretpostavlja da poslužitelj prenosi kratkotrajni javni ključ kao dio certifikata. (Međutim, u slučaju Yandex poslužitelja, dati ključ nije se promijenio barem od kraja ožujka, kada je pokrenuta beta verzija preglednika s omogućenom DNSCrypt.) Potpis na certifikatu mora biti generiran iz drugog para ključeva. Javni ključ ovog para je poznat klijentu - potreban je za provjeru potpisa. Očito je besmisleno potpisivanje certifikata istim ključem koji se koristi unutar sesije. Nisam provjeravao da li vrijedi certifikat poslužitelja"Yandex preglednik". Činjenica je da u modelu prijetnje za koji se DNSCrypt koristi u pregledniku Yandex, provjera valjanosti certifikata nema previše smisla, kao ni uspoređivanje vrijednosti ključa sa spremljenom kopijom (vratit ću se na ovu točku u nastavku).

Kao kriptografski primitivi, 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 dijeljeni ključ sesije (algoritam koristi Curveellih01 curve251) funkcija). Ove dizajne dizajnirao je Daniel J. Bernstein i dugo su prepoznati kao vrlo čvrsti. Algoritam za dobivanje zajedničke tajne (ključ sesije) matematički je povezan s Diffie-Hellmanovim algoritmom. Napominjem da je zajednička tajna u ovaj slučaj moguće je oporaviti nakon činjenice ako je poznat odgovarajući tajni ključ iz para poslužiteljskih (ili klijentskih) ključeva, to će omogućiti dešifriranje prethodno snimljenog prometa, zbog čega specifikacija preporučuje korištenje kratkotrajnih ključeva.

Šifra XSalsa20 u načinu provjerenog šifriranja zahtijeva jednokratnu stavku od 192 bita (24 bajta) duljine. Ponovna upotreba iste kombinacije ključa i nonce nije dopuštena. To je zbog arhitekture XSalsa20 šifre − ponovno koristiti nonce će rezultirati curenjem: slušatelj će znati vrijednost XOR iz para podudaranja otvoreni tekstovi. Stoga, nonce mora biti svaki put nov, ali ne nužno slučajan. Parametar nonce u DNSCryptu prisutan je u dvije inkarnacije: klijent i poslužitelj.

Pogledajmo šifrirano zahtjev klijenta poslao Yandex.Browser.

Prvo polje upita je čarobna vrijednost klijenta (Client query magic bytes): ono koristi dio javnog ključa poslužitelja dobivenog ranije. Ako je potrebno, ovi "magični bajtovi" mogu poslužiti kao potpis koji vam omogućuje odabir u prometnim zahtjevima koji se šalju DNSCryptu;
Sljedeće polje je kratkoročni javni ključ klijenta (Client public key);
Klijentsko jednoznačno mjesto je 96 bita (12 bajtova), polovica potrebnog nonce za šifru XSalsa20 (prema DNSCrypt specifikaciji, napunjeno bajtovima s vrijednošću 0). Možete koristiti jedan ili drugi brojač, "Yandex.Browser" radi upravo to: očito, ovdje se prenosi 64-bitna vrijednost vremenske oznake milisekundi (vrijeme formiranja zahtjeva), na koju su četiri bajta pseudo-slučajnih vrijednosti dodano. Za slučaj da je stvarno točno vrijeme prenosi u jasnom, napominjem da su drift parametri sistemski sat služe kao dobar pokazatelj određenog 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 stranke izračunavaju na temelju prenesenih javnih ključeva. U slučaju klijenta, javni ključ se prenosi u paketu DNS zahtjeva (vidi gore). Yandex.Browser slijedi standardnu ​​praksu i generira novi par ključeva (javni/tajni) za X25119-hsalsa20 svaki put kada se preglednik pokrene. Za usklađivanje podataka s granicom bloka od 64 bajta, kako specifikacija propisuje, koristi se standardni padding (ISO/IEC 7816-4: 0x80 i null bajtovi prema potrebi).

Šifrirani podatkovni blok najvjerojatnije je 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 autentifikacijski kod (MAC), koji se koristi za provjeru integriteta poruke prije dešifriranja, vjerojatno na početku bloka. Međutim, budući da nisam pokušao dešifrirati podatke, tada određivanje mjesta koda nije toliko važno. Za dešifriranje možete koristiti tajni ključ koji se čuva u memoriji dok je preglednik pokrenut, ali da biste ga izdvojili, morate neko vrijeme petljati s programom za ispravljanje pogrešaka i rastavljačem.

Šifrirani odgovor primljen od poslužitelja:

(Lako je vidjeti da je odgovor predstavljen na snimci zaslona stigao gotovo pet sekundi nakon zahtjeva zašto se to dogodilo - očito tema za zasebnu bilješku.)

Paket se otvara magijom, u ovom slučaju, bajtovima koji sadrže token odgovora DNSCrypt (opet, dobar potpis za otkrivanje prometa). Ovi bajtovi su definirani protokolom i moraju biti prisutni na početku svakog odgovora poslužitelja na zahtjev za razrješenje 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, svaki po 12 bajtova: jednokratno mjesto iz odgovarajućeg zahtjeva klijenta i poslužiteljski komplement;
Završni dio paketa su šifrirani podaci odgovora, format je sličan zahtjevu.

Vratimo se sada na model prijetnji, koristeći Yandex.Browser kao primjer. Ako postavke preglednika omogućuju korištenje DNSCrypt-a, na primjer, putem Yandex poslužitelja, ali je pristup odgovarajućem poslužitelju blokiran, tada preglednik (poput beta verzije) transparentno, bez upozorenja, prelazi na korištenje razrješavača sustava. Zašto to poništava potrebu za provjerom valjanosti certifikata DNSCrypt poslužitelja? Budući da aktivni napadač koji može lažirati pakete na IP razini kako bi onemogućio DNSCrypt u pregledniku može jednostavno blokirati pristup poslužitelju, umjesto da troši resurse na izradu odgovora. Iz ovoga možemo zaključiti da Yandex model prijetnje ne uključuje aktivno lažiranje paketa na putu od DNSCrypt poslužitelja do klijenta.

Za kraj, nekoliko riječi o tome kako je DNSCrypt povezan s DNSSEC-om. DNSSEC - ne skriva podatke o DNS prometu, ali ih štiti od lažiranja, bez obzira na kanal razmjene informacija. U slučaju DNSSEC-a, nije važno na kojem su kanalu podaci primljeni od DNS-a, glavna stvar je da su ključevi na mjestu. DNSCrypt - skriva promet i štiti ga u ograničenoj mjeri od lažiranja na putu od rekurzivnog razrješavača (usluga rješavanja) do klijenta. Ako su podaci lažirani na putu do razrjeđivača (ili na samom poslužitelju za razrješavanje), a ne podržavaju DNSSEC, tada će klijent primiti oštećene informacije, iako putem sigurnog DNSCrypt kanala. Poslužitelji koji pružaju DNSCrypt mogu također podržavati DNSSEC.

Dalje - mišljenja i rasprave

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

Svaka osoba koja razmišlja o anonimnosti na internetu zna odličan način sakriti svoju IP adresu na internetu je VPN usluga. Međutim, čak i uz VPN vezu, često upiti prema DNS poslužitelju ostaju nezaštićeni i lako je pratiti kamo idu vaši DNS upiti. Drugim riječima, to se zove "DNSleaks" ili "DNS curenje".

Pogledajmo pobliže što je DNS i koji problemi postoje.

Kao što znate, svako računalo na Internetu ima svoju IP adresu, a bez poznavanja IP adrese računala nemoguće je poslati informaciju ili zahtjev na njega. IP adresa je broj od 4 bajta odvojen točkama (na primjer, 162.234.12.110 ili 78.31.54.226).

Za običan čovjek 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, ili sustav naziva domena, postao je takav alat. DNS poslužitelj je alat koji vam omogućuje određivanje IP adrese iz naziva domene.

Na primjer, unijeli ste adresu web-mjesta u redak preglednika, preglednik je poslao zahtjev na DNS poslužitelj, koji je naveden u postavkama vaše internetske veze. Poslužitelj šalje natrag paket odgovora koji sadrži IP adresu željene stranice.

S jedne strane, sve je napravljeno povoljno - samo ste priključili kabel Mrežna kartica, automatski vam je dodijeljen DNS poslužitelj davatelja s brzim odgovorom i sve radi. Ali s druge strane, postoje dva problema s ovom shemom:

1) Nema enkripcije veze. To znači da će svaki napadač moći presresti vaš promet i lažirati vašu IP adresu. Na primjer, pokazati vam lažnu stranicu Internet bankarstva. Također je poželjno taj promet sakriti od davatelja ili od provedba zakona(nikad se ne zna što J).

2) DNS poslužitelji davatelja po zakonu moraju spremati zapisnike(s kojeg IP-a, koje su stranice posjećene i vrijeme povezivanja), kao i na zahtjev organa za provedbu zakona da se dostave ti zapisnici (nadam se da su svi to znali? J). Reći ću čak i više, 99% svjetskih DNS poslužitelja piše dnevnike i to ne skriva.

Ako odjednom ne želite da netko presreće vaše podatke ili čita zapise vaših posjeta, postoji pouzdana opcija. Što treba učiniti:

1) Morate šifrirati vezu. Da biste to učinili, postoji DNSproxy program. Povezuje se s DNS poslužiteljem ne izravno, već šifrirano preko DNS razrješača (jednostavno preusmjerava zahtjeve na DNS poslužitelj). Zauzvrat, razrješavač prenosi podatke na DNS poslužitelj također preko šifrirane veze. Odnosno, na ovaj način, koristeći njuškare (na primjer, WIreshark), možete saznati samo IP adresu razrjeđivača. No budući da su paketi šifrirani korištenjem "Elliptic curve cryptography" (eliptičke kriptografije), nemoguće je odrediti s kojim specifičnim DNS poslužiteljem razmjenjujemo podatke.

2) Morate koristiti DNS poslužitelje koji ne vode zapisnike. Kao što razumijete, poslužitelji davatelja odmah nestaju. Također, radi anonimnosti, ne možete koristiti Google ili Yandex DNS poslužitelje, jer oni iskreno priznaju da pohranjuju informacije (pročitajte njihova Pravila o privatnosti). Ali postoje DNS poslužitelji koji će nam pomoći. Ovo je www.opennicproject.org. Stranica kaže da serveri ne pišu nikakve zapise (pa, vjerujte mi). Ali, nažalost, ovi poslužitelji su nestabilni i ponekad otpadaju. Da biste riješili ovaj problem, možete koristiti program Akrilni DNS proxy". Omogućuje vam slanje zahtjeva ne jednom DNS poslužitelju, već 10 odjednom. A paket s poslužitelja koji najbrže stigne program će prihvatiti. Stoga ćemo riješiti dva problema odjednom - minimiziramo gubitak brzine upita (jer najviše brza razmjena podaci se obično javljaju s davateljevim DNS poslužiteljima), a mi izravnavamo nestabilnost bilo kojeg poslužitelja.

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

2) U vašim postavkama Mrežna veza morate ručno unijeti DNS adresu. Idite na Mrežni i kontrolni centar javni pristup» -> «Veza preko lokalna mreža» -> «Svojstva» -> «Internetski protokol verzija 4 TCP/IPv4». Tamo smo stavili 127.0.0.1. Drugi redak treba ostaviti prazan.

3) Da biste pokrenuli AcrylicDNSProxy, idite na Start i kliknite " Pokreni akrilnu uslugu". Trebala bi se pojaviti poruka o uspjehu.

4) Sada provjeravamo naše DNS poslužitelje na www.perfect-privacy.com/dns-leaktest. Trebalo bi biti nešto kao na snimci zaslona:


Riža. 2

Možete li dodati datoteku AcrylicController.exe za automatsko učitavanje.

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

6) Raspakirajte i pokrenite dnscrypt-winclient.exe. Tamo odabiremo našu mrežnu karticu i kliknemo Instaliraj. Veza s DNS poslužiteljima sada je šifrirana.

7) Provjerimo što će nam sada pokazati naše usluge provjere. Idite na www.perfect-privacy.com/dns-leaktest. Nijedan od naših poslužitelja ne bi trebao biti određen.

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


Riža. 3

VPN + DNS enkripcija

Slika prikazuje tipičnu shemu povezivanja za vašu vezu kada se povezujete na VPN poslužitelje.


Slika 4.

Kao što vidite, postoji ranjivost - DNS upiti se mogu slati istovremeno preko VPN poslužitelja i izravno na navedeni DNS poslužitelj vaše mrežne veze.

Čini se da jednostavno možete ručno registrirati DNS poslužitelj u postavkama veze kao 127.0.0.1 tako da nema dodatni zahtjevi na DNS davatelja. Ali, očito, pri odspajanju od VPN internet neće raditi jer se pri povezivanju s VPN-om koriste njihovi vlastiti DNS poslužitelji. Ako samo unesete dva poslužitelja projekta www.opennicproject.org, to će smanjiti brzinu surfanja internetom kada je VPN onemogućen. U tom slučaju se također preporučuje instaliranje programa AcrylicDNSProxy, koji neće dopustiti pad brzine surfanja. Ali nakon što je AcrylicDNSProxy instaliran, zašto ne biste instalirali 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 shema za anonimiziranje i skrivanje DNS zahtjeva, što će malo pomoći ako naiđete na "autoritete" i ako lokalni zli haker odluči preusmjeriti DNS zahtjeve i pokazati vašoj djeci web stranice umjesto "Samo vi pričekajte" - stranice za odrasle.

Napomena: ako vam sve ovo ne koristi, samo instalirajte AcrylicDNSProxy navodeći poslužitelje vašeg davatelja, Yandex, Google itd., što će vam omogućiti zamjetno ubrzanje surfanja Internetom.

Hvala na pažnji.

Vrhunski povezani članci