Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   CäsarChiffre 1.2 (https://www.delphipraxis.net/54263-caesarchiffre-1-2-a.html)

sECuRE 30. Sep 2005 19:55


CäsarChiffre 1.2
 
Hi,

ich möchte mein neustes Programm vorstellen, welches Text mittels der Cäsar-Methode (auch bekannt als Verschiebemethode, die bekannteste Variante davon ist wohl ROT13) verschlüsselt.

Um das Thema möglichst komplett abzudecken und mich von der breiten Masse zu unterscheiden habe ich zahlreiche Optionen eingebaut: So kann man zum Beispiel den Bereich der ASCII-Zeichen wählen, die verwendet werden, um das Alphabet zu bilden, mithilfe dessen (de)chiffriert wird (Groß-/Kleinbuchstaben, Zahlen, Sonderzeichen). Außerdem kann man den "Schlüssel" entweder durch pure Verschiebung oder durch ein Codewort bilden lassen.

Bei jeder Methode kann man die Verschlüsselung durch die Häufigkeitsanalyse knacken, daher habe ich mir eine neue Variante (denke ich zumindest ;)) namens "Starke Verschlüsselung" einfallen lassen: Beim Verschlüsseln wird, anstelle einfach das chiffrierte Alphabet 1:1 zu übertragen, dieses um 1 Zeichen verschoben. So erhält ein Buchstabe mehrere Bedeutungen und bei ausreichend langem Schlüssel ist man um einiges sicherer unterwegs... (falls einer der Profis hier einen Denkfehler darin findet, bitte korrigieren).

Screenshot ansehen (JPG-Datei, ~ 70 KB)
Programm herunterladen (ZIP-Datei, 175 KB)

Dem ZIP-Archiv liegt selbstverständlich der Quelltext bei, auch eine HTML-Version davon (zum schnellen Drucken) ist enthalten.

Ich freue mich über eure Meinung, Kritiken und Vorschläge.

cu

Edit: Changelog für v1.2:
  • Neu: Die Option "Groß-/Kleinschreibung vermischen" wurde eingebaut
  • Neu: Die Option "Leerzeichen entfernen" wurde eingebaut
  • Behoben: Die Alphabeterweiterungen wurden nicht übernommen, wenn ein Codewort gewählt wurde und die Option "Schlüssel während dem Chiffrieren verschieben" aktiviert war
  • Behoben: Der verschlüsselte Text wird nun korrekt aktualisiert
  • Behoben: Der Mindest- und Maximalwert für die Alphabetverschiebung wird nun korrekt angepasst

ripper8472 30. Sep 2005 20:22

Re: CäsarChiffre 1.0
 
deine "starke verschluesselung" ist nichts anderes als polyalphabetische verschluesselung mit einem schluesselwort von [alphabetlaenge] zeichen.
bei entsprechend grossen texten (etwa [alphabetlaenge] mal groesser als bei monoalphabetischer) laesst sich das auch wieder knacken.
dann koennte einer unter umstaenden dahintersteigen, dass du das alphabet fuer jeden buchstaben wieder um eins verschiebst und dann ist die "starke verschluesselung" futsch.

"security through obscurity" funktioniert eben nie.

sECuRE 30. Sep 2005 20:35

Re: CäsarChiffre 1.0
 
Hi,

Das ist richtig. Nur funktioniert hier eben die Häufigkeitsanalyse nicht auf Anhieb, wodurch schon mal ein Angriffspunkt weg ist. Außerdem müsste die Nachricht ja erheblich länger sein, als das Alphabet (ich gehe von dem "kompletten" Bereich aus: Groß- und Kleinbuchstaben, Sonderzeichen und Zahlen), damit man wieder Anhaltspunkte findet - für kleine Notizen/Verschlüsselung in einem Chat (wenn man den Gegenüber ärgern will) meiner Meinung nach ausreichend. Ich gebe zu, dass der Name "Starke Verschlüsselung" hier nicht passend ist, mir ist aber auf die schnelle nichts besseres eingefallen ;).

Edit: Übrigens: Es wird nicht einfach das Alphabet verschoben, sondern das bereits generierte chiffrierte Alphabet, was also aus dem Codewort besteht! So wie du es darstellst, wäre es ja eine Cäsarverschlüsselung mit fortlaufend aufsteigendem Schlüssel...

cu

