DNSCurve es un protocolo seguro propuesto para el sistema de nombres de dominio (DNS), diseñado por Daniel J. Bernstein .
Descripción
DNSCurve utiliza la criptografía de curva elíptica Curve25519 [1] para establecer las claves utilizadas por Salsa20 , junto con la función de código de autenticación de mensajes (MAC) Poly1305 , para cifrar y autenticar paquetes DNS entre resolutores y servidores autorizados. Las claves públicas para servidores autorizados remotos se colocan en registros NS, por lo que los resolutores recursivos saben si el servidor admite DNSCurve. Las claves comienzan con la cadena mágica y van seguidas de una codificación Base32 de 51 bytes de la clave pública de 255 bits del servidor. Por ejemplo, en formato BIND :uz5
example.com. IN NS uz5bcx1nh80x1r17q653jf3guywz7cmyh5jv0qjz0unm56lq7rpj8l.example.com.
Luego, el resolutor envía al servidor un paquete que contiene su clave pública DNSCurve, un nonce de 96 bits y un cuadro criptográfico que contiene la consulta. La caja criptográfica se crea utilizando la clave privada del resolutor, la clave pública del servidor y el nonce. La respuesta del servidor contiene un nonce de 96 bits diferente y su propia caja criptográfica que contiene la respuesta a la consulta.
Las herramientas criptográficas utilizadas en DNSCurve son las mismas que se utilizan en CurveCP , un protocolo basado en UDP que es similar a TCP pero utiliza criptografía de curva elíptica para cifrar y autenticar datos. Una analogía es que mientras DNSSEC es como firmar una página web con Pretty Good Privacy (PGP), CurveCP y DNSCurve son como encriptar y autenticar el canal usando Transport Layer Security (TLS). Así como las páginas web firmadas por PGP se pueden enviar a través de un canal cifrado mediante SSL, los datos de DNSSEC se pueden proteger mediante DNSCurve.
DNSCurve afirma ventajas sobre los servicios DNS anteriores de: [2]
- Confidencialidad: las solicitudes y respuestas de DNS habituales no están cifradas y se transmiten a cualquier atacante.
- Integridad: el DNS habitual tiene cierta protección, pero con paciencia y rastreo, los atacantes pueden falsificar registros DNS; esto se evita mediante la autenticación criptográfica DNSCurve.
- Disponibilidad: el DNS habitual no tiene protección contra la denegación de servicio (DoS) por parte de un atacante de rastreo que envía algunos paquetes falsificados por segundo. DNSCurve reconoce y descarta los paquetes DNS falsificados, proporcionando cierta protección, aunque SMTP, HTTP, HTTPS también son vulnerables a DoS.
Seguridad
DNSCurve utiliza criptografía de curva elíptica de 256 bits, que el NIST estima que es aproximadamente equivalente a RSA de 3072 bits. [3] ECRYPT informa una equivalencia similar. [4] Utiliza criptografía de clave pública por consulta (como SSH y SSL) y nonces de 96 bits para proteger contra ataques de reproducción. Adam Langley, oficial de seguridad de Google, dice: "Con una probabilidad muy alta, nadie resolverá una sola instancia de Curve25519 sin una computadora cuántica grande". [5]
Velocidad
Adam Langley ha publicado pruebas de velocidad en su sitio web personal que muestran que Curve25519, utilizada por DNSCurve, es la más rápida entre las curvas elípticas probadas. [6] Según la Agencia de Seguridad Nacional de los Estados Unidos (NSA), la criptografía de curva elíptica ofrece un rendimiento muy superior a RSA y Diffie-Hellman a un ritmo geométrico a medida que aumenta el tamaño de las claves. [7]
Implementaciones
DNSCurve obtuvo por primera vez soporte recursivo en dnscache a través de un parche [8] de Matthew Dempsky. Dempsky también tiene un repositorio de GitHub que incluye herramientas de búsqueda de DNS de Python y un reenviador en C. [9] Adam Langley también tiene un repositorio de GitHub. [10] Existe un reenviador autorizado llamado CurveDNS [11] que permite a los administradores de DNS proteger las instalaciones existentes sin parchear. OpenDNS ha lanzado DNSCrypt [12] para proteger el canal entre los usuarios de OpenDNS y sus resolutores recursivos. Jan Mojžíš ha lanzado curveprotect, [13] un paquete de software que implementa la protección DNSCurve y CurveCP para servicios comunes como DNS, SSH, HTTP y SMTP.
Despliegue
OpenDNS , que tiene 50 millones de usuarios, anunció soporte para DNSCurve en sus resolutores recursivos el 23 de febrero de 2010. [14] Luego, el 6 de diciembre de 2011, OpenDNS anunció una nueva herramienta, llamada DNSCrypt . [15] DNSCrypt protege el canal entre OpenDNS y sus usuarios. [16] Ningún proveedor de DNS con autoridad igualmente grande ha implementado DNSCurve.
Ver también
DNSCurve está diseñado para asegurar la comunicación entre un resolutor y un servidor autorizado. Para proteger la comunicación entre los clientes DNS y los solucionadores, existen varias opciones:
- DNS sobre TLS , definido por dos RFC de seguimiento de estándares, RFC 7858 y RFC 8310
- DNS sobre HTTPS , estandarizado en RFC 8484
- DNSCrypt
Notas
- ^ DJ Bernstein. "Curve25519: criptografía de curva elíptica de alta velocidad" . Consultado el 30 de enero de 2013 .
- ^ "Introducción a DNSCurve" . DNSCurve . 22 de junio de 2009 . Consultado el 16 de marzo de 2016 .
- ^ "Recomendaciones del NIST (2011)" .
- ^ "Informe anual de ECRYPT II sobre algoritmos y tamaños de clave (2010-2011)" (PDF) . Archivado desde el original (PDF) en 2012-06-02.
- ^ "Adam Langley en la seguridad de curve25519" .
- ^ "Adam Langley: Qué diferencia hace una prima" .
- ^ "El caso de la criptografía de curva elíptica" . NSA . Archivado desde el original el 17 de enero de 2009 . Consultado el 17 de enero de 2009 .
- ^ "Parche DNSCurve para dnscache" . Archivado desde el original el 28 de diciembre de 2012.
- ^ "Repositorio DNSCurve de Matthew Dempsky en GitHub" .
- ^ "Repositorio DNSCurve de Adam Langley" .
- ^ "CurveDNS: un servidor de nombres de reenvío de DNSCurve" .
- ^ "DNSCrypt: Asegurar una pieza crítica de la infraestructura de Internet" . Archivado desde el original el 10 de mayo de 2012 . Consultado el 9 de mayo de 2012 .
- ^ "curveprotect, una colección compleja de herramientas para proteger una amplia gama de servicios de Internet" .
- ^ "OpenDNS adopta DNSCurve" .
- ^ "OpenDNS presenta DNSCrypt" . Archivado desde el original el 3 de febrero de 2013.
- ^ "net / dnscrypt-proxy: dnscrypt-proxy-1.4.3 - comunicaciones seguras entre un cliente DNS y resolver" . Puertos OpenBSD . 2015-01-06 . Consultado el 9 de febrero de 2015 .
enlaces externos
- Página web oficial
- DNSCurve.io: una comunidad para usuarios de DNSCurve
- Criptografía de alta velocidad y DNSCurve , una presentación de junio de 2009 del autor
- DNSCurve: Seguridad utilizable para DNS , una presentación de agosto de 2008 del autor
- draft-dempsky-dnscurve-01 Estándar propuesto "DNSCurve: Link-Level Security for the Domain Name System", enviado por M. Dempsky (de OpenDNS ) al IETF (actualizado en febrero de 2010)
- OpenDNS adopta DNSCurve , entrada oficial del blog de OpenDNS
- CurveDNS , servidor de nombres de reenvío DNSCurve
- Biblioteca de NaCl , redes y criptografía