AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte 25facher Cäsar (einfache Verschlüsselung)
Thema durchsuchen
Ansicht
Themen-Optionen

25facher Cäsar (einfache Verschlüsselung)

Ein Thema von taaktaak · begonnen am 25. Sep 2008 · letzter Beitrag vom 29. Nov 2008
Antwort Antwort
Seite 2 von 9     12 34     Letzte »    
taaktaak
Registriert seit: 25. Okt 2007
Moin, Moin.

Aus Sorge um die Flugsicherheit auf dem Segelflugplatz von thiagojonas habe ich zum Spaß die im Buch (und Film) "Und Jimmy ging zum Regenbogen" beschriebene einfache Verschlüsselung aus der Erinnerung nachgebaut. Vielleicht kann unser Segelflieger den Code ja als Anregung nutzen:

Delphi-Quellcode:
function Schluesseln(Text,Key:String;Crypt:Boolean):String;
var i,KeyIdx : Integer;
begin
  Result:='';
  KeyIdx:=0;
  for i:=1 to length(Text) do begin
    inc(KeyIdx);
    if KeyIdx>Length(Key) then KeyIdx:=1;
    if Crypt then Result:=Result+chr(ord(Text[i])+ord(Key[KeyIdx]))
             else Result:=Result+chr(ord(Text[i])-ord(Key[KeyIdx]))
    end;
end;
Als Anhang ein kleines Beispielprogramm.
Viel Spaß

PS :
Natürlich ist das keine ernstzunehmende Verschlüsselung! Der Code ist auch in keinster Weise optimiert. Es soll einfach nur eine überschaubare Demonstration sein.


//edit:
Bevor ein anderer darauf kommt: Meine Erinnerung hat doch zu einer deutlich abweichenden Verschlüsselung geführt. Hab' noch mal im Roman nachgelesen. Dort ist das Verfahren recht gut beschrieben: Auch der verschlüsselte Text besteht dort nur aus lesbaren Buchstaben. Unabdingbar, da die Verschlüsselung nur mit Hilfe von Tabellen handschriftlich durchgeführt wurde.
Angehängte Dateien
Dateityp: zip caesar_122.zip (2,0 KB, 49x aufgerufen)
 
taaktaak

 
Delphi 7 Professional
 
#11
  Alt 21. Nov 2008, 21:53
Hallo Daniel.

Vorweg: Ich habe keine Ahnung von Krytographie - insofern verstehe ich auch die Versuche der Dechiffrierung nicht (und habe im Augenblick auch keine Zeit in dieses Thema einzusteigen).

Meinst du die Wortliste der "Zwei-Buchstaben-Worte" in deiner Unit1? Wenn ja, dann ist das gesuchte Wort in der Liste enthalten.

Der Schlüssel ist deutlich länger: 19 Zeichen

Ralph
  Mit Zitat antworten Zitat
blackdrake

 
Delphi 10.3 Rio
 
#12
  Alt 21. Nov 2008, 22:30
Hallo.

Dann ist es allerdings sehr viel schwieriger, bessergesagt zeitaufwändiger.

Ich mache ja nichts anderes als einen BruteForce, ich teste also alle Kombinationen durch.

Das Problem hier ist aber, dass man nicht nur den BruteForce machen muss, sondern auch "per Hand" (bessergesagt "per Auge") kontrollieren muss, ob das Ergebnis denn nun plausibel ist oder nicht.

Nun gabst du ja folgende Informationen:
- Der Algorithmus, mit dem Verschlüsselt wurde ist bekannt (ist er auch wirklich korrekt?? Bitte teste die Entschlüsselung mit deinem Key!)
- Der Key ist genau 19 Zeichen lang (dann muss man nicht auf ein 18, 17, 16, ... Zeichen langes Passwort prüfen)
- Das Wort mit den zwei Buchstaben ist in meiner oben genannten Liste. Dadurch kann ich direkt eine Plausibilitsprüfung in mein Programm einbauen (habe ich ja bereits getan). Heißt: Das Programm filtert nun einen Großteil der unplausiblen Resultate und zeigt nur noch resultate, die möglicherweiße der Quelltext sein könnten.

Nunja, aber 19 Zeichen benötigt ganz schön viel Rechenzeit. Für die 6 Zeichen habe ich schon Stunden gebraucht.

