Das auf der vorherigen Seite angegebene Programm verschlüsselt die Daten schon sicher, das bedeutet das ein Hacker sehr viel Zeit aufbringen muß, um die AES-Verschlüsselung zu brechen.
Aber manchmal kann ein Hacker aus dem verschlüsselten Text schon seine Information erhalten, obwohl er keinen Versuch unternommen hat, das Verschlüsselungsverfahren zu brechen.
Nachfolgend zeige ich Euch ein paar Eingabetexte und dazu die passenden (verschlüsselten) Ausgaben:
1 2 3 4 5 6 7 |
String plaintextString = "Kaufe 100 Aktien"; plaintextByte (hex) :4B617566652031303020416B7469656E ciphertextByte (hex) :1BB731D57CF5C0679398CCDF89C19197 String plaintextString = "Kaufe 100 AktienKaufe 100 Aktien"; plaintextByte (hex) :4B617566652031303020416B7469656E 4B617566652031303020416B7469656E ciphertextByte (hex) :1BB731D57CF5C0679398CCDF89C19197 1BB731D57CF5C0679398CCDF89C19197 |
Der Angreifer kann eindeutig erkennen, das die Nachricht anscheinend aus 2 exakt gleichen Zeichenketten mit jeweils 16 Zeichen besteht.
Beim nächsten Beispiel wurde der zweite Teil des ciphertextes vom Angreifer durch den ersten Teil ersetzt und an den Empfänger geschickt. Der Originalauftrag besagte, 100 Aktien von Unternehmen 123 zu kaufen und 200 Aktien von Unternehmen 456 zu verkaufen. Das Ergebnis sieht bei Empfänger so aus, als wenn es zwei Aufträge gäbe, 100 Aktien von Unternehmen 123 zu kaufen… upps.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
keyByte (hex) :3132333435363738393031323334353637383930313233343536373839303132 plaintextString :K 100 Akt Nr123 V 200 Akt Nr456 plaintextByte (hex) :4B2031303020416B74204E7231323320562032303020416B74204E7234353620 = = = Verschlüsselung = = = ciphertextByte (hex) :E31EEE268C5102319D3EF4256E0A5EE06F371B8321D20BAB8D4AE97B1002EB14 = = = Entschlüsselung = = = decryptedtextByte (hex):4B2031303020416B74204E7231323320562032303020416B74204E7234353620 decryptedtextString :K 100 Akt Nr123 V 200 Akt Nr456 = = = Der ciphertext wurde vom Angreifer verändert = = = keyByte (hex) :3132333435363738393031323334353637383930313233343536373839303132 plaintextString :K 100 Akt Nr123 V 200 Akt Nr456 plaintextByte (hex) :4B2031303020416B74204E7231323320562032303020416B74204E7234353620 = = = Verschlüsselung = = = ciphertextByte (hex) :E31EEE268C5102319D3EF4256E0A5EE0E31EEE268C5102319D3EF4256E0A5EE0 = = = Entschlüsselung = = = decryptedtextByte (hex):4B2031303020416B74204E72313233204B2031303020416B74204E7231323320 decryptedtextString :K 100 Akt Nr123 K 100 Akt Nr123 |
Daraus solltest Du lernen: Verschlüsselung ist wichtig, aber eben nicht alles. Ich habe demonstriert wie einfach es ist, eine Nachricht zu verändern, ohne das der Empfänger eine Information über die Veränderung bekommt. Die Lösung dieses Problems werden wir später betrachten.
Eine weitere Schwäche dieser Routine ist die Tatsache, das gleiche plaintexte bei demselben key stets den gleichen ciphertext erzeugen. Auf den ersten Blick mag es positiv klingen aber es kehrt sich ins Gegenteil um, wenn der Angreifer – wie oben gezeigt – einfach Teile des ciphertextes wie Bausteine neu zusammenfügen kann und am Ende wieder ein zu entschlüsselnder decryptedtext herauskommt.
Letzte Aktualisierung: 07.11.2018