Symmetrische Verschlüsselungsverfahren

6 Kernkonzepte
Die wichtigsten symmetrischen Verschlüsselungsverfahren und Betriebsmodi: AES · DES / 3DES · ECB / CBC / CTR / GCM · Schlüssellängen · Padding · OpenSSL Symmetrische Verschlüsselung verwendet denselben Schlüssel für Ver- und Entschlüsselung. Die Verfahren sind schnell und effizient – ideal für die Verschlüsselung großer Datenmengen.

AES – Advanced Encryption Standard

AES-128 · AES-192 · AES-256
AES-256-CBC // Algorithmus + Betriebsmodus Schlüssellänge: 128, 192 oder 256 Bit Blockgröße: 128 Bit (16 Byte)

AES ist der moderne Standard für symmetrische Verschlüsselung. Er wird weltweit in Regierungsbehörden, Banken und Unternehmen eingesetzt und gilt als sicher.

AES-Varianten

Variante Schlüssellänge Runden Anwendung
AES-128 128 Bit 10 Runden Standardsicherheit, gute Performance
AES-192 192 Bit 12 Runden Erhöhte Sicherheit (selten verwendet)
AES-256 256 Bit 14 Runden Höchste Sicherheit (empfohlen für sensible Daten)
Beispiele (OpenSSL)
# AES-256-CBC Verschlüsselung
openssl enc -aes-256-cbc -salt -in datei.txt -out datei.enc -k passwort
# AES-256-CBC Entschlüsselung
openssl enc -d -aes-256-cbc -in datei.enc -out datei.txt -k passwort
# AES-128-CTR (kein Padding erforderlich)
openssl enc -aes-128-ctr -in datei.txt -out datei.enc -K 00112233445566778899AABBCCDDEEFF -iv 000102030405060708090A0B0C0D0E0F
Tipp: AES-256 gilt als quantensicher gegen klassische Angriffe. Für die meisten Anwendungen ist AES-128 jedoch ausreichend und schneller. Verwenden Sie immer einen sicheren Betriebsmodus (CBC, GCM oder CTR).

DES & 3DES – Vorgänger von AES

DES · 3DES · Triple DES
DES // 56 Bit Schlüssel, 8 Byte Block 3DES // 168 Bit Schlüssel (3 × 56 Bit)

DES (Data Encryption Standard) ist ein historisches Verfahren mit 56-Bit-Schlüssellänge, das heute als unsicher gilt. 3DES (Triple DES) wendet DES dreimal an und bietet höhere Sicherheit.

DES vs. 3DES

Merkmal DES 3DES
Schlüssellänge 56 Bit 168 Bit (3 × 56)
Blockgröße 64 Bit (8 Byte) 64 Bit (8 Byte)
Runden 16 Runden 48 Runden (3 × 16)
Sicherheit Heute unsicher (Brute-Force möglich) Akzeptabel (aber veraltet)
Performance Schnell Deutlich langsamer als AES
Beispiele (OpenSSL)
# DES-CBC Verschlüsselung (veraltet!)
openssl enc -des-cbc -in datei.txt -out datei.des -k passwort
# 3DES-CBC Verschlüsselung
openssl enc -des3 -in datei.txt -out datei.3des -k passwort
# 3DES Entschlüsselung
openssl enc -d -des3 -in datei.3des -out datei.txt -k passwort
Hinweis: DES gilt seit den späten 1990er Jahren als unsicher. 3DES wird noch in Legacy-Systemen verwendet, sollte aber durch AES ersetzt werden. Die Verwendung von 3DES wird von vielen Standards (z.B. NIST) nicht mehr empfohlen.

Betriebsmodi – ECB, CBC, CTR, GCM

ECB · CBC · CTR · GCM · OFB · CFB
// Empfehlung: GCM (Authenticated Encryption) AES-256-GCM // Verschlüsselung + Authentifizierung AES-256-CBC // Blockmodus mit IV AES-256-CTR // Counter-Modus (kein Padding)

Betriebsmodi definieren, wie ein Blockalgorithmus auf Daten angewendet wird. Sie unterscheiden sich in Sicherheit, Parallelisierbarkeit und Fehlerfortpflanzung.

Betriebsmodi im Vergleich

Modus Beschreibung Vorteile Nachteile
ECB Electronic Codebook Einfach, parallelisierbar Identische Blöcke ergeben identische Chiffratblöcke (unsicher!)
CBC Cipher Block Chaining Gute Sicherheit, weit verbreitet Nicht parallelisierbar, Padding erforderlich
CTR Counter Mode Kein Padding, parallelisierbar Benötigt eindeutigen Nonce/IV
GCM Galois/Counter Mode Authenticated Encryption (AEAD) Komplexer, aber sehr sicher
OFB Output Feedback Kein Padding, Fehlerfortpflanzung Nicht parallelisierbar
CFB Cipher Feedback Kein Padding, Streaming-fähig Nicht parallelisierbar
Beispiele
# ECB (NICHT EMPFOHLEN!)
openssl enc -aes-256-ecb -in datei.txt -out datei.enc -K 00112233445566778899AABBCCDDEEFF
# CBC (Standard, mit IV)
openssl enc -aes-256-cbc -in datei.txt -out datei.enc -K 00112233445566778899AABBCCDDEEFF -iv 0102030405060708090A0B0C0D0E0F10
# GCM (Authenticated Encryption – empfohlen)
openssl enc -aes-256-gcm -in datei.txt -out datei.enc -K 00112233445566778899AABBCCDDEEFF -iv 0102030405060708090A0B0C0D0E0F10
Tipp: Verwenden Sie GCM (Galois/Counter Mode) für moderne Anwendungen – er kombiniert Verschlüsselung und Authentifizierung. ECB sollte aus Sicherheitsgründen niemals verwendet werden.

