VPN WireGuard incluído no kernel Linux 5.6

Hoje Linus mudou o branch net-next com interfaces VPN para si mesmo WireGuard. Sobre este evento сообщили na lista de discussão do WireGuard.

VPN WireGuard incluído no kernel Linux 5.6

A coleta de código para o novo kernel Linux 5.6 está em andamento. WireGuard é uma VPN rápida de próxima geração que implementa criptografia moderna. Foi originalmente desenvolvido como uma alternativa mais simples e conveniente às VPNs existentes. O autor é o especialista canadense em segurança da informação Jason A. Donenfeld. Em agosto de 2018, WireGuard foi elogiado por Linus Torvalds. Naquela época, começaram os trabalhos para incluir a VPN no kernel do Linux. O processo demorou um pouco mais.

“Vejo que Jason fez uma solicitação pull para incluir o WireGuard no kernel”, escreveu Linus em 2 de agosto de 2018. — Posso declarar mais uma vez meu amor por esta VPN e esperar uma fusão em breve? O código pode não ser perfeito, mas eu olhei para ele e, comparado aos horrores do OpenVPN e do IPSec, é uma verdadeira obra de arte."

Apesar da vontade de Linus, a fusão arrastou-se por um ano e meio. O principal problema acabou por estar ligado às implementações proprietárias de funções criptográficas, que foram utilizadas para melhorar o desempenho. Após longas negociações em setembro de 2019, foi uma decisão de compromisso foi tomada traduzir patches para as funções da Crypto API disponíveis no kernel, às quais os desenvolvedores do WireGuard têm reclamações na área de desempenho e segurança geral. Mas eles decidiram separar as funções criptográficas nativas do WireGuard em uma API Zinc separada de baixo nível e, eventualmente, portá-las para o kernel. Em novembro os desenvolvedores do kernel mantiveram sua promessa e concordou transferir parte do código do Zinc para o kernel principal. Por exemplo, na API Crypto incluído implementações rápidas dos algoritmos ChaCha20 e Poly1305 preparados no WireGuard.

Finalmente em 9 de dezembro de 2019 David S. Miller responsável pelo subsistema de rede do kernel Linux aceitou o para a próxima filial da rede remendos com a implementação de uma interface VPN do projeto WireGuard.

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

VPN WireGuard incluído no kernel Linux 5.6

Vantagens reivindicadas do WireGuard sobre outras soluções VPN:

  • Fácil de usar.
  • Usa criptografia moderna: estrutura de protocolo de ruído, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Código compacto e legível, mais fácil de investigar vulnerabilidades.
  • Alto desempenho.
  • Claro e elaborado especificação.

Toda a lógica central do WireGuard ocupa menos de 4000 linhas de código, enquanto OpenVPN e IPSec requerem centenas de milhares de linhas.

“O WireGuard usa o conceito de roteamento de chave de criptografia, que envolve anexar uma chave privada a cada interface de rede e usar chaves públicas para ligá-las. As chaves públicas são trocadas para estabelecer uma conexão de forma semelhante ao SSH. Para negociar chaves e conectar-se sem executar um daemon separado no espaço do usuário, o mecanismo Noise_IK do Estrutura do Protocolo de Ruídosemelhante à manutenção de chaves_autorizadas em SSH. A transmissão de dados é realizada através de encapsulamento em pacotes UDP. Suporta alteração do endereço IP do servidor VPN (roaming) sem desconectar a conexão com reconfiguração automática do cliente, - escreve Rede aberta.

Para criptografia usado cifra de fluxo ChaCha20 e algoritmo de autenticação de mensagem (MAC) Poly1305, desenhado 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 atingir um tempo de execução fixo sem o uso de suporte de hardware especial. Para gerar uma chave secreta compartilhada, o protocolo Diffie-Hellman de curva elíptica é usado na implementação Curve25519, também proposto por Daniel Bernstein. O algoritmo usado para hash é BLAKE2s (RFC7693)".

Descobertas testes de performance do site oficial:

Largura de banda (megabit/s)
VPN WireGuard incluído no kernel Linux 5.6

Ping (ms)
VPN WireGuard incluído no kernel Linux 5.6

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 WireGuard: ChaCha256 de 20 bits com Poly1305 para MAC
  • Primeira configuração IPsec: ChaCha256 de 20 bits com Poly1305 para MAC
  • Segunda configuração IPsec: AES-256-GCM-128 (com AES-NI)
  • Configuração OpenVPN: conjunto de criptografia equivalente AES de 256 bits com HMAC-SHA2-256, modo UDP
  • O desempenho foi medido usando iperf3, mostra o resultado médio em 30 minutos.

Em teoria, uma vez integrado à pilha de rede, o WireGuard deveria funcionar ainda mais rápido. Mas, na realidade, este não será necessariamente o caso devido à transição para as funções criptográficas da Crypto API integradas no kernel. Talvez nem todos eles ainda estejam otimizados para o nível de desempenho do WireGuard nativo.

“Do meu ponto de vista, o WireGuard geralmente é 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 de uma infraestrutura VPN típica leva apenas alguns minutos. É quase impossível bagunçar a configuração - писали em Habré em 2018. — Processo de instalação descrito em detalhes no site oficial, gostaria de destacar separadamente o excelente Suporte OpenWRT. Essa facilidade de uso e compactação da base de código foram alcançadas eliminando a distribuição de chaves. Não existe um sistema de certificação complexo e todo esse horror corporativo; chaves de criptografia curtas são distribuídas de forma muito semelhante às chaves SSH.”

O projeto WireGuard está em desenvolvimento desde 2015, foi auditado e verificação formal. O suporte WireGuard está integrado ao NetworkManager e ao systemd, e os patches do kernel estão incluídos nas distribuições básicas do Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph e ALT.

Fonte: habr.com

Adicionar um comentário