Guest User

Untitled

a guest
Aug 18th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. \secition*{Aufgabe 1: Funktion in Postscript implementieren}
  2. In der ersten Aufgabe sollten wir eine Funktion in die rahmen.ps implementieren, die mittels einer ifelse anweisung zwischen zwei unterschiedlichen Ausgaben umschalten kann. Diese ergänzen wir mittels eines Texteditors: \\
  3. \begin{verbatim} 200 200 moveto
  4. (Dokument 1) show
  5. showpage \end{verbatim} \\
  6. Fügen wir bei /dokument1 ein, um bei dem Aufruf von document1 die Textausgabe „Dokument 1“ zu erzeugen. Das gleiche machen wir auch in dem Block /document2 und ändern Dokument 1 zu Dokument 2, sodass „Dokument 2“ bei einem Aufruf ausgegeben wird. Jetzt bauen wir die ifelse-Anweisung rein: \\
  7. \begin{verbatim} /Courier findfont
  8. 20 scalefont
  9. setfont
  10. (V1) (V2) eq
  11. {
  12. dokument1
  13. }
  14. {
  15. dokument2
  16. }
  17. ifelse \end{verbatim} \\
  18. \\
  19. V1 und V2 sind Platzhalter für die Kollisionen, die wir später suchen werden. Sind V1 und V2 gleich, wird Dokument 1 angezeigt, sind V1 und V2 ungleich, wird Dokument 2 angezeigt. Da V1 und V2 als Platzhalter natürlich unterschiedlich sind, wird auch in der Ausgabe Dokument 2 angezeigt.
  20. \\
  21. \\
  22. /section*{Aufgabe 2: Verschieben der Variable}
  23. Damit ein Angriff funktionieren kann, muss V1 am Anfang eines 512 Bit Blockes stehen, da eine Kollision in einem einzelnen Block gehasht werden muss. Hier machen wir uns zunutze, das Hashen ein iteratives verfahren ist. Wir öffnen das zuvor geschriebene Dokument mit einem Hexeditor und verschieben den Bezeichner V1 so, dass er genau am Anfang eines Blockes steht (Die öffnende Klammer gehört also noch zu dem vorherigem block). Günstiger Weise reicht für diese Verschiebung genau ein Leerzeichen.
  24. \\
  25. /*Hier bitte Schritt2.jpg einfügen*/
  26. \\
  27. Wir kopieren diese Datei und ändern in der Kopie den Bezeichner V1 zu V2, sodass in der Kopie also V2 mit V2 verglichen wird. Diese Aussage ist immer wahr und somit erzeugt Postscript die Ausgabe „Dokument 1“, während erstere Datei die Ausgabe „Dokument 2“ erzeugt. Wir überprüfen noch die MD5-Summen mittels md5sum und erhalten: \\
  28. \begin{verbatim} d41d8cd98f00b204e9800998ecf8427e\end{verbatim} und
  29. \begin{verbatim} c88b68e90f90d56bf3ffa80eee424248\end{verbatim}.
  30. \\
  31. \\
  32. \section*{Aufgabe 6: Erstellen des manipulierten Dokumentes}
  33. Nachdem wir eine Kollision gefunden haben, müssen wir damit noch das Dokument präparieren und untersuchen. Wir öffnen wieder die Postscriptdatei, in der V1 und V2 steht in einem Hexeditor und ersetzen diese durch die beiden gefundenen Kollisionen. Ein besonderes Augenmerk mussten wir hierbei auf absolute Richtigkeit beim Kopieren legen. Geht ein Zeichen unter ist der ganze Versuch hinüber. Außerdem ist eine Fehlersuche aufgrund zweier unterschiedlicher Hashwerte so gut wie unmöglich. Aus diesem Grunde haben wir genau darauf geachtet, dass die eingefügten Blöcke exakt 512 Bit groß sind. Ein glücklicher Zufall war es, dass in unserer berechneten Kollision keine Klammern vorkamen. Eine geschlossene Klammer zum Beispiel hätte das Ende der Variablen markiert und das Postskript hätte nicht mehr funktioniert. \\
  34. Gleiches machen wir auch mit der abgewandelten Kopier der Datei, wo V2 mit V2 verglichen wird und ersetzen da V2 mit dem zweiten Wert der Kollision, sodass in diesem Dokument auch weiterhin zwei gleiche Werte verglichen werden. \\
  35. Nun sollten die beiden Dateien eigentlich den gleichen Hashwert erzeugen. Dies überprüfen wir wieder mittels md5sum und tatsächlich haben wir für beide Dokumente den gleichen Hashwert. \\
  36. \begin*{verbatim}
  37. md5sum schritt6a.ps
  38. e6d46f608b43657ba9e47cfb6a600e16 schritt6a.ps
  39. md5sum schritt6b.ps
  40. e6d46f608b43657ba9e47cfb6a600e16 schritt6b.ps
  41. \\
  42. Das fälschen der Signatur hat funktioniert, aber wir wisse noch nicht sicher, was für Ausgaben die beiden Dokumente erzeugen. Deswegen schauen wir uns mit PS-View noch einmal die beiden Post Script Dateien an und stellen fest, dass der eingebaute Schalter noch funktioniert und beim ersten Dokument Ungleichheit und beim zweiten Dokument Gleichheit in der ifelse-Anweisung besteht und somit die beiden unterschiedlichen Ausgaben „Dokument 1“ und „Dokument 2“ entstehen.\\
  43. Wir waren also mit unserem Angriff erfolgreich und waren in der Lage die Gleiche MD5-Summe von zwei Dokumenten zu erzeugen, welche einen völlig frei wählbaren Inhalt besitzen können. \\
  44. \begin{verbatim} \end{verbatim}
Add Comment
Please, Sign In to add comment