![]() |
Angriff auf die Vegenere-Chiffre
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe ein Programm geschrieben mit dem man die
![]() ![]() Dafür habe ich mir die Klasse TVegenere geschrieben, die die grundlegenden Funktionen wie Ver oder Entschlüsseln und ein paar andere benötigte Funktionen beinhaltet. In den anderen Units werden die einzelnen Abschnitte des Angriffs bearbeitet (Suche der Schlüssellänge und dann der Angriff gegen die monoalphabetische Verschlüsselung). Natürlich funktioniert dieses Methode nicht immer, da sie im Endeffekt auf der Häufigkeitsverteilung der Buchstaben aufbaut. Wenn also der Schlüssel also lang genug ist, wird das Entschlüsseln recht schwierig bis unmöglich. Hier mal ein Beispiel: Man nehme ![]() Der Angreifer nimmt jetzt diesen Text und klickt auf 'Wiederholungen im Text suchen' kopiert den Code in das linke Memo, klickt auf Start und geht sich einen Kaffee holen. Im Memo ganz rechts wird nun angezeigt, wie oft ein Wiederholung nach einer bestimmten Anzahl von Zeichen ergeben hat. Nach den ersten 1500 Zeichen sieht dass dann so aus:
Code:
Daraus muss man nun die richtige Schlüssellänge raussuchen. Auffallend ist hier, dass neben den kleinen Zahlen alle anderen durch 11 teilbar sind. Somit kann man hier davon ausgehen, dass der Schlüssel 11 Zeichen lang ist. Damit ist die Chiffre eigentlich schon geknackt. Denn jetzt weiss man, dass sich der Schlüssel alle 11 Zeichen wiederholt.
Länge 2 --> 688
Länge 22 --> 597 Länge 3 --> 546 Länge 33 --> 487 Länge 4 --> 406 Länge 11 --> 365 Länge 44 --> 351 Länge 5 --> 348 Länge 6 --> 342 Länge 55 --> 308 Länge 7 --> 303 Länge 66 --> 301 Länge 77 --> 249 Länge 8 --> 246 Länge 9 --> 224 Länge 88 --> 216 Länge 99 --> 191 (...) Nimmt man jetzt das 1, 12, 23 usw. Zeichen, weiss man, dass alle mit dem gleichen Buchstaben verschlüsselt wurden und damit die gleiche Buchstabenverteilung wie der gesamtze Text haben. Damit hat man nur noch eine einfache monoalphabetische Chiffre zu knacken. Dafür nimmt man das dritte Formular und gibt unten den verschlüsselten Text ein. In der mittleren Trackbar stellt man nun die Schlüssellänge auf 11. Der linke Regler bleibt erst mal auf 1. Drückt man nun den Zeichnen-Button sieht man in Schwarz die Verteilung der Buchstabenmenge bestehend aus dem 1,12.. Buchstaben. Anscheind ist hier das K am häufigsten. Aktiviert man den Schatten sieht man in Rot die Verteilung in der deutschen Sprache. Mit der Trackbar ganz recht kann man nun die schwarzen Balken so, dass sie am Besten mit den Roten in Überdeckung stehen. Über der Trackbar kann man nun den ersten Buchstaben des Codewortes ablesen. Stellt man den linken Regler nun auf 2 wird die Menge der Buchstaben mit den Nummer 2,13,24,... angezeigt. Gleiches Spiel von vorne usw. Nach und nach erhält man so den Schlüssel. Einen einfach Caesar kann man somit natürlich auch knacken, in dem man die Schlüssellänge auf 1 setzt. Der Code ist sicher nicht optimal was die Laufzeit angeht, wer will kann ihn ja verbessern. Lizenztechnisch darf jeder mit dem Programm machen, was er will, es soll aber deutlich zu erkennen sein, wer den Code geschrieben hat. // Neue Version: ![]() // Neue Version: Noch ein kleiner Fehler weniger. Vielen Dank an alle, die mir bei der Trackbar geholfen haben :party: |
Re: Angriff auf die Vegenere-Chiffre
Also für Leute die die Vigenere Verschlüsselung noch verwenden ist es sehr gut! ;)
Aber kann es sein, dass dein Programm ineffizient arbeitet? Denn es dauert einige Zeit, bis es fertig ist. Ich kann mich noch erinnern, dass ich vor 4 Jahren soetwas mal in VB gemacht habe (nur die doppelten Vorkommen zählen), und das wesetntlich schneller ging. Leider habe ich das Programm nach einem format nicht mehr (vor der formatierung dachte ich, dass es nicht wert ist gebackeupped zu werden) sonst ist deine vorgehensweise gut :!: |
Re: Angriff auf die Vegenere-Chiffre
Hey, endlich jemand, der was dazu sagt.
Ja, der Code soll nur zeigen, wies geht und ist nicht optimiert. Die Suche nach Mehrfachen ist recht Brute-Force mässig und könnte noch deutlich beschleunigt werden, da bis jetzt z.B. jedes Buchstabentrippel mit jedem anderen verglichen wird, womit der Ausführung natürlich mit steigender Textlänge sehr stark ansteigt. |
Re: Angriff auf die Vegenere-Chiffre
Wie siehts aus? Hat noch jemand eine Meinung zu diesem Programm?
|
Re: Angriff auf die Vegenere-Chiffre
wow, respekt :)
hmm, kannst du mir sagen, für was der schatten bei deinem FProb ist? das versteh ich net so ganz EDIT: Achja und beim ver und entschlüsseln, wenn ich keinen Schlüssel angeb, dann friert das Programm ein, könntest jan och ne überprüfung rein hauen. |
Re: Angriff auf die Vegenere-Chiffre
In diesem Schritt wird ein Teil des verschlüsselten Textes mit der normalen Buchstabenverteilung verglichen. Das e ist z.B. der häufigste Buchstabe im Deutschen usw.
Wenn man die richtige Schlüssellänge hat, werden jetzt nur noch die Buchstaben aus dem Code angezeigt, die mit dem gleichen Buchstaben verschlüsselt wurden, also so wie in der Caesar-Chiffre. Durch diese Verschiebung wurde an der Wahrscheinlichkeitsverteilung nichts verändert. Wenn z.B. mit einem 'b' verschlüsselt wurde, ist jetzt statt 'e' das 'g' der häufigste Buchstabe. Der Schatten stellt die normale Verteilung da, so dass man jetzt nur noch beide Grafiken zur Deckung bringen muss, um zu wissen, mit welchem Buchstaben verschlüsselt wurde. |
Re: Angriff auf die Vegenere-Chiffre
thx
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz