O WireGuard “virá” para o kernel Linux - por quê?

No final de julho, os desenvolvedores do túnel VPN WireGuard propuseram conjunto de remendos, o que tornará seu software de tunelamento VPN parte do kernel Linux. No entanto, a data exata de implementação da “ideia” permanece desconhecida. Abaixo do corte falaremos sobre essa ferramenta com mais detalhes.

O WireGuard “virá” para o kernel Linux - por quê?
/ foto Tambako, o Jaguar CC

Resumidamente sobre o projeto

WireGuard é um túnel VPN de última geração criado por Jason A. Donenfeld, CEO da Edge Security. O projeto foi desenvolvido como simplificado e uma alternativa rápida ao OpenVPN e IPsec. A primeira versão do produto continha apenas 4 mil linhas de código. Para efeito de comparação, o OpenVPN tem cerca de 120 mil linhas e o IPSec - 420 mil.

Em palavras desenvolvedores, o WireGuard é fácil de configurar e a segurança do protocolo é alcançada através de algoritmos criptográficos comprovados. Ao mudar de rede: Wi-Fi, LTE ou Ethernet precisam se reconectar sempre ao servidor VPN. Os servidores WireGuard não encerram a conexão, mesmo que o usuário tenha recebido um novo endereço IP.

Apesar do WireGuard ter sido originalmente projetado para o kernel Linux, os desenvolvedores cuidado de e sobre uma versão portátil da ferramenta para dispositivos Android. O aplicativo ainda não está totalmente desenvolvido, mas você pode testá-lo agora. Para isso você precisa torne-se um dos testadores.

Em geral, o WireGuard é bastante popular e já foi implementado vários provedores de VPN, como Mullvad e AzireVPN. Publicado on-line um grande número guias de configuração esta decisão. Por exemplo, existem guias, que são criados pelos usuários, e há guias, preparado pelos autores do projeto.

Detalhes técnicos

В documentação oficial (p. 18) nota-se que o throughput do WireGuard é quatro vezes maior que o do OpenVPN: 1011 Mbit/s versus 258 Mbit/s, respectivamente. O WireGuard também está à frente da solução padrão para Linux IPsec - possui 881 Mbit/s. Ele também supera em facilidade de configuração.

Depois que as chaves são trocadas (a conexão VPN é inicializada de forma semelhante ao SSH) e a conexão é estabelecida, o WireGuard cuida de todas as outras tarefas por conta própria: não há necessidade de se preocupar com roteamento, controle de estado, etc. obrigatório se você quiser usar criptografia simétrica.

O WireGuard “virá” para o kernel Linux - por quê?
/ foto Anders Hojbjerg CC

Para instalar, você precisará de uma distribuição com kernel Linux anterior a 4.1. Ele pode ser encontrado nos repositórios das principais distribuições Linux.

$ sudo add-apt-repository ppa:hda-me/wireguard
$ sudo apt update
$ sudo apt install wireguard-dkms wireguard-tools

Como observam os editores do xakep.ru, a automontagem a partir dos textos de origem também é fácil. Basta abrir a interface e gerar chaves públicas e privadas:

$ sudo ip link add dev wg0 type wireguard
$ wg genkey | tee privatekey | wg pubkey > publickey

WireGuard não usa interface para trabalhar com um provedor de criptografia Cryptoapi. Em vez disso, uma cifra de fluxo é usada ChaCha20, criptográfico inserção de imitação Poly1305 e funções de hash criptográficas proprietárias.

A chave secreta é gerada usando Protocolo Diffie-Hellman com base na curva elíptica Curve25519. Ao fazer hash, eles usam funções hash BLAKE2 и SipHash. Devido ao formato do carimbo de data/hora TAI64N o protocolo descarta pacotes com um valor de timestamp menor, assim impedindo DoS- и ataques de repetição.

Neste caso, o WireGuard usa a função ioctl para controlar E/S (usada anteriormente netlink), o que torna o código mais limpo e simples. Você pode verificar isso olhando código de configuração.

Planos de Desenvolvedor

Por enquanto, o WireGuard é um módulo de kernel fora da árvore. Mas o autor do projeto é Jason Donenfeld fala, que chegou a hora da implementação completa no kernel Linux. Porque é mais simples e confiável que outras soluções. Jasão a esse respeito suporta o até o próprio Linus Torvalds chamou o código WireGuard de “obra de arte”.

Mas ninguém está falando sobre as datas exatas para a introdução do WireGuard no kernel. E dificilmente isso acontecerá com o lançamento do kernel Linux 4.18 de agosto. Porém, existe a possibilidade de que isso aconteça num futuro muito próximo: na versão 4.19 ou 5.0.

Quando o WireGuard é adicionado ao kernel, os desenvolvedores quer finalizar o aplicativo para dispositivos Android e começar a escrever um aplicativo para iOS. Também há planos para concluir implementações em Go e Rust e portá-las para macOS, Windows e BSD. Também está prevista a implementação do WireGuard para mais “sistemas exóticos”: DPDK, FPGA, bem como muitas outras coisas interessantes. Todos eles estão listados em lista de afazeres autores do projeto.

PS Mais alguns artigos do nosso blog corporativo:

A principal direção da nossa atividade é a prestação de serviços em nuvem:

Infraestrutura Virtual (IaaS) | Hospedagem PCI DSS | Nuvem FZ-152 | Hospedagem SAP | Armazenamento virtual | Criptografando dados na nuvem | Armazenamento na núvem

Fonte: habr.com

Adicionar um comentário