No FreeBSD, uma nova implementação do WireGuard foi adicionada à base de código 

FreeBSD

O FreeBSD está bem estabelecido como um sistema para construção de servidores de Internet e Intranet. Ele fornece serviços de rede bastante confiáveis ​​e gerenciamento de memória eficiente.

Faz pouco foi divulgada a informação de que a árvore do FreeBSD foi modificada comn uma nova implementação deVPN WireGuard baseado no código do módulo do kernel preparado em conjunto pelas equipes de desenvolvimento principais do FreeBSD e do WireGuard com a contribuição do autor do VPN WireGuard e um conhecido desenvolvedor de GDB e FreeBSD

Antes de aceitar o código, foi realizada uma revisão completa das alterações com o apoio da Fundação FreeBSD, durante a qual também foram analisadas a interação do driver com os demais subsistemas do kernel e a possibilidade de utilização das primitivas criptográficas fornecidas.

Para usar os algoritmos criptográficos exigidos pelo driver, estendeu a API do subsistema criptográfico do kernel do FreeBSD, Adicionado um link que permite que algoritmos não suportados no FreeBSD sejam usados ​​através da API Criptográfica padrão, usando a implementação da biblioteca libsodium dos algoritmos necessários.

Dos algoritmos integrados no controler, apenas o código para calcular os hashes Blake2 permanece, já que a implementação desse algoritmo fornecida pelo FreeBSD está vinculada a um tamanho de hash fixo.

Além disso, durante o processo de revisão, otimização de código foi realizada, o que possibilitou aumentar a eficiência da distribuição de carga em CPUs multi-core (garantiu o balanceamento uniforme da tarefa de criptografia e descriptografia de pacotes vinculada aos núcleos da CPU).

Como resultado, a sobrecarga de processamento de pacotes implementação aproximada de driver para Linux. O código também fornece a capacidade de usar o driver ossl para acelerar as operações de criptografia.

Ao contrário da tentativa anterior de integrar o WireGuard ao FreeBSD, a nova implementação usa o utilitário stock wg, em vez de uma versão modificada do ifconfig, que permitiu uma configuração unificada entre Linux e FreeBSD. O utilitário wg, assim como o driver, estão incluídos nos fontes do FreeBSD, possibilitados por uma mudança de licença no código wg (o código está agora disponível sob as licenças MIT e GPL).

A última tentativa de incluir o WireGuard no FreeBSD foi feita em 2020, mas terminou em um escândalo, como resultado do qual o código já adicionado foi removido devido à má qualidade, manuseio descuidado de buffer, uso de stubs em vez de verificações, implementação incompleta do protocolo e violação da licença GPL.

Pra quem ainda não sabe VPN WireGuard, eles deveriam saber que isso é implementado com base em métodos de criptografia modernos, fornece desempenho muito alto, é fácil de usar, descomplicado e provou seu valor em várias grandes implantações que lidam com grandes quantidades de tráfego. O projeto está em desenvolvimento desde 2015, passou na auditoria formal e verificação dos métodos de criptografia usados. O WireGuard usa o conceito de roteamento de chave de criptografia, que envolve vincular uma chave privada a cada interface de rede e usar chaves públicas para vincular.

A troca de chaves públicas para estabelecer uma conexão é semelhante ao SSH. Para negociar chaves e conectar-se sem executar um daemon de espaço de usuário separado, o mecanismo Noise_IK do Noise Protocol Framework é usado, semelhante a manter as chaves_autorizadas em SSH. A transmissão de dados é feita por encapsulamento em pacotes UDP. Suporta a alteração do endereço IP do servidor VPN (roaming) sem interromper a conexão com a reconfiguração automática do cliente.

A criptografia usa a cifra de fluxo ChaCha20 e o algoritmo de autenticação de mensagem Poly1305 (MAC) desenvolvido por Daniel J. Bernstein, Tanja Lange e Peter Schwabe. ChaCha20 e Poly1305 estão posicionados como análogos mais rápidos e seguros de AES-256-CTR e HMAC, cuja implementação de software permite alcançar um tempo de execução fixo sem envolver suporte de hardware especial. O protocolo Diffie-Hellman de curva elíptica na implementação Curve25519, também proposto por Daniel Bernstein, é usado para gerar uma chave secreta compartilhada. Para hashing, o algoritmo BLAKE2s (RFC7693) é usado.

Por fim, vale a pena mencionar sobre a modificação, que uma vez que um driver seja aceito no FreeBSD (sys/dev/wg), ele será desenvolvido e mantido no repositório do FreeBSD a partir de agora.

Se você estiver interessado em saber mais sobre isso, você pode consultar os detalhes no link a seguir.