NyxVault

Selbst gehostetes Teilen von Dateien mit Ende-zu-Ende-Verschlüsselung. Du verschlüsselst im Browser, teilst einen Link, und der Server sieht deine Daten nie. Nicht den Inhalt, nicht den Dateinamen, nicht den Dateityp. Wir nutzen es jeden Tag, um Dateien an Menschen außerhalb unseres Teams zu geben.

  • Zero Knowledge: Der Server speichert nur Chiffretext
  • Argon2id + XSalsa20-Poly1305, verschlüsselt wird im Browser oder per CLI
  • Passkeys (Face ID, Touch ID, Sicherheitsschlüssel) statt Passphrasen
  • Selbstzerstörung nach dem Lesen und Links, die nach 1 Stunde bis 30 Tagen ablaufen

So funktioniert das Teilen

  • Admin-Seite öffnen, Datei hineinziehen, Ablaufzeit wählen und optional Burn after reading anhaken
  • Passphrase eingeben und Encrypt & Upload klicken
  • Link und Passphrase teilen, am besten über zwei verschiedene Wege
  • Der Empfänger gibt die Passphrase ein und die Datei wird in seinem Browser entschlüsselt, mit Vorschau für Bilder, Video, Audio, PDF und Text
Startseite von NyxVault auf nyxvault.org

Was der Server sieht und was nicht

NyxVault hält das Vertrauen, das du dem Server schenken musst, klein. Dem Code, der in deinem Browser läuft, vertraust du trotzdem. Genau deshalb kannst du ihn selbst hosten und jede Zeile lesen.

Der Server siehtDer Server sieht nicht
Den ChiffretextDen Klartext
Die DateigrößeDen Dateinamen
Den Zeitpunkt des UploadsDen Dateityp
Die Ablaufzeit, falls gesetztDeine Passphrase

Passkeys statt Passphrasen

Registriere einmal einen Passkey, und jeder Upload wird für deine Passkeys verschlüsselt, ohne Passphrase, die du dir merken oder die verloren gehen kann. Das ist klassische Umschlag-Verschlüsselung: Jede Datei bekommt einen zufälligen Schlüssel, versiegelt für einen öffentlichen Tresor-Schlüssel. Der passende private Schlüssel existiert nur eingepackt von jedem deiner Passkeys, über die WebAuthn-PRF-Erweiterung.

Beim Hochladen fragt NyxVault nie nach dem Passkey, weil das Versiegeln für einen öffentlichen Schlüssel keine Bestätigung braucht. Das klappt auch per CLI und API. Jeder registrierte Passkey öffnet jede Passkey-Datei. Eine normale Passphrase kannst du pro Upload trotzdem wählen.

Sicherheit im Detail

  • Integritätsgeschützte Blöcke: Jeder Block trägt seine Position und eine Endmarke, der Kopf ist mit HMAC-SHA256 abgesichert. Umsortieren, Abschneiden oder Manipulieren fällt sofort auf
  • Burn after reading löscht erst nach erfolgreicher Entschlüsselung, eine falsche Passphrase kann also nie eine Datei zerstören. Vor dem Löschen wird der Inhalt mit Zufallsbytes überschrieben
  • VirusTotal nur auf Wunsch: Der SHA-256-Hash wird lokal berechnet und nur gesendet, wenn du auf Scan klickst. Die Datei selbst wird nie hochgeladen
  • Strenge Content Security Policy, keine Inline-Skripte, PDF-Vorschau in einer abgeschotteten Umgebung, Ratenbegrenzung bei Login, Upload und Download
  • Optionale Zwei-Faktor-Anmeldung per TOTP, das Geheimnis liegt verschlüsselt

Loslegen

Du brauchst Node.js 18 oder neuer. Stell einen Reverse Proxy mit TLS davor, zum Beispiel Caddy. Passkeys brauchen einen festen Hostnamen, deshalb zeigt die README, wie du www auf die Hauptdomain umleitest. Für Uploads und Entschlüsselung gibt es eine CLI und eine vollständige HTTP-API.

git clone https://github.com/Open-Cosmic-Software/nyxvault.git
cd nyxvault && npm install
cp .env.example .env   # API_KEY, WEB_PASSWORD, WebAuthn-Host setzen
node server.js         # http://127.0.0.1:3870

Ehrliche Grenzen

  • Eine verlorene Passphrase lässt sich nicht wiederherstellen, mit Absicht. Wähl eine starke
  • Löschst du deinen letzten Passkey, sind alle Passkey-Dateien für immer unlesbar. Die Oberfläche warnt deutlich davor
  • Der optionale Wiederherstellungsschlüssel für Agents erlaubt jedem mit Zugriff auf diese Schlüsseldatei, Passkey-Dateien zu entschlüsseln. Er ist freiwillig und widerrufbar, Passphrase-Dateien sind nie betroffen
  • Manche Apple-Geräte liefern je nach Nutzung einen anderen Passkey-Wert. Dafür bietet NyxVault eine einmalige Geräte-Kalibrierung an