Es existieren nämlich 26 hoch 19 mögliche Kombinationen = 766467265200361890474622976
Daniel Marschall
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#13
  Alt 21. Nov 2008, 22:43
Hallo Daniel.

Ja, der Algorithmus ist authentisch. Bevor ich die konstanten Textinhalte entfernt habe, wurde der bekannte verschlüsselte Text damit erzeugt.

Das ist ja eine unglaublich große Menge an Kombinationen. Ich frage mich nun allerdings, wie Experten diese absolut primitive Verschlüsselung angeblich in Sekunden knacken wollen - und das unter der Rahmenbedingung, den eigentlichen Algorithmus nicht zu kennen. Damit dürfte das Dechiffrieren ja noch einmal deutlich aufwendiger werden.

Na, von denen hat sich hier ja auch keiner gemeldet


// Nachtrag: Ich mache mir um die Flugsicherheit bei den Segelfliegern nun überhaupt keine Sorgen mehr
Ralph
  Mit Zitat antworten Zitat
blackdrake

 
Delphi 10.3 Rio
 
#14
  Alt 21. Nov 2008, 22:53
Ohne den Algorithmus zu kennen kann man gar nix knacken. Da bin ich mir sehr sicher. Es gibt nämlich mathematisch gesehen unendlich viele mögliche Algorithmen, weswegen ein Algorithmus das mindeste ist, was man beim dechiffrieren braucht.

Das mit den Keys ist so eine Sache. Ich werde mal versuchen, den BF zu konkretisieren und mal mit dem Berechnen deines geheimen Schlüssels zu beginnen. Das Problem an diesem Algorithmus ist aber, dass nicht jeder falsche Key ein wirklich unlesbares Ergebnis liefert. Ein Key, der ähnlich dem korrekten Key ist, würde bei diesem Algorithmus ein lesbares Ergebnis liefern - es wären lediglich ein paar Zeichen verändert.
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

 
Delphi 2006 Professional
 
#15
  Alt 21. Nov 2008, 23:39
Da dieser Algorithmus eine einfache Transformation mit sich wiederholendem Schlüssel ist, sind da sehr wohl ab eines bestimmten Verhältnisses zwischen Schlüssellänge und Textlänge (je mehr Text desto besser) statistische angriffe möglich.

Zitat:
Das mit den Keys ist so eine Sache. Ich werde mal versuchen, den BF zu konkretisieren und mal mit dem Berechnen deines geheimen Schlüssels zu beginnen. Das Problem an diesem Algorithmus ist aber, dass nicht jeder falsche Key ein wirklich unlesbares Ergebnis liefert. Ein Key, der ähnlich dem korrekten Key ist, würde bei diesem Algorithmus ein lesbares Ergebnis liefern - es wären lediglich ein paar Zeichen verändert.
Ja, und das kann man exploiten! - nimm dir einen festen Schlüssel und mache erst einmal einen bruteforce über die ersten 10 zeichen des schlüssels. Lass die restlichen 9 Zeichen z.B. auf A stehen. Dann bruteforce nur

Zitat:
PTWAYWFZOP
, was angenehmerweise genau 10 Zeichen hat - dein ergebnis sollten jetzt schlüssel für alle deutschen wörter mit 10 zeichen sein.
(Diese Attacke funktionert selbstverständlich für jeden geheimtext, in dem die länge des ersten wortes bekannt ist, und man annehmen kann, dass der schlüssel länger als dieses wort ist)

Für alle diese Teilschlüssel schaust du dir nun das zweite wort an:

Zitat:
XRKXJVIYWARM
Den roten Teil musst du jetzt bruteforcen, das sind die letzten 9 Zeichen des Schlüssels. Für den grünen Teil kannst du bereits wieder den bereits gefundenen Teil des Schlüssels verwenden.

So solltest du denke ich ein wenig schneller ans ziel kommen.
Lukas Erlacher
  Mit Zitat antworten Zitat
blackdrake

 
Delphi 10.3 Rio
 
#16
  Alt 22. Nov 2008, 00:20
Hallo,

ja, wenn man in etwa weiß, welcher Typ von Algorithmus vorliegt, kann man statistische Angriffe durchführen.

