Krzywa DNS

DNSCurve to proponowany bezpieczny protokół dla systemu nazw domen (DNS), zaprojektowany przez Daniela J. Bernsteina .

Opis

DNSCurve wykorzystuje kryptografię krzywej eliptycznej Curve25519 do ustalenia kluczy używanych przez Salsa20 , w połączeniu z funkcją kodu uwierzytelniania wiadomości (MAC) Poly1305 , do szyfrowania i uwierzytelniania pakietów DNS między resolwerami a autorytatywnymi serwerami. Klucze publiczne dla zdalnych serwerów autorytatywnych są umieszczane w rekordach NS, więc rekurencyjne programy rozpoznawania nazw wiedzą, czy serwer obsługuje DNSCurve. Klucze zaczynają się od magicznego ciągu uz5 , po którym następuje 51-bajtowe kodowanie Base32 255-bitowego klucza publicznego serwera. Np. w BIND :

przykład.com. IN NS uz5bcx1nh80x1r17q653jf3guywz7cmyh5jv0qjz0unm56lq7rpj8l.example.com.

Resolwer wysyła następnie do serwera pakiet zawierający swój klucz publiczny DNSCurve, 96-bitowy identyfikator nonce oraz pole kryptograficzne zawierające zapytanie. Skrzynka kryptograficzna jest tworzona przy użyciu klucza prywatnego programu tłumaczącego, klucza publicznego serwera i wartości jednorazowej. Odpowiedź z serwera zawiera inny 96-bitowy identyfikator jednorazowy oraz własną skrzynkę kryptograficzną zawierającą odpowiedź na zapytanie.

Narzędzia kryptograficzne używane w DNSCurve są takie same jak w CurveCP , protokole opartym na UDP , który jest podobny do TCP , ale wykorzystuje kryptografię krzywych eliptycznych do szyfrowania i uwierzytelniania danych. Analogia jest taka, że ​​podczas gdy DNSSEC przypomina podpisywanie strony internetowej za pomocą Pretty Good Privacy (PGP), CurveCP i DNSCurve przypominają szyfrowanie i uwierzytelnianie kanału za pomocą Transport Layer Security (TLS). Tak jak strony internetowe podpisane PGP mogą być przesyłane zaszyfrowanym kanałem przy użyciu SSL, dane DNSSEC mogą być chronione przy użyciu DNSCurve.

DNSCurve ma przewagę nad poprzednimi usługami DNS:

  • Poufność — zwykłe żądania i odpowiedzi DNS nie są szyfrowane i transmitowane do dowolnego atakującego.
  • Integralność — zwykle DNS ma pewną ochronę, ale z cierpliwością i wąchaniem atakujący mogą sfałszować rekordy DNS; zapobiega temu uwierzytelnianie kryptograficzne DNSCurve.
  • Dostępność — zwykle DNS nie ma ochrony przed odmową usługi (DoS) przez atakującego podsłuchującego, wysyłającego kilka sfałszowanych pakietów na sekundę. DNSCurve rozpoznaje i odrzuca sfałszowane pakiety DNS, zapewniając pewną ochronę, chociaż SMTP, HTTP, HTTPS są również podatne na DoS.

Bezpieczeństwo

DNSCurve wykorzystuje 256-bitową kryptografię krzywej eliptycznej, która według szacunków NIST jest mniej więcej równoważna 3072-bitowemu RSA. ECRYPT zgłasza podobną równoważność. Wykorzystuje kryptografię z kluczem publicznym dla poszczególnych zapytań (taką jak SSH i SSL) oraz 96-bitowe liczby jednorazowe w celu ochrony przed atakami powtórkowymi. Adam Langley, specjalista ds. bezpieczeństwa w Google, mówi: „Z bardzo dużym prawdopodobieństwem nikt nigdy nie rozwiąże pojedynczej instancji Curve25519 bez dużego komputera kwantowego”.

Prędkość

Adam Langley opublikował testy prędkości na swojej osobistej stronie internetowej, pokazując, że Curve25519, używany przez DNSCurve, jest najszybszym spośród testowanych krzywych eliptycznych. Według amerykańskiej Agencji Bezpieczeństwa Narodowego (NSA) kryptografia krzywych eliptycznych oferuje znacznie lepszą wydajność niż RSA i Diffie-Hellman w tempie geometrycznym wraz ze wzrostem rozmiaru klucza.

Implementacje

DNSCurve po raz pierwszy uzyskał obsługę rekurencyjną w dnscache dzięki łatce autorstwa Matthew Dempsky'ego. Dempsky ma również GitHub , które zawiera narzędzia do wyszukiwania DNS w Pythonie i usługę przesyłania dalej w C. Adam Langley ma również repozytorium GitHub. Istnieje autorytatywny dostawca usług przesyłania dalej o nazwie CurveDNS, który umożliwia administratorom DNS ochronę istniejących instalacji bez łatania. OpenDNS wydał DNSCrypt, aby chronić kanał między użytkownikami OpenDNS a jego rekurencyjnymi resolwerami. Jan Mojžíš wydał curveprotect, pakiet oprogramowania, który implementuje ochronę DNSCurve i CurveCP dla popularnych usług, takich jak DNS, SSH, HTTP i SMTP.

Zastosowanie

OpenDNS , który ma 50 milionów użytkowników, ogłosił 23 lutego 2010 r. obsługę DNSCurve w swoich rekursywnych programach tłumaczących. Następnie 6 grudnia 2011 r. OpenDNS ogłosił nowe narzędzie o nazwie DNSCrypt . DNSCrypt chroni kanał między OpenDNS a jego użytkownikami. Żaden równie duży autorytatywny dostawca DNS nie wdrożył jeszcze DNSCurve.

Zobacz też

DNSCurve ma na celu zabezpieczenie komunikacji między programem tłumaczącym a autorytatywnym serwerem. Istnieje kilka opcji zabezpieczenia komunikacji między klientami DNS a programami tłumaczącymi:

Notatki

Linki zewnętrzne