[AES] Von Klartext und verschlüsseltem Text auf Key schließen?

feuerfuchs

Lt. Commander
Registriert
Dez. 2007
Beiträge
1.100
Hi,

habe mich für dieses Forum entschieden, vielleicht wäre der Sicherheitsbereich auch besser, aber naja ;)
Die Frage ist folgende: Wenn ich von einer AES-Verschlüsselung den Klartext und den verschlüsselten Text kenne, kann man dann den Key (eindeutig) berechnen?
Falls ja, ist dies leicht / schnell gemacht, oder sehr aufwändig?

Danke für eure Antworten,
MfG feuerfuchs
 
Nein, das funktioniert nur bei Stromverschlüsselungs-Verfahren, die auf der XOR-Operation basieren.
 
feuerfuchs schrieb:
Hi,

habe mich für dieses Forum entschieden, vielleicht wäre der Sicherheitsbereich auch besser, aber naja ;)
Die Frage ist folgende: Wenn ich von einer AES-Verschlüsselung den Klartext und den verschlüsselten Text kenne, kann man dann den Key (eindeutig) berechnen?
Falls ja, ist dies leicht / schnell gemacht, oder sehr aufwändig?

Danke für eure Antworten,
MfG feuerfuchs

Ja, das geht, wenn auch nicht 1:1, da AES ein komplexes Verfahren ist:

Code:
    ...
    This technique is a divide-and-conquer attack. To find an unknown key, 
    they partition all the possible keys into a set of groups. This is possible 
    because AES subkeys only have small differences between rounds. 
    They can then perform a smaller search for the full key because they 
    can reuse partial bits of the key in later phases of the computation
    ...

z.B.: http://www.theregister.co.uk/2011/08/19/aes_crypto_attack/
 
feuerfuchs schrieb:
Hi,

habe mich für dieses Forum entschieden, vielleicht wäre der Sicherheitsbereich auch besser, aber naja ;)
Die Frage ist folgende: Wenn ich von einer AES-Verschlüsselung den Klartext und den verschlüsselten Text kenne, kann man dann den Key (eindeutig) berechnen?
Falls ja, ist dies leicht / schnell gemacht, oder sehr aufwändig?

Danke für eure Antworten,
MfG feuerfuchs

Du kannst ihn _nicht_ eindeutig berechnen. Du kannst aber Bruteforcen, dh du probierst alle möglichen Schlüssel über deinen Klartext und vergleichst das Ergebnis mit dem Schlüsseltext. Wenn das Ergebnis übereinstimmt hast du den Schlüssel. Es gab bei AES glaube vor 1 oder 2 Jahren ein Paper, bei dem dieses Verfahren noch etwas optimiert wurde, aber mehr als ein oder 2 Bit der Schlüssellänge hat das AFAIR nicht wegoptimiert.

Also kurz gesagt: mit Klartext & Schlüsseltext kannst du wenn du alle Schlüssel durchprobierst den richtigen ermitteln, allerdings nicht in praktikabler Zeit.
 
Was du beschreibst nennt sich in der Kryptographie "known-plaintext attack" ;)
Und mit dem Begriff findet man dann auch heraus, dass AES gegen diesen Angriff sicher [1] ist. Ich habe zwar nie verstanden, warum dem so ist, aber es scheint so zu sein.

@mambokurt: Dann ist es aber auch nur ein Bruteforce-Angriff ;) Und somit ist der Plaintext nur wichtig um die richtige Entschlüsselung zu kennen, was man aber auch nicht unbedingt braucht, wenn die verschlüsselte Datei ein festes Datenformat hat oder man die Korrektheit anderweitig erkennen kann.

[1] http://security.stackexchange.com/q...on-key-given-the-plaintext-and-its-ciphertext
 
Zuletzt bearbeitet: (zu dämlich Kryptographie richtig zu schreiben...)
Danke für die zahlreichen Antworten!

