Latchwire
Português (Brasil)

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

  1. 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.

  2. 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.

  3. 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

PerguntaWireGuard clássicoLatchwire
Onde fica a chave privada?Em um arquivo no seu computadorDentro da YubiKey
Pode ser copiada?Sim, sem deixar rastrosNão. A chave não pode ser retirada do cartão
Notebook roubado sem o cartão?É preciso trocar a chave em cada servidorNada no disco consegue concluir um handshake
Malware no seu computador?Pode roubar a chave e usá-la depoisPode usar o túnel enquanto o cartão estiver conectado, mas não pode levar a chave
BackupUma cópia do arquivoUma segunda YubiKey, adicionada ao servidor como segundo peer
Lado do servidorWireGuard padrãoO mesmo: WireGuard padrão
MaturidadeConsolidado, com clientes oficiaisPré-lançamento

Hardware

Hoje, só o primeiro cartão abaixo existe no código. Os rótulos dizem o que cada um é.

YubiKey 5

v1

PIV 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 breve

Previstos logo após a v1. Não implementados.

PKCS#11 e HSMs

Em breve

Previstos logo após a v1, para dispositivos com X25519. Não implementados.

TPM, Secure Enclave, FIDO2

Roteiro

Classe 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.

  • 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.

    Testado
  • 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 verificado
  • 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.

    Não pronto
  • 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.

    Ainda não

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

  1. NúcleoImplementado

    Cliente de linha de comando para macOS e Linux

  2. 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

  3. Verificações em hardware realEm aberto

    YubiKeys reais e rede no macOS, com a lista pública

  4. WindowsEm andamento

    Serviço, camada de rede e kill switch

  5. Aplicativo de desktop e traduçõesEm andamento

    Aplicativo de desktop para macOS, Windows e Linux

  6. Versões assinadasPrevisto

    Homebrew, download direto, .deb, .rpm, Microsoft Store