ZIP-Verschlüsselung
WinZip-AES-Verschlüsselung, im Detail erklärt
Das moderne ZIP-Verschlüsselungsschema kombiniert AES mit einer langsamen Schlüsselableitungsfunktion und einer Authentifizierung pro Eintrag. Zusammen machen sie ein falsches Passwort billig zu verwerfen und ein starkes praktisch nicht zu erraten.
AES kommt in das ZIP-Format
Die traditionelle ZIP-Verschlüsselung war nie stark, deshalb führte WinZip ein AES-basiertes Schema ein, das die meisten modernen Archivwerkzeuge inzwischen unterstützen. Es ersetzt die alte Chiffre ZipCrypto durch den Advanced Encryption Standard, fügt eine ordentliche Schlüsselableitungsfunktion hinzu und hängt an jeden Eintrag eine echte Integritätsprüfung an. Das Ergebnis ist eine Verschlüsselung, die einer Prüfung standhält, zum bewussten Preis, langsam zu testen zu sein.
Wie es im ZIP aussieht
Ein AES-verschlüsselter Eintrag hält seine tatsächliche
Komprimierungsmethode nicht an der üblichen Stelle fest. Stattdessen wird
das Methodenfeld auf 99 gesetzt, eine Markierung, die
„AES-verschlüsselt“ bedeutet, und die eigentliche Komprimierungsmethode
wird an anderer Stelle gespeichert. Die Details liegen in einem
Extra-Feld mit der Header-ID 0x9901. Dieses Feld enthält ein
zweistelliges Anbieter-Tag, AE, eine Versionsnummer, die
entweder AE-1 oder AE-2 ist, ein Stärke-Byte und die tatsächlich unter der
Verschlüsselung verwendete Komprimierungsmethode.
Das Stärke-Byte steuert den Rest des Schemas. Ein Wert von 1 bedeutet AES-128, 2 bedeutet AES-192 und 3 bedeutet AES-256. Aus diesem einzigen Byte kennt ein Werkzeug die Schlüssellänge, die Salt-Länge und wie viel Schlüsselmaterial abzuleiten ist.
Schlüsselableitung
Ihr Passwort wird niemals direkt als Schlüssel verwendet. WinZip AES lässt es durch PBKDF2-HMAC-SHA1 mit 1000 Iterationen und einem zufälligen Salt laufen, das mit dem Eintrag gespeichert wird. Die Salt-Länge hängt von der Stärke ab: 8 Bytes für AES-128, 12 Bytes für AES-192 und 16 Bytes für AES-256. PBKDF2 streckt das Passwort zu einem Block aus Schlüsselmaterial, der in drei Teile aufgeteilt wird: den AES-Verschlüsselungsschlüssel, einen separaten Authentifizierungsschlüssel gleicher Länge und einen 2-Byte-Passwortverifizierungswert.
Dieser 2-Byte-Wert wird im Eintrag gespeichert. Er lässt ein Werkzeug ein falsches Passwort fast sofort ablehnen, ohne etwas zu entschlüsseln, weil das korrekte Passwort dieselben zwei Bytes reproduziert. Er ist nur ein schneller Filter, kein Beweis, da zwei verschiedene Passwörter im Prinzip dasselbe Bytepaar erzeugen könnten. Die endgültige Bestätigung kommt vom Authentifizierungscode.
| Stärke-Byte | AES-Schlüssellänge | Salt-Länge | Verifizierungswert | Gespeicherter HMAC |
|---|---|---|---|---|
| 1 | AES-128 (16 Bytes) | 8 Bytes | 2 Bytes | 10 Bytes |
| 2 | AES-192 (24 Bytes) | 12 Bytes | 2 Bytes | 10 Bytes |
| 3 | AES-256 (32 Bytes) | 16 Bytes | 2 Bytes | 10 Bytes |
Verschlüsselung und Authentifizierung
Die Dateidaten werden mit AES im CTR-Modus, also im Counter-Modus, verschlüsselt. Das verwandelt die Blockchiffre in einen Schlüsselstrom und lässt einen Eintrag beliebiger Länge Byte für Byte verschlüsseln. Die Integrität wird separat behandelt. Nach der Verschlüsselung wird ein HMAC-SHA1 über den Chiffretext mit dem Authentifizierungsschlüssel berechnet, und die ersten 10 Bytes dieses HMAC werden am Ende des Eintrags gespeichert. Dies ist ein Encrypt-then-MAC-Design: Der Authentifizierungscode deckt die verschlüsselten Bytes ab, sodass ein Werkzeug überprüfen kann, ob sowohl das Passwort als auch die Daten korrekt sind, bevor es überhaupt versucht, zu dekomprimieren.
Die beiden Versionen unterscheiden sich in einem Detail. AE-1 behält die CRC-32-Prüfsumme des Eintrags im Header, was eine zweite, ältere Integritätsprüfung nach der Entschlüsselung erlaubt. AE-2 setzt das CRC-Feld auf null und verlässt sich vollständig auf den HMAC. Beide verwenden dieselbe Chiffre und dieselbe Schlüsselableitung; der Unterschied liegt nur darin, wie die Integrität festgehalten wird.
Zwei Prüfungen, ein bestätigtes Ergebnis
ZipRecover vergleicht zuerst den 2-Byte-Verifizierungswert, um falsche Versuche günstig zu verwerfen, und berechnet dann den 10-Byte-HMAC-SHA1 neu, um einen Überlebenden zu bestätigen. Ein gemeldetes Passwort hat die endgültige Prüfung bestanden, nicht nur die schnelle.
Warum es stark und langsam ist
Zwei Eigenschaften machen WinZip AES widerstandsfähig gegen das Raten von Passwörtern. Erstens hat AES selbst keine praktische Abkürzung, sodass ein Angreifer den Schlüssel nicht direkt aus dem Chiffretext wiederherstellen kann. Zweitens sind die 1000 Iterationen von PBKDF2 mit Absicht da. Einen Schlüssel aus einem Kandidatenpasswort abzuleiten kostet tausend HMAC-SHA1-Operationen je 20-Byte-Ausgabeblock (etwa viertausend bei AES-256), sodass das Testen von Passwörtern in unserer Messung mit einem Thread etwa 375-mal langsamer ist als bei einem Schema ohne Streckung (siehe wie lange die Wiederherstellung dauert). Diese Kosten sind für jemanden, der sein Passwort kennt und es einmal eingibt, trivial, aber sie machen das Raten im großen Maßstab teuer.
In der Praxis ist ein AES-verschlüsseltes Archiv, das mit einem starken, zufällig generierten Passwort gesperrt wurde, durch Raten nicht wiederherstellbar, egal wie schnell die Hardware ist. Die Wiederherstellung hat nur dann eine echte Chance, wenn das Passwort kurz ist, einem Muster folgt, an das Sie sich erinnern, oder in einer Wortliste erscheint, die Sie bereitstellen können. Diese Grenze kommt vom Schema selbst, und kein Wiederherstellungswerkzeug, unseres eingeschlossen, umgeht sie. Wie ZipRecover den Verifizierungswert und den HMAC zusammen verwendet, beschreibt wie es funktioniert. Die Übersicht über verschlüsselte ZIP-Dateien ordnet AES neben dem Legacy-Schema ein, und ZipCrypto und AES im Vergleich stellt beide nebeneinander.
Nur autorisierte Nutzung
Verwenden Sie dieses Tool nur für ZIP-Archive, die Ihnen gehören oder für die Sie autorisiert sind. Der Versuch, Dateien ohne Erlaubnis zu öffnen, kann geltende Gesetze verletzen. Siehe unsere Richtlinie zur akzeptablen Nutzung und unsere Nutzungsbedingungen.
Häufig gestellte Fragen
Kann ein starkes WinZip-AES-Passwort wiederhergestellt werden?
Nicht durch Raten. AES hat keine praktische Abkürzung, und PBKDF2 macht jeden Versuch langsam, sodass ein langes zufälliges Passwort praktisch nicht wiederherstellbar ist. Die Wiederherstellung hat nur dann eine echte Chance, wenn das Passwort kurz ist oder einem Muster folgt, an das Sie sich erinnern.
Was ist der Unterschied zwischen AE-1 und AE-2?
AE-1 behält die CRC-32 des Eintrags für eine zusätzliche Integritätsprüfung nach der Entschlüsselung. AE-2 setzt das CRC-Feld auf null und verlässt sich stattdessen auf den 10-Byte-HMAC-SHA1. Beide verwenden dieselbe AES-Chiffre und dieselbe PBKDF2-Schlüsselableitung.
Warum ist AES so viel langsamer zu testen als ZipCrypto?
WinZip AES führt für jedes Kandidatenpasswort bewusst 1000 Iterationen von PBKDF2-HMAC-SHA1 aus. In unserer Messung mit einem Thread machte diese absichtliche Streckung das Testen eines AES-Kandidaten etwa 375-mal langsamer als beim Legacy-Schema ZipCrypto, das keinen solchen Schritt hat; die Zahlen stehen unter wie lange die Wiederherstellung dauert.
Wie erkenne ich, welche AES-Schlüssellänge mein ZIP verwendet?
Das Stärke-Byte im Extra-Feld 0x9901 hält es fest: 1 bedeutet AES-128, 2 bedeutet AES-192 und 3 bedeutet AES-256. ZipRecover liest dies automatisch, sobald Sie die Datei auswählen, sodass Sie es nicht selbst untersuchen müssen.
ZIP-Verschlüsselung
Mehr zu diesem Thema
Verwandte Themen: ZIP-Passwortwiederherstellung Datenschutz und lokale Verarbeitung
Bereit, Ihr ZIP-Passwort wiederherzustellen?
Alles läuft lokal in Ihrem Browser. Ihr Archiv verlässt niemals Ihr Gerät.