Zum Inhalt springen
Platz sichern

Verschlüsselung: Dateiinhalt, Schlüssel und Signaturen

Welche Standardverfahren eine von Gerät zu Gerät gesendete Datei schützen, was jedes tut und was das Profil nicht zusagt.

Das beschreibt Übertragungen von Gerät zu Gerät, direkt oder über das Relay (Serverweg). Dateien, die du in der pipeit Cloud behältst, werden so gespeichert, dass der Dienst mit ihnen arbeiten kann, und nutzen dieses Ende-zu-Ende-Profil nicht; siehe Sicherheit und häufige Fragen.

Das Datei-Cryptoprofil kombiniert Standardverfahren mit unterschiedlichen Aufgaben:

VerfahrenAufgabe im Dateiprofil
AES-256-GCM mit 128-Bit-TagInhalt und verschlüsseltes Manifest authentifiziert verschlüsseln
RSA-OAEP-3072 mit SHA-256Den zufälligen Dateischlüssel für das konkrete Empfangsgerät verpacken
ECDSA P-256 mit SHA-256Exakte Envelopebytes und kontextgebundene Geräte- und Transferbelege signieren
SHA-256Fingerprints sowie Ciphertext- und Klartextintegrität prüfen

Wische seitwärts, um die ganze Tabelle zu sehen.

Pro neuer Dateivorbereitung entstehen ein zufälliger 256-Bit-Dateischlüssel und ein zufälliges 64-Bit-Noncepräfix. Für jeden Verschlüsselungsschritt wird daraus eine 96-Bit-GCM-Nonce: Präfix plus 32-Bit-Chunkindex in Big-Endian-Reihenfolge. Index 0 ist für das verschlüsselte Manifest reserviert, Daten beginnen bei Index 1. Der reguläre Kryptochunk enthält bis zu 4 MiB Klartext. Die Profilgrenzen verhindern einen unbegrenzten Indexraum.

Zusätzliche authentifizierte Daten, kurz AAD, binden die Verschlüsselung unter anderem an Protokollversion, Transfer und Geräte sowie Chunkindex. Damit sind gültige Bytes aus einer anderen Sendung nicht einfach als passende Chunks einsetzbar. Auch die RSA-Verpackung verwendet eine zum Auftrag und Empfänger passende Kennzeichnung. Die Signatur prüft die ursprünglichen Envelopebytes; beliebiges Parsen und erneutes JSON-Serialisieren wäre kein Ersatz für diese Bytebindung.

DiagrammWie eine Datei für ihren Empfänger verschlüsselt wirdDiagramm: Die Originaldatei wird in Chunks mit einem Klartext-Hash zerlegt. Ein zufälliger Dateischlüssel verschlüsselt Chunks und Manifest mit AES-GCM und wird mit RSA-OAEP für den Empfänger verpackt. Beide Ergebnisse bilden den Envelope mit verschlüsselten Chunks, und der Sender signiert die exakten Envelopebytes.
  1. OriginaldateiIn Chunks bis 4 MiB zerlegenDateidatenChunks und Klartext-Hash
  2. Chunks und Klartext-HashJeden Chunk verschlüsselnDateidatenAES-GCM
  3. Zufälliger DateischlüsselSchlüssel für Inhalt und ManifestSteuerung und BerechtigungenAES-GCM
  4. Name, Größe und HashVerschlüsseltes ManifestDateidatenAES-GCM
  5. Zufälliger DateischlüsselSchlüssel für das Empfangsgerät verpackenSteuerung und BerechtigungenRSA-OAEP für den Empfänger
  6. AES-GCMCiphertextDateidatenEnvelope und verschlüsselte Chunks
  7. RSA-OAEP für den EmpfängerVerpackter SchlüsselSteuerung und BerechtigungenEnvelope und verschlüsselte Chunks
  8. Envelope und verschlüsselte ChunksDer Absender signiert die exakten EnvelopebytesSteuerung und BerechtigungenAbsendersignatur

Der ursprüngliche Dateiname und der Klartext-Dateihash liegen im verschlüsselten Manifest. Sichtbar bleiben für die Steuerung benötigte Metadaten wie Beteiligte, Größen, Zeitpunkte, Profil und Status. pipeit-Clients halten Dateinamen und Schlüssel aus Diagnose und lokalen Logs heraus.

Transportverschlüsselung und Ende-zu-Ende-Verschlüsselung erfüllen verschiedene Zwecke

Das Relay sieht TLS-Verkehr, nie Dateiinhalte. TLS schützt eine Verbindung. Beim HTTPS- und WebSocket-Relay (Serverweg) endet diese TLS-Verbindung an der Plattform; die zusätzliche Dateiverschlüsselung endet erst beim Empfänger. Das Relay benötigt dafür keinen privaten Dateischlüssel. Ein gekoppeltes Gerät muss aber tatsächlich der beabsichtigte Empfänger sein: Eine beliebige vom Server gelieferte öffentliche Schlüsselzeichenfolge ersetzt keinen vertrauenswürdigen Geräteabgleich.

Was das Profil nicht zusagt

Das Dateiprofil verspricht keine Forward Secrecy und keine Post-Compromise-Sicherheit. Die Eigenschaften eines TLS-Kanals dürfen nicht auf langfristig verschlüsselte Dateischlüssel übertragen werden. Ein kompromittiertes Endgerät oder bösartig ausgelieferter Webcode liegt außerdem innerhalb einer anderen Vertrauensgrenze als ein passiv mitlesender Relayserver.