Open Source · WireGuard®-kompatibel
Mach deinen VPN-Schlüssel unkopierbar.
Latchwire behält deinen privaten WireGuard-Schlüssel im YubiKey. Er wird auf der Karte erzeugt und verlässt sie nie. Protokoll und Server bleiben unverändert. Keine Karte, kein Tunnel.
Vorabversion: Kommandozeile für macOS und Linux
So funktioniert es
Schlüssel auf dem YubiKey erzeugen
Führe keygen mit einem YubiKey ab Firmware 5.7 aus. Der Schlüssel entsteht auf der Karte, in einem Retired-PIV-Slot (82–95); andere Slots bleiben unverändert. Eine Karte mit Werkseinstellungen bekommt zuerst eine neue PIN und PUK.
Öffentlichen Schlüssel zum Server hinzufügen
Dein Server sieht einen gewöhnlichen WireGuard-Peer und braucht weder Plugin noch Update. Latchwire ist für Standardserver wie OPNsense, pfSense, Linux und MikroTik gebaut. Bisher wurde es durchgehend nur gegen einen Testserver in einem Linux-Container getestet.
PIN eingeben und verbinden
Die PIN geht an die Karte und wird nicht gespeichert. Normalerweise gibst du sie einmal ein; nach dem Ruhezustand oder wenn ein anderes Programm die Karte zurücksetzt, wird sie erneut abgefragt. Ziehst du die Karte ab, geht der Tunnel zu. Ziel sind zwei Sekunden; ein Test mit einer simulierten Karte dauerte etwa eine.
Klassisches WireGuard und Latchwire
| Frage | Klassisches WireGuard | Latchwire |
|---|---|---|
| Wo liegt der private Schlüssel? | In einer Datei auf deinem Computer | Im YubiKey |
| Kann er kopiert werden? | Ja, ohne Spuren | Nein. Der Schlüssel lässt sich nicht von der Karte holen |
| Laptop ohne Karte gestohlen? | Schlüssel auf jedem Server ersetzen | Nichts auf der Festplatte kann einen Handshake abschließen |
| Schadsoftware auf dem Computer? | Sie kann den Schlüssel stehlen und später nutzen | Sie kann den Tunnel nutzen, solange die Karte steckt, aber den Schlüssel nicht mitnehmen |
| Backup | Eine Kopie der Datei | Ein zweiter YubiKey, als zweiter Peer auf dem Server eingetragen |
| Serverseite | Standard-WireGuard | Dasselbe: Standard-WireGuard |
| Reife | Etabliert, mit offiziellen Clients | Vorabversion |
Hardware
Im Code existiert heute nur die erste Karte unten. Die Etiketten sagen, was jeweils gilt.
YubiKey 5
v1PIV mit X25519, ab Firmware 5.7. Der Schlüssel wird auf der Karte erzeugt und verlässt sie nie. Bisherige Tests nutzen simulierte Karten; Prüfungen mit echten Karten stehen noch aus.
OpenPGP-Karten
BaldDirekt nach v1 geplant. Nicht implementiert.
PKCS#11 und HSMs
BaldDirekt nach v1 geplant, für Geräte mit X25519. Nicht implementiert.
TPM, Secure Enclave, FIDO2
RoadmapSchwächere Klasse, nicht in v1. Der Schlüssel wäre durch Hardware verschlüsselt, läge beim Gebrauch aber offen im Speicher. Diese Geräte tragen darum nie die Aussage, der Schlüssel sei nicht kopierbar.
Sicherheit
Die Aussage betrifft das Entwenden des Schlüssels, nicht seine Nutzung. Das deckt sie ab und das nicht.
Schützt vor
- Kopieren des Schlüssels von Festplatte oder Backups: Dort wird nie ein privater Schlüssel gespeichert
- Einem gestohlenen oder geklonten Laptop ohne die Karte
- Konfigurationsdateien mit privatem Schlüssel: Latchwire lehnt sie ab
- Schlüsseln, die nicht auf der Karte erzeugt wurden: Latchwire verweigert sie
- Verkehr außerhalb des Tunnels bei aktivem Kill Switch, in den Grenzen des Bedrohungsmodells
Schützt nicht vor
- Schadsoftware unter deinem Konto, während die Karte steckt und die PIN eingegeben ist: Sie kann Karte und Tunnel nutzen. Es ist keine Berührung nötig
- Anderen Programmen, die nach der PIN-Eingabe die Karte erreichen; auf manchen Systemen gehören andere lokale Benutzer dazu
- Einem kompromittierten Root-Konto oder Kernel
- Einem Laptop, der zusammen mit Karte und PIN gestohlen wird
- Auslesen des Prozessspeichers: Dort liegen Sitzungsschlüssel und ein zwischengespeichertes Geheimnis, die auch im Swap landen können. Sie sind nicht der private Schlüssel und können ohne Karte keinen Handshake abschließen
- Gefälschten Tokens: Latchwire vertraut den Angaben der Karte und prüft noch keine Attestierung
Gut zu wissen
- Die PIN wird nie gespeichert, läuft beim Tippen aber durch den Speicher.
- Die Standard-PIN wird nie ausprobiert.
- Ein Preshared Key liegt, falls genutzt, auf der Festplatte und ist nicht durch Hardware geschützt.
- Das Bedrohungsmodell nennt den Code hinter jedem Schutz. Widersprechen sich beide, hat der Code recht und das Dokument einen Fehler.
Projektstatus
Latchwire ist Vorabsoftware. Das existiert heute, und das wurde geprüft.
- Getestet
Linux: Kommandozeile und Netzwerk
Durchgehend getestet in einem privilegierten Container, mit Softwareschlüssel und Testserver.
- Ungeprüft
macOS: Kommandozeile und Netzwerk
Implementiert. Die manuellen Prüfungen stehen noch aus.
- Ungeprüft
Verhalten mit echtem YubiKey
Automatische Tests nutzen simulierte Karten. Prüfungen mit echten Karten stehen noch aus.
- Nicht fertig
Windows
Nicht implementiert. Der Windows-Build kompiliert noch nicht.
- Nicht fertig
Desktop-App
In Entwicklung. Heute gibt es nur die Kommandozeile.
- Noch keine
Signierte Releases und Pakete
Es gibt keine Releases. Du baust aus dem Quellcode.
- Noch keine
Unabhängige Sicherheitsprüfung
Es gab noch keine unabhängige Prüfung.
Installation
Aus dem Quellcode bauen. Es gibt noch keine Pakete oder signierten Binärdateien, und dieses Setup ist zum Testen gedacht.
Du brauchst Go 1.25 oder neuer und einen YubiKey 5 ab Firmware 5.7. Unter Linux brauchst du zum Bauen außerdem einen C-Compiler und libpcsclite-dev sowie ein laufendes pcscd.
Bauen
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
Daemon und Agent starten, jeweils im eigenen Terminal
sudo latchwire daemon
latchwire agent
Schlüssel erzeugen und verbinden
latchwire devices
latchwire keygen --serial <serial> --address <tunnel-ip>
sudo latchwire add office office.conf
latchwire up office
keygen gibt einen [Peer]-Block für deinen Server aus. Deine Tunneldatei ist eine normale WireGuard-Datei mit KeyRef und PublicKey anstelle von PrivateKey.
Homebrew-, .deb-, .rpm- und Microsoft-Store-Pakete sind geplant. Keines davon existiert bisher.
Roadmap
KernImplementiert
Kommandozeilen-Client für macOS und Linux
Volle NetzwerkfunktionenImplementiert
Full Tunnel, DNS, Kill Switch, On-Demand und erlaubte Benutzer. Unter Linux getestet; macOS noch zu prüfen
Prüfungen auf echter HardwareOffen
Echte YubiKeys und macOS-Netzwerk, anhand der öffentlichen Checkliste
WindowsIn Arbeit
Dienst, Netzwerkschicht und Kill Switch
Desktop-App und ÜbersetzungenIn Arbeit
Desktop-App für macOS, Windows und Linux
Signierte ReleasesGeplant
Homebrew, Direktdownload, .deb, .rpm, Microsoft Store