Dass ich es richtig Verstanden habe:
Angenommen ich programmiere einen Browser, der u.a. Passwörter speichert. Wenn ich diese Passwörter verschlüsselt auf der Festplatte ablege, wobei der Key und der Entschlüsselungsalgorithmus im Programmecode des Browsers enthalten sind, müsste es "sicher" sein. Simmt das? ;)
 
@ice-breaker: habe es nur kurz überflogen, aber steht dort irgendwo eine richtige Begründung?

Ich habe es etwas anders in Erinnerung. Ja, man nimmt an, dass AES sicher ist gegen known-plaintext Attacken. Es ist jedoch nicht so, dass AES systematisch (also aufgrund eines Prinzips, an dem es nichts zu rütteln gibt) sicher ist gegen known-plaintext Attacken. Bis heute konnte man wohl auch nicht beweisen, dass das so ist.

Warum man trotzdem annimmt, dass es sicher ist: viele schlaue Köpfe haben AES gebaut mit dem Ziel, nicht für known-plaintext Attacken anfällig zu sein. Und viele andere schlaue Köpfe hatten bis heute keinen Erfolg mit dieser Art der Attacke an AES. Aber das war es dann auch schon. Vielleicht kommt in ein paar Jahrzehnten trotzdem jemand daher, der es kann. Es ist unwahrscheinlich, aber eben nicht systembedingt ausgeschlossen.
 
Was heisst sicher? Also genauer gesagt: sicher vor was?

@carom: Nein, wie du schon sagst, da man die Sicherheit bei AES nicht beweisen kann, gibt es auch keine richtige Begründung. Das ist wie mit der RSA-Verschlüsselung, die hält man ja auch nur für sicher, weil man nicht denkt, dass es einen effizienten Algorithmus zur Primfaktorzerlegung gibt. Genauso wie El Gamal mit dem diskreten Algorithmus und viele weitere Kryptoalgorithmen.
 
Zuletzt bearbeitet:
feuerfuchs schrieb:
.... wobei der Key und der Entschlüsselungsalgorithmus im Programmecode des Browsers enthalten sind, müsste es "sicher" sein. Simmt das? ;)

Relativ sicher, da Ottonormal nicht dran kommt. Aber SICHER sind festgecodete Passwörter nicht wirklich. (Besonders direkt als String)
 
Der Programmcode hilft gar nichts. Du hast dann verschlüsselte Passwörter, den Schlüssel und den Algorithmus. Daraus kannst du aber noch lange nicht auf den Klartext der Passwörter schließen, außer über Brute Force.
 
Er will in beide Richtung in einem Programm mit festcodierten Passwort, eine Art Passwort-Manager.

Und bei sowas ist festcodiert (normalerweise) fahrlässig, besonders da sich TE nicht besonders gut mit dem Thema auskennt. ; )

Ist nur eine Kosten-Nutzen-Frage.
 
Zuletzt bearbeitet:
Mit festem Passwort ist es wirklich sinnlos, das hatte ich komplett überlesen. Mit genug Initiative kommt man da an das Passwort ran, und im Gegensatz zu nem Bruteforce-Angriff braucht man da keine Jahre.
 
ice-breaker schrieb:
@mambokurt: Dann ist es aber auch nur ein Bruteforce-Angriff ;) Und somit ist der Plaintext nur wichtig um die richtige Entschlüsselung zu kennen, was man aber auch nicht unbedingt braucht, wenn die verschlüsselte Datei ein festes Datenformat hat oder man die Korrektheit anderweitig erkennen kann.

Ist korrekt, das erleichtert die Sache aber auf jeden Fall ;)

Angenommen ich programmiere einen Browser, der u.a. Passwörter speichert. Wenn ich diese Passwörter verschlüsselt auf der Festplatte ablege, wobei der Key und der Entschlüsselungsalgorithmus im Programmecode des Browsers enthalten sind, müsste es "sicher" sein. Simmt das?

Wer sagt dass niemand an den Key im Browsercode rankommt? Eigentlich ist das recht einfach. Sicher wäre es, wenn der Nutzer den Key selbst eingeben könnte (mal abgesehen davon dass der Key dann irgendwo im Cache rumfliegen könnte oder ähnliches) ^^
 
Zurück
Oben