Ansichten eines Informatikers

Kryptographische Schwäche in PDF-Dateien?

Hadmut
2.1.2009 0:15

Nur so am Rande: Gerade ist mir etwas aufgefallen.

Sicherlich schon tausendmal entdeckt, aber eine direkte Erwähnung habe ich jetzt nicht gefunden. Man kann es auch nicht ernsthaft ausnutzen.

PDF-Dateien können verschlüsselt werden. Dabei wird nicht die ganze Datei verschlüsselt, sondern die Objekt-Struktur und Zahlen bleiben unverschlüsselt, nur Streams und Strings werden verschlüsselt. Bis PDF Version1.5 mit RC4, danach auch andere bzw. AES.

Der Haken daran: Es wird aus verschiedenen Angaben, ggf. auch dem Benutzerpasswort, ein Schlüssel für die ganze Datei erzeugt. Aus diesem werden dann für jedes Objekt wieder Unter-Schlüssel erzeugt, indem die Objektnummer und die Generationsnummer an den Dateischlüssel angehängt und das ganze gehasht wird. So entsteht für jedes Objekt ein anderer Schlüssel.

Das heißt aber auch, daß für alle Strings innerhalb eines Objektes, also innerhalb eines Dictionaries oder verschachtelter Dictionaries, derselbe Schlüssel verwendet wird. Und das ist bei RC4 nicht gut, weil RC4 ja im Prinzip nur eine Zufallsfolge ist, die per XOR mit dem Klartext bzw. Chiffrat verrechnet wird. Hat man zwei Chiffrate, die mit dem gleichen Schlüssel verschlüsselt sind, kann man sie miteinander XOR rechnen und bekommt dann als Ergebnis ein XOR der beiden Klartexte ohne die Zufallsfolge, also unabhängig vom Schlüssel. Das war ja auch der Grund, warum man die WEP-Verschlüsselung im WLAN angreifen konnte. RC4-Schlüssel darf man immer nur einmal verwenden.

So richtig ausnutzen kann man das in der Regel nicht, weil die wichtigen Informationen bei PDFs normalerweise nicht in den Strings, sondern in den Streams stehen, und da hat jeder seine eigene Objekt-Nummer, also auch seinen eigenen Schlüssel. Zumal ernsthaft mit Passwort verschlüsselte PDFs sehr selten sind, besser verschlüsselt man die Datei ganz mit einer externen Chiffre. Manchmal sind PDFs ohne Passwort verschlüsselt, also pseudoverschlüsselt, weil man den Schlüssel direkt aus der Datei errechnen kann. Wozu das gut sein soll, kann man sich durchaus fragen, es hält nur Leute ab, die das Format nicht kennen oder nicht programmieren können, es soll quasi dafür sorgen, daß nur PDF-Programme die Datei lesen können, aber “doofe” die anderen Beschränkungen wie Druckverbote usw. nicht brechen können. Was ziemlich wirkungslos ist, da das Format ja öffentlich dokumentiert ist und man einfach nachlesen kann, wie man diese Pseudoverschlüsselung rückgängig machen kann.

Abgesehen davon, daß die Schadenswirkung vernachlässigbar ist und wohl auch niemanden interessiert, ist es immerhin eine Bemerkung wert, daß da der Fehler gemacht wird, RC4 mit demselben Schlüssel mehrfach zu verwenden.

Müßten aber eigentlich schon tausend Leute vor mir bemerkt haben. War vermutlich auch der Grund, warum sie ab 1.6 auf AES umgestiegen sind.