Wie die Verschlüsselung funktioniert
SG/Send verwendet symmetrische AES-256-GCM-Verschlüsselung, die vollständig in Ihrem Browser durchgeführt wird. Der Server sieht niemals Ihre Klartextdaten, Ihre Dateinamen oder Ihre Verschlüsselungsschlüssel. Diese Seite erklärt genau, wie das funktioniert.
Symmetrische Verschlüsselung: Ein Schlüssel, zwei Operationen
SG/Send verwendet symmetrische Verschlüsselung — derselbe Schlüssel verschlüsselt und entschlüsselt die Datei. Dies ist das einfachste und schnellste Verschlüsselungsmodell und, wenn korrekt umgesetzt, das sicherste für den Dateitransfer.
Was ist AES-256-GCM?
AES (Advanced Encryption Standard) ist der Verschlüsselungsalgorithmus, der weltweit von Regierungen, Banken und Militärs verwendet wird. 256 ist die Schlüssellänge in Bits — es gibt 2256 mögliche Schlüssel, was Brute Force rechnerisch unmöglich macht. GCM (Galois/Counter Mode) fügt authentifizierte Verschlüsselung hinzu — es verschlüsselt nicht nur, sondern erkennt auch, ob jemand den Chiffretext manipuliert hat.
Warum symmetrisch?
Symmetrische Verschlüsselung verwendet einen Schlüssel sowohl für die Verschlüsselung als auch für die Entschlüsselung. Dies unterscheidet sich von asymmetrischer Verschlüsselung (wie RSA), die ein Schlüsselpaar verwendet. Für den Dateitransfer ist symmetrisch die richtige Wahl: Es ist schnell, gut verstanden, und die Web Crypto API bietet eine kampferprobte Implementierung in jedem modernen Browser.
Der Verschlüsselungsablauf: Schritt für Schritt
Hier sehen Sie genau, was passiert, wenn Sie eine Datei über SG/Send senden.
Schlüsselgenerierung
Wenn Sie eine Datei auswählen, generiert Ihr Browser einen zufälligen 256-Bit-AES-Schlüssel mit der Web Crypto API (crypto.subtle.generateKey). Dabei wird der kryptographisch sichere Zufallszahlengenerator des Betriebssystems verwendet. Der Schlüssel existiert ausschliesslich im Arbeitsspeicher Ihres Browsers.
IV-Generierung
Ein 12-Byte-Initialisierungsvektor (IV) wird zufällig generiert (crypto.getRandomValues). Der IV stellt sicher, dass die zweimalige Verschlüsselung derselben Datei unterschiedlichen Chiffretext erzeugt. Der IV ist nicht geheim — er wird der verschlüsselten Ausgabe vorangestellt und mit dem Chiffretext gesendet.
Verschlüsselung
Die Datei wird im Browser mit crypto.subtle.encrypt unter Verwendung des AES-GCM-Algorithmus, des generierten Schlüssels und des IV verschlüsselt. Die Ausgabe ist Chiffretext + ein 128-Bit-Authentifizierungs-Tag. Das Authentifizierungs-Tag ist die Integritätsgarantie von GCM — wenn jemand auch nur ein Bit des Chiffretexts ändert, schlägt die Entschlüsselung fehl.
Hochladen
Nur die verschlüsselte Ausgabe (IV + Chiffretext + Auth-Tag) wird auf den Server hochgeladen. Der Server empfängt einen Block zufällig aussehender Bytes. Er weist eine Transfer-ID (12 zufällige Zeichen) zu und speichert den Chiffretext. Kein Dateiname, kein Content-Type-Hinweis, kein Schlüssel — nur verschlüsselte Bytes.
Link-Freigabe
Der Absender erhält einen Download-Link. Der Entschlüsselungsschlüssel wird im URL-Fragment (dem Teil nach #) platziert. URL-Fragmente werden vom Browser niemals an den Server gesendet — dies ist in RFC 3986 definiert. Der Absender teilt diesen Link über einen beliebigen Kanal (E-Mail, Chat, persönlich).
Entschlüsselung
Der Empfänger öffnet den Link. Sein Browser lädt die verschlüsselten Bytes vom Server herunter, extrahiert den Schlüssel aus dem URL-Fragment, trennt den IV vom Chiffretext und entschlüsselt mit crypto.subtle.decrypt. Wenn das Auth-Tag nicht übereinstimmt (Manipulation erkannt), schlägt die Entschlüsselung fehl. Der Server ist an der Entschlüsselung niemals beteiligt.
Was der Server sieht und was nicht
Dies ist die Zero-Knowledge-Garantie. Hier sehen Sie genau, welche Daten auf dem Server existieren.
Der Server speichert
Transfer-ID — zufällige 12 Zeichen
Verschlüsselte Bytes — nicht von zufälligen Daten unterscheidbar
IP-Hash — SHA-256 der IP + täglich rotierendem Salt
Zeitstempel — wann die Übertragung erstellt wurde
Dateigrösse — Grösse des verschlüsselten Blobs (Bytes)
Der Server sieht niemals
Verschlüsselungsschlüssel — verbleibt im Browser, wird über URL-Fragment geteilt
Dateiname — wird niemals an den Server gesendet
Dateityp — keine Content-Type-Metadaten gespeichert
Klartextinhalt — nur Chiffretext wird hochgeladen
Reine IP-Adresse — wird vor der Speicherung gehasht
Technologie-Stack
Jede Schicht wurde nach den Kriterien Einfachheit, Sicherheit und abhängigkeitsfreie Bereitstellung ausgewählt.
| Schicht | Technologie | Zweck |
|---|---|---|
| Laufzeit | Python 3.12 / arm64 | Programmiersprache des Anwendungsservers |
| Web-Framework | FastAPI via osbot-fast-api | HTTP-Routing und Anfrageverarbeitung |
| Compute | AWS Lambda + Mangum | Serverlose Ausführung, nutzungsbasierte Abrechnung |
| Speicher | Memory-FS (Storage_FS) | Austauschbares Backend: Arbeitsspeicher, Festplatte oder S3 |
| Verschlüsselung | Web Crypto API (AES-256-GCM) | Clientseitige Verschlüsselung im Browser |
| Typsystem | Type_Safe (osbot-utils) | Schemadefinitionen ohne Pydantic |
| Frontend | Vanilla JS + Web Components | Null Framework-Abhängigkeiten (IFD) |
| Tests | pytest, In-Memory-Stack | Keine Mocks, keine Patches, echte Implementierungen |
| CI/CD | GitHub Actions | Test-, Tag- und Bereitstellungspipeline |
Systemarchitektur
Zwei Lambda-Funktionen, eine Speicherschicht, ein CDN. Einfach konstruiert.
User Lambda (öffentlich)
Öffentlich zugängliche Funktion für Dateiübertragungen, Integritätsprüfungen, Presigned-Uploads, persönliche Tresore und MCP-Integration. Zugriff über Lambda Function URL hinter CloudFront.
18 EndpunkteAdmin Lambda (authentifiziert)
Reine Admin-Funktion für Token-Verwaltung, Analysen, Serverstatistiken und MCP-Admin-Tools. Erfordert Authentifizierung. Separates Lambda = separate Sicherheitsgrenze.
55 EndpunkteMemory-FS (Storage_FS)
Jeder Speicherzugriff erfolgt über eine Abstraktionsschicht. Der Anwendungscode weiss nicht, ob das Backend im Arbeitsspeicher, auf der Festplatte oder in S3 liegt. Dieselbe Codebasis über alle 7 Bereitstellungsziele hinweg.
Austauschbares BackendCloudFront CDN
Statische Assets, Caching, SSL-Terminierung und WAF. Lambda URLs stellen die HTTPS-Endpunkte direkt bereit — kein API Gateway erforderlich.
Edge-NetzwerkBereitstellungsziele
Eine Codebasis, sieben Bereitstellungsziele in vier Mustern gruppiert.
Lambda
Primäre Bereitstellung. Zwei Lambda-Funktionen hinter Lambda Function URLs. Direkte HTTPS-Endpunkte, kein API Gateway erforderlich.
ProduktionContainer
Docker, AWS Fargate und GCP Cloud Run. Dieselbe Anwendung als Container verpackt.
Docker / Fargate / GCPServer
EC2-Instanzen und AMI-Builds. Für Teams, die volle Kontrolle über die Laufzeitumgebung benötigen.
EC2 / AMICLI
Kommandozeilenschnittstelle für geskriptete Übertragungen, CI/CD-Pipelines und erfahrene Benutzer.
Terminal