Jason A. Donenfeld, autor do WireGuard VPN, lançou a primeira versão principal do software cliente WireGuard para Windows 1.0, bem como os drivers WireGuardNT 1.0 com uma porta. VPN WireGuard para o kernel do Windows 10 e 11, com suporte para arquiteturas AMD64, x86 e ARM64. O código do componente do kernel do Windows é licenciado sob a GPLv2 e o software cliente é licenciado sob a licença MIT.
A adaptação é baseada no código-fonte da implementação principal do WireGuard para o kernel Linux, que foi convertida para usar entidades do kernel Windows e a pilha de rede NDIS. Comparado à implementação wireguard-go, que roda no espaço do usuário e usa a interface de rede Wintun, o WireGuardNT oferece melhorias significativas de desempenho ao eliminar trocas de contexto e a cópia do conteúdo dos pacotes do kernel para o espaço do usuário. Similarmente às implementações para Linux, OpenBSD e FreeBSD, toda a lógica de processamento de protocolo no WireGuardNT roda diretamente no nível da pilha de rede.
A versão 1.0 foi considerada um marco, representando a resolução de diversos problemas e o cumprimento de tarefas planejadas, como: o uso da função NdisWdfGetAdapterContextFromAdapterHandle() em vez do armazenamento menos seguro do estado do driver no campo Reservado e o uso de offsets não documentados; o rastreamento correto e imediato do tamanho da MTU (Unidade Máxima de Transmissão) por meio da interceptação de chamadas de sistema; e o uso do padrão C23 no código.
Para relembrar, o WireGuard VPN é baseado em métodos de criptografia modernos, oferece desempenho excepcional, é fácil de usar, descomplicado e já provou sua eficácia em diversas implantações de grande escala, lidando com grandes volumes de tráfego. O projeto está em desenvolvimento desde 2015 e passou por auditoria e verificação formal de seus métodos de criptografia. O WireGuard utiliza um conceito de roteamento criptografado baseado em chaves, que envolve a vinculação de uma chave privada a cada interface de rede e o uso de chaves públicas para a vinculação de chaves.
A troca de chaves públicas para estabelecer uma conexão é semelhante ao SSH. Para negociar chaves e conectar sem executar um daemon separado no espaço do usuário, utiliza-se o mecanismo Noise_IK do Noise Protocol Framework, similar à manutenção de authorized_keys no SSH. A transferência de dados é realizada por meio de encapsulamento em pacotes UDP. A alteração de chaves é suportada. Endereços IP Servidores VPN (roaming) sem interrupção de conexão com reconfiguração automática do cliente.
O algoritmo de criptografia de fluxo ChaCha20 e o algoritmo de autenticação de mensagens (MAC) Poly1305, desenvolvidos por Daniel J. Bernstein, Tanja Lange e Peter Schwabe, são usados para criptografia. ChaCha20 e Poly1305 são comercializados como alternativas mais rápidas e seguras ao AES-256-CTR e ao HMAC, cuja implementação em software permite execução em tempo fixo sem a necessidade de hardware específico. A chave secreta compartilhada é gerada usando o protocolo Diffie-Hellman de curva elíptica na implementação Curve25519, também proposta por Daniel Bernstein. O algoritmo BLAKE2s (RFC7693) é usado para hashing.
Fonte: opennet.ru
