AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte CäsarChiffre 1.2
Thema durchsuchen
Ansicht
Themen-Optionen

CäsarChiffre 1.2

Ein Thema von sECuRE · begonnen am 30. Sep 2005 · letzter Beitrag vom 3. Okt 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von sECuRE
sECuRE
Registriert seit: 10. Apr 2003
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
 
#2
  Alt 30. Sep 2005, 20:22
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.
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

 
Delphi 7 Professional
 
#3
  Alt 30. Sep 2005, 20:35
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
  Mit Zitat antworten Zitat
ripper8472
 
#4
  Alt 30. Sep 2005, 20:59
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!
Miniaturansicht angehängter Grafiken
caesarchiffre1_814.png  
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

 
Delphi 7 Professional
 
#5
  Alt 30. Sep 2005, 21:12
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
  Mit Zitat antworten Zitat
ripper8472
 
#6
  Alt 30. Sep 2005, 21:26
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.
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

 
Delphi 7 Professional
 
#7
  Alt 30. Sep 2005, 21:29
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
  Mit Zitat antworten Zitat
ripper8472
 
#8
  Alt 30. Sep 2005, 21:33
stell die frage mal in einem matheboard und biete dazu dein programm mit code an. die knacken das sofort.
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

 
Delphi 7 Professional
 
#9
  Alt 30. Sep 2005, 21:35
Hi,

kennst du ein solches Board?

Das wird aber langsam recht Offtopic...

cu
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#10
  Alt 1. Okt 2005, 01:08
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

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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 01:40 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