ripper8472 30. Sep 2005 20:59

Re: CäsarChiffre 1.0
 
Liste der Anhänge anzeigen (Anzahl: 1)
ist es aber doch.

im uebrigen holen sofort alle in einem chat ihre rot13 decoder raus, wenn sie was komisches lesen.


/edit:
hab mal nen screenshot angehaengt.
da siehst du genau, dass ich recht hab.

ausserdem find ich die "schluesselwort" variante laecherlich. du benutzt nur den ersten buchstaben und wenn der kein grossbuchstabe ist oder das feld leer ist, bekomm ich ne fehlermeldung!

sECuRE 30. Sep 2005 21:12

Re: CäsarChiffre 1.0
 
Hi,

Stimmt, für die normale Verschiebung trifft das zu. Aber probier das Ganze mal mit einem Codewort aus. Da wird es schwieriger, weil man ja das Codewort nicht kennt. Kriegste es da auch so einfach raus?
Wir können das gerne mal testen:

Verschlüsselt: <8CEEKJKBN KR IKZ OdQqcScZUbYv 6!z!*$z,h Dp+" ri Q-xh(aDu do;?tPu.t@2?@> H&;2702Od /CK5L 3EAK JVX JZ( NTZR @Ywd"!"gzz&$!d+,y)D) $üh &(h Y,,*sapoe=<>-0@sm A8<6.><5 P@9H064G VR R9H9HIIT' LSO jWRX TXz$cvkcq %kv+ +i&PzP e,s V,PthP e-rp=>s; I=ü45/2 5<>B KB9A4G jAqq" .Q ZTZLbNX ;jRXZ" kf$ übg' 432;456 L%*arä,+r e-tlh; <nro oü1 .o68 0==?E nHE1C6H 9GMC <öXbUN+

Klartext: Willkommen in der freundlichen Community rund um Borlands Entwicklertool "Delphi". Unser Ziel ist es, eine Diskussionsplattform für den Gedankenaustausch zwischen Menschen zu schaffen, die sich beruflich oder privat mit Delphi befassen (müssen oder wollen *g*). In unserem Archiv mit über 420.000 Beiträgen findet sich für fast jedes Problem eine Lösung.

Wie lautet der Schlüssel? ;)

@dein Edit:
Aktivier mal die Checkbox "Kleinbuchstaben verwenden". Ansonsten schreib eben alles groß, damit es effektiv ist (siehste ja auch am Hinweis, wieviel Buchstaben dein Codewort nun ändert). Das mit der Fehlermeldung muss ich noch beheben, danke...

cu

ripper8472 30. Sep 2005 21:26

Re: CäsarChiffre 1.0
 
ah sorry, das mit dem passwort funktioniert.
sollte sich dennoch mit etwas probieren rauskriegen lassen.

die "starke verschluesselung" ist aber nur ein hindernis, wenn man nicht weiss, dass sie verwendet wird.

sECuRE 30. Sep 2005 21:29

Re: CäsarChiffre 1.0
 
Hi,

mag schon sein, wie gesagt, die ganze CäsarVerschlüsselung ist knackbar, nur unterscheidet sich jede Methode von der anderen im Aufwand, der wird eben von Schritt zu Schritt gesteigert. Die Sache mit dem Schlüssel lass' ich trotzdem mal so im Raum stehen - ich bin gespannt, ob das jemand schafft :).

cu

ripper8472 30. Sep 2005 21:33

Re: CäsarChiffre 1.0
 
stell die frage mal in einem matheboard und biete dazu dein programm mit code an. die knacken das sofort.

sECuRE 30. Sep 2005 21:35

Re: CäsarChiffre 1.0
 
Hi,

kennst du ein solches Board?

Das wird aber langsam recht Offtopic...

cu

himitsu 1. Okt 2005 01:08

Re: CäsarChiffre 1.0
 
Ich bin ja kein Verschlüsselungsexperte ... hab ja eigentlich nichtmal 'ne Ahnung davon,


Aber deine "Starke Verschlüsselung" kannst'e vergessen.

Im Grunde genommen verändert diese ja nur den zur Verschlüsselung verwendeten Zeichensatz durch 'ne aufsteigene Addition.
Man kann dieses also auch mit einen "anderem" Passwort und ohne "Starke Verschlüsselung" gleichsetzen.

