WireGuard: VPN com ChaCha20 e Curve25519
Explore o design criptográfico minimalista do WireGuard, que utiliza ChaCha20-Poly1305, Curve25519 e BLAKE2.
WireGuard: VPN com ChaCha20 e Curve25519 é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.
Filosofia de design do WireGuard
O WireGuard foi projetado tendo a simplicidade radical como objetivo principal. Sua base de código tem aproximadamente 4.000 linhas, em comparação com 70.000 do OpenVPN e mais de 400.000 do IPsec strongSwan. Menos linhas significam menos vulnerabilidades potenciais e uma superfície de auditoria pequena o bastante para ser revisada completamente por um único profissional de engenharia. Essa simplicidade é uma escolha deliberada de segurança, não uma limitação de recursos.
Primitivas criptográficas fixas
Ao contrário de OpenVPN e IPsec, WireGuard não negocia algoritmos criptográficos. Cada conexão WireGuard usa o mesmo conjunto fixo de primitivas: Curve25519 para ECDH, ChaCha20-Poly1305 para criptografia autenticada, BLAKE2s para o cálculo de resumos criptográficos e SipHash-2-4 para a segurança de tabelas de dispersão. Isso elimina a negociação de cifras e remove toda uma classe de ataques de rebaixamento.
Aperto de mão do Noise Protocol Framework
WireGuard implementa o padrão de aperto de mão Noise_IKpsk2 do Noise Protocol Framework. Essa estrutura fornece uma maneira fundamentada de construir protocolos de troca de chaves com propriedades de segurança demonstráveis. O padrão IKpsk2 usa pares de chaves estáticos e efêmeros, com uma chave pré-compartilhada opcional para aumentar a resistência quântica, concluindo o aperto de mão em uma única ida e volta.
Curve25519 para troca de chaves
Curve25519 é uma curva elíptica projetada por Daniel Bernstein para oferecer alto desempenho e segurança. WireGuard a utiliza para o acordo de chaves Diffie-Hellman de curva elíptica (ECDH). Cada par possui um par de chaves Curve25519 estático para sua identidade de longo prazo, e o aperto de mão também usa pares de chaves efêmeros para fornecer sigilo de encaminhamento. As operações Curve25519 têm tempo constante, o que oferece resistência a ataques de temporização.
Criptografia de dados com ChaCha20-Poly1305
WireGuard criptografa todos os pacotes de dados com ChaCha20-Poly1305, um algoritmo de criptografia autenticada. ChaCha20 é uma cifra de fluxo extremamente rápida em dispositivos sem aceleração de hardware para AES, como telefones celulares e dispositivos incorporados. Poly1305 fornece a marca de autenticação. A construção AEAD combinada garante que qualquer adulteração do texto cifrado seja detectada antes da descriptografia.
BLAKE2s para resumos criptográficos
BLAKE2s é uma função de resumo criptográfico otimizada para plataformas de 32 bits e mensagens curtas. WireGuard a utiliza nas etapas de derivação de chaves do aperto de mão e para calcular o identificador da sessão. BLAKE2s é mais rápida que SHA-256 na maioria das plataformas, oferecendo segurança equivalente. Ela foi projetada como sucessora de BLAKE, finalista do SHA-3.
Pares de chaves estáticos e efêmeros
Os pares WireGuard têm um par de chaves estático que funciona como sua identidade de longo prazo. As chaves públicas são trocadas por um canal externo durante a configuração e funcionam como identificadores dos pares. Durante cada aperto de mão, ambos os pares também geram pares de chaves efêmeros. O ECDH entre as chaves estáticas e efêmeras, combinado com o ECDH entre os pares de chaves efêmeros, fornece autenticação e sigilo de encaminhamento.
Roteamento por chaves criptográficas
WireGuard implementa o roteamento por chaves criptográficas: cada par na configuração especifica os endereços IP (IPs permitidos) que podem ser alcançados por meio dele. Quando um pacote de saída corresponde aos IPs permitidos de um par, ele é criptografado para esse par. Os pacotes de entrada são descriptografados, e o IP de origem precisa corresponder aos IPs permitidos da chave usada; caso contrário, eles são descartados. As chaves definem a tabela de roteamento.
Gerenciamento de conexões baseado em temporizador
WireGuard não possui o conceito de conexão persistente. Se não houver tráfego, nenhum pacote será enviado, e a VPN efetivamente desaparecerá da rede. Os apertos de mão são acionados sob demanda quando há tráfego para enviar. Uma configuração PersistentKeepalive configurável envia pacotes vazios periódicos para manter os mapeamentos de NAT de dispositivos atrás de roteadores NAT.
WireGuard no kernel do Linux
WireGuard foi incorporado à linha principal do kernel Linux na versão 5.6, lançada em março de 2020. A execução no espaço do kernel oferece ao WireGuard acesso direto à pilha de rede e ao hardware criptográfico do kernel, resultando em uma taxa de transferência maior que a das implementações de VPN no espaço do usuário. Em outras plataformas, como Windows, macOS, iOS e Android, WireGuard é executado no espaço do usuário por meio de uma implementação multiplataforma.
Comparação de desempenho do WireGuard
As avaliações de desempenho mostram consistentemente que WireGuard supera OpenVPN em 3 a 4 vezes na taxa de transferência. IPsec com aceleração de hardware AES-NI é competitivo com WireGuard em sistemas com hardware AES. Em dispositivos ARM sem AES-NI, o ChaCha20 do WireGuard supera significativamente as alternativas baseadas em AES. O menor uso de CPU também proporciona maior duração da bateria em dispositivos móveis.
Primitivas criptográficas do WireGuard
Qual algoritmo WireGuard usa para criptografar pacotes de dados?
Recapitulação do WireGuard
Recapitulação do WireGuard: cerca de 4.000 linhas de código para uma superfície de ataque mínima, primitivas fixas (sem negociação), aperto de mão Noise IKpsk2 com Curve25519, ChaCha20-Poly1305 para os dados, BLAKE2s para resumos criptográficos, roteamento por chaves criptográficas que associa intervalos de IP a chaves públicas, chaves efêmeras que fornecem sigilo de encaminhamento, integração ao kernel para máximo desempenho e um modelo de conexão sem estado com apertos de mão sob demanda.
Perguntas Frequentes
A aula “WireGuard: VPN com ChaCha20 e Curve25519” é grátis?
Sim — o texto completo de “WireGuard: VPN com ChaCha20 e Curve25519” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.
O que vou aprender em “WireGuard: VPN com ChaCha20 e Curve25519”?
Explore o design criptográfico minimalista do WireGuard, que utiliza ChaCha20-Poly1305, Curve25519 e BLAKE2. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cryptology Academy?
Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “WireGuard: VPN com ChaCha20 e Curve25519”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cryptology Academy?
Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- IPsec: Protocolos IKEv2, ESP e AH
- WireGuard: VPN com ChaCha20 e Curve25519
- OpenVPN: Arquitetura de VPN Baseada em TLS
- Comparação de Protocolos VPN: Segurança e Desempenho