Skip to main content
Zum Hauptinhalt springen
Kryptografie1. Februar 2026 8 Min. Lesezeit

AES-256-GCM-Verschlüsselung erklärt

Verstehen Sie, wie AES-256-GCM-Verschlüsselung funktioniert und warum es der Goldstandard für clientseitigen Datenschutz ist.

Verschlüsseln Sie Daten sicher mit unserem AES-256-GCM-Verschlüsselungstool. Alles läuft lokal in Ihrem Browser.

Was ist AES?

AES (Advanced Encryption Standard) ist ein symmetrischer Verschlüsselungsalgorithmus, der 2001 vom National Institute of Standards and Technology (NIST) als Standard adoptiert wurde.

Es gibt drei AES-Varianten: AES-128, AES-192 und AES-256, wobei die Zahl die Schlüssellänge in Bits angibt. Alle verwenden dasselbe Grundalgorithmus, unterscheiden sich nur in der Anzahl der Runden.

Warum GCM-Modus?

AES kann in verschiedenen Betriebsmodi verwendet werden. GCM (Galois/Counter Mode) bietet sowohl Vertraulichkeit als auch Authentifizierung.

Authentifizierung bedeutet, dass Sie sicher wissen, dass die Daten von jemandem stammen, der den Schlüssel besitzt, und dass sie nicht manipuliert wurden.

Schlüsselableitung mit PBKDF2

Für Passwort-basierte Verschlüsselung verwenden wir PBKDF2 (Password-Based Key Derivation Function 2). Dies macht es rechenintensiv, Passwörter durch Brute-Force zu erraten.

Wir verwenden 100.000 Iterationen mit einem eindeutigen Salt für jedes Verschlüsselungsereignis.

Praktisches Beispiel

Verschlüsselung mit AES-256-GCM umfasst diese Schritte:

  • Salt generieren (16 Bytes, zufällig)
  • IV/Nonce generieren (12 Bytes, zufällig)
  • Passwort mit PBKDF2 in Schlüssel umwandeln
  • Mit AES-256-GCM verschlüsseln
  • Ausgabe: Salt + IV + Ciphertext + AuthTag

AES-256-GCM Implementierungsbeispiele

Hier ist, wie Sie AES-256-GCM-Verschlüsselung in verschiedenen Programmiersprachen implementieren:

Node.js (crypto-Modul)

const crypto = require('crypto');
// Zufälligen 256-Bit-Schlüssel generieren
const key = crypto.randomBytes(32);
const iv = crypto.randomBytes(16);
// Verschlüsseln
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
let encrypted = cipher.update('Geheime Nachricht', 'utf8', 'hex');
encrypted += cipher.final('hex');
const authTag = cipher.getAuthTag();
console.log('Verschlüsselt:', encrypted);
console.log('Auth Tag:', authTag.toString('hex'));

Python (cryptography-Bibliothek)

from cryptography.hazmat.primitives.ciphers.aead import AESGCM
import os
# Zufälligen 256-Bit-Schlüssel generieren
key = AESGCM.generate_key(bit_length=256)
aesgcm = AESGCM(key)
# Nonce (IV) generieren
nonce = os.urandom(12)
# Verschlüsseln
plaintext = b'Geheime Nachricht'
ciphertext = aesgcm.encrypt(nonce, plaintext, None)
print(f'Schlüssel: {key.hex()}')
print(f'Nonce: {nonce.hex()}')
print(f'Ciphertext: {ciphertext.hex()}')

JavaScript (Web Crypto API)

async function encryptData(plaintext, password) {
// Schlüssel aus Passwort mit PBKDF2 ableiten
const encoder = new TextEncoder();
const passwordKey = await crypto.subtle.importKey(
'raw', encoder.encode(password), 'PBKDF2', false, ['deriveKey']
);
const salt = crypto.getRandomValues(new Uint8Array(16));
const key = await crypto.subtle.deriveKey(
{ name: 'PBKDF2', salt, iterations: 100000, hash: 'SHA-256' },
passwordKey, { name: 'AES-GCM', length: 256 }, false, ['encrypt']
);
// Verschlüsseln
const iv = crypto.getRandomValues(new Uint8Array(12));
const encrypted = await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv }, key, encoder.encode(plaintext)
);
return { encrypted, iv, salt };
}

Sicherheitsüberlegungen

Für maximale Sicherheit beachten Sie:

  • Verwenden Sie lange, zufällige Passwörter
  • Teilen Sie Passwörter niemals über unsichere Kanäle
  • Beachten Sie, dass verlorene Passwörter nicht wiederhergestellt werden können
  • Verschlüsselte Daten können nur mit dem richtigen Passwort entschlüsselt werden
AES-256-GCMVerschlüsselungKryptografieDatenschutzSicherheit