Eine wirkliche Auswirkungen auf die Verschlüsselung ergibt sich demnach nicht daraus.

Codewort: BfrCEE
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
BCEFGHIJKLMNOPQRSTUVWXYZADBCEFGHIJKLMNOPQRSTU

wenn man nach den 26 Zeichen (beim Standardalphabet und -schlüssel) umbricht fällt das leicht auf.
BCEFGHIJKLMNOPQRSTUVWXYZAD
BCEFGHIJKLMNOPQRSTU



Deine Methode mit einem Passwort den Schlüssel zu veränder, ist ebenfalls verbesserungswürdig.
Mal so als Tipp lass mal alle Häkchen deaktiviert (also nur Großbuchstaben) und gib mal irgendein Passwort ein, was nur aus A und meinetwegen auch noch ein paar kleinbuchstaben/Sonderzeichen besteht.
Du wirst entdecken, daß überhaupt nicht verschlüsselt wird :zwinker:

Codewort: Afdsfvbcvx
Dies ist ein Beispieltext, um ROT13 zu demonstrieren.
DIES IST EIN BEISPIELTEXT, UM ROT13 ZU DEMONSTRIEREN.



Dazu gibt es auch noch 'ne "nette" Fehlermeldung, wenn in dem angegebenem Passwort kein Zeichen vorkommt, welches auch im verwendetem Zeichensatz enthalten ist.
> gib z.B. mal irgendwas keingeschriebenes ein ("Keinebuchstaben behandeln" nicht aktiviert)


Und wozu ist eigentlich dieser "Start"-Button ... die nötigen Berechnungen sollten ja schließlich nichts langandauerndes sein, so das man eigentlich 'ne LiveDecodierung verwenden könnte (also immer dann, wenn etwas verstellt, oder eingegeben wird)




Und da du ja letztendlich 'nen statischen Schlüssel von fester Länge (standardmäßig 26 Zeichen) verwendest, wiederholt sich natürlich auch die Verschlüsselung in diesem Rüthmus, was bei längerwerdenten Texten bekannter Weise schnell auffällig wird ... versucht's doch mal mit 'ner dynamischen Verschlüsselung, wo sich also der Schlüssel bei mindestens jedem Schritt verändert.



Und nein ... ich hab nichtmal in deinen Quellcode geschaut ... aber die Art, wie das CODEWORT angewendet wird, ist mir gleich aufgefallen.

> Es werden einfach die im Zeichensatz vorkommenden Zeichen ihrer Reihenfolge eintsprechend als erstes im Zeichensatz verwendet (also nach vorn verschoben), vobei die übrigbleibenden Zeichen beginnend nach dem zu Letzt nach vorn verschobenem Zeichen weitergezählt werden.

Also ist deine Aussage, das die Verschlüsselung mit zunehmender Länge der Paswortes ebenfals zunimmt eindeutig falsch.
Praktisch ist es sogar leicht möglich, daß ich bei einem Buchstabe anfange und obwohl das Codewort stückchenweise bis ins unendliche verändert wird, sich die Verschlüsselung allerdings nicht verändert.

sECuRE 1. Okt 2005 01:20

Re: CäsarChiffre 1.0
 
Hi,

zuallererst: "Kannst'e" kannste bitte auch schnell wieder vergessen. Bitte kein Apostroph hier. ;)

Dann: Ja, wenn man die Kleinbuchstaben, Sonderzeichen und Zahlen nicht mit einbezieht und als Nachricht einen sich ständig wiederholenden Buchstaben verwendet kann selbst die beste Verschlüsselung basierend auf Cäsar nichts mehr retten ;). Das hat ripper8472 auch schon geschrieben.

Die "Starke Verschlüsselung" werde ich wohl umbenennen in "Schlüssel während dem Verschlüsseln verschieben" - es sollte nur signalisieren, dass es etwas mehr Sicherheit bietet, als das standardmäßige Verfahren, in dem man auch ohne technische Hilfsmittel mit einer Häufigkeitsanalyse schnell zum Ziel kommt.

Die Anregung mit dem Startbutton ist gut. Ich denke, ich werde eine Option einbauen, die "On-the-fly" Ver-/entschlüsselt. Das Programm soll allerdings eventuell auch auf alten (sehr alten) PCs laufen (an der Schule), wodurch es eventuell gut wäre, wirklich nur bei Bedarf zu verschlüsseln - man weiß ja nie, was sonst noch im Hintergrund läuft und/oder RAM frisst ;).

