Uma premissa diferente

Todo outro túnel da família de VPNs deste site cresceu por acumulação. O acumulou modos, intercâmbios e opções ao longo de duas décadas porque um processo de normas precisa acomodar todos que aparecem. O acumulou superfície de configuração porque portabilidade para toda plataforma exige isso. Os dois são grandes, os dois são flexíveis, e os dois são difíceis de configurar corretamente - o que é uma propriedade de segurança, e não mero incômodo.

A premissa de Jason Donenfeld foi a oposta: construir algo pequeno o bastante para uma pessoa ler inteiro numa tarde, e tirar as escolhas. O tem cerca de quatro mil linhas de código. As comparações com as alternativas aparecem em números muito diferentes - setenta mil, quatrocentas mil, seiscentas mil - conforme a contagem inclua ou não bibliotecas criptográficas e conforme a implementação considerada, então a afirmação honesta é a ordem de grandeza e não um número: é uma a duas ordens menor do que aquilo que substitui, e essa distância é o argumento de projeto inteiro.

Foi publicado pela primeira vez em 2015 e incorporado ao núcleo do Linux na versão 5.6, em março de 2020. O endosso que viajou mais longe veio de na lista do núcleo, em 2018, e vale citar exatamente pelo que ele não afirma: talvez o código não seja perfeito, mas eu o li por alto e, comparado aos horrores que são o OpenVPN e o IPsec, é uma obra de arte. Não que seja impecável - que seja legível.

Sem negociação, que é o ponto inteiro

O WireGuard tem uma suíte de cifras e nenhum jeito de mudá-la: ChaCha20 para cifragem, autenticado com Poly1305, Curve25519 para acordo de chaves, BLAKE2s para resumo criptográfico. Não há aperto de mão em que as duas pontas discutam o que suportam. Não há opção de configuração para uma escolha mais fraca.

Quem leu os ataques nomeados ao TLS reconhece o que isso remove. , , e eram, no fundo, ataques de rebaixamento - um adversário no meio conduzindo duas pontas capazes a uma opção mais fraca que uma delas ainda suportava por compatibilidade. O TLS levou doze anos e quatorze ataques nomeados para chegar à conclusão de que as opções negociáveis eram o problema, e o TLS 1.3 é em boa medida a lista do que foi removido. O WireGuard partiu dessa conclusão. O raciocínio declarado de Donenfeld é a versão prática dela: dê aos administradores uma escolha de combinações de cifras e uma parcela significativa dos sistemas implantados ficará mal configurada.

O custo é real e deve ser dito. Quando uma dessas primitivas enfraquecer, não haverá mudança de configuração - a versão do protocolo avança e todos atualizam. É uma troca deliberada de flexibilidade pela eliminação de uma classe de ataque, e engenheiros razoáveis não gostam dela.

Roteamento por chave

A segunda ideia é uma simplificação do que um túnel é. No WireGuard não há sessões a estabelecer, nem fases, nem túnel a levantar. Cada par tem uma chave pública, e a configuração diz quais endereços de origem aquela chave pode usar. Um pacote que chega é decifrado com a chave que casa, e então checado: essa chave é dona desse endereço de origem? Se não, o pacote é descartado.

Essa única tabela substitui autenticação, autorização e roteamento de uma vez, e explica os comportamentos do WireGuard que surpreendem quem vem do IPsec. Não há estado de túnel para monitorar, porque um par que não está enviando simplesmente não produz nada. Roda sobre UDP e não responde a pacotes não autenticados, então um scanner vê uma porta fechada. O roaming funciona sem extensão de mobilidade porque o endereço de um par é simplesmente atualizado quando um pacote corretamente autenticado chega de outro lugar.

O que ele não consegue fazer

Esta é a parte de que um profissional precisa, e que a maior parte da cobertura omite.

Não há identidade de usuário. O WireGuard autentica chaves, não pessoas. Não há integração com diretório, nem solicitação de segundo fator, nem , nem política por usuário, nem jeito de dizer que um usuário de um grupo pode alcançar uma sub-rede. Tudo dessa categoria tem de ser construído por cima.

Não há atribuição de endereços. Os endereços são escritos na configuração dos dois lados. Não existe equivalente ao lote que um concentrador de acesso remoto distribui, então integrar mil notebooks significa gerar e distribuir mil configurações.

Não há revogação além de editar a configuração. Remover um par significa remover sua chave do arquivo do servidor e recarregar. Em escala isso é um problema de automação, não um recurso do protocolo.

E o endereço da ponta é retido. Para um túnel corporativo isso é banal; para os produtos de privacidade de consumo que adotaram o protocolo gerou um debate real, e as implementações que se importam com isso acrescentaram rotação de endereços por conta própria.

Essas quatro lacunas são exatamente a razão de existirem os produtos construídos sobre WireGuard. Tailscale, Netbird, Firezone e outros fornecem justamente o que o protocolo recusa: identidade, política, distribuição de chaves e revogação, com o WireGuard como plano de dados por baixo. Essa estratificação é o jeito honesto de descrever o mercado atual - o túnel é uma mercadoria resolvida, e o produto é o plano de controle em volta dele.

Onde ele entra no argumento que este site não para de fazer

O artigo sobre a SSL-VPN argumenta que uma superfície pré-autenticação menor é uma aposta melhor que uma maior, e toma o cuidado de dizer que é aposta e não promessa. O WireGuard é a versão mais extrema disponível dessa aposta: sem interpretador HTTP, sem portal web, sem negociação, sem resposta a tráfego não autenticado, e uma base de código que um único revisor consegue segurar na cabeça.

Mas ele não é exceção ao argumento sobre código perfeito, e ninguém envolvido afirma que seja. Quatro mil linhas são quatro mil linhas em que um defeito pode morar, código de núcleo roda com o maior privilégio que existe, e as implementações para outras plataformas são bases de código separadas com histórias próprias. O que uma implementação pequena, inconfigurável e amplamente lida compra é uma proporção melhor - menos lugares para um defeito, mais olhos por linha, e nenhum erro de configuração disponível ao administrador. Não compra imunidade, e o relógio que começa a correr quando algo é achado corre exatamente igual.

Para um profissional as conclusões práticas são estreitas e úteis. É excelente escolha para enlaces ponto a ponto, para redes de nuvem e de contêineres, e para um laboratório ou uma equipe pequena. É o plano de dados certo para acesso remoto corporativo e a resposta completa errada, porque tudo sobre quem é o usuário e o que ele pode alcançar precisa vir da camada de cima. E sua decisão de projeto - remover as opções em vez de documentá-las - é a mesma conclusão a que o TLS chegou pelo caminho difícil, alcançada pela direção oposta.

Fontes