aicher1998
Goto Top

Verschlüsselung zurück rechnen

Hallo,

ist es allgemein möglich, bei verschlüsselten Daten (insbesondere bei AES) den Code zu errechnen, wenn man den unverschlüsselten und den verschlüsselten Text hat?

Beispiel:

Ausgangstext: Hallo
Code: myCode
Verfahren: AES (ECB)
Ausgabe: f5 81 47 02 d1 4a d1 0f 50 5c 18 61 81 53 44 0a

Jetzt würde mich interessieren, ist es möglich anhand der Daten Ausgangstext, Verfahren und Ausgabe den verwendeten Code zu errechnen?
Und wieso bekomme ich auf http://aes.online-domain-tools.com/ eine hexadezimale Schreibweise als Ausgabe, die als Text ziemlich kryptische Zeichen hat? Würde ich das ganze in Visual Basic verschlüsseln, dann hätte man einen Code der mit == anfängt und nur geläufige Zeichen enthält.

Auf eine Antwort wäre ich euch sehr dankbar,

Chris Aicher

Content-Key: 292051

Url: https://administrator.de/contentid/292051

Printed on: April 25, 2024 at 23:04 o'clock

Member: Th0mKa
Th0mKa Jan 01, 2016 at 16:08:43 (UTC)
Goto Top
Zitat von @Aicher1998:

ist es allgemein möglich, bei verschlüsselten Daten (insbesondere bei AES) den Code zu errechnen, wenn man den unverschlüsselten und den verschlüsselten Text hat?


Moin,

Nein, das geht bis dato mit AES nicht.

https://en.wikipedia.org/wiki/Known-plaintext_attack

VG,

Thomas
Member: Aicher1998
Aicher1998 Jan 01, 2016 at 16:28:47 (UTC)
Goto Top
Zitat von @Th0mKa:

Zitat von @Aicher1998:

ist es allgemein möglich, bei verschlüsselten Daten (insbesondere bei AES) den Code zu errechnen, wenn man den unverschlüsselten und den verschlüsselten Text hat?


Moin,

Nein, das geht bis dato mit AES nicht.

https://en.wikipedia.org/wiki/Known-plaintext_attack

Ist es erweisen, dass es nicht geht? Oder vermutet man es?
Oder würde es mit unvorstellbarer Rechenleistung schaffen?

wie schaut es bei anderen Verschlüsselungsmethoden aus? Beim WLAN zum Beispiel?
Member: Th0mKa
Solution Th0mKa Jan 01, 2016 updated at 16:57:51 (UTC)
Goto Top
Zitat von @Aicher1998:

Ist es erweisen, dass es nicht geht? Oder vermutet man es?
Oder würde es mit unvorstellbarer Rechenleistung schaffen?

Wer ist "man"? Bisher hat noch niemand gesagt das er es geschafft haette. Fuer alles weitere zum Thema empfehle ich Nutzung der Suchmaschinen deiner Wahl, selber lesen macht schlau.

VG,

Thomas
Member: StefanKittel
StefanKittel Jan 01, 2016 at 18:01:11 (UTC)
Goto Top
Hallo,

das ist eine grundsätzliche Frage zu verschlüsselungssystemen.

Diese sind mathematisch sicher.
Es wurde also mathematisch bewiesen, dass ein zurückrechnen nicht möglich ist.

Es bleiben immer 2 Möglichkeiten.
1) Einfach alle Möglichkeiten der Reihe nach ausprobieren (Brute Force)
2) Nach Schwachstellen bei der Implementierung schauen (immer die gleiche Zufallszahl, etc).

Mit unendlicher Rechenleistung ist jede Verschlüsseung per Brute-Force zu knacken.
Was also heute noch sicher ist, ist es in 10 Jahren vermutlich nicht mehr aufgrund der gestiegenen Rechenleistung.

Die "Sicherheit" basiert darauf den Aufwand für Brute-Force so hoch wie notwendig und die benötigte Rechenleistung so gering wie möglich zu setzen.
Also wird mit der Zeit einfach die Datenmenge erhöht. von 1KBit über 2KBit zu jetzt 4KBit für z.B. Zertifikate.
In Zukunft dann halt 8KBit und 16KBit usw.

Mein Fazit: Eine Verschlüsselung bei der es unendlich viele Versuche gibt kann auf theoretischer Ebene nicht sicher sein.
Aber natürlich kann Sie im Jetzt und Hier sehr sicher sein.

Viele Grüße

