browserforensics
Zurück zu allen Artikeln

Wie Chromium Cookies unter Windows verschlüsselt

2026-06-17 · 3 min

Die Cookies-Datenbank verrät Ihnen, welche Cookies existierten und wann. Sie verrät aber für sich genommen nicht deren Werte — unter Windows speichert Chromium die Spalte encrypted_value seit v80 als Chiffretext. Den Klartext wiederherzustellen ist ein Zwei-Schlüssel-Problem: ein profilspezifischer AES-Schlüssel, der in Local State liegt, gekapselt von einem Windows-Benutzerschlüssel, den Sie per DPAPI entkapseln müssen. Dieser Beitrag behandelt die erste Hälfte — die Formate. Die offline DPAPI-Kette behandelt die zweite.

Der Schlüssel liegt in Local State

Chromium erzeugt einen AES-256-Schlüssel pro Profil und speichert ihn base64-kodiert in der übergeordneten Local State-Datei des Profils (JSON):

%LOCALAPPDATA%\Google\Chrome\User Data\Local State
%LOCALAPPDATA%\Microsoft\Edge\User Data\Local State
{
  "os_crypt": {
    "encrypted_key": "RFBBUEkBAAAA0Iyd3wEV0RGM...",
    "app_bound_encrypted_key": "QVBQQgEAAADQ..."
  }
}

Base64-dekodieren Sie encrypted_key, und die ersten fünf Byte sind das ASCII-Tag DPAPI. Entfernen Sie es, und was übrig bleibt, ist ein DPAPI-Blob — der AES-Schlüssel, verschlüsselt unter den Windows-Anmeldedaten des Benutzers. Sie können den Schlüssel nicht direkt aus Local State auslesen; er muss zuerst entkapselt werden.

Das Cookie-Wert-Format

Jeder encrypted_value ist ein selbstbeschreibendes Blob. Das moderne Layout lautet:

BytesBedeutung
0..3Versions-Tag — ASCII v10 oder v20
3..1512-Byte-AES-GCM-Nonce
15..n-16Chiffretext
n-16..n16-Byte-GCM-Authentifizierungs-Tag

Die Entschlüsselung ist also AES-256-GCM mit dem os_crypt-Schlüssel, der eingebetteten Nonce und dem angehängten Tag. Das Layout auf der Platte (Chiffretext gefolgt vom Tag) ist genau das, was WebCryptos decrypt erwartet — weshalb der In-Browser-Entschlüsseler es ohne zusätzliches Reassembly erledigen kann.

Zwei Versions-Tags sind relevant:

  • v10 — das klassische Schema. Der Schlüssel aus Local State entschlüsselt den Wert direkt. Der Klartext ist der Cookie-Wert unverändert.
  • v20 — App-Bound Encryption (Chrome 127+). Dem entschlüsselten Klartext ist ein 32-Byte-SHA-256-Domain-Hash vorangestellt, den Sie entfernen, um den Wert zu erhalten. v20-Werte werden mit dem app-bound Schlüssel (app_bound_encrypted_key) verschlüsselt, nicht mit dem regulären encrypted_key.

Vor v80 geschriebene Werte haben kein Versions-Tag — sie beginnen mit der DPAPI-Magic 01 00 00 00 und wurden pro Wert mit CryptProtectData verschlüsselt. Diese benötigen dieselbe DPAPI-Entkapselung, jedoch auf jeden Wert angewendet statt auf einen gemeinsamen Schlüssel.

Was Sie offline entschlüsseln können

SchemaSchlüsselquelleOffline aus Dateien?
v10encrypted_key (DPAPI-gekapselt)Ja — mit Masterkey + Benutzergeheimnis
Pre-v80 pro WertDPAPI pro WertJa — dieselben Eingaben, pro Wert
v20 (app-bound)app_bound_encrypted_keyTeilweise — siehe unten

Bei v10 ist alles aus den erfassten Dateien wiederherstellbar: der Local State-Schlüssel, der DPAPI-Masterkey des Benutzers und der NT-Hash oder das Passwort des Benutzers. Das ist der Regelfall und der, den das Tool automatisiert.

v20 fügt eine zweite Schicht hinzu. Der app-bound Schlüssel wird mit System-DPAPI gekapselt und anschließend durch einen app-bound Dienst geführt, der ihn an die Maschine bindet. Die System-DPAPI-Schicht ist offline wiederherstellbar (der Maschinenschlüssel stammt aus dem SECURITY-Hive), aber der app-bound Schritt ist auf aktuellen Builds keine reine dateibasierte Kryptografie. Wenn Sie den entkapselten v20-Schlüssel bereits besitzen, ist das Entschlüsseln der Werte unkompliziertes GCM; diesen Schlüssel allein aus Dateien abzuleiten ist der Teil, der sich noch nicht vollständig auf Offline-Mathematik reduzieren lässt.

Andere Plattformen, kurz

Dies ist eine Windows-Geschichte. Unter macOS liegt der os_crypt- Schlüssel im Login-Keychain (Chrome Safe Storage), entsperrt mit dem Benutzerpasswort. Unter Linux ist es entweder ein fest kodierter peanuts-Schlüssel oder ein Geheimnis in GNOME Keyring / KWallet. Firefox verschlüsselt Cookie-Werte überhaupt nicht, und Safari-binarycookies liegen im Klartext — siehe Browser-Cookies in der Forensik.

Weiterführende Lektüre