O WireGuard "chegará" ao kernel do Linux - por quê?

No final de julho, os desenvolvedores de túneis WireGuard VPN propuseram um conjunto de patches que tornariam seu software de organização de túneis VPN parte do kernel do Linux. No entanto, a data exata para a implementação da "idéia" ainda é desconhecida. Sob o gato, falaremos sobre essa ferramenta com mais detalhes.


/ foto Tambako The Jaguar CC

Brevemente sobre o projeto


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

Segundo os desenvolvedores, o WireGuard é fácil de configurar e a segurança do protocolo é alcançada por meio de algoritmos criptográficos comprovados . Ao alterar a rede : Wi-Fi, LTE ou Ethernet, você precisa se reconectar ao servidor VPN a cada vez. Os servidores WireGuard não interrompem a conexão, mesmo que o usuário tenha recebido um novo endereço IP.

Apesar do fato de o WireGuard ter sido originalmente aprimorado para o kernel Linux, os desenvolvedores cuidaram da versão portátil da ferramenta para dispositivos Android. O aplicativo ainda está inacabado, mas você pode experimentá-lo agora. Para fazer isso, você precisa se tornar um dos testadores .

Em geral, o WireGuard é bastante popular e foi implementado por vários provedores de VPN, como Mullvad e AzireVPN2. A rede publicou um grande número de guias para configurar esta solução. Por exemplo, existem guias que os usuários criam e há guias preparados pelos autores do projeto .

Detalhes técnicos


Na documentação oficial (p. 18), observe-se que a largura de banda do WireGuard é quatro vezes maior que a do OpenVPN: 1011 Mbit / s versus 258 Mbit / s, respectivamente. O WireGuard está à frente da solução Linux IPsec padrão - 881 Mbps. Supera em termos de facilidade de configuração.

Depois de trocar as chaves (a conexão VPN é inicializada quase como no SSH) e estabelecer a conexão, o WireGuard resolve independentemente todas as outras tarefas: não há necessidade de se preocupar com roteamento, monitoramento do estado, etc. Esforços adicionais de configuração precisarão ser aplicados apenas se você desejar usar criptografia simétrica.


/ foto Anders Hojbjerg CC

Para instalar, você precisa de uma distribuição com o kernel Linux "mais antigo" 4.1. 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 

Segundo os editores do xakep.ru, a auto-montagem da fonte também é simples. Basta elevar a interface e gerar chaves públicas e privadas:

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

O WireGuard não usa uma interface para trabalhar com o provedor de criptografia CryptoAPI . Em vez disso, a cifra de fluxo ChaCha20 , a inserção de imitação criptográfica Poly1305 e suas próprias funções de hash criptográfico são usadas.

A chave secreta é gerada usando o protocolo Diffie-Hellman, com base na curva elíptica Curve25519 . O hash usa as funções de hash BLAKE2 e SipHash . Devido ao formato do registro de data e hora TAI64N , o protocolo descarta pacotes com um valor de registro de data e hora mais baixo, impedindo DoS e ataques de repetição .

Ao mesmo tempo, o WireGuard usa a função ioctl para controlar a E / S (usada para usar o Netlink ), o que torna o código mais limpo e mais simples. Você pode verificar isso observando o código de configuração .

Planos do desenvolvedor


Até agora, o WireGuard é um módulo de kernel fora da árvore. Mas o autor do projeto Jason Donenfeld diz que chegou a hora de uma implementação completa no kernel do Linux. Uma vez que é mais simples e mais confiável do que outras soluções. Jason é apoiado nesse sentido até pelo próprio Linus Torvalds - ele chamou o código do WireGuard de "uma obra de arte".

Mas ninguém está falando sobre as datas exatas para introduzir o WireGuard no kernel. E é improvável que isso aconteça com o lançamento do kernel Linux de agosto 4.18. No entanto, é provável que isso aconteça em um futuro muito próximo: na versão 4.19 ou 5.0.

Quando o WireGuard é adicionado ao kernel, os desenvolvedores desejam refinar o aplicativo para dispositivos Android e começar a escrever um aplicativo para iOS. Além disso, está planejado para concluir as implementações no Go e Rust e portá-las para o macOS, Windows e BSD. Também está planejado implementar o WireGuard para mais "sistemas exóticos": DPDK , FPGA , além de muitas outras coisas interessantes. Todos eles estão listados na lista de tarefas do autor 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 | Criptografia de dados na nuvem | Armazenamento na nuvem

Source: https://habr.com/ru/post/pt419769/


All Articles