Schlüssellängen & Sicherheit – 128 vs. 256 Bit

128 Bit · 192 Bit · 256 Bit
// Schlüssellängen im Vergleich 128 Bit → 2^128 ≈ 3.4 × 10^38 Möglichkeiten 256 Bit → 2^256 ≈ 1.16 × 10^77 Möglichkeiten

Schlüssellängen bestimmen die Sicherheit eines symmetrischen Verfahrens. Längere Schlüssel bieten mehr Schutz gegen Brute-Force-Angriffe, sind aber langsamer.

Sicherheitsniveaus

Schlüssellänge Effektive Sicherheit Empfehlung Anwendungsbeispiele
128 Bit Sehr hoch Ausreichend für die meisten Anwendungen SSL/TLS, Dateiverschlüsselung
192 Bit Höher Für erhöhte Sicherheitsanforderungen Regierungsbehörden (selten)
256 Bit Maximal Empfohlen für sensible Daten Bereiche mit höchsten Sicherheitsanforderungen
Praxis-Tipp
# Prüfen der unterstützten Schlüssellängen (OpenSSL)
openssl enc -ciphers
# Generieren eines sicheren Schlüssels (256 Bit)
openssl rand -hex 32 # 32 Byte = 256 Bit
# Generieren eines IV (Initialization Vector)
openssl rand -hex 16 # 16 Byte = 128 Bit (für AES-CBC)
Tipp: Für die meisten Anwendungen ist AES-256 die beste Wahl. Verwenden Sie immer einen kryptografisch sicheren Zufallsgenerator für Schlüssel und IVs (z.B. openssl rand).

Padding – Blockausrichtung

PKCS#7 · PKCS#5 · Zero Padding
// Padding nach PKCS#7 Blockgröße: 16 Byte (AES) Fehlende Bytes: 3 → Padding: 0x03 0x03 0x03 Kein Padding: 16 → Padding: 0x10 × 16

Padding füllt den letzten Datenblock auf die Blockgröße auf. Moderne Modi wie CTR und GCM benötigen kein Padding.

Padding-Verfahren

Verfahren Beschreibung Verwendung
PKCS#7 Jedes Padding-Byte hat den Wert der Anzahl der hinzugefügten Bytes Standard bei CBC (AES, DES)
PKCS#5 Wie PKCS#7, aber für 8-Byte-Blöcke (DES) Veraltet, meist durch PKCS#7 ersetzt
Zero Padding Füllt mit Null-Bytes auf Einfach, aber bei Binärdaten problematisch
ANSI X.923 Null-Bytes + letztes Byte mit Anzahl Selten
Beispiele
# PKCS#7 Padding (AES-CBC, OpenSSL Standard)
openssl enc -aes-256-cbc -in datei.txt -out datei.enc -K ... -iv ... # Verwendet PKCS#7
# Kein Padding (CTR/GCM)
openssl enc -aes-256-ctr -in datei.txt -out datei.enc -K ... -iv ... # Kein Padding erforderlich
# Padding in Python (PyCryptodome)
from Crypto.Util.Padding import pad, unpad
padded_data = pad(data, AES.block_size)
original_data = unpad(padded_data, AES.block_size)
Tipp: Verwenden Sie CTR oder GCM, wenn Sie Padding vermeiden möchten. Bei CBC ist PKCS#7 der Standard und wird von den meisten Bibliotheken unterstützt.

OpenSSL – Praktische Befehle

enc · rand · dgst · genpkey
openssl enc # Verschlüsselung openssl rand # Zufallszahlen openssl dgst # Hashfunktionen

OpenSSL ist das wichtigste Kommandozeilen-Tool für Kryptographie. Es unterstützt alle wichtigen symmetrischen Verfahren und Betriebsmodi.

Wichtige OpenSSL-Befehle
# Sichere Verschlüsselung (AES-256-GCM)
openssl enc -aes-256-gcm -in datei.txt -out datei.enc -K $(openssl rand -hex 32) -iv $(openssl rand -hex 16)
# Entschlüsselung (mit -d)
openssl enc -d -aes-256-gcm -in datei.enc -out datei.txt -K ... -iv ...
# Schlüssel generieren (256 Bit)
openssl rand -hex 32
# IV generieren (128 Bit für AES)
openssl rand -hex 16
# Passwort-basierte Verschlüsselung (empfohlen)
openssl enc -aes-256-cbc -salt -in datei.txt -out datei.enc -k meinPasswort
# Liste aller unterstützten Ciphers
openssl enc -list
Tipp: Verwenden Sie -salt bei passwortbasierter Verschlüsselung, um Wörterbuchangriffe zu erschweren. Der -k-Parameter akzeptiert das Passwort direkt – in Produktionsumgebungen besser über Umgebungsvariablen oder Dateien.

Symmetrische Verfahren im Überblick

AES Advanced Encryption Standard
128, 192, 256 Bit
3DES Triple DES (veraltet)
168 Bit Schlüssel
GCM Galois/Counter Mode
Authenticated Encryption
CBC Cipher Block Chaining
Klassischer Blockmodus
CTR Counter Mode
Kein Padding
IV Initialization Vector
Muss eindeutig sein!

Quick Summary

AES
Moderner Standard
3DES
Veraltet
GCM
Authenticated Encryption
256 Bit
Höchste Sicherheit
PKCS#7
Padding-Standard
openssl
Kommandozeile
openssl enc -aes-256-gcm -in datei.txt -out datei.enc -K ... -iv ...