Zitat:

versucht's doch mal mit 'ner dynamischen Verschlüsselung, wo sich also der Schlüssel bei mindestens jedem Schritt verändert.
Und wie soll das Ganze wieder rückgängig gemacht werden auf Seiten des Empfängers? Prinzipiell ändert sich der Schlüssel ja bei jedem Schritt - er verschiebt sich (basierend auf dem vorhergehenden Schlüssel, am besten also einen ganzen Satz nehmen und alle möglichen Zeichen aktivieren).

Zitat:

Deine Methode mit einem Passwort den Schlüssel zu veränder, ist ebenfalls verbesserungswürdig.
Mal so als Tipp lass mal alle Häkchen deaktiviert (also nur Großbuchstaben) und gib mal irgendein Passwort ein, was nur aus A und meinetwegen auch noch ein paar kleinbuchstaben/Sonderzeichen besteht.
Du wirst entdecken, daß überhaupt nicht verschlüsselt wird
Richtig, danke, da muss ich noch einen Hinweis einbauen.

Sind ja doch einige Sachen zusammengekommen, die eine neue Version rechtfertigen :).

cu

ripper8472 1. Okt 2005 01:44

Re: CäsarChiffre 1.0
 
mit caesar bekommst du keinen preis mehr. nicht mal mehr mit polyalphabetischer.
die verschluesselung durch willkuerliche festlegungen zu verschleiern (passwort, reihenfolge des alphabets) hilft auch nichts.

wenn du einfach nur texte verschluesseln willst, dann reicht caesar gerade mal gegen fluechtiges drueberfliegen aber auch nicht mehr.

guck dir mal an, wie man sowas mit xor machen wuerde. das ist dann eine polyalphabetische verschluesselund und nahezu genauso einfach zu knacken.

himitsu 1. Okt 2005 02:11

Re: CäsarChiffre 1.0
 
Zitat:

Zitat von sECuRE
Und wie soll das Ganze wieder rückgängig gemacht werden auf Seiten des Empfängers? Prinzipiell ändert sich der Schlüssel ja bei jedem Schritt - er verschiebt sich (basierend auf dem vorhergehenden Schlüssel, am besten also einen ganzen Satz nehmen und alle möglichen Zeichen aktivieren).

Du mußt natürlich den Schlüssel beim Sender und Empfänger in der gleichen Weise verändern ;)

Und ja, bei jedem Zeichen verändert sich zwar das Schlüssel-Zeichen, aber der gesamte Schlüssel wiederholt sich eben nach 'ner Weile wieder. (z.B. nach 26 Zeichen)

Das siehst du ha an dem Beispiel mit den vielen a's ... ich hab dir ja den Verschlüsselten Text nach 26 Zeichen umgebrochen und wie du berstimmt bemerken wirst, beginnt die nächste Sequenz genaus, wie die Erste.





Wie gesagt, eigentlich hab ich von sowas null Ahnung, aber dennoch hatte ich mir mal 'ne persönlicher Verschlüsselung ausgedacht.
Und anstatt immer wieder mit dem selben "winzigen" Schlüssel durch die Daten zu marschieren wird bei mir ausgehend von einem Passwort eine längere Sequenz erzeugt, welche sich dann fortlaufend ändert (ähnlich Delphi's Zufallsgenerator, dort wird ja auch ausgehend von einem bestimmten Wert eine fortlaufene Reihe erzeugt).
Und da ich mir natürlich sicher war, daß selbst dieses nicht unknackbar ist, wird dieser dann noch mit mindestens einem weiteren "verschlüsselnd wirkenden" Prozess kombiniert.

sECuRE 1. Okt 2005 08:27

Re: CäsarChiffre 1.0
 
Hi,

Zitat:

Zitat von ripper8472
mit caesar bekommst du keinen preis mehr. nicht mal mehr mit polyalphabetischer.

Den Nobelpreis habe ich auch nicht im Sinn.
Zitat:

Zitat von ripper8472
die verschluesselung durch willkuerliche festlegungen zu verschleiern (passwort, reihenfolge des alphabets) hilft auch nichts.

Aber den Schlüssel hast du trotzdem nicht herausgefunden, da kannst du mir noch 100 mal sagen, dass die Verschlüsselung nichts taugt und ich wäre trotzdem noch genau so skeptisch ;).

