Zum Hauptinhalt springen

Server-seitige Verschlüsselung

Die Server-seitige Verschlüsselung bietet eine zusätzliche Datenschutzebene. Alle Daten werden vor dem Schreiben in die Datenbank auf dem Server verschlüsselt, unabhängig vom Status der Client-seitigen Verschlüsselung.

Übersicht

Zweck

SzenarioSchutz
DatenbankleckDaten mit Serverschlüssel verschlüsselt
BackupsBackups enthalten nur Chiffretext
Physischer ServerzugriffDaten ohne Schlüssel nicht lesbar
CSE deaktiviertServer-Verschlüsselung funktioniert immer

Funktionsweise

Data from client

[Server encryption AES-256-CFB]

Database (ciphertext)

Verschlüsselungsalgorithmus

Parameter

ParameterWert
AlgorithmusAES-256-CFB
Schlüssellänge256 Bit
ModusCFB (Cipher Feedback)
IV128 Bit, zufällig pro Verschlüsselung
BibliothekOpenSSL (über PHP)

CFB-Modus

Eigenschaften des CFB-Modus (Cipher Feedback):

  • Wandelt Blockchiffre in Stromchiffre um
  • Kein Padding erforderlich
  • Jeder Block hängt vom vorherigen ab
  • IV muss für jede Verschlüsselung einzigartig sein

Struktur der verschlüsselten Daten

[IV (128 bits)] + [Ciphertext]

Der IV wird im Klartext zusammen mit dem Chiffretext gespeichert und zur Entschlüsselung verwendet.


Serververschlüsselungsschlüssel

Schlüsselgenerierung

Der Schlüssel wird einmalig bei der Systeminstallation generiert:

ParameterWert
Größe256 Bit
QuelleKryptografisch sicherer Generator
Entropie256 Bit
Speicherformatbase64:{base64_encoded_key}

Schlüsselspeicherung

Der Schlüssel kann auf zwei Arten gespeichert werden:

Methode 1: In einer Datei (Standard)

ParameterWert
Standardpfad{PROJECT_DIR}/init/encryption_key
PfadüberschreibungUmgebungsvariable ENCRYPTION_KEY_PATH
Formatbase64:{base64_encoded_key}

Methode 2: In einer Umgebungsvariable

Der Schlüssel kann direkt über eine Umgebungsvariable übergeben werden, ohne Datei.

Zugriffsberechtigungen einrichten

Bei der Speicherung des Schlüssels in einer Datei ist die Einrichtung der Zugriffsberechtigungen obligatorisch:

# Owner — application user (e.g., www-data)
chown www-data:www-data /path/to/encryption_key

# Read-only for owner
chmod 400 /path/to/encryption_key
Erhöhte Speicheranforderungen

Wenn Ihre Organisation strenge Sicherheitsrichtlinien oder regulatorische Anforderungen an die Speicherung kryptografischer Schlüssel hat (HSM, externe Secret Stores, zertifizierte Lösungen), kontaktieren Sie den technischen Support von Passwork, um Integrationsoptionen zu besprechen.

Schlüsselintegritätsprüfung

Die Schlüsselintegrität wird beim Anwendungsstart überprüft:

  1. Schlüssel aus Datei laden
  2. SHA-512-Hash des Schlüssels berechnen
  3. Mit gespeichertem Hash in der Datenbank vergleichen
  4. Bei Abweichung — Startfehler

Dies verhindert die Verwendung eines falschen Schlüssels und Datenbeschädigung.


Was auf dem Server verschlüsselt wird

Der Serverschlüssel verschlüsselt folgende Daten:

  • Eintragsdaten (Passwörter, benutzerdefinierte Felder, Anhänge)
  • Tresorschlüssel
  • Eintragschlüssel
  • Externe-Link-Daten
  • LDAP-Integrationspasswörter
  • SMTP-Serverpasswörter

Die Verschlüsselung erfolgt automatisch vor dem Speichern in der Datenbank, die Entschlüsselung beim Lesen.


Konfiguration

Umgebungsvariablen

VariableBeschreibungStandardwert
ENCRYPTION_KEY_PATHSchlüsseldateipfad%init_dir%/encryption_key
ENCRYPTION_CIPHERVerschlüsselungsalgorithmusAES-256-CFB

Chiffre-Konfiguration

Unterstützte Algorithmen

Das System unterstützt jeden Verschlüsselungsalgorithmus, der in OpenSSL auf dem Server verfügbar ist. Dies ermöglicht die Auswahl eines Algorithmus gemäß den Anforderungen Ihrer Organisation oder regulatorischen Vorgaben.

Beispiele unterstützter Algorithmen:

TypAlgorithmen
AES (256 Bit)AES-256-CFB (Standard), AES-256-GCM, AES-256-CBC, AES-256-CTR
AES (128 Bit)AES-128-GCM, AES-128-CBC, AES-128-CTR
ChaCha20ChaCha20-Poly1305
Nationale StandardsCamellia, ARIA, GOST (falls von OpenSSL unterstützt)

Die vollständige Liste der verfügbaren Algorithmen hängt von der auf dem Server installierten OpenSSL-Version ab.

Verfügbare Algorithmen anzeigen

Um alle auf dem Server verfügbaren Algorithmen anzuzeigen:

php bin/console app:cipher-methods:list

Der Befehl gibt eine Liste aller unterstützten Chiffriermethoden und ihrer Aliase aus OpenSSL aus.

Algorithmus ändern

Methode 1: Über Konfigurationsdatei

Erstellen oder bearbeiten Sie init/config.env:

ENCRYPTION_CIPHER=AES-256-GCM

Methode 2: Über Umgebungsvariable

export ENCRYPTION_CIPHER="AES-256-GCM"
Algorithmuswechsel
  • Der Algorithmuswechsel erfordert die Neuverschlüsselung aller Daten (ähnlich der Schlüsselrotation)
  • Erstellen Sie vor dem Wechsel ein Backup
  • Planen Sie ein Wartungsfenster für große Datenbanken

Algorithmusvalidierung

Das System validiert die Korrektheit des Algorithmus bei der ersten Verschlüsselung. Wenn ein nicht unterstützter Algorithmus angegeben wird, schlägt die Operation mit einem Fehler fehl.

Um die Verfügbarkeit eines Algorithmus zu prüfen:

// Check algorithm support
in_array('AES-256-GCM', openssl_get_cipher_methods())

Interaktion mit Client-seitiger Verschlüsselung

Zweistufiges Modell

Datenfluss bei aktivierter CSE:

  1. Benutzer gibt Passwort ein
  2. Client (Browser) verschlüsselt Daten mit Eintragschlüssel (AES-256-CBC) — Ebene 1 (CSE)
  3. Server empfängt bereits verschlüsselte Daten
  4. Server verschlüsselt mit Serverschlüssel (OpenSSL AES-256-CFB) — Ebene 2 (Server-seitig)
  5. Datenbank speichert doppelten Chiffretext

Bei deaktivierter CSE:

  • Daten kommen im Klartext an
  • Nur Server-Verschlüsselung wird angewendet
  • Datenbank speichert eine Verschlüsselungsebene

Sicherheitsgarantien

SzenarioCSE aktiviertCSE deaktiviert
DatenbankleckZwei SchutzebenenServer-Verschlüsselung
ServerkompromittierungCSE schützt Daten⚠️ Daten zugänglich
DatenbankadministratorKann nicht lesenSieht Chiffretext