David Miller (), responsável pelo subsistema de rede do núcleo Linux, incorporou no branch net-next com a implementação da interface VPN do projeto . No início do próximo ano, as mudanças acumuladas na branch net-next irão formar a base do lançamento do núcleo Linux 5.6.
Tentativas de promover o código do WireGuard no núcleo principal foram feitas nos últimos anos, mas não tiveram sucesso devido à vinculação a implementações próprias de funções criptográficas que eram utilizadas para aumentar o desempenho. Inicialmente, essas funções foram para o núcleo como uma API de baixo nível adicional chamada Zinc, que ao longo do tempo poderia substituir a API Crypto padrão.
Após as negociações na conferência Kernel Recipes, os criadores do WireGuard em setembro para adaptar seus patches ao uso da API Crypto existente no núcleo, à qual os desenvolvedores do WireGuard têm preocupações em termos de desempenho e segurança geral. A API Zinc será continuada como um projeto separado.
Em novembro, os desenvolvedores do núcleo chegaram a um compromisso de resposta e concordaram em transferir parte do código do Zinc para o núcleo principal. Essencialmente, alguns componentes do Zinc serão transferidos para o núcleo, mas não como uma API separada, e sim como parte do subsistema da API Crypto. Por exemplo, em API Crypto já existem implementações rápidas dos algoritmos ChaCha20 e Poly1305 preparadas no WireGuard.
Com a próxima inclusão do WireGuard no núcleo principal, o fundador do projeto anunciou uma reestruturação do repositório. Para simplificar o desenvolvimento, três repositórios separados, mais adequados para organizar o trabalho com o código do núcleo principal, substituirão o repositório monolítico 'WireGuard.git', que foi projetado para existir isoladamente:
- — uma árvore completa do núcleo com as mudanças do projeto WireGuard, cuja revisão será feita para inclusão no núcleo e transferida regularmente para as branches net/net-next.
- — um repositório para utilitários e scripts executáveis no espaço do usuário, como wg e wg-quick. O repositório pode ser utilizado para criar pacotes para distribuições.
- – repositório com a variante do módulo, fornecido separadamente do núcleo e incluindo a camada compat.h para garantir compatibilidade com núcleos antigos. O desenvolvimento principal ocorrerá no repositório wireguard-linux.git, mas enquanto houver necessidade e demanda dos usuários, uma versão separada dos patches também será mantida em funcionamento.
Lembre-se de que a VPN WireGuard é implementada com base em métodos de criptografia modernos, oferece desempenho muito alto, é fácil de usar, livre de complicações e provou-se eficaz em várias implementações de grande escala que lidam com grandes volumes de tráfego. O projeto está em desenvolvimento desde 2015, passou por auditoria e métodos de criptografia. O suporte ao WireGuard já está integrado ao NetworkManager e ao systemd, e os patches para o kernel fazem parte da composição básica das distribuições , Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, e .
O WireGuard utiliza a ideia de roteamento baseado em chaves de criptografia, que implica na vinculação de uma chave privada a cada interface de rede e na aplicação para vinculação de chaves públicas. A troca de chaves públicas para estabelecer a conexão é feita de maneira análoga ao SSH. Para a negociação de chaves e conexão sem iniciar um daemon separado no espaço do usuário, é utilizado o mecanismo Noise_IK de , similar à manutenção de authorized_keys no SSH. A transmissão de dados é realizada através da encapsulação em pacotes UDP. Suporte para mudança de endereço IP do servidor VPN (roaming) sem interrupção da conexão e reconfiguração automática do cliente.
Para criptografia o cifra de fluxo e algoritmo de autenticação de mensagens (MAC) , desenvolvidos por Daniel Bernstein (), Tanja Lange
(Tanja Lange) e Peter Schwabe (Peter Schwabe). ChaCha20 e Poly1305 são posicionados como alternativas mais rápidas e seguras ao AES-256-CTR e HMAC, cuja implementação de software permite alcançar tempos de execução fixos sem a necessidade de suporte de hardware especial. Para a geração da chave secreta compartilhada, utiliza-se o protocolo de Diffie-Hellman em curvas elípticas na implementação , também proposto por Daniel Bernstein. Algoritmo usado para hashing .
Ao desempenho do WireGuard demonstrou uma capacidade de throughput 3,9 vezes maior e uma responsividade 3,8 vezes maior, em comparação com o OpenVPN (AES de 256 bits com HMAC-SHA2-256). Em comparação com o IPsec (ChaCha20+Poly1305 de 256 bits e AES-256-GCM-128), o WireGuard observa uma pequena vantagem em desempenho (13-18%) e uma redução nas latências (21-23%). Os testes foram realizados usando implementações rápidas dos algoritmos de criptografia desenvolvidos pelo projeto — a tradução para a API Crypto padrão do núcleo pode levar à deterioração do desempenho.
Fonte: opennet.ru