Zitat:

Zitat von ripper8472
wenn du einfach nur texte verschluesseln willst, dann reicht caesar gerade mal gegen fluechtiges drueberfliegen aber auch nicht mehr.

Eigentlich habe ich überhaupt keinen Anwendungszweck für das Programm. Wir machen sowas gerade in Informatik und beschäftigen uns mit Kryptographie (war die erste Stunde).

Zitat:

Zitat von ripper8472
guck dir mal an, wie man sowas mit xor machen wuerde. das ist dann eine polyalphabetische verschluesselund und nahezu genauso einfach zu knacken.

Das halte ich für sinnlos, wenn ich 'ne gute Verschlüsselung will nehm' ich Blowfish und fertig. Mir ging's um Cäsar diesmal und wie man es verbessern kann ;).

Zitat:

Zitat von himitsu
Du mußt natürlich den Schlüssel beim Sender und Empfänger in der gleichen Weise verändern

Was haltet ihr denn davon, den Hash des Codeworts zu verwenden, anstelle das Codewort selbst?

Edit: Ich habe die Vorschläge in der neuen Version (1.1) umgesetzt, einfach noch mal auf den Downloadlink klicken...

cu

himitsu 1. Okt 2005 12:07

Re: CäsarChiffre 1.1
 
bleib lieber beim Codewort ... denn es ist ja durchaus möglich, daß mehrere Cordeworte den "selben" Hash besitzen.

Nikolas 1. Okt 2005 12:35

Re: CäsarChiffre 1.1
 
Such mal nach der Vegenere-Chiffre, die in etwa deinem Polyalphabetischen Ansatz entspricht. Diese Chiffre galt ein paar hundert Jahre als 'Chiffre indechifrable'. Wenn du dieses Verfahren bei kürzeren Texten und größeren Schlüsseln benutzt, wird es recht schwierig, den Klartext zu finden.

sECuRE 1. Okt 2005 13:10

Re: CäsarChiffre 1.1
 
Hi,

Zitat:

Zitat von Toxman
Such mal nach der Vegenere-Chiffre, die in etwa deinem Polyalphabetischen Ansatz entspricht. Diese Chiffre galt ein paar hundert Jahre als 'Chiffre indechifrable'. Wenn du dieses Verfahren bei kürzeren Texten und größeren Schlüsseln benutzt, wird es recht schwierig, den Klartext zu finden.

Davon habe ich gelesen. Mittlerweile zeigt mein Programm auch eine Warnung an, wenn die Nachricht größer als der Schlüssel ist.

cu

Nikolas 1. Okt 2005 15:23

Re: CäsarChiffre 1.1
 
Wenn die Schlüssel- mit der Nachhrichtenlänge übereinstimmt und du den Schlüssel nur einmal benutzt ist der Code ja nicht zu knacken.

Wie willst du denn diese Schlüssel denn dann übertragen?

sECuRE 1. Okt 2005 15:32

Re: CäsarChiffre 1.1
 
Hi,

die sollten am besten persönlich ausgetauscht werden, wenn man dazu keine Möglichkeit hat, kann man ja auch auf das Diffie-Hellmann-Verfahren zurückgreifen. Eine Implementation davon plane ich allerdings nicht, dieses Programm dient nur der Anwendung des Cäsarverfahrens ;).

cu

Daniel G 1. Okt 2005 19:52

Re: CäsarChiffre 1.1
 
Und dennoch ist es interessant, dass die Caesar - Verschlüsselung sogar bei BND - Aufgaben auftaucht...

ripper8472 3. Okt 2005 11:06

Re: CäsarChiffre 1.1
 
vigenere == polyalphabetisch

schluessel so lang wie text == one-time-pad

der BND hat diese aufgabe aufgenommen, um die voellig hirnlosen schon mal scheitern zu lassen. ich finde die andere mit den in etwa steigenden zahlen interessanter.

Daniel G 3. Okt 2005 19:23

Re: CäsarChiffre 1.1
 
Zitat:

Zitat von ripper8472
ich finde die andere mit den in etwa steigenden zahlen interessanter.

Jupp, die hat was.

Nikolas 3. Okt 2005 19:40

Re: CäsarChiffre 1.1
 
was sind das denn für Aufgaben vom BND?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 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