Zitat von
glkgereon:
Das ist schlicht und einfach falsch! (*froi* das ich das mal zu hagen sagen darf
)
Denn mit hoher Wahrscheinlichkeit wird ein Und kein zweites mal wieder als das selbe wort kodiert!
Hui, wenn du dich da mal nicht zu weit rausgelehnt hast. So wie ich das sehe, hat die Index-Datei immer so viele Woerter wie der zu kodierende Text selber. Entweder das, oder du hast nicht genug Code hergegeben. Ich finde z.B. beim besten Willen nicht heraus, wo du WL.Count hernimmst.
So, wenn jetzt diese Index-Datei immer dieselbe Laenge hat, wie der Text, dann wird jedes Wort immer mit demselben Wort ersetzt werden, also z.B. "aber" immer durch "und". Da hast du dann mit einer lexikalischen Analyse seeehr leichtes Spiel.
Mal als Beispiel: wir hatten bei der Info-Klausur im letzten Semester nen RSA-Algorithmus, den wir analysieren und korrigieren sollten; da war ein grosser Fehler drin. Der Fehler war, dass Zeichen fuer Zeichen codiert wurde, und nicht ein Block der grad so gross war, dass er noch in die Berechnung der codierten Zeichen reingepasst hat. Das hat dem Algorithmus jegliche Sicherheit genommen, da ein "e" immer zum Zeichen "x" wurde, ein "s" immer zum Zeichen "y", usw. Erst durch das Kodieren von Bloecken, und nicht einzelnen Zeichen, kann man sowas sicher machen. Bei dem Algorithmus bin ich naemlich mit einer lexikalischen Analyse (oder nichtmal das, ich brauch nur Buchstabenhaeufigkeiten herzunehmen) ziemlich schnell durch.
Dasselbe gilt fuer deinen Algorithmus. Ich sehe momentan nichts, was das Ding so sicher macht. Klar, du behauptest dass man mit Brute Force keinen Ansatz haette, aber den gibt es. Ich dekodiere den Text per Brute Force, was aufgrund der Schluessellaenge bei deinem Algorithmus ein Kinderspiel ist. Sobald ich ihn dekodiert habe, suche ich mir aus allen erhaltenen Texten die 10 haeufigsten Buchstaben raus. Stimmen mindestens 7 mit Erfahrungswerten der deutschen Sprache ueberein, so behalt ich den Text, wenn nicht dann werf ich ihn weg. So kann ich von 250000 moeglichen Texten ziemlich schnell auf wenige Hundert runtergehn. Wenn ich dann nochmal eine Sinnanalyse dranhaeng, dann ist das Verfahren so gut wie geknackt. Ich muss nicht nur durch Brute Force alleine durchkommen, damit ein Algorithmus unsicher ist. Fuer das oben beschriebene Verfahren braeuchte ein normaler, handelsueblicher Rechner weniger als eine Stunde. Eine Stunde ist fuer einen kryptographischen Algorithmus dermassen laecherlich, dass man ihn schon nach der ersten Analyse (die Hagen fuer dich gemacht hat) wegwirft. Nimms mir nicht uebel, es ist zwar gut dass du dich damit befasst, aber du musst einsehen, wenn etwas nicht wirklich was bringt. Die Idee ist an sich auch gut, aber es sind einige Schwachstellen in den Ueberlegungen des Algorithmus, und auch einige in der Implementierung.
Eine der Schwachstellen waere zum Beispiel, dass ich die Index-Datei mitliefern muss um den Text entschluesseln zu koennen. Das heisst, ich muss mir wieder ein sicheres Medium suchen, um die Index-Datei zu uebertragen; schliesslich hat der Algorithmus ja noch keine Passphrase. Da bist du wieder beim Problem der OTPs, das Hagen angesprochen hat. Du wuerdest also wahrscheinlich die Index-Datei mit einem asymetrisches Verfahren verschluesseln; naja, warum dann nicht den ganzen Text?
Wenn du dich wirklich mit Kryptographie und solchen Algorithmen beschaeftigen willst, dann hab ich nur einen Tipp fuer dich: hol dir richtige Buecher. Vergiss Dan Brown. Eigne dir das mathematische Wissen an, das du dafuer benoetigst. Hier geht es vor allem um Beweise, denn ein kryptographischer Algorithmus beruht am Ende nur auf dem mathematischen Beweis, dass er funktioniert und dass er nur in soundsoviel Jahren knackbar ist. Weiters, lies dich in bestehende Verfahren ein. Beginn mit der Codierung (Shannon-Fano, LZ-77, LZW), um einen Einblick zu erhalten, wie das funktioniert. Anschliessend nimmst du dir ein paar Algorithmen vor (z.B. DES, AES, RSA) und arbeitest die durch. Ein paar Hash-Funktionen koennen auch nicht schaden (mein Tipp: MD5 und SHA). Wenn du das durch hast, hast du erstens die mathematischen Vorkenntnisse, zweitens hast du ein Grundwissen zur Codierung und zu solchen Algorithmen, und du siehst worauf andere Leute beim Entwurf ihrer Algorithmen geachtet haben. Eine Stunde damit hilft dir mehr als einen Tag mit allen krypto-technischen Ideen von Dan Brown zusammen.
Greetz
alcaeus