Diese zyklische Wiederholung ist ein Defizit des Algorithmus, aber deine vorgeschlagene verkürzte BruteForce Variante würde zwar Rechenzeit einsparen, dafür eine erhöhte Plausibilitätsprüfungszeit beanspruchen.

Seien die ersten 10 Zeichen ein deutsches Wort, müsste ich 26^10 = 141167095653376 verschiedene Wörter betrachten und bestimmen "ist ein Wort, ist kein Wort", außer ich würde ein Wörterbuch, welches jedoch unvollständig sein könnte zur Hilfe ziehen / implementieren.

In diesem Fall weiß ich zumindestens durch den Tipp, dass das 2er Wort eines der obrigen Wörter ist (wobei ich sogar glaube, dass das alle deutschen 2-Buchstaben-Wörter sein müssten).

Jedenfalls habe ich jetzt das Crackprogramm auf statische 19 Zeichen festgelegt und eine kleine Zwischenspeicherfunktion eingebaut, die sich den Zustand der ineinanderverschachtelten For-Schleifen merkt. Dann kann ich mal die nächsten Wochen im Hintergrund rechnen, weil mich interessiert, was da im Geheimtext steht

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

 
Delphi 2006 Professional
 
#17
  Alt 22. Nov 2008, 00:21
naja, das ganze nennt sich "dictionary attack" nicht deswegen, weil man KEIN wörterbuch benutzt
Lukas Erlacher
  Mit Zitat antworten Zitat
blackdrake

 
Delphi 10.3 Rio
 
#18
  Alt 22. Nov 2008, 15:45
Naja, ich hab keine Lust ein Wörterbuch einzubauen

Hier der Cracker V3, der seine letzte Position speichert.

Ich bin im Moment bei AAAAAAAAAAAAAGLDJSU...
Angehängte Dateien
Dateityp: zip cracker3_140.zip (490,3 KB, 6x aufgerufen)
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

 
Delphi 7 Personal
 
#19
  Alt 22. Nov 2008, 16:31
ich hab eine Frage zu dem Text den es zu entschlüsseln gilt. Ist es so das dein "A" Beispielsweise in wirklichkeit ein "B" ist und dann dein "B" ein "C" usw?

Ich verstehe nicht ganz was das für ein seltsamer Schluessel sein soll?!

Kann mir jemand das mal erklären?
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#20
  Alt 22. Nov 2008, 16:39
Na, ich lass mich überraschen, ob der Text noch gefunden wird

Aber noch mal eine grundsätzliche Frage:

Ich habe das jetzt jetzt so verstanden, dass dieser gezielte Versuch den Text zu entschlüsseln wesentlich darauf aufbaut, dass sowohl das Verschlüsselungsverfahren, die Schlüssellänge und insbesondere die Sprache des Textes bekannt sind. Trotz dieser offensichtlich sehr hilfreichen Informationen ist das ganze noch extrem aufwendig und aufgrund eines nicht vorhandenen Wörterbuches auf eine direkte menschliche Mithilfe angewiesen.

Nun machen wir das in diesem Fall nur so zum Spaß. Aber es gibt ja sicherlich bei den Geheimdiensten (oder wo auch immer) tatsächliche derartige Anwendungsfälle. Dort werden die vorgenannten hilfreichen Informationen nicht bekannt sein. Trotzdem sollen derartige Institutionen einen Text, der mit einem solch einfachen Verfahren verschlüsselt wurde, sehr schnell dechiffrieren können. Wenn das nicht so wäre, dann gäbe es wohl keine besseren Verschlüsselungstechniken.

Was machen die Profis aber anders? Haben die lediglich bessere Hardware? Selbst wenn dort grundsätzlich mit Wörterbüchern gearbeitet wird - es gibt ja eine ganze Menge Sprachen, in denen der Text geschrieben worden sein könnte.

Auf jeden Fall habe ich jetzt meine Zweifel, ob die Aussage, ein so einfacher Schlüssel "kann in Sekunden geknackt werden" - überhaupt zutrifft. Und da viele Information nur wertvoll sind, wenn sie zeitnah bekannt sind, denke ich, dass für den hausgebrauch so ein simpler "alter Caesar" durchaus seine Daseinsberechtigung hat
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 9     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 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