DNSCurve
DNSCurve es un nuevo protocolo de seguridad propuesto para el Sistema de Nombres de Dominio (DNS), diseñado por Daniel J. Bernstein.[1]
Descripción
DNSCurve utiliza la función Curve25519,[2] una función de criptografía de curva elíptica para establecer claves utilizadas por Salsa20, junto con la función MAC Poly1305, para cifrar y autenticar paquetes DNS entre los resolvers y servidores autorizados. Las claves públicas de los servidores autorizados remotos se ubican en los registros NS, por lo que los resolvers recursivos pueden saber si el servidor soporta DNSCurve. La forma de reconocerlo es que las llaves comienzan con la cadena mágica uz5
y son seguidos por 51 bytes codificados en base 32 de la clave pública de 255 bits del servidor, por ejemplo, en formato BIND:
example.com. IN NS uz5bcx1nh80x1r17q653jf3guywz7cmyh5jv0qjz0unm56lq7rpj8l.example.com.
El resolver luego envía al servidor un paquete que contiene su clave pública DNSCurve, un nonce criptográfico de 96 bits, y una caja de cifrado que contiene la consulta. El cuadro de cifrado se crea usando las claves del resolutor privada, la clave pública del servidor, y el nonce. La respuesta del servidor contiene un nonce 96 bits diferente y su propia caja criptográfica que contiene la respuesta a la consulta.
Las herramientas criptográficas que se utilizan en DNSCurve son las mismas utilizadas en CurveCP, un protocolo basado en UDP que es similar a TCP, pero utiliza criptografía de curva elíptica para cifrar y autenticar los datos. Una analogía es que mientras DNSSEC es como firmar una página web con PGP, CurveCP y DNSCurve son como encriptar y autenticar el canal utilizando SSL. Al igual que las páginas web con firma PGP se pueden enviar a través de un canal cifrado con SSL, los datos DNSSEC se pueden proteger mediante DNSCurve.
Seguridad
DNSCurve utiliza criptografía de curva elíptica de 255 bits, que NIST estima ser aproximadamente equivalente a de 3072 de 96-bits RSA[3] ECRYPT reporta una equivalencia parecida.[4] Se utiliza criptografía de clave pública por consulta (como SSH y SSL), y de nonces de 96-bits para proteger contra ataques de repetición. Adam Langley, oficial de seguridad en Google, dice que "con muy alta probabilidad, nadie va a resolver una sola instancia de curve25519 sin un gran computador cuántico".[5]
Velocidad
Adam Langley ha publicado pruebas de velocidad en su página personal mostrando que curve25519, utilizado por DNSCurve, sería el más rápido entre las curvas elípticas probadas.[6] De acuerdo con la NSA, la criptografía de curva elíptica ofrece un rendimiento muy superior sobre RSA y Diffie-Helman a una tasa geométrica al aumento de tamaño de clave.[7]
Implementaciones
DNSCurve primero ganó el apoyo recursivo en dnscache mediante un parche[8] de Matthew Dempsky. Dempsky también tiene un repositorio GitHub que incluye herramientas de búsqueda DNS en Python y un forwarder en C.[9] Adam Langley también tiene un repositorio en GitHub.[10] Existe un forwarder autoritativo llamado CurveDNS,[11] que permite a los administradores de DNS proteger instalaciones sin parchar existentes. OpenDNS ha liberado DNSCrypt[12] para proteger el canal entre los usuarios de OpenDNS y sus resolvedores recursivos. Jan Mojžíš ha lanzado curveprotect,[13] una suite de software que implementa la protección DNSCurve y CurveCP para los servicios comunes, como DNS, SSH, HTTP y SMTP.
Despliegue
OpenDNS, que tiene 50 millones de usuarios, anunció el apoyo a DNSCurve en sus resolvers 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. No hay otros proveedores grandes DNS con autoridad que hayan desplegado DNSCurve todavía, aunque algunos de menor tamaño, como privacyshark.com sí lo han hecho. A enero de 2010 da servicio a 601 dominios.[16]
Véase también
Referencias
- Bernstein, Daniel J. (27 de junio de 2009). High-speed cryptography and DNSCurve (pdf). Fórum Internacional de Software Livre. Pontifícia Universidade do Rio Grande do Sul (PUCRS), Porto Alegre. Consultado el 6 de mayo de 2013.
- D. J. Bernstein. «Curve25519: high-speed elliptic-curve cryptography». Consultado el 30 de enero de 2013.
- «NIST Recommendations (2011)».
- «ECRYPT II Yearly Report on Algorithms and Keysizes (2010-2011)». Archivado desde el original el 2 de junio de 2012.
- «Adam Langley on curve25519 security».
- «Adam Langley: What a difference a prime makes».
- «NSA: The Case for Elliptic Curve Cryptography». Archivado desde el original el 8 de mayo de 2016.
- «DNSCurve patch for dnscache». Archivado desde el original el 28 de diciembre de 2012.
- «Matthew Dempsky's DNSCurve repo on github».
- «Adam Langley's DNSCurve repo».
- «CurveDNS: A DNSCurve Forwarding Name Server».
- «DNSCrypt: Securing a critical piece of Internet infrastructure». Archivado desde el original el 10 de mayo de 2012.
- «curveprotect, a complex collection of tools for protecting wide range of internet services». Archivado desde el original el 26 de mayo de 2013. Consultado el 5 de mayo de 2013.
- «OpenDNS adopts DNSCurve». Archivado desde el original el 26 de febrero de 2010. Consultado el 4 de mayo de 2013.
- «OpenDNS unveils DNSCrypt». Archivado desde el original el 3 de febrero de 2013.
- «PrivacyShark DNSCurve domains». Archivado desde el original el 18 de junio de 2012. Consultado el 5 de mayo de 2013.
Enlaces externos
- Sitio Oficial
- DNSCurve: Usable security for DNS, an August 2008 presentation by the author
- draft-dempsky-dnscurve-01 estándar propuesto "DNSCurve: Link-Level Security for the Domain Name System", por M. Dempsky (de OpenDNS) a IETF (actualizado en febrero de 2010)
- CurveDNS, DNSCurve forwarding name server
- NaCl, Networking and Cryptography library