Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Angriff auf die Vegenere-Chiffre (https://www.delphipraxis.net/67776-angriff-auf-die-vegenere-chiffre.html)

Nikolas 19. Apr 2006 18:45


Angriff auf die Vegenere-Chiffre
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe ein Programm geschrieben mit dem man die Vigenere-Verschlüsselung knacken kann. Dieser Angriff wurde von Charles Babbage vor etwa 150 Jahren entwickelt. Heutzutage wird dieser Code wohl kaum noch benutzt. Aber weil ich nichts besseres zu tun hatte, habe ich mich mal dran gesetzt und diesen Angriff implementiert.
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 Das Lied von der Glocke und verschlüssle es mit dem Wort 'Goldhamster'. Das sollte recht einfach zu knacken sein, da die Glocke etwa 10000 Zeichen lang ist und der Schlüssel nur 11.

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:
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 
(...)
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.
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: Problem mit den Trackbars gelöst
// Neue Version: Noch ein kleiner Fehler weniger.

Vielen Dank an alle, die mir bei der Trackbar geholfen haben :party:

vlees91 25. Apr 2006 16:10

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 :!:

Nikolas 25. Apr 2006 16:14

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.

Nikolas 11. Mai 2006 14:27

Re: Angriff auf die Vegenere-Chiffre
 
Wie siehts aus? Hat noch jemand eine Meinung zu diesem Programm?

Pump3r 11. Mai 2006 15:17

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.

Nikolas 11. Mai 2006 15:27

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.

MyFrag 24. Mai 2006 06:36

Re: Angriff auf die Vegenere-Chiffre
 
thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz