Bei der Caesar-Verschlüsselung werden alle Buchstaben um eine Anzahl Stellen verrückt:

Aufgabe 1: Caesar-Verschlüsselung in Python

Schreibe eine Funktion caesar(klartext, n), die die Cäsar-Verschlüsselung umsetzt.

  • Gebe nur Grossbuchstaben aus.
  • Zeichen, die keine Buchstaben sind, sollen nicht verändert werden.
  • Wie kannst du das Chiffrat (den Ciphertext) entschlüsseln?
Ein paar Tipps

Du kannst über die Buchstaben eines Strings laufen wie über die Elemente einer Liste:

s = "Hallo KSR"
for buchstabe in s:
    print(buchstabe)

Einen String in Grossbuchstaben umwandeln:

print("Hallo KSR".upper())
>>> HALLO KSR

Alle Grossbuchstaben können in string.ascii_uppercase abgefragt werden. Mit str.find() können wir den Index (oder -1) finden:

import string
 
for buchstabe in "HALLO":
    print(string.ascii_uppercase.find(buchstabe))
 
>>>
7
0
11
11
14

Der Modulo-Operator % gibt uns den Rest der Ganzzahl-Division zurück. Das ist praktisch, um den Index wieder bei A starten zu lassen, wenn er grösser als Z wird:

import string
 
klartext = "Z"
index = string.ascii_uppercase.find(klartext)
index += 3
index = index % len(string.ascii_uppercase)
ciphertext = string.ascii_uppercase[index]
print(ciphertext)
 
>>> C

Lösung:

Aufgabe 2

a)

Die folgende Nachricht ist mit der Caesar-Verschlüsslung verschlüsselt, indem alle Buchstaben um $3$ Stellen verschoben wurden: LQIRUPDWLN!LVW!VXSHU

Als Alphabet wurden folgende Zeichen verwendet: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 .,!?

Was bedeutet die Nachricht?

b)

Nutze deinen Code, um die folgende Nachricht zu knacken: XN06VI41ZN05U140KIQVRIV0018N6V8RI5PU7YRIVZIT47R0R0J

Tipp

Eine Weiterentwicklung der Caesar-Verschlüsselung erhält man, wenn man das Alphabet nicht nur um eine fest Anzahl stellen verschiebt, sondern das gesamte Alphabet durchmischt. Aus ABCDEFGHIJKLMNOPQRSTUVWXYZ wird dann zum Beispiel UELXBICNYAZJSQORTPKFMGVHWD oder VSEIYHJTBUPANRCOQDLXFWKMZG. Diese neu sortierte Version dient als Schlüssel und wird benötigt, um die Nachricht zu entziffern. Man muss also darauf achten, dass dieser nicht in feindliche Hände gelangt. Diese Art der Verschlüsselung nennt man eine monoalphabetische Verschlüsselung.

Aufgabe B1

  1. Ist die Caesar-Verschlüsselung auch eine monoalphabetische Verschlüsselung?
  2. Wie viele Möglichkeiten gibt es, eine Nachricht mit der Caesar-Verschlüsselung zu verschlüsseln? Es sollen nur die $26$-Standardbuchstaben des Alphabets verschlüsselt werden.
  3. Wie viele Möglichkeiten gibt es für die monoalphabtische Verschlüsselung? (wieder mit $26$ Buchstaben).
  4. Wie schätzt du die Sicherheit der monoalphabtischen Verschlüsselung ein? Welche Möglichkeiten gibt es, um eine damit verschlüsselte Nachricht zu entziffern?
  5. Eine mit der Caesar-Methode verschlüsselte Nachricht kann man problemlos mit Brute-Force entschlüsseln (alle Möglichkeiten ausprobieren). Funktioniert dies bei der monoalphabetische Verschlüsselung auch? Gibt es bessere Möglichkeiten, eine solche zu entziffern?

Lösung

Aufgabe B2

Die Nachricht RYDDUYKFXUKEBKFBBKKBQXBPVBJF wurde mit dem Schlüssel UELXBICNYAZJSQORTPKFMGVHWD verschlüsselt. Schreibe ein Programm, mit welchem du die Nachricht im Klartext ermitteln kannst.

Tipps

Mehr Tipps

Lösung

