Descarregar
Técnico··11 min de leitura

WireGuard vs OpenVPN: protocolos comparados

Idioma: EnglishالعربيةDeutschEspañolفارسیFrançaisहिन्दीBahasa IndonesiaItaliano日本語한국어PolskiРусскийไทยTürkçeУкраїнськаTiếng Việt简体中文繁體中文

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.