VPN WireGuard incluído no núcleo de Linux 5.6

Hoxe Linus trasladou a sucursal net-next con interfaces VPN para si mesmo WireGuard. Sobre este evento сообщили na lista de correo de WireGuard.

VPN WireGuard incluído no núcleo de Linux 5.6

A recollida de código para o novo núcleo de Linux 5.6 está actualmente en curso. WireGuard é unha VPN rápida de próxima xeración que implementa criptografía moderna. Desenvolveuse orixinalmente como unha alternativa máis sinxela e conveniente ás VPN existentes. O autor é o especialista canadense en seguridade da información Jason A. Donenfeld. En agosto de 2018, WireGuard recibiu eloxios por Linus Torvalds. Por esa época, comezou a traballar para incluír VPN no núcleo de Linux. O proceso levou un pouco máis.

"Vexo que Jason fixo unha solicitude de extracción para incluír WireGuard no núcleo", escribiu Linus o 2 de agosto de 2018. - Podo declarar unha vez máis o meu amor por esta VPN e esperar unha fusión pronto? O código pode non ser perfecto, pero mirei para el, e comparado cos horrores de OpenVPN e IPSec, é unha verdadeira obra de arte".

A pesar dos desexos de Linus, a fusión prolongouse durante ano e medio. O principal problema resultou estar ligado a implementacións propietarias de funcións criptográficas, que se utilizaron para mellorar o rendemento. Despois de longas negociacións en setembro de 2019 foi así tomouse unha decisión de compromiso traducir parches ás funcións da API Crypto dispoñibles no núcleo, ás que os desenvolvedores de WireGuard teñen queixas no ámbito do rendemento e da seguridade xeral. Pero decidiron separar as funcións criptográficas nativas de WireGuard nunha API de Zinc de baixo nivel separada e, finalmente, portalas ao núcleo. En novembro, os desenvolvedores do núcleo cumpriron a súa promesa e acordou transferir parte do código de Zinc ao núcleo principal. Por exemplo, na API Crypto incluído implementacións rápidas dos algoritmos ChaCha20 e Poly1305 preparados en WireGuard.

Finalmente, o 9 de decembro de 2019, David S. Miller, responsable do subsistema de rede do núcleo de Linux, aceptada á rama net-next parches coa implementación dunha interface VPN do proxecto WireGuard.

E hoxe, 29 de xaneiro de 2020, os cambios foron para Linus para a súa inclusión no núcleo.

VPN WireGuard incluído no núcleo de Linux 5.6

Vantaxes reivindicadas de WireGuard sobre outras solucións VPN:

  • Doado de usar.
  • Usa criptografía moderna: marco de protocolo de ruído, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Código compacto e lexible, máis fácil de investigar para detectar vulnerabilidades.
  • Alto rendemento.
  • Claro e elaborado especificación.

Toda a lóxica principal de WireGuard ocupa menos de 4000 liñas de código, mentres que OpenVPN e IPSec requiren centos de miles de liñas.

"WireGuard usa o concepto de enrutamento de claves de cifrado, que implica anexar unha chave privada a cada interface de rede e usar chaves públicas para vinculala. As chaves públicas intercámbianse para establecer unha conexión dun xeito similar ao SSH. Para negociar claves e conectarse sen executar un daemon separado no espazo do usuario, o mecanismo Noise_IK de Marco do protocolo de ruídosimilar a manter as claves_autorizadas en SSH. A transmisión de datos realízase mediante o encapsulamento en paquetes UDP. Admite cambiar o enderezo IP do servidor VPN (roaming) sen desconectar a conexión coa reconfiguración automática do cliente, - escribe Opennet.

Para cifrado se usa cifrado de fluxo ChaCha20 e algoritmo de autenticación de mensaxes (MAC) Poly1305, deseñado por Daniel Bernstein (Daniel J. Bernstein), Tanja Lange e Peter Schwabe. ChaCha20 e Poly1305 sitúanse como análogos máis rápidos e seguros de AES-256-CTR e HMAC, cuxa implementación de software permite acadar un tempo de execución fixo sen o uso de soporte especial de hardware. Para xerar unha clave secreta compartida, utilízase na implementación o protocolo Diffie-Hellman de curva elíptica Curva25519, proposto tamén por Daniel Bernstein. O algoritmo usado para o hash é BLAKE2s (RFC7693)».

Descubrimentos probas de rendemento dende o sitio web oficial:

Ancho de banda (megabit/s)
VPN WireGuard incluído no núcleo de Linux 5.6

Ping (ms)
VPN WireGuard incluído no núcleo de Linux 5.6

Configuración de proba:

  • Intel Core i7-3820QM e Intel Core i7-5200U
  • Tarxetas Gigabit Intel 82579LM e Intel I218LM
  • Linux 4.6.1
  • Configuración WireGuard: ChaCha256 de 20 bits con Poly1305 para MAC
  • Primeira configuración IPsec: ChaCha256 de 20 bits con Poly1305 para MAC
  • Segunda configuración IPsec: AES-256-GCM-128 (con AES-NI)
  • Configuración de OpenVPN: paquete de cifrado equivalente a AES de 256 bits con HMAC-SHA2-256, modo UDP
  • O rendemento foi medido usando iperf3, mostra o resultado medio durante 30 minutos.

En teoría, unha vez integrado na pila de rede, WireGuard debería funcionar aínda máis rápido. Pero en realidade isto non será necesariamente o caso debido á transición ás funcións criptográficas da API Crypto integradas no núcleo. Quizais non todos estean aínda optimizados para o nivel de rendemento do WireGuard nativo.

"Desde o meu punto de vista, WireGuard é xeralmente ideal para o usuario. Todas as decisións de baixo nivel tómanse na especificación, polo que o proceso de preparación dunha infraestrutura VPN típica leva só uns minutos. É case imposible estropear a configuración - писали en Habré en 2018. - Proceso de instalación descrito en detalle no sitio web oficial, gustaríame destacar por separado o excelente Soporte OpenWRT. Esta facilidade de uso e compacidade do código base conseguiuse eliminando a distribución de claves. Non hai un sistema de certificados complexo e todo este horror corporativo; as claves de cifrado curtas distribúense como as claves SSH.

O proxecto WireGuard desenvólvese dende 2015, foi auditado e verificación formal. O soporte de WireGuard está integrado en NetworkManager e systemd, e os parches do núcleo están incluídos nas distribucións base de Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph e ALT.

Fonte: www.habr.com

Engadir un comentario