Código aberto · Compatível com WireGuard®
Torne sua chave de VPN impossível de copiar.
O Latchwire mantém sua chave privada do WireGuard dentro de uma YubiKey. A chave é gerada no cartão e nunca sai dele. O protocolo e o seu servidor continuam iguais. Sem cartão, sem túnel.
Pré-lançamento: linha de comando para macOS e Linux
Como funciona
Gere a chave na sua YubiKey
Execute keygen com uma YubiKey com firmware 5.7 ou superior. A chave é criada no cartão, em um slot PIV retired (82–95), e os outros slots ficam como estão. Um cartão com configurações de fábrica recebe antes um novo PIN e PUK.
Adicione a chave pública ao seu servidor
Seu servidor vê um peer WireGuard comum, então não precisa de plugin nem atualização. O Latchwire foi feito para servidores padrão como OPNsense, pfSense, Linux e MikroTik. Até agora, foi testado de ponta a ponta apenas com um servidor de testes em um contêiner Linux.
Digite seu PIN e conecte
O PIN vai para o cartão e não é armazenado. Normalmente você o digita uma vez; ele é pedido de novo após a suspensão ou quando outro programa reinicia o cartão. Retire o cartão e o túnel cai. A meta é dois segundos; um teste com cartão simulado levou cerca de um.
WireGuard clássico e Latchwire
| Pergunta | WireGuard clássico | Latchwire |
|---|---|---|
| Onde fica a chave privada? | Em um arquivo no seu computador | Dentro da YubiKey |
| Pode ser copiada? | Sim, sem deixar rastros | Não. A chave não pode ser retirada do cartão |
| Notebook roubado sem o cartão? | É preciso trocar a chave em cada servidor | Nada no disco consegue concluir um handshake |
| Malware no seu computador? | Pode roubar a chave e usá-la depois | Pode usar o túnel enquanto o cartão estiver conectado, mas não pode levar a chave |
| Backup | Uma cópia do arquivo | Uma segunda YubiKey, adicionada ao servidor como segundo peer |
| Lado do servidor | WireGuard padrão | O mesmo: WireGuard padrão |
| Maturidade | Consolidado, com clientes oficiais | Pré-lançamento |
Hardware
Hoje, só o primeiro cartão abaixo existe no código. Os rótulos dizem o que cada um é.
YubiKey 5
v1PIV com X25519, firmware 5.7 ou superior. A chave é gerada no cartão e nunca sai dele. Os testes até agora usam cartões simulados; as verificações com cartões reais ainda estão em aberto.
Cartões OpenPGP
Em brevePrevistos logo após a v1. Não implementados.
PKCS#11 e HSMs
Em brevePrevistos logo após a v1, para dispositivos com X25519. Não implementados.
TPM, Secure Enclave, FIDO2
RoteiroClasse mais fraca, fora da v1. A chave seria criptografada por hardware, mas exposta na memória durante o uso; por isso, estes nunca terão a afirmação de que a chave não pode ser copiada.
Segurança
A afirmação trata de levar a chave, não de usá-la. Veja o que isso cobre e o que não cobre.
Protege contra
- Copiar a chave do disco ou de backups: nenhuma chave privada é gravada ali
- Um notebook roubado ou clonado sem o cartão
- Arquivos de configuração com chave privada: o Latchwire os rejeita
- Chaves que não foram geradas no cartão: o Latchwire as recusa
- Tráfego saindo fora do túnel com o kill switch ativo, dentro dos limites do modelo de ameaças
Não protege contra
- Malware rodando como você enquanto o cartão está conectado e o PIN digitado: ele pode usar o cartão e o túnel. Nenhum toque é necessário
- Outros programas que alcançam o cartão depois que o PIN é digitado; em alguns sistemas, isso inclui outros usuários locais
- Uma conta root ou um kernel comprometidos
- Um notebook roubado junto com o cartão e o PIN
- Leitura da memória do processo: chaves de sessão e um segredo em cache ficam ali e podem ir para o swap. Eles não são a chave privada e não concluem um handshake sem o cartão
- Tokens falsificados: o Latchwire confia no que o cartão informa e ainda não verifica attestation
Bom saber
- O PIN nunca é armazenado, mas passa pela memória enquanto você digita.
- O PIN padrão nunca é testado.
- Uma chave pré-compartilhada, se usada, fica no disco e não é protegida por hardware.
- O modelo de ameaças indica o código por trás de cada proteção. Se os dois divergirem, o código está certo e o documento tem um erro.
Status do projeto
O Latchwire é software de pré-lançamento. Veja o que existe hoje e o que foi verificado.
- Testado
Linha de comando e rede no Linux
Testado de ponta a ponta em um contêiner privilegiado, com chave de software e servidor de testes.
- Não verificado
Linha de comando e rede no macOS
Implementado. As verificações manuais ainda estão em aberto.
- Não verificado
Comportamento com YubiKey real
Os testes automáticos usam cartões simulados. As verificações com cartões reais ainda estão em aberto.
- Não pronto
Windows
Não implementado. A compilação para Windows ainda não funciona.
- Não pronto
Aplicativo de desktop
Em desenvolvimento. Hoje existe apenas a linha de comando.
- Ainda não
Versões assinadas e pacotes
Não há versões publicadas. Você compila a partir do código-fonte.
- Ainda não
Revisão de segurança independente
Não houve nenhuma revisão independente.
Instalação
Compile a partir do código-fonte. Ainda não há pacotes nem binários assinados, e esta configuração é para testes.
Você precisa do Go 1.25 ou superior e de uma YubiKey 5 com firmware 5.7 ou superior. No Linux, também precisa de um compilador C e de libpcsclite-dev para compilar, e do pcscd em execução.
Compilar
git clone https://github.com/Kodviva/latchwire
cd latchwire
go build -o latchwire ./cmd/latchwire
sudo install -o root -m 0755 latchwire /usr/local/bin/latchwire
Inicie o daemon e o agente, cada um em seu terminal
sudo latchwire daemon
latchwire agent
Crie uma chave e conecte
latchwire devices
latchwire keygen --serial <serial> --address <tunnel-ip>
sudo latchwire add office office.conf
latchwire up office
O keygen imprime um bloco [Peer] para o seu servidor. Seu arquivo de túnel é um arquivo WireGuard normal com KeyRef e PublicKey no lugar de PrivateKey.
Pacotes Homebrew, .deb, .rpm e Microsoft Store estão previstos. Nenhum deles existe ainda.
Roteiro
NúcleoImplementado
Cliente de linha de comando para macOS e Linux
Recursos de rede completosImplementado
Túnel completo, DNS, kill switch, conexão sob demanda e usuários permitidos. Testado no Linux; falta verificar o macOS
Verificações em hardware realEm aberto
YubiKeys reais e rede no macOS, com a lista pública
WindowsEm andamento
Serviço, camada de rede e kill switch
Aplicativo de desktop e traduçõesEm andamento
Aplicativo de desktop para macOS, Windows e Linux
Versões assinadasPrevisto
Homebrew, download direto, .deb, .rpm, Microsoft Store