SendIt: Sichere Dateifreigabe mit Zero-Knowledge-Verschlüsselung
Wie ich eine Ende-zu-Ende verschlüsselte File-Sharing-Plattform mit AES-256, WebRTC P2P-Transfer und WebAuthn gebaut habe — der Server sieht nie deine Daten.
Das Problem: Dateien teilen ohne Vertrauen
Jeder kennt die Situation: Eine vertrauliche Datei muss geteilt werden — ein Vertrag, Zugangsdaten, sensible Dokumente. Die üblichen Verdächtigen? WeTransfer, Google Drive, Dropbox. Sie alle haben eines gemeinsam: Der Anbieter kann deine Dateien sehen.
Selbst bei "verschlüsselter Übertragung" liegen die Daten unverschlüsselt auf den Servern des Anbieters. Das ist kein Bug, das ist das Geschäftsmodell — denn wer die Daten hat, kann sie scannen, analysieren und monetarisieren.
Für Unternehmen mit Compliance-Anforderungen, Anwälte, Ärzte oder schlicht Menschen, die Privatsphäre ernst nehmen, ist das keine Option.
Zero-Knowledge: Der Server weiß nichts
Die Lösung heißt Zero-Knowledge-Architektur. Das Prinzip ist radikal einfach: Der Server speichert nur verschlüsselte Daten und hat keinen Zugriff auf die Schlüssel. Selbst wenn jemand den Server kompromittiert, sind die Dateien wertlos — nur unlesbarer Zeichensalat.
Bei SendIt habe ich genau das umgesetzt. Jede Datei wird im Browser verschlüsselt, bevor sie den Rechner verlässt. Der Server sieht niemals Klartext.
Wie die Verschlüsselung funktioniert
AES-256-GCM im Browser
SendIt nutzt die Web Crypto API — kryptographische Funktionen, die direkt im Browser verfügbar sind. Kein externes JavaScript, keine fragwürdigen npm-Pakete. Nur native, vom Browser bereitgestellte Kryptographie.
Der Ablauf für jeden Upload:
- Schlüsselgenerierung: Ein zufälliger 256-Bit AES-Schlüssel wird im Browser erzeugt
- Verschlüsselung: Die Datei wird mit AES-256-GCM verschlüsselt — Block für Block
- Upload: Nur die verschlüsselten Daten werden an den Server gesendet
- Link-Generierung: Der Schlüssel wird im URL-Fragment (
#) eingebettet
Der Clou beim URL-Fragment: Alles nach dem # wird nie an den Server gesendet. Das ist kein Trick, das ist die HTTP-Spezifikation. Der Browser behält das Fragment lokal. So gelangt der Schlüssel zum Empfänger, ohne dass der Server ihn jemals sieht.
Chunked Uploads mit tus
Große Dateien — bis zu 100 GB — werden über das tus-Protokoll hochgeladen. tus ist ein offener Standard für unterbrechbare Uploads:
- Resumable: Upload abgebrochen? Weiter wo du aufgehört hast
- Chunked: Dateien werden in handliche Stücke aufgeteilt
- Zuverlässig: Jeder Chunk wird einzeln bestätigt
Die Verschlüsselung läuft dabei in einer Pipeline: Chunk lesen → verschlüsseln → hochladen. Das hält den Speicherverbrauch konstant, egal wie groß die Datei ist.
Features die den Unterschied machen
Quick Share
Nicht jeder File-Transfer braucht einen Account. Quick Share generiert einen 6-stelligen Code, den man einfach durchgeben kann — per Telefon, Chat oder mündlich. Der Empfänger gibt den Code ein, die Datei wird heruntergeladen und entschlüsselt. Kein Login, kein Account, keine Hürden.
Die Codes haben eine konfigurierbare Ablaufzeit — von 5 Minuten bis 7 Tage. Nach Ablauf wird die Datei automatisch gelöscht.
P2P-Transfer via WebRTC
Für Transfers im gleichen Netzwerk gibt es den P2P-Modus. Hier werden Dateien direkt zwischen zwei Browsern übertragen — ohne Umweg über den Server. Das nutzt WebRTC Data Channels und ist:
- Schneller als der Umweg über einen Server
- Privater — die Daten verlassen nie das lokale Netzwerk
- Kostenlos — kein Server-Traffic, kein Speicherverbrauch
Authentifizierung
SendIt unterstützt mehrere Login-Methoden:
- Klassisch: E-Mail + Passwort
- Magic Links: Login per E-Mail-Link, kein Passwort nötig
- QR-Code: Einloggen durch Scannen mit dem Handy
- WebAuthn/FIDO2: Biometrische Anmeldung per Fingerabdruck oder Face ID
Besonders WebAuthn ist relevant: Es ist der sicherste Login-Mechanismus, weil kein Passwort übertragen oder gespeichert wird.
Der Tech Stack
| Komponente | Technologie |
|---|---|
| Frontend | React + TypeScript + Mantine UI |
| Backend | Laravel (API) |
| Verschlüsselung | Web Crypto API (AES-256-GCM) |
| Upload | tus-Protokoll (chunked, resumable) |
| P2P | WebRTC Data Channels |
| Auth | WebAuthn/FIDO2 + Magic Links |
| Datenbank | PostgreSQL |
Warum Self-Hosting entscheidend ist
Jeder Cloud-Dienst hat Zugriff auf deine Daten — zumindest theoretisch. Selbst bei Zero-Knowledge-Architekturen musst du dem Anbieter vertrauen, dass er den Code nicht ändert.
Bei einer self-hosted Lösung wie SendIt entfällt dieses Vertrauen. Du kontrollierst den Server, du kontrollierst den Code, du kontrollierst die Daten. Für Unternehmen mit strengen Datenschutzanforderungen (DSGVO, HIPAA, etc.) ist das oft die einzige akzeptable Lösung.
Fazit
Sichere Dateifreigabe muss nicht kompliziert sein. Mit modernen Web-APIs (Web Crypto, WebRTC, WebAuthn) lässt sich eine Plattform bauen, die echte Ende-zu-Ende-Verschlüsselung bietet — ohne Kompromisse bei der Benutzerfreundlichkeit.
SendIt zeigt: Zero-Knowledge ist kein Marketing-Buzzword, sondern ein technisch umsetzbares Prinzip. Der Server weiß nichts, und genau so soll es sein.
Brauchst du eine sichere Dateifreigabe für dein Unternehmen? Lass uns sprechen — von der Architektur bis zum Deployment.
Timo Sütterlin
Fullstack-Entwickler — Web, Mobile, KI