WireGuard vs OpenVPN: protocolos comparados
WireGuard e OpenVPN são os dois protocolos mais oferecidos por serviços de VPN voltados ao consumidor. Este artigo os compara em termos de design criptográfico, desempenho, tamanho do código, compatibilidade de plataformas e características operacionais — as dimensões que afetam como um serviço realmente se comporta em produção.
Contexto sobre os dois protocolos
O OpenVPN foi lançado em 2001 e se tornou um padrão de fato em implantações comerciais de VPN. É um projeto de código aberto escrito em C, roda em espaço de usuário e usa as bibliotecas OpenSSL ou mbedTLS para operações criptográficas. Sua longevidade e flexibilidade produziram um extenso conjunto de recursos e uma ampla variedade de configurações suportadas.
O WireGuard é consideravelmente mais novo. O protocolo foi publicado pela primeira vez em 2016 e incorporado ao kernel do Linux em 2020. Foi projetado explicitamente para ser mais simples que seus antecessores, com uma pegada de código menor, um conjunto restrito de primitivas criptográficas modernas e uma implementação residente no kernel nas plataformas que a suportam. O autor do protocolo, Jason A. Donenfeld, orientou os objetivos de design em torno da verificabilidade e do desempenho, em vez da configurabilidade.
Design criptográfico
Os dois protocolos diferem substancialmente em como abordam a criptografia. O WireGuard vem com um conjunto fixo de algoritmos; o OpenVPN permite que o operador escolha entre muitos.
O conjunto fixo do WireGuard
O WireGuard usa um único conjunto de cifras baseado em primitivas modernas. Os componentes são ChaCha20 para criptografia, Poly1305 para autenticação, Curve25519 para troca de chaves, BLAKE2s para hashing e SipHash24 para balanceamento de carga. O Noise Protocol Framework fornece o handshake.
Fixar o conjunto tem duas consequências. Primeiro, elimina a negociação de protocolo, que historicamente foi uma fonte de ataques de downgrade em protocolos baseados em TLS. Segundo, significa que atualizar a criptografia exige uma mudança de versão do protocolo, e não uma mudança de configuração.
A configurabilidade do OpenVPN
O OpenVPN suporta muitas opções de cifras por meio de sua biblioteca TLS subjacente. Configurações comuns incluem AES-256-GCM para criptografia, SHA256 para autenticação e ECDH para troca de chaves. Implantações mais antigas do OpenVPN podem usar BF-CBC ou AES-CBC com HMAC, que são consideravelmente mais fracas pelos padrões modernos.
A flexibilidade permite que o OpenVPN suporte clientes legados, mas também significa que uma auditoria de configuração é necessária para confirmar que uma determinada implantação está usando configurações fortes.
Características de desempenho
O WireGuard geralmente supera o OpenVPN no mesmo hardware. Dois fatores explicam a maior parte da diferença.
Primeiro, o WireGuard roda no kernel no Linux, no macOS e no Windows, o que evita o overhead de mover cada pacote entre o kernel e o espaço de usuário. A implementação em espaço de usuário do OpenVPN é portável, mas incorre em um custo de troca de contexto por pacote.
Segundo, o ChaCha20-Poly1305 é bem adequado a processadores que não têm instruções de AES dedicadas, o que é comum em dispositivos móveis baseados em ARM. O OpenVPN normalmente usa AES, que é mais rápido em hardware com AES-NI, mas mais lento em outros lugares.
Na prática, o WireGuard costuma alcançar maior taxa de transferência, menor latência e uso reduzido de CPU em comparação com o OpenVPN em dispositivos de consumo. O impacto na bateria de dispositivos móveis também costuma ser menor.
Tamanho do código e superfície de auditoria
O tamanho de uma base de código se correlaciona vagamente com o esforço necessário para auditá-la em busca de vulnerabilidades. A implementação de referência do WireGuard consiste em aproximadamente quatro mil linhas de código. A implementação no kernel do Linux é comparável.
O OpenVPN, em contraste, soma cerca de setenta mil linhas e depende de uma biblioteca TLS — OpenSSL ou mbedTLS — que acrescenta várias centenas de milhares de linhas de código adicionais à fronteira de confiança. A diferença de tamanho não indica, por si só, que o WireGuard seja mais seguro, mas afeta o quão minuciosamente a implementação pode ser revisada.
Compatibilidade de plataformas
Ambos os protocolos têm amplo suporte. O WireGuard tem implementações oficiais para Linux (kernel e espaço de usuário), Windows, macOS, iOS, Android, FreeBSD e OpenBSD. O suporte ao iOS, em particular, está bem integrado por meio do framework iOS Network Extension.
O OpenVPN está disponível em praticamente todas as plataformas, incluindo sistemas mais antigos para os quais o WireGuard não foi portado. Muitas redes corporativas usam o OpenVPN por compatibilidade com infraestrutura legada.
Para novas implantações em sistemas operacionais modernos, o WireGuard é a escolha mais direta. Para ambientes que exigem ampla compatibilidade — incluindo sistemas legados, dispositivos embarcados ou certos produtos corporativos — o OpenVPN continua relevante.
Modelo de configuração
O modelo de configuração do WireGuard é intencionalmente mínimo. Cada peer tem uma identidade de chave pública e uma lista de IPs permitidos. Não há autenticação no nível do usuário, nem estado de sessão no servidor, nem negociação de keepalive. O protocolo se apoia em identidade criptográfica em vez de nomes de usuário e senhas.
O OpenVPN suporta um modelo de autenticação mais flexível. Autenticação baseada em certificados, autenticação por nome de usuário e senha, e autenticação de dois fatores estão todas disponíveis. Essa flexibilidade é útil em ambientes corporativos, onde a autenticação é integrada a serviços de diretório.
Para serviços de VPN voltados ao consumidor, em que os usuários não precisam ser identificados uns aos outros, o modelo mais simples do WireGuard costuma ser suficiente.
Quando usar cada um
A escolha entre os protocolos depende das restrições da implantação.
- O WireGuard é preferível quando desempenho, simplicidade do código e criptografia moderna são prioridades; quando as plataformas-alvo têm suporte nativo; e quando a implantação pode aceitar um conjunto fixo de cifras.
- O OpenVPN é preferível quando a compatibilidade com sistemas legados é necessária; quando a integração com autenticação corporativa é exigida; ou quando a implantação precisa atravessar redes que restringem o tráfego UDP (o OpenVPN suporta fallback para TCP; o WireGuard não).
Muitos serviços de VPN modernos voltados ao consumidor oferecem ambos os protocolos e deixam o usuário escolher. O Snap VPN, em contraste, usa exclusivamente WireGuard, integrado por meio do framework iOS Network Extension. A decisão reflete o princípio de design de reduzir a superfície de implementação ao que é necessário para a plataforma-alvo.
Para uma visão geral de como as VPNs funcionam em geral, veja nossa introdução às VPNs. Para a configuração prática no iPhone, consulte o guia de configuração no iOS.