Wie kann sichergestellt werden, dass eine Nachricht für Drittpersonen unlesbar übermittelt wird und unverfälscht am richtigen Ort ankommt – respektiv beim Empfangen vom korrekten Absender stammt?
# Begriffe
Die Kryptologie setzt sich aus den beiden Gebieten Kryptographie und Kryptoanalyse zusammen. Ende des Ersten Weltkrieges wurde diese Einteilung von William Friedman festgelegt und die Begriffe so wie wir sie heute kennen definiert. Die Kryptographie beschäftigt sich mit der Entwicklung und Anwendung der einzelnen Verfahren und die Kryptoanalyse mit deren Stärken und Schwächen. Anders formuliert, befasst sich die Kryptographie mit der Sicherheit der eigenen geheimen Kommunikation gegen unbefugte Entzifferung, während die Kryptoanalyse, quasi als Gegenspielerin der Kryptographie, die Informationsgewinnung aus verschlüsselten Nachrichten, also das Brechen der geheimen Kommunikation, zum Ziel hat. Kryptographie und Kryptoanalyse werden daher auch als defensive und offensive Kryptologie bezeichnet.
# Ursprünge
Bevor Nachrichten verschlüsselt wurden, wurden geheime Botschaften zwar im sogenannten Klartext, dafür aber versteckt übermittelt: In den Hochkulturen von Ägypten, Indien und Mesopotamien wurde Sklaven der Schädel kahl rasiert und mit einer Geheimbotschaft tätowiert. Sobald das Haar nachgewachsen war, wurden sie zum Empfänger geschickt. Dieser konnte nach einer erneuten Kahlrasur des Sklaven die Botschaft entziffern.
Die ersten richtig verschlüsselten Begriffe findet man in alt-testamentarischen Schriften. So wurde in den Büchern Jeremiah das Wort «Babel» an mehreren Stellen durch den Ausdruck «Sheshech» ersetzt, welcher sich aus einer speziellen Substitution namens «Atbash» ergibt. Dabei wird der erste Buchstabe des Alphabetes durch den letzten ersetzt, der Zweite durch den Zweitletzten, usw. (Beispiel für unseres Alphabet: abc
würde zu zyx
werden.)
Aus der Zeit um 475 v. Chr. ist das erste militärisch genutzte System bekannt. Dabei wurden die Nachrichten auf einen Papyrusstreifen geschrieben, welcher um einen Holzstab mit einem bestimmten Durchmesser («Skytale») gerollt wurde. Diese Nachricht bestand anschliessend aus einer Reihe von Buchstaben, welche erst einen Sinn ergab, wenn der Empfänger den Papyrusstreifen um einen Holzstab mit demselben Durchmesser wickelte.
Julius Caesar benutzte während seiner Regentschaft ein einfaches Substitutionsverfahren: In diesem Verfahren werden die Buchstaben im Alphabet um eine gewisse Anzahl Stellen verschoben (man sagt auch «rotiert»). So entspricht z.B. der Schlüssel Caesar
bei Verschlüsselung mit Schlüssel Fdhvdu
.
# Aufgaben
Aufgaben (auf Papier)
- Suche weitere Beispiele von versteckten Nachrichten. Wo werden Nachrichten immer noch versteckt?
- Handelt es sich bei der Skytale um eine versteckte oder eine verschlüsselte Nachricht? Wie wird die Nachricht versteckt, resp. was ist der Schlüssel?
- Zu zweit: Jeder verschlüsselt einen kurzen Satz (3-5 Wörter) mittels Caesar-Verschlüsselung mit einem beliebigen Schlüssel. Anschliessend werden die verschlüsselten Nachrichten, zusammen mit dem Schlüssel, ausgetauscht und entschlüsselt. Welche Hilfsmittel beschleunigen die Ver- und Entschlüsselung? Kannst du sowas basteln?
Aufgabe (Computer)
Versuche den folgenden mit Caesar verschlüsselten Code zu knacken
PDHLCPTYXLWPTYXLYYFYOPTYPQCLFOTPHFYDNSEPYDTNSDNSZYWLYRPGPCRPMWTNSPTYVTYOPYOWTNSXLNSEPDTNSOTPQCLFSZQQYFYROPCWTPMPRZEEHPCOPTSCPYHFYDNSPCQFWWPYOTPWPFEPSLEEPYTYTSCPXSTYEPCSLFDPTYVWPTYPDQPYDEPCOLCLFDVZYYEPXLYTYPTYPYACLNSETRPYRLCEPYDPSPYOPCGZWWOPCDNSZYDEPYMWFXPYFYOVCLFEPCDELYOPCHLCLMPCGZYPTYPCSZSPYXLFPCFXRPMPYFYOYTPXLYOHLREPSTYPTYKFRPSPYHPTWPCPTYPCKLFMPCTYRPSZCEPOTPRCZDDPXLNSESLEEPFYOGZYLWWPCHPWERPQFCNSEPEHLCOPTYPDELRPDDELYOOTPQCLFLYOTPDPXQPYDEPCFYODLSTYOPYRLCEPYSTYLMOLPCMWTNVEPDTPPTYMPPEOLDXTEOPYDNSZYDEPYCLAFYKPWYMPAQWLYKEHLCFYODTPDLSPYDZQCTDNSFYORCFYLFDOLDDDTPWFDEPCYHLCOFYOOLDRCZDDEPGPCWLYRPYPXAQLYOGZYOPYCLAFYKPWYKFPDDPYOLDGPCWLYRPYYLSXUPOPYELRKFFYOOLDTPHFDDEPOLDDDTPVPTYPOLGZYMPVZXXPYVZYYEPDZQTPWDTPRLYKLMDLSMWLDDFYOPWPYOLFDOLPCDNSCLVOPCXLYYFYOQCLREPHLDQPSWEOTCWTPMPQCLF
(am Besten mit Doppelklick markieren und dann Ctrl + c)
Aufgabe (Programmieren)
Für die Programmieraufgaben existiert eine Vorlage:
def encrypt(key, plaintext):
"""Encrypt the string and return the ciphertext"""
result = plaintext[key:] + plaintext[:key]
return result.lower()
def decrypt(key, ciphertext):
"""Decrypt the string and return the plaintext"""
result = ciphertext[-key:] + ciphertext[:-key]
return result
def show_result(plaintext, key):
"""Generate a resulting cipher with elements shown"""
encrypted = encrypt(key, plaintext)
decrypted = decrypt(key, encrypted)
print('Key: %s' % key)
print('Plaintext: %s' % plaintext)
print('Encrytped: %s' % encrypted)
print('Decrytped: %s' % decrypted)
plaintext = input("zu verschlüsselnden Text eingeben: ")
key = int(input("Schlüssel eingeben (ganze Zahl): "))
show_result(plaintext, key)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- Teste die Verschlüsselung der Vorlage aus und versuche die folgenden Fragen zu beantworten: Wie wird verschlüsselt?
- Kopiere die Datei
crypto.py
und benenne sie nachcrypto_caesar.py
um. Passe anschliessend die Funktionenencrypt
unddecrypt
so an, dass der Inhalt mittels Caesar-Verschlüsselung ver- resp. entschlüsselt wird. - Versuche den Code aus der letzten Aufgabe zu knacken
👉 https://www.cryptool.org/en/cto/ciphers/caesar (opens new window)