O núcleo do Linux 5.6 agora inclui o VPN WireGuard

Hoje, Linus integrou a ramificação net-next com interfaces VPN. WireGuard. Sobre este evento, informaram na lista de discussão do WireGuard.

O núcleo do Linux 5.6 agora inclui o VPN WireGuard

Atualmente, a coleta de código para o novo kernel Linux 5.6 continua. O WireGuard é um VPN de nova geração, que incorpora criptografia moderna. Ele foi desenvolvido inicialmente como uma alternativa mais simples e amigável às VPNs existentes. O autor é o especialista canadense em segurança da informação, Jason Donenfeld. Em agosto de 2018, o WireGuard recebeu elogios de Linus Torvalds. Aproximadamente nessa época, começaram os trabalhos para incluir o VPN no kernel Linux. O processo demorou um pouco.

"Vejo que Jason fez um pull request para incluir o WireGuard no kernel", escreveu Linus em 2 de agosto de 2018. "Posso apenas reafirmar meu amor por esse VPN e esperar pela fusão em breve? Pode ser que o código não seja ideal, mas eu revisei e, comparado aos horrores do OpenVPN e do IPSec, isso é uma verdadeira obra de arte."

Apesar do desejo de Linus, a fusão demorou um ano e meio. O principal problema estava relacionado às implementações próprias de funções criptográficas que eram usadas para melhorar o desempenho. Após longas negociações, em setembro de 2019, foi tomada uma decisão de compromisso de transferir os patches para as funções Crypto API existentes no kernel, às quais os desenvolvedores do WireGuard tinham objeções em termos de desempenho e segurança geral. Mas decidiram destacar as funções criptográficas nativas do WireGuard em uma API de baixo nível chamada Zinc e, com o tempo, portá-las para o kernel. Em novembro, os desenvolvedores do kernel cumpriram sua promessa e concordaram em mover uma parte do código do Zinc para o kernel principal. Por exemplo, no Crypto API, estão incluídas as implementações rápidas dos algoritmos ChaCha20 e Poly1305 preparadas no WireGuard.

Finalmente, em 9 de dezembro de 2019, David Miller, responsável pelo subsistema de rede do kernel Linux, aceitou incorporou no branch net-next patches a implementação da interface VPN do projeto WireGuard.

E hoje, 29 de janeiro de 2020, as mudanças foram enviadas a Linus para inclusão no kernel.

O núcleo do Linux 5.6 agora inclui o VPN WireGuard

As vantagens declaradas do WireGuard sobre outras soluções VPN:

  • Fácil de usar.
  • Utiliza criptografia moderna: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Código compacto e legível, mais fácil de pesquisar por vulnerabilidades.
  • Alta performance.
  • Clara e bem trabalhada especificação.

Toda a lógica principal do WireGuard ocupa menos de 4000 linhas de código, enquanto o OpenVPN e o IPSec têm centenas de milhares de linhas.

No WireGuard aplica o conceito de roteamento por chaves de criptografia, que implica a vinculação de uma chave privada a cada interface de rede e a utilização dela para vincular chaves públicas. A troca de chaves públicas para estabelecer conexão é feita de forma análoga ao SSH. Para a negociação de chaves e conexão sem iniciar um daemon separado no espaço do usuário, é aplicado o mecanismo Noise_IK de Noise Protocol Framework, semelhante à manutenção de authorized_keys no SSH. A transmissão de dados é realizada através da encapsulação em pacotes UDP. Suporta a mudança de endereço IP do servidor VPN (roaming) sem desconectar a conexão, com a reconfiguração automática do cliente, — escreve Opennet.

Para criptografia é utilizado o cifra de fluxo ChaCha20 e algoritmo de autenticação de mensagens (MAC) Poly1305, desenvolvidos por Daniel Bernstein (Daniel J. Bernstein), Tanja Lange e Peter Schwabe. ChaCha20 e Poly1305 são posicionados como análogos mais rápidos e seguros de AES-256-CTR e HMAC, cuja implementação de software permite obtenção de tempo de execução fixo sem necessidade de suporte de hardware especial. Para geração da chave secreta compartilhada, é utilizado o protocolo de Diffie-Hellman sobre curvas elípticas na implementação de Curve25519, também sugerido por Daniel Bernstein. O algoritmo é usado para hash BLAKE2s (RFC7693)».

Resultados testes de desempenho do site oficial:

Largura de banda (megabits/s)
O núcleo do Linux 5.6 agora inclui o VPN WireGuard

Ping (ms)
O núcleo do Linux 5.6 agora inclui o VPN WireGuard

Configuração de teste:

  • Intel Core i7-3820QM e Intel Core i7-5200U
  • Placas Gigabit Intel 82579LM e Intel I218LM
  • Linux 4.6.1
  • Configuração do WireGuard: ChaCha20 de 256 bits com Poly1305 para MAC
  • Primeira configuração do IPsec: ChaCha20 de 256 bits com Poly1305 para MAC
  • Segunda configuração do IPsec: AES-256-GCM-128 (com AES-NI)
  • Configuração do OpenVPN: conjunto de cifras equivalente ao AES de 256 bits com HMAC-SHA2-256, modo UDP
  • O desempenho foi medido com iperf3, mostrando a média obtida em 30 minutos.

Teoricamente, após a integração na pilha de rede, o WireGuard deve funcionar ainda mais rápido. Mas na prática, isso pode não ser verdade devido à transição para funções criptográficas integradas no núcleo Crypto API. Provavelmente, nem todas elas estão otimizadas até o nível de desempenho nativo do WireGuard.

Na minha opinião, o WireGuard é ideal para o usuário. Todas as decisões de baixo nível são tomadas na especificação, portanto, o processo de preparação da infraestrutura VPN típica leva apenas alguns minutos. É praticamente impossível cometer erro na configuração, — reportou no Habr em 2018. — O processo de instalação detalhado no site oficial, quero destacar a excelente suporte ao OpenWRT. A simplicidade de uso e a compactabilidade da base de código foram alcançadas graças à eliminação da distribuição de chaves. Não há um sistema complexo de certificados e toda essa confusão corporativa; as chaves de criptografia curtas são distribuídas de forma semelhante a chaves SSH.

O projeto WireGuard está em desenvolvimento desde 2015, passou por auditoria e verificação formal. O suporte ao WireGuard está integrado ao NetworkManager e ao systemd, e os patches para o kernel estão incluídos na composição básica das distribuições Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph e ALT.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster