IT-Sicherheit Praktikum IT-Sicherheit - Versuchshandbuch - Aufgaben Kryptografie II In diesem zweiten Versuch zur Kryptografie gehen wir etwas genauer auf die Art und Weise der Verschlüsselung mit der Blockchiffre AES und auf die Verwendung verschiedener Hashfunktionen in dem Message Authentication Code HMAC ein. Weiterhin erfahren Sie, dass die Kompromittierung eines AES-Schlüssels auch dann kaum möglich ist, wenn Teile des Schlüssels in die Hände eines Angreifers gelangen sollten. B.Sc. AI, M.Sc. AI M.Sc. EB
Einleitung Kryptografische Verfahren werden in rechnerbasierten Kommunikationsnetzen nicht nur zur Gewährleistung von Vertraulichkeit eingesetzt, sondern auch zum Schutz vor Datenmanipulation, nicht autorisierter Dienstnutzung und Abstreitbarkeit durchgeführter Aktivitäten. Mit Hilfe von CrypTool werden Einblicke in aktuelle Verschlüsselungsverfahren gewährt, Möglichkeiten der Kryptoanalyse und die Verwendung von Hashverfahren vorgestellt. Nachfolgend führen Sie exemplarisch einzelne Rundenoperationen (ShiftRow, SubByte, MixColumn, Roundkey) des im AES implementierten Rijndael-Verschlüsselungsalgorithmus durch und verwenden den HMAC- Algorithmus zur Berechnung verschiedener Hashwerte. Zugangsdaten System: Windows XP Benutzer: Administrator Passwort: seclab Netzwerkplan 2
Aufgabe 1: AES Verschlüsselungsverfahren a) Gegeben ist ein Klartextblock der zu verschlüsselnden Nachricht m und der dazugehörige geheime Schlüssel Ks. Führen Sie die initiale Verknüpfung mit dem geheimen Schlüssel vor dem Rundenstart durch und tragen Sie das Ergebnis in die dazugehörige Zustandsmatrix 1 ein. Klartext Schlüssel Zustandsmatrix 1 b) Für die Operation SubByte ist nun eine S-Box der Grösse 16 x 16 mit Werten in hexadezimaler Form gegeben. Mittels der S-Box ist nun die Operation auf obige Zustandsmatrix 1 anzuwenden. Im Ergebnis ensteht die Zustandsmatrix 2. Zustandsmatrix 2 3
c) Führen Sie nun die ShiftRow Operation durch. Dabei wird in Abhängigkeit der Blocklänge b eine Verschiebung des Inhalts der Zeilen durchgeführt. Für die Blocklänge von 32 Byte tragen Sie das Resultat in die Zustandsmatrix 3 ein. Zustandsmatrix 3 d) Für die Operation MixColumn benötigen wir die abgebildete Konstantenmatrix A. Bestimmen Sie für die leer stehenden Felder der Zustandsmatrix 4 die entsprechenden Elemente und geben Sie die Lösungsschritte an. Hinweis : Die Elemente der Zustandsmatrix 4 ergeben sich durch Multiplikation der Zeilenvektoren der Konstantenmatrix A mit den entsprechenden Spaltenvektoren der Zustandsmatrix 3. Schauen Sie sich ggf. die Ausführungen im Vorbereitungsblatt zu diesem Versuch an. Konstantenmatrix Zustandsmatrix 4 4
e) Um den gesamten Ablauf visuell nachverfolgen zu können, stehen in CrypTool 1.4 ausführliche Animationen zur Verfügung. Einzelverfahren Visualisierung von Algorithmen AES Rijndael Animation f) Desweiteren bietet CrypTool die Möglichkeit, Ihre Lösung aus Aufgabenteil d selbst zu überprüfen. Gehen sie obigen Weg, wählen Sie aber Rijndael Inspector aus. Tragen Sie den Klartextblock sowie den Schlüssel aus Aufgabenteil a ein und drücken Sie den Play Button. Die Richtigkeit ihrer Lösung können Sie in der Zeile Runde 1 kontrollieren. 5
Aufgabe 2: Kompromittierung des AES-Schlüssels a) Starten Sie CrypTool 2 und öffnen Sie den Versuch AES_Kryptoanalyse der sich auf dem Desktop befindet. Eine Einführung in die Oberfläche von CrypTool 2 finden sie im Vorbereitungsteil dieses Versuches. Führen Sie die nachfolgenden Schritte durch : Tragen Sie im Fenster Klartext eine beliebige Nachricht ein. Geben Sie einen 128 Bit Schlüssel in hexadezimaler Form an. Im AES Objekt wählen Sie Verschlüsselung mit Schlüssel- und Blockgrösse 128 Bit sowie CBC Modus. Tragen Sie einen 128 bit Initial Vector ein Der Schlüsselsucher erhält den Ciphertext des AES Objekts. Legen Sie in den Optionen des Schlüsselsuchers die notwendigen Einstellungen für die Entschlüsselung fest. Wählen Sie unter CostFunction den Funktionstyp Entropie. Unter Keysearcher können Sie den Schlüssel komplett oder nur teilweise angeben, wobei ** sogenannte Wildcards sind, also unbekannte Schlüsselteile. Beachten Sie dabei, dass der Schlüssel im Schlüsselsucher in der schreibweise (A1-E5- **-**-...) angegeben werden muss. Gehen Sie nun wie folgt vor : Schätzen Sie die Zeit, die nötig ist, um den Ks zu finden, wenn im jeweiligen Fall 104 Bit, 96 Bit und 40 Bit Ihres gewählten Schlüssels bekannt sind. Geben Sie nun im Schlüsselsucher jeweils obige Bits des Schlüssels bekannt und verwenden Sie für unbekannte Anteile Wildcards und starten Sie die Bruteforce-Suche über den Starten Button. b) Wie beurteilen Sie die Sicherheit eines AES 128 Bit Schlüssels unter der Prämisse, dass ein Teil des Ks bekannt ist? c) Geben Sie nun einen 256 Bit AES Schlüssel an und wiederholen Sie die Kryptoanalyse. Beurteilen Sie Ihr Ergebnis. 6
d) Angenommen es ist Ihnen gelungen den Ciphertext sowie den dazugehörigen Plaintext zu erlangen. Wie schätzen Sie ihre Erfolgschancen ein daraus den geheimen Schlüssel Ks zu errechnen? Öffnen Sie den Versuch AES_knownPlaintext und führen sie folgende Schritte durch : Fügen Sie in die Ciphertextbox den Inhalt der Datei Ciphertext.txt ein Wählen Sie im Schlüsselsucher unter Kostenfunktion reguläre Ausdrücke und fügen Sie im Feld regulärer Ausdruck den Klartext aus der Datei Plaintext.txt ein Geben Sie keinen Teilschlüssel an, kopieren Sie dazu das Wildcard Pattern aus der Datei Schlüssel.txt in das Feld Schlüsselsucher->Schlüssel und starten Sie den Versuch Zu welchem Ergebnis kommen Sie? a) Tauschen Sie nun die Wildcards mit dem Teilschlüssel (11-11-11-11-11-11-11-11-11-**-**- **-**-**-**-**) aus der Datei Schlüssel.txt und starten Sie den Versuch erneut. Besteht nun die Möglichkeit den Ks in endlicher Zeit zu erhalten? 7
Aufgabe 3: HMAC a) Erzeugen Sie mit Hilfe von CrypTool 2 einen HMAC unter Verwendung von MD5. Ein Teil des Versuchsaufbaus ist vorgegeben, die fehlenden Komponenten müssen von Ihnen ergänzt werden. Eine Einführung für CrypTool 2 finden Sie im Vorbereitungsblatt zu diesem Versuch. Öffnen Sie den Versuch HMAC auf dem Desktop Geben Sie eine beliebige Nachricht und einen 64 Byte langen Schlüssel in die entsprechenden Textboxen ein. Ergänzen Sie die notwendigen Funktionen zur Generierung des Hashwerts und verbinden Sie die Komponenten, ignorieren Sie die Warnungen bezüglich der Typkonversion bei Verbinden von Komponenten. Hinweis : Das Ergebnis der XOR Operation muss vom jeweiligen Konvertierer verarbeitet werden vor dem nächsten Schritt. Die bereits auf der Arbeitsfläche vorhandene HMAC Komponente dient dazu Ihr Ergebnis zu überprüfen. Starten Sie den Versuch und überprüfen Sie ihr Ergebnis. b) Welche Länge hat der berechnete Hashwert? Verlängern Sie die Nachricht und berechnen Sie den Hashwert erneut. Ändert sich die Länge des resultierenden Hashwerts? Warum erhalten Sie einen anderen Hashwert? a) Tauschen Sie die MD5 Komponente gegen eine SHA-256 Komponente aus und passen Sie die erforderliche Schlüssellänge an. Wie lang ist der errechnete Hashwert und wieso ist dies der Fall? b) Wann liegt eine starke Hashfunktion vor? 8