Stefan
Member: aqui
aqui Jan 02, 2016 at 13:21:49 (UTC)
Goto Top
Member: LordGurke
Solution LordGurke Jan 02, 2016, updated at Jan 06, 2016 at 11:08:06 (UTC)
Goto Top
Wenn man Kenntnis vom Klartext hat gibt es Möglichkeiten über "Known Plaintext Attacks" die Verschlüsselung leichter anzugreifen.
Um Bruteforce kommst du zwar weiterhin nicht herum, wenn du aber weißt wonach du suchst werden die Bruteforce-Attacken deutlich einfacher.

Die von dir eingesetzte Betriebsart ECB ist für diese Art Angriff leider extrem anfällig - denn sie bildet relativ kurze Blöcke, die dann separat für sich mit dem geheimen Schlüssel verschlüsselt werden. Das ist doof, weil du dabei wiedererkennbare Blöcke erzeugst (gleiche Klartextmuster egeben gleiche verschlüsselte Muster).
Das ist bei deinem kurzen Text noch nicht so richtig sichtbar, da die Blöcke in der Regel zwischen 64 und 128 Bit lang sind.

Wenn du dich dagegen schützen willst, solltest du CBC als Betriebsmodus verwenden. Der bildet zwar auch einzelne Blöcke, verknüpft diese aber vor der Verschlüsselung per XOR mit dem vorherigen Block - das führt dann dazu, dass du keine wiedererkennbaren Muster hast, selbst wenn du darin eine Textdatei verschlüsselst, die nur 5.000 Leerzeichen enthält. Und das wiederum erschwert unter anderem die Known Plaintext Attacks.
Für CBC benötigst du für die Verschlüsselung des ersten Blocks einen "Initialitation Vector", dessen Länge einer Blocklänge entspricht.
Der wird für die Verschlüsselung des ersten Blocks benötigt und muss bei der Entschlüsselung bekannt sein - er ist aber nicht besonder "Schutzbedürftig" und kann daher einfach den verschlüsselten Daten vorangestellt in der Datei übertragen werden. Man sollte als IV etwas nehmen, was nicht vorhersagbar ist - z.B. zufällig generierte Zahlen multipliziert mit dem aktuellen Timestamp oder sowas.


Beispiel für AES-ECB:
Als Input habe ich einfach 32x das Zeichen "A" und direkt danach 32x das Zeichen "Z" geschrieben, so dass wiedererkennbare Muster entstehen können.
(16 Zeichen ergeben jeweils 128 Bit Input). Die daraus entstehenden verschlüsselten Daten sind:

b5 e7 60 b4 85 55 33 c3 dc 6e ca 9a dd a5 2c 4b
b5 e7 60 b4 85 55 33 c3 dc 6e ca 9a dd a5 2c 4b
5c 54 2c 58 d9 52 2b 7e 79 a0 47 44 22 b4 e6 72
5c 54 2c 58 d9 52 2b 7e 79 a0 47 44 22 b4 e6 72

Man erkennt relativ deutlich, wo wiederholende Zeichenketten sein müssten face-wink
Da man jetzt für eine Bruteforce-Attacke (sofern man den Inhalt im Klartext kennt) nur noch ein einziges kurzes Muster entschlüsseln können muss, reduziert sich der Aufwand gewaltig da per Bruteforce gegen zu hämmern.


Das gleiche im CBC-Modus:

8e 73 40 07 d1 10 d9 22 60 79 38 d0 e0 71 55 2c
02 36 ba 9c 66 90 1a 3d 6d 75 be 2f f1 fb 5a 9b
d1 79 56 a4 51 b9 be 5d ff 97 da 80 f4 c0 74 2e
5a 4a 49 bd 69 f8 f7 a0 ff 8b 8b a1 69 90 92 1d

Initialitation Vector: 31 52 71 fe 70 ed 9f c9 36 50 c7 8b 68 2b 3c 38

Trotz wiederholender Daten gibt es keine wiederholenden Muster.


Um deine Frage dahingehend noch etwas zu beantworten:
Es gibt verschiedene Möglichkeiten die verschlüsselten Daten auszugeben - als Hexadezimal-Repräsentation oder als Base64 oder...
Fakt ist aber, dass du den verschlüsselten Text nicht mehr mit normalen ASCII-Characters darstellen kannst und demzufolge die Daten "Binary Safe" übertragen musst.
Member: Aicher1998
Aicher1998 Jan 06, 2016 at 11:08:58 (UTC)
Goto Top
Vielen Dank für deine ausführliche Antwort!