Dateien per Code-Wort sicher senden: magic-wormhole & croc (ohne Server/Account)
Dateien per kurzem Code-Wort Ende-zu-Ende-verschluesselt direkt senden — kein Cloud-Upload, kein Port-Forwarding, kein Account. magic-wormhole und croc im Profi-Vergleich.
Du willst eine Datei von A nach B schieben, ohne sie vorher in irgendeine Cloud zu laden, ohne SSH-Keys auszutauschen und ohne einen Port aufzubohren? magic-wormhole und croc machen genau das: Beide bauen anhand eines kurzen, vorgelesenen Code-Worts eine Ende-zu-Ende-verschluesselte Direktverbindung auf. Der Trick heisst PAKE (Password-Authenticated Key Exchange): Aus einem schwachen, leicht diktierbaren Code wird ein starker Sitzungsschluessel abgeleitet — der Relay-Server sieht nur Chiffrat. Dieses Tutorial richtet sich an Profis, die ad-hoc-Transfers zwischen Maschinen, Standorten oder Kollegen brauchen.
So funktioniert das Code-Wort-Prinzip (PAKE)
- magic-wormhole nutzt SPAKE2 fuer den Schluesseltausch und verschluesselt die Daten anschliessend mit
nacl/libsodium secretbox. Codes sehen aus wie7-crossover-clockwork(eine Zahl plus phonetisch eindeutige Woerter, tab-vervollstaendigbar). - croc nutzt eine PAKE-Implementierung (
pake/v3) und verschluesselt mit AES-256-GCM (authentifiziert: falsche Codes scheitern hart an der Entschluesselung). Das Code-Phrase beginnt mit einer 4-stelligen PIN (waehlt den Relay-„Raum"), der Rest ist das gemeinsame Geheimnis. - Gemeinsam: Ein Mittelsmann muesste waehrend des Handshakes einen MITM fahren und den Code erraten. Die Sicherheit haengt an der Entropie des Codes — kurze Codes sind ok, weil nur ein einziger Online-Rateversuch moeglich ist.
Installation
magic-wormhole (Python):
pipx install magic-wormhole # empfohlen, isoliert
# oder: pip install magic-wormhole
croc (statisches Go-Binary, keine Runtime noetig):
brew install croc # macOS / Linuxbrew
winget install schollz.croc # Windows
scoop install croc # Windows (Scoop)
sudo pacman -S croc # Arch
curl https://getcroc.schollz.com | bash # universell
Profi-Hinweis: Pruefe curl … | bash-Installer vor der Ausfuehrung. Lade das Skript erst herunter, lies es, oder ziehe das fertige Binary aus den GitHub-Releases und verifiziere die Pruefsumme — gerade in CI/Servern.
Senden & Empfangen mit magic-wormhole
- Auf der Quelle senden:
Es erscheint ein Code wiewormhole send ./backup.tar.zst7-crossover-clockwork. - Diesen Code dem Gegenueber durchsagen/chatten. Auf dem Zielrechner:
Beim Tippen reicht der Anfang plus Tab zur Vervollstaendigung.wormhole receive 7-crossover-clockwork - Kurztext statt Datei (z. B. ein Token):
wormhole send --text "kurzer geheimer string" - Laengere/staerkere Codes erzwingen:
wormhole send --code-length 4 ./datei
- Verbindung: zuerst direkt P2P (LAN oder oeffentliche IP), sonst Fallback ueber den Transit Relay — der nur Chiffrat durchreicht. Der Mailbox/Rendezvous-Server vermittelt nur den PAKE-Handshake, sieht keine Dateien.
Senden & Empfangen mit croc
- Senden (Code wird generiert und angezeigt):
croc send report.pdf bilder/ logs.tar.gz - Empfangen — der Code ist das einzige Argument:
croc 1234-eigenes-code-wort - Eigenen Code setzen (mind. 6 Zeichen):
croc send --code geheim-projekt-x ./build/ - Text senden oder aus einer Pipe streamen:
croc send --text "API-Key: ..." pg_dump mydb | croc send
Warnung zur Code-Sichtbarkeit: Ein per --code uebergebenes Geheimnis landet in der Prozessliste (z. B. ps) und in der Shell-History. Auf Mehrbenutzer-Hosts stattdessen die Umgebungsvariable nutzen: CROC_SECRET='geheim-projekt-x' croc zum Empfangen.
Eigenen Relay self-hosten (volle Datenhoheit)
Wer keinem oeffentlichen Relay vertrauen will (oder hinter strikten Firewalls arbeitet), betreibt einen eigenen — bei croc trivial, weil ein einzelnes Binary:
croc relay --ports 9009,9010,9011,9012,9013
- Standard sind TCP
9009-9013; mindestens 2 Ports sind noetig (Port 1 = Steuerkanal, die uebrigen fuer den gemultiplexten Datenstrom). Genau diese Ports in der Firewall freigeben. - Clients dann gegen den eigenen Relay fahren:
croc --relay "relay.example.com:9009" send datei.zip - Selbst ein boesartiger Relay kann den Sitzungsschluessel nicht lernen — er sieht nur AES-GCM-Chiffrat. Self-Hosting verhindert v. a. Metadaten-Abfluss und macht dich unabhaengig von Drittinfrastruktur.
Faustregel fuer den Profi-Einsatz: croc fuer schnelle, plattformuebergreifende Ad-hoc-Transfers (ein Binary, resumefaehig, leicht self-hostbar); magic-wormhole, wenn du das aeltere, breit auditierte SPAKE2/libsodium-Design und sauberes P2P mit Relay-Fallback bevorzugst. In beiden Faellen gilt: Code-Worte sind Einmalgeheimnisse — niemals wiederverwenden und nur ueber einen separaten Kanal (Anruf/Messenger) diktieren.