Nicht alle Buchstaben kommen gleich oft vor in einer Sprache. Dies können wir nutzen, indem wir das Buchstabe-Histogramm des Chiffrats mit dem der vermuteten Klartext-Sprache vergleichen.

Was sind die Probleme und Voraussetzungen?

Lösung:

Aufgabe C1: Monoalphabetische Substitution knacken mit Häufigkeitsanalyse.

Versuche, das Chiffrat eines englischen Klartexts zu knacken.

Aufgabe C2

Ist die verschlüsselte Nachricht lange genug, kann man eine Häufigkeitsanalyse durchführen. In der deutschen Sprache kommt der Buchstabe „E“ mit gut $15\%$ eindeutig am häufigsten vor. Kommt also in der verschlüsselten Nachricht der Buchstabe „Q“ am häufigsten vor, können wir davon ausgehen, dass es sich bei diesem eigentlich um ein „E“ handelt. Mit dieser Methode kann man zumindest einmal die häufigsten paar Buchstaben richtig bestimmen. Bei den weniger häufigen Buchstaben wird die Reihenfolge dann wohl nicht mehr ganz stimmen. Mit ein paar cleveren Vermutungen, kann man dies aber relativ einfach korrigieren. Kommt zum Beispiel im verschlüsselten Text häufig das Wort „HIE“ vor, dürfte es sich beim „H“ um wohl um ein „D“ handeln. Ein „S“ wäre auch eine Möglichkeit, aber da „S“ der dritthäufigste Buchstabe ist, wurde dieser wohl bereits korrekt erkannt. Dabei hilft es zu wissen, welche Wörter besonders oft vorkommen: Liste der häufigsten Wörter der deutschen Sprache

Wähle eine der beiden Optionen:

Option 1: Häufigkeitsanalyse von einzelnem String (einfach)

Schreibe eine Funktion, die eine Linie Text einliest und eine Häufigkeitsanalyse durchführt. Das Alphabet soll nur aus den $26$ Standardbuchstaben Bestehen. Alle Buchstaben sollen in Kleinbuchstaben umgewandet werden. Umlaute wie Ä,ä,Ö,ö,Ü,ü sollen als ae,oe und ue, die Buchstaben é,è und à als e und a aufgefasst werden. Buchstaben in einem String kannst du wie folgt ersetzen: s = s.replace('é','e')

Wende deine Funktion auf den folgenden Ausschnitt von Goethe's Faust an und vergleiche deine Resultate mit den Musterlösungen:

Text Faust

Tipps

Lösungen

Python Lösung

Option 2: Häufigkeitsanalyse von ganzem Buch (anspruchsvoll)

Wie in Option 1, nur soll anstelle eines einzelnen Strings ein ganzes Buch eingelesen und analysiert werden. Auf Project Gutenberg findest du über $60'000$ gratis Ebooks. Wähle ein Buch aus und klicke dann auf „Plain Text UTF-8“. Das Buch erscheint dann im einfachen Textformat direkt im Browser. Über den dazugehörigen Link, kannst du das Buch direkt in Python einlesen:

from urllib.request import urlopen
count = 0
data = urlopen(<Pfad zur Datei>)
text = data.read().decode('utf-8')  # reads all downloaded bytes, convert to text

Kontrolle: am häufigsten vorkommen sollte $E$ (gut $15\%$), gefolgt von $N$ (ca. $10\%$) und $S$. Die letzten Ränge machen typischerweise $Y$, $Q$ und $X$ unter sich aus.

Lösung mit Gutenberg

Aufgabe C3 (optional)

Versuche, mithilfe einer Häufigkeitsanalyse den Text (in deutscher Sprache, nur Kleinbuchstaben) unten möglichst fest zu entschlüsseln. Aus welchem Buch ist dieser?

Die Buchstaben in der folgenden Liste ist entsprechend ihrer typischen Häufigkeit in der deutschen Sprache geordnet:

['e', 'n', 's', 'r', 'i', 'a', 't', 'd', 'h', 'u', 'l', 'c', 'g', 'm', 'o', 'b', 'w', 'f', 'k', 'z', 'p', 'v', 'j', 'y', 'x', 'q']

Verschlüsselter Text

  • gf_informatik/verschluesselung/caesar.txt
  • Zuletzt geändert: 2025-03-18 15:34
  • von hof