{"id":1292,"date":"2016-07-12T09:43:44","date_gmt":"2016-07-12T12:43:44","guid":{"rendered":"http:\/\/www.maurom.com\/blog\/?p=1292"},"modified":"2017-02-08T20:43:41","modified_gmt":"2017-02-08T23:43:41","slug":"wireguard-una-vpn-rapida-moderna-y-esperemos-segura","status":"publish","type":"post","link":"https:\/\/maurom.com\/blog\/2016\/07\/12\/wireguard-una-vpn-rapida-moderna-y-esperemos-segura\/","title":{"rendered":"WireGuard, una VPN r\u00e1pida, moderna y (esperemos) segura"},"content":{"rendered":"<p>Desde su presentaci\u00f3n <a href=\"https:\/\/news.ycombinator.com\/item?id=11994265\">hace unas semanas atr\u00e1s<\/a> le estoy siguiendo el hilo a la nueva implementaci\u00f3n de t\u00fanel VPN denominada <a href=\"https:\/\/www.wireguard.io\/\">WireGuard<\/a> que, b\u00e1sicamente, y copypasteando el marketing de su sitio web,<\/p>\n<blockquote><p>WireGuard es una VPN extremadamente sencilla, aunque r\u00e1pida y moderna que utiliza t\u00e9cnicas de criptograf\u00eda avanzadas. Apunta a ser m\u00e1s r\u00e1pida, m\u00e1s simple, m\u00e1s reducida y m\u00e1s \u00fatil que IPSec, evitando a la vez los dolores de cabeza [de su implementaci\u00f3n]. Adem\u00e1s, busca ser considerablemente m\u00e1s performante que OpenVPN&#8230;<\/p><\/blockquote>\n<p>Los puntos fuertes de este software son:<\/p>\n<ul>\n<li><strong>Sencillez y facilidad de uso:<\/strong> Busca ser tan f\u00e1cil de configurar y desplegar como SSH. Una conexi\u00f3n VPN requiere el intercambio de claves p\u00fablicas sencillas -tal como el intercambio de claves SSH- y todo lo dem\u00e1s se maneja en forma transparente por el software.<\/li>\n<li><strong>Criptogr\u00e1ficamente robusto:<\/strong> Utiliza criptograf\u00eda moderna: <a href=\"http:\/\/www.noiseprotocol.org\/\">Noise protocol framework<\/a> y los algoritmos <a href=\"https:\/\/cr.yp.to\/ecdh.html\">Curve25519<\/a>, <a href=\"https:\/\/cr.yp.to\/chacha.html\">ChaCha20<\/a>, <a href=\"https:\/\/cr.yp.to\/mac.html\">Poly1305<\/a> (estos \u00faltimos de la mente de <a href=\"https:\/\/es.wikipedia.org\/wiki\/Daniel_J._Bernstein\">D. J. Bernstein<\/a>), <a href=\"https:\/\/blake2.net\/\">BLAKE2<\/a>, <a href=\"https:\/\/131002.net\/siphash\/\">SipHash24<\/a>, <a href=\"https:\/\/eprint.iacr.org\/2010\/264\">HKDF<\/a>, con decisiones conservadoras y razonables, y ha sido revisado por cript\u00f3grafos [aunque no sabemos quienes].<\/li>\n<li><strong>M\u00ednima superficie de ataque:<\/strong> Fue dise\u00f1ado teniendo en mente la sencillez y la facilidad de implementaci\u00f3n, siendo implementable f\u00e1cilmente con pocas l\u00edneas de c\u00f3digo, y f\u00e1cilmente auditable por vulnerabilidades de seguridad.<\/li>\n<li><strong>De alto rendimiento:<\/strong> Utiliza instrucciones criptogr\u00e1ficas disponibles en los procesadores modernos y est\u00e1 implementado en el propio n\u00facleo de Linux, con lo que permite armar una red segura manteniendo altas tasas de transferencia. Puede ser usado tanto en smartphones como en routers de backbone.<\/li>\n<li><strong>Bien definido y estudiado:<\/strong> WireGuard es el resultado de un extenso proceso acad\u00e9mico detallado y extenso, cuyo resultado es un documento de investigaci\u00f3n t\u00e9cnica que define claramente el protocolo y las consideraciones que se tomaron en cuenta en cada decisi\u00f3n.<\/li>\n<\/ul>\n<p>M\u00e1s all\u00e1 de la propaganda del sitio web, adem\u00e1s de su peque\u00f1o tama\u00f1o (en l\u00edneas de c\u00f3digo) y de estar implementado sobre UDP, lo m\u00e1s relevante de esta implementaci\u00f3n es que corre enteramente en el kernel, evitando los cambios de contexto de las implementaciones tradicionales de VPN. WireGuard parece haber sido desarrollado inicialmente por una sola persona: Jason A. Donenfeld, y est\u00e1 licenciado como GPLv2. A \u00e9l agradecemos, entonces, haberse tomado este tremendo trabajo.<\/p>\n<p>Al dia de hoy es posible probarlo en Debian gracias al trabajo de Daniel Kahn Gillmor (dkg), quien <a href=\"https:\/\/tracker.debian.org\/pkg\/wireguard\">se encarg\u00f3 de empaquetarlo<\/a> muy responsablemente.<\/p>\n<p>En principio se requiere un kernel Linux igual o mayor a 4.1, pero eso se consigue f\u00e1cilmente desde backports:<\/p>\n<pre>echo \"deb http:\/\/httpredir.debian.org\/debian\/ jessie-backports main\" \\\r\n    &gt; \/etc\/apt\/sources.list.d\/jessie-backports.list\r\napt update\r\napt -t jessie-backports install linux-image-amd64 linux-headers-amd64<\/pre>\n<p>Luego de reiniciar con el kernel nuevo, descargar e instalar los paquetes <a href=\"https:\/\/packages.debian.org\/experimental\/wireguard-dkms\"><code>wireguard-dkms<\/code><\/a> y <a href=\"https:\/\/packages.debian.org\/experimental\/wireguard-tools\"><code>wireguard-tools<\/code><\/a> desde el repositorio experimental. Esto instalar\u00e1 el c\u00f3digo fuente del m\u00f3dulo y la aplicaci\u00f3n de configuraci\u00f3n. La infraestructura de compilaci\u00f3n dkms se encarga de compilar el c\u00f3digo a un m\u00f3dulo usable.<\/p>\n<pre>echo \"deb http:\/\/httpredir.debian.org\/debian\/ experimental main\" \\\r\n    &gt; \/etc\/apt\/sources.list.d\/experimental.list\r\napt update\r\napt install dkms\r\napt -t experimental install wireguard-dkms wireguard-tools<\/pre>\n<p>En caso de no disponer de una instalaci\u00f3n de Debian a mano, <a href=\"https:\/\/www.wireguard.io\/install\/\">hay otras opciones<\/a>, como tambi\u00e9n est\u00e1 el \u00faltimo recurso de <a href=\"https:\/\/www.wireguard.io\/install\/#option-b-compiling-from-source\">compilarlo a la vieja usanza<\/a>.<\/p>\n<p>Finalmente, una vez que est\u00e1 todo listo,<\/p>\n<p><a href=\"https:\/\/www.wireguard.io\/quickstart\/\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.wireguard.io\/img\/walkthrough.gif\" alt=\"Quick Start Walkthrough\" width=\"640\" height=\"259\" \/><\/a><\/p>\n<p>Para todo lo dem\u00e1s, los remito a la <a href=\"https:\/\/www.wireguard.io\/protocol\/\">documentaci\u00f3n en l\u00ednea<\/a>, y al <a href=\"https:\/\/www.wireguard.io\/papers\/wireguard.pdf\">paper que detalla el protocolo<\/a>.<\/p>\n<p>Vale decir que esto a\u00fan est\u00e1 <a href=\"https:\/\/www.wireguard.io\/#about-the-project\">en los principios de su desarrollo<\/a>. No hay una versi\u00f3n estable y su implementaci\u00f3n real a\u00fan no ha tenido an\u00e1lisis relevantes desde la comunidad de seguridad en redes, pero vale decir que suena prometedor. Desde luego, si est\u00e1n interesados en participar\/desarrollarlo\/probarlo\/documentarlo, el grupo acepta nueva gente.<\/p>\n<p><em><strong>Actualizaci\u00f3n 08\/02\/2017:<\/strong> Jason ha publicado en el sitio web los videos y slides de sus \u00faltimas presentaciones, de las cuales recomiendo particularmente la de <a href=\"https:\/\/www.wireguard.io\/presentations\/#february-5-2017-fosdem-brussels-belgium\">FOSDEM 2017: Next Generation Secure Kernel Network Tunnel<\/a> como visi\u00f3n r\u00e1pida del proyecto y actualizaci\u00f3n del estado del mismo.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Desde su presentaci\u00f3n hace unas semanas atr\u00e1s le estoy siguiendo el hilo a la nueva implementaci\u00f3n de t\u00fanel VPN denominada WireGuard que, b\u00e1sicamente, y copypasteando el marketing de su sitio web, WireGuard es una VPN extremadamente sencilla, aunque r\u00e1pida y moderna que utiliza t\u00e9cnicas de criptograf\u00eda avanzadas. Apunta a ser m\u00e1s r\u00e1pida, m\u00e1s simple, m\u00e1s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[5,3,6,14],"_links":{"self":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/1292"}],"collection":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/comments?post=1292"}],"version-history":[{"count":5,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/1292\/revisions"}],"predecessor-version":[{"id":1368,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/1292\/revisions\/1368"}],"wp:attachment":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/media?parent=1292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/categories?post=1292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/tags?post=1292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}