Kryptologie
Die vorliegenden Materialien wurden von Daniel Hoherz und André Tempel erstellt. Sollten andere Editoren die Materialien erstellt haben, werden diese explizit genannt.
Grundlagen
In den vorherigen Jahrgängen haben Sie sich bereits mit verschiedenen Verfahren der Kryptographie und Kryptoanalyse beschäftigt. Zur Erinnerung hier nochmal eine kurze Defintion der beiden Begriffe:
| Kryptographie | Kryptoanalyse |
|---|---|
|
Die Kryptographie ist die Wissenschaft der Verschlüsselung von Informationen und Informationssicherheit und befasst sich mit der Konzeption, Definition und Konstruktion von gegen Manipulation widerstandsfähiger Informationssysteme. |
Die Kryptoanalyse ist die Wissenschaft von Methoden und Techniken, mit denen Informationen aus verschlüsselten Informationssystemen gewonnen werden sollen. Ihr Ziel ist, den Manipulationswiderstand von Kryptosystemen aufzuheben, zu umgehen oder deren Sicherheit zu quantifizieren. |
In diesem Kontext hatten Sie einige Verschlüsselungsverfahren und Entschlüsselungsverfahren, aber auch zahlreiche Fachbegriffe kennengelernt.
Vorwissen
Finden Sie sich in einer Gruppe von maximal drei Personen zusammen und bearbeiten Sie die folgenden Aufgaben. Beachten Sie bitte, dass Sie Ihre Ergebnisse fortlaufend dokumentieren. Nutzen Sie bei Bedarf die gestaffelten Hilfen.
Sammeln Sie in Ihrer Gruppe wichtige Fachbegriffe und Verschlüsselungsverfahren aus den letzten Jahrgängen rund um das Thema Kryptologie.
Denken Sie an die Aufteilung des Themas: Es gibt eine Wissenschaft, die sich mit dem *Verschlüsseln* (Geheimhalten) beschäftigt, und eine Wissenschaft, die sich mit dem *Brechen* oder Analysieren von Codes befasst (wie z. B. durch systematisches Raten oder mathematische Analysen). Wie heißen diese beiden Teilbereiche?
Welche Zustände durchläuft eine Nachricht (vorher/nachher)? Denken Sie zudem an die zwei grundlegenden Wege, wie man Buchstaben manipulieren kann: Entweder man *ersetzt* sie durch andere Zeichen oder man *würfelt ihre Reihenfolge durcheinander*. Suchen Sie nach den Fachbegriffen für diese beiden Prinzipien.
Erinnern Sie sich an konkrete Beispiele:
- Welches Verfahren nutzt einen Holzstab, um einen Streifen Pergament zu verschlüsseln?
- Wie nennt man das Verfahren von Julius Caesar?
- Mit welcher statistischen Methode (Auswertung von Buchstabenhäufigkeiten) kann man einfache Verschlüsselungen ohne Schlüssel knacken?
Definieren Sie nun möglichst viele der in Aufgabenteil a) gesammelten Begriffe in eigenen, präzisen Worten.
Nutzen Sie präzise Einleitungssätze. Ein bewährtes Muster ist:
„Unter [Fachbegriff] versteht man..." oder „Der Begriff [Fachbegriff] beschreibt...".
Starten Sie am besten mit den grundlegenden Datenzuständen (Klartext und Geheimtext) sowie dem Begriff des Schlüssels.
Achten Sie bei der Definition von Methoden zur Code-Analyse auf den Unterschied im Vorgehen:
- Untersuchen Sie die Struktur und die Verteilung der Zeichen (statistischer Ansatz $\rightarrow$ *Häufigkeitsanalyse*)?
- Oder probieren Sie stumpf und nacheinander alle theoretisch denkbaren Möglichkeiten aus ($\rightarrow$ *Brute-Force*)?
🎉 Ausgezeichnet – Vorbereitung abgeschlossen!
Sie haben alle Aufgabenteile dokumentiert und abgehakt. Vergleichen Sie Ihre gesammelten Begriffe und Definitionen nun mit der lehrplankonformen Musterlösung.
Musterlösung zu Aufgabenteil a) & b) (Strukturierte Übersicht & Glossar)
Die folgende Tabelle fasst die wesentlichen Systembegriffe, Prinzipien und Verfahren der Kryptologie zusammen:
| Fachbegriff / Verfahren | Präzise wissenschaftliche Definition |
|---|---|
| Kryptologie | Der wissenschaftliche Oberbegriff für die Geheimhaltung von Informationen. Sie umfasst sowohl die Entwicklung von Schutzverfahren als auch deren Analyse. |
| Kryptographie | Der Teilbereich der Kryptologie, der sich mit dem Entwurf und der praktischen Entwicklung von Ver- und Entschlüsselungsverfahren befasst. |
| Kryptoanalyse | Der Teilbereich der Kryptologie, der sich mit dem Untersuchen, Prüfen und unbefugten Brechen bestehender Kryptosysteme beschäftigt. |
| Klartext | Die ursprüngliche, für jedermann offen lesbare und direkt verständliche Nachricht vor der Verschlüsselung. |
| Geheimtext | Die durch ein kryptographisches Verfahren veränderte, für unbefugte Dritte unlesbare und unverständliche Zeichenfolge. |
| Schlüssel | Die geheime Variable oder Information (z. B. eine Zahl oder ein Wort), die ein Algorithmus benötigt, um einen Text spezifisch zu ver- oder entschlüsseln. |
| Symmetrische Verfahren | Kryptosysteme, bei denen Sender und Empfänger exakt denselben geheimen Schlüssel sowohl für die Ver- als auch für die Entschlüsselung nutzen (z. B. Caesar). |
| Substitution | Ein grundlegendes Verschlüsselungsprinzip, bei dem die Zeichen des Klartextes durch andere Zeichen (Buchstaben, Zahlen oder Symbole) *ersetzt* werden. Die Position der Zeichen im Text bleibt dabei gleich. |
| Monoalphabetische Substitution | Eine Unterform der Substitution, bei der jeder Klartextbuchstabe im gesamten Text immer durch exakt denselben Geheimtextbuchstaben ersetzt wird. Es existiert folglich nur ein einziges festes Geheimtextalphabet. |
| Caesar-Verfahren | Ein klassisches Beispiel für eine monoalphabetische Substitution. Jeder Buchstabe des Klartextes wird zyklisch um eine feste Anzahl von Positionen im Alphabet verschoben. |
| Transposition | Ein grundlegendes Verschlüsselungsprinzip, bei dem die Positionen der Zeichen im Text nach einem festen System *vertauscht bzw. umgestellt* werden. Die ursprünglichen Zeichen selbst bleiben dabei völlig unverändert. |
| Skytale | Ein historisches mechanisches Hilfsmittel zur Transpositionsverschlüsselung aus dem antiken Sparta. Ein Pergamentstreifen wird um einen Stab gewickelt und längs beschrieben. Der Stabdurchmesser fungiert hierbei als Schlüssel. |
| Häufigkeitsanalyse | Eine kryptoanalytische Methode zum Brechen von Geheimtexten. Sie nutzt die Tatsache aus, dass Buchstaben in natürlichen Sprachen charakteristische Häufigkeiten aufweisen (z. B. das 'E' im Deutschen). Bei monoalphabetischen Verfahren lässt sich so oft auf den Klartext schließen. |
| Brute-Force | Eine kryptoanalytische Angriffsmethode (auch Erschöpfungsangriff genannt), bei der durch reines Ausprobieren systematisch alle theoretisch möglichen Schlüssel getestet werden, bis ein lesbarer Klartext entsteht. |
⚠ Hinweis: Die Formulierungen der Schülerinnen und Schüler müssen nicht wortwörtlich mit dieser Tabelle übereinstimmen. Entscheidend ist, dass die informationstechnischen Kernmerkmale (insbesondere das *Ersetzen* bei der Substitution und das *Umsortieren* bei der Transposition) richtig verstanden und wiedergegeben wurden.
Auffrischung
Jede Art von Informationsübertragung – ob Gespräch, SMS oder Datenpaket – folgt demselben Grundprinzip:
Ein Kryptosystem stellt Verfahren zur sicheren Kommunikation bereit. Es transformiert Informationen mithilfe mathematischer Algorithmen und Schlüsseln so, dass Unbefugte Daten weder lesen noch manipulieren können. Dies ist essenziell für Online-Banking, sichere Chats und digitale Signaturen.
Ein Kryptosystem besteht aus sechs grundlegenden Komponenten:
1. Klartext
Die ursprüngliche, unverschlüsselte Information, die geschützt werden soll (z. B. Texte oder Dateien).
2. Chiffretext (Chiffrat)
Das Ergebnis der Verschlüsselung. Diese transformierte Version ist ohne den passenden Schlüssel unlesbar.
3. Verschlüsselungs-Algorithmus
Das mathematische Verfahren, welches den Klartext in den unverständlichen Chiffretext umwandelt.
4. Schlüssel
Ein geheimer Wert für die Ver- und Entschlüsselung. Von seiner Komplexität hängt die Gesamtsicherheit ab.
5. Entschlüsselungs-Algorithmus
Das mathematische Gegenverfahren, das den Chiffretext mithilfe des Schlüssels wieder in Klartext zurückrechnet.
6. Schlüsselverwaltung
Umfasst die Erzeugung, Verteilung, Speicherung und den Austausch. Schwache Verwaltung gefährdet das System.
Angriffstypen
Es gibt verschiedene Arten des Angriffs auf Kryptosysteme. Um die Angriffsarten besser betrachten zu können, werden sie in Kategorien eingeteilt. Diese Aufteilung zeigt, inwiefern der Datenfluss von der Norm abweicht. Sender und Empfänger sind Alice (A) und Bob (B). Eve (E) ist die böse Angreiferin.
1. Unterbrechung
Ein Angriff auf die Verfügbarkeit verhindert aktiv, dass Informationen ihr eigentliches Ziel erreichen.
2. Abfangen
Ein Angriff auf die Vertraulichkeit ermöglicht es Dritten, unbemerkt auf Daten oder Teile des Systems zuzugreifen.
3. Modifikation
Ein Angriff auf die Integrität ermöglicht nicht berechtigten Dritten den Zugriff und die gezielte Veränderung einer Nachricht.
4. Fälschung
Ein Angriff auf die Authentizität ermöglicht unberechtigten Dritten das Einschleusen von völlig gefälschten Nachrichten in ein System.
Aufgaben
Im Folgenden sind verschiedene reale Angriffsszenarien aus der Praxis beschrieben. Finden Sie sich zunächst in Gruppen zusammen, bearbeiten Sie die Szenarien Ihrer zugeordneten Gruppe und ordnen Sie diese begründet den vier Angriffsarten zu. Dokumentieren Sie Ihre Ergebnisse.
Analysieren Sie die folgenden vier Fälle und bestimmen Sie, welches Schutzziel verletzt wurde und um welchen Angriffstyp es sich handelt:
Kontext: IT-Managerin Sarah Müller & IT-Team | Mittelständischer Finanzsoftware-Anbieter
An einem Montagmorgen bemerkt Sarah Müller, dass die Server von TechCorp nicht mehr erreichbar sind. Nach einer schnellen Untersuchung stellt sich heraus, dass ein Angreifer absichtlich einen Stromausfall in der Nähe des Unternehmens herbeigeführt hat, um den Betrieb zu stören. Durch den Ausfall sind alle internen Systeme und Datenbanken nicht mehr zugänglich, was zu einem erheblichen finanziellen Verlust führt.
Kontext: Bankkunde Max Schmidt & IT-Sicherheitsspezialist Thomas Becker | Lokale Bank
Max Schmidt versucht, sich in das Online-Banking einzuloggen. Ein Angreifer hat jedoch eine Phishing-Webseite erstellt, die der echten Webseite täuschend ähnlich sieht. Max gibt seine Zugangsdaten ein. Thomas Becker stellt kurz darauf fest, dass die Zugangsdaten unbemerkt abgefangen wurden und der Angreifer bereits Geldüberweisungen vorgenommen hat.
Kontext: Geschäftsführerin Maria & unzufriedener Mitarbeiter | Online-Lieferdienst
Ein unzufriedener Mitarbeiter von FoodDelivery Inc. hat Zugriff auf das interne System. Er verändert unberechtigt die Bestelldaten in der Datenbank, um die Lieferungen systematisch an sein eigenes Restaurant umzuleiten, anstatt an die Kunden, die tatsächlich bestellt haben. Maria bemerkt die unbemerkt manipulierten Daten durch ungewöhnlich hohe Bestellzahlen.
Kontext: Neuer Mitarbeiter Daniel & falscher IT-Support | IT-Dienstleister
Daniel erhält einen Anruf von einem angeblichen IT-Support-Mitarbeiter, der behauptet, dringende Sicherheitsupdates durchführen zu müssen. Der Angreifer spiegelt Probleme mit den Zugangsdaten vor und fordert Daniel auf, Passwörter und einen Bestätigungscode durchzugeben. Daniel glaubt der Täuschung und gibt die Daten preis, woraufhin der Angreifer Zugriff auf das System erhält.
Fragen Sie sich bei jedem Szenario: Was genau ist der Schaden?
• Sind die Daten/Dienste nicht mehr erreichbar? ($\rightarrow$ Verfügbarkeit betroffen)
• Wurden Geheimnisse unbefugt mitgelesen? ($\rightarrow$ Vertraulichkeit betroffen)
• Wurden Daten nachträglich manipuliert? ($\rightarrow$ Integrität betroffen)
• Wurde eine falsche Identität vorgetäuscht? ($\rightarrow$ Authentizität betroffen)
• Bei TechCorp (1.1) können die Mitarbeiter physisch nicht mehr auf die Datenbank zugreifen. Der Datenfluss ist komplett blockiert.
• Beim Online-Banking (1.2) liest ein unbefugter Dritter die geheimen Login-Daten auf einer gefälschten Oberfläche mit.
• Bei FoodDelivery (1.3) werden bestehende, korrekte Daten im System absichtlich abgeändert, sodass die Information verfälscht wird.
• Bei ByteSolutions (1.4) erschleicht sich der Angreifer Vertrauen, indem er eine falsche Identität (IT-Support) vorgibt, um Passwörter abzufangen.
Analysieren Sie die folgenden vier Fälle und bestimmen Sie, welches Schutzziel verletzt wurde und um welchen Angriffstyp es sich handelt:
Kontext: Dr. Anna Weber & Betrüger Lukas | Renommierte Universität
Lukas gibt sich fälschlicherweise als Professorin Dr. Anna Weber aus und kontaktiert die Universitätsverwaltung, um vertrauliche Studentendaten zu erschleichen. Er fälscht E-Mails und Dokumente, um seine Identität vorzutäuschen. Die Verwaltung vertraut den Dokumenten und gibt die Informationen heraus.
Kontext: Marketing-Managerin Lisa & IT-Sicherheitsteam | Online-Modeshop
Während einer großen Verkaufsaktion wird FashionWorld Opfer eines DDoS-Angriffs. Ein Angreifer überlastet die Server absichtlich mit einer koordinierten Flut von künstlichen Anfragen, sodass die Webseite für echte Kunden nicht mehr erreichbar ist und der Shop lahmgelegt wird.
Kontext: Finanzmanager Tom & falscher Lieferant | Großes Technologieunternehmen
Tom erhält eine täuschend echt aussehende E-Mail mit einer gefälschten Rechnung von einem vermeintlichen Lieferanten für angeblich bestellte Waren. Tom bezahlt die Rechnung ohne Prüfung. Später stellt sich heraus, dass der Lieferant nicht existiert und gefälschte Daten in den Zahlungsverkehr eingeschleust wurden.
Kontext: Dr. Peter Lange & Schein-Patient | Medizinische Klinik
Dr. Peter Lange erhält eine E-Mail von einem vermeintlichen Patienten, der um Auskunft zu einer Behandlung bittet. Der Angreifer hat die Absenderadresse manipuliert (Spoofing), um sich als Patient auszugeben und unberechtigt sensible medizinische Daten aus der Patientenakte zu erlangen.
Beachten Sie: Wenn ein Angreifer eine Nachricht *erfindet* oder sich als jemand anderes ausgibt, greift er primär die Echtheit der Kommunikationspartner oder der Daten an ($\rightarrow$ Authentizität). Wird ein System blockiert, leidet die Verfügbarkeit.
• Bei der Universität (2.1) fälscht Lukas Dokumente, um die Verwaltung über seine wahre Identität zu täuschen.
• Bei FashionWorld (2.2) geht es rein darum, die Funktionalität der Server durch Überlastung komplett zu blockieren.
• Sowohl bei TechGiant (2.3) als auch bei HealthCare (2.4) werden falsche Identitäten (Schein-Lieferant / Schein-Patient) genutzt und manipulierter Input eingeschleust, um Handlungen zu erzwingen oder Daten abzugreifen.
Finden Sie sich nun in gemischten 4er-Gruppen zusammen (jeweils zwei Personen aus Gruppe 1 und zwei Personen aus Gruppe 2).
Präsentieren Sie sich gegenseitig Ihre bearbeiteten Szenarien. Diskutieren und begründen Sie Ihre Klassifikationen anhand des gelernten theoretischen Datenfluss-Modells.
🎉 Großartig – alle Fälle analysiert!
Sie haben die Szenarien erfolgreich durchgearbeitet und im Team abgeglichen. Öffnen Sie jetzt die lehrplankonforme Musterlösung, um die Klassifikationen der acht Fallstudien zu überprüfen.
Systematische Klassifikation der Praxis-Szenarien
Kryptographische Systeme und Kommunikationskanäle werden durch unterschiedliche Abweichungen des Datenflusses bedroht. Hier sehen Sie die exakte Zuordnung:
| Gruppe | Szenario | Angriffstyp (Datenfluss) | Begründung & verletztes Schutzziel |
|---|---|---|---|
| G1 | 1.1 TechCorp (Stromausfall) | Unterbrechung | Der Datenfluss wird physikalisch blockiert. Die Systeme sind nicht erreichbar. Verletzung der Verfügbarkeit. |
| 1.2 Online-Banking (Phishing) | Abfangen | Ein unberechtigter Dritter (Angreifer) erlangt unbemerkt Kopien der geheimen Zugangsdaten. Verletzung der Vertraulichkeit. | |
| 1.3 FoodDelivery (Innentäter) | Modifikation | Bestehende, legitime Daten im System werden unbefugt verändert und manipuliert. Verletzung der Integrität. | |
| 1.4 ByteSolutions (Falscher Support) | Fälschung / Abfangen | Der Angreifer täuscht eine Identität vor (Fälschung der Authentizität), um sensible Passwörter zu entwenden (Abfangen der Vertraulichkeit). | |
| G2 | 2.1 Uni Berlin (Identitätsmissbrauch) | Fälschung | Der Angreifer Lukas täuscht eine falsche Identität vor und schleust gefälschte Dokumente ein. Verletzung der Authentizität. |
| 2.2 FashionWorld (DDoS-Attacke) | Unterbrechung | Der Server wird mutwillig durch eine Flut künstlicher Anfragen lahmgelegt. Verletzung der Verfügbarkeit. | |
| 2.3 TechGiant (Fake-Rechnung) | Fälschung | Es wird eine betrügerische Information von einer nicht existierenden Entität in das System eingebracht. Verletzung der Authentizität. | |
| 2.4 HealthCare Inc. (E-Mail-Spoofing) | Fälschung | Die Absenderadresse wird manipuliert, um die Identität eines Kommunikationspartners vorzutäuschen. Verletzung der Authentizität. |
⚠ Didaktischer Hinweis: In der Praxis treten Angriffe oft als Kombinationen auf (z. B. eine *Fälschung* der Identität per Phishing-Mail dient fast immer dem Zweck, Daten *abzufangen*). Für eine saubere Systematisierung ist entscheidend, welche Abweichung im konkreten Teilschritt dominiert.
Wiederholung
Auf dem Schulflur wurde ein Zettel mit einer Nachricht gefunden. Der Anfang der Nachricht ist:
Offenbar handelt es sich um einen Geheimtext, der mit einem unbekannten Verfahren erzeugt wurde.
Aufgaben
Analysieren Sie die Häufigkeitsanalyse-Ergebnisse und diskutieren Sie in Gruppen, welche Schlussfolgerungen sich jeweils ziehen lassen. Ordnen Sie diese begründet den Verschlüsselungsverfahren zu und dokumentieren Sie Ihre Ergebnisse.
Tauschen Sie sich kurz mit den neben Ihnen sitzenden Personen aus, ob man vermuten kann, dass dieser Geheimtext mit einem Transpositionsverfahren erstellt wurde.
Schauen Sie sich die Buchstabenhäufigkeit im Geheimtext an. Unterscheidet sie sich deutlich von der Häufigkeit im Deutschen?
Bei einem Transpositionsverfahren bleiben die Buchstabenhäufigkeiten gleich – nur ihre Positionen ändern sich. Die statistischen Muster sollten also erhalten bleiben.
Vergleichen Sie die Häufigkeitsmuster: Sind sie ähnlich zu den erwarteten deutschen Häufigkeiten oder völlig unterschiedlich?
Betrachten wir zwei Möglichkeiten, die eine Häufigkeitsanalyse der gesamten Nachricht liefert:
Aufgabe: Analysieren Sie, welche Schlussfolgerungen die beiden Ergebnisse jeweils zulassen.
Betrachten Sie für jedes Ergebnis:
• Sind alle Buchstaben gleichmäßig verteilt?
• Gibt es deutliche Spitzen bei bestimmten Buchstaben?
• Entspricht das Muster der deutschen Häufigkeit (E, N, I häufig)?
Eine flache, gleichmäßige Verteilung deutet darauf hin, dass die charakteristischen Häufigkeitsmuster des Deutschen zerstört wurden.
Eine Häufigkeitskurve mit ausgeprägten Spitzen deutet darauf hin, dass die statistischen Muster erhalten geblieben sind, aber in Form einer anderen Häufigkeitsveteilung als im Detuschen.
🎉 Großartig – Analyse abgeschlossen!
Sie haben die Häufigkeitsanalyse erfolgreich interpretiert und die Verschlüsselungsverfahren klassifiziert. Überprüfen Sie jetzt Ihre Ergebnisse mit der Musterlösung.
Häufigkeitsanalyse als Klassifikationswerkzeug
Die Häufigkeitsanalyse ist eine zentrale kryptoanalytische Methode zur Unterscheidung von Verschlüsselungsverfahren:
| Häufigkeitsmuster | Charakteristika | Mögliche Verfahren | Erklärung |
|---|---|---|---|
| Ergebnis 1: Spitzen erhalten | L, P, A, Z dominieren deutlich Spitzenmuster wie im Deutschen E, N, I |
monoalphabetische Substitution | Monoalphabetische Substitution (z.B. Caesar): Jeder Buchstabe wird konsistent durch den gleichen anderen ersetzt (A → D, B → E, ...). Die statistische Struktur des Deutschen bleibt erhalten. |
| Ergebnis 2: Gleichmäßige Verteilung | Alle Buchstaben haben ähnliche Häufigkeiten Keine ausgeprägten Spitzen |
Polyalphabetisches Verfahren oder moderne Verschlüsselung | Eine gleichmäßige Verteilung deutet darauf hin, dass die Verschlüsselung position-abhängig arbeitet (z.B. Vigenère-Chiffre). Dabei wird jeder Buchstabe je nach Position durch verschiedene Buchstaben ersetzt, was die Häufigkeitsmuster flacht. |
Fazit:
- Ergebnis 1 spricht für ein einfaches Verfahren (monoalphabetische Substitution), da die deutschen Häufigkeitsmuster noch sichtbar sind.
- Ergebnis 2 deutet auf fortgeschrittene Verschlüsselung hin, die die statistischen Muster des Deutschen vollständig maskiert.
- Sicherheit durch Komplexität: Je gleichmäßiger die Häufigkeitsverteilung, desto robuster ist die Verschlüsselung gegen Häufigkeitsanalyse!
⚠ Didaktischer Hinweis: Ergebnis 1 könnte sowohl aus einem Transpositionsverfahren als auch aus einer einfachen Substitution (wie Caesar) stammen – mit der Häufigkeitsanalyse allein können Sie zwischen diesen beiden nicht unterscheiden. Zusätzliche Analysen (z.B. Bigramm-Häufigkeiten) wären nötig.
Vigenère
Der französische Diplomat Blaise de Vigenère (1523–1596) entwickelte die nach ihm benannte Verschlüsselungsmethode, um die Schwächen des Caesar-Chiffres und anderer monoalphabetischer Verfahren zu überwinden. Statt nur eines Alphabets werden bei der Vigenère-Chiffrierung mehrere (bis zu 26) verwendet, die dadurch entstehen, dass man das Ausgangsalphabet jeweils zyklisch um eine Position verschiebt und die so entstandenen Alphabete im sogenannten Vigenère-Quadrat untereinander anordnet.
Die Vigenère-Chiffre stellt historisch gesehen die erste polyalphabetische Substitution dar. Ihre Kryptoanalyse galt lange Zeit als praktisch unmöglich.
Schauen wir uns ein konkretes Beispiel an.
Der zu verschlüsselnde Klartext ist "Die Herbstferien sind viel zu kurz" und der Schlüssel soll das Wort "Geheim" sein. Grundlage des Verfahrens ist das Vigenère-Quadrat:
Bewegen Sie die Maus über die Tabelle, um die Verschlüsselung zu verstehen:
| Klartextzeichen | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
Nun verschlüsselt man jedes Zeichen des Klartextes mit einem Schlüsselzeichen. Dafür kann man zum Beispiel den Schlüssel, in der Tabelle als "k" für key bezeichnet, unter den Klartext, in der Tabelle als "KT" bezeichnet, schreiben. Ist das letzte Schlüsselzeichen verwendet worden, beginnt man wieder von vorne, bis man beim letzten Klartextzeichen angekommen ist. Groß- und Kleinschreibung ist für die Verschlüsselung nicht relevant und Satzzeichen sowie andere Sonderzeichen ebenso.
| KT | d | i | e | h | e | r | b | s | t | f | e | r | i | e | n | s | i | n | d | v | i | e | l | z | u | k | u | r | z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| k | g | e | h | e | i | m | g | e | h | e | i | m | g | e | h | e | i | m | g | e | h | e | i | m | g | e | h | e | i |
Jedes Zeichen des Klartextes wird nun mit seinem Schlüsselzeichen mit Hilfe des Vigenère-Quadrates verschlüsselt. Das erste Klartextzeichen ist ein "d", weshalb man sich dieses in der ersten Spalte heraussucht. Nun sucht man in der obersten Zeile das dazugehörige Schlüsselzeichen, hier "g". Die Zeile zum "g" und die Spalte zum "d" treffen sich bei "j". Dies ist das erste Zeichen unseres Geheimtextes.
Geheimtext nach dem Verschlüsseln des ersten Klartextzeichens:
| KT | d | i | e | h | e | r | b | s | t | f | e | r | i | e | n | s | i | n | d | v | i | e | l | z | u | k | u | r | z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| k | g | e | h | e | i | m | g | e | h | e | i | m | g | e | h | e | i | m | g | e | h | e | i | m | g | e | h | e | i |
| GT | j |
Für das zweite Geheimtextzeichen verschlüsselt man das zweite Klartextzeichen "i" mit seinem entsprechenden Schlüsselzeichen, nun "e".
Geheimtext nach dem Verschlüsseln des zweiten Klartextzeichens:
| KT | d | i | e | h | e | r | b | s | t | f | e | r | i | e | n | s | i | n | d | v | i | e | l | z | u | k | u | r | z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| k | g | e | h | e | i | m | g | e | h | e | i | m | g | e | h | e | i | m | g | e | h | e | i | m | g | e | h | e | i |
| GT | j | m |
Fortsetzung: Dieses Verfahren wird für alle Zeichen fortgesetzt. Der Schlüssel "Geheim" (6 Buchstaben) wird so lange wiederholt, bis alle 30 Zeichen des Klartextes verschlüsselt sind. Das Ergebnis ist ein Geheimtext, bei dem jeder Buchstabe abhängig von seiner Position im Text verschlüsselt wurde.
Aufgaben
🔐 Vorwissenscheck: Vigenère-Verfahren
Beantworte die folgenden Fragen ehrlich – es gibt kein Richtig oder Falsch als Bewertung. Das Ergebnis hilft dir, mit dem passenden Niveau zu starten.
🟢 Niveau: Light
Du arbeitest hier mit vorbereiteten Tabellen, schrittweisen Erklärungen und ausführlichen Hilfen. Ziel ist es, das Vigenère-Verfahren sicher anzuwenden – Schritt für Schritt, ohne Zeitdruck. Nutze die Hilfen aktiv!
Vervollständige die Verschlüsselung des folgenden Klartextes mit dem Vigenère-Verfahren.
Vorgehen: Wiederhole den Schlüssel so oft, bis er die Länge des Klartextes erreicht. Dann gilt für jede Position: (Position Klartextbuchstabe + Position Schlüsselbuchstabe) mod 26 = Position Geheimtextbuchstabe (A=0, B=1, …, Z=25).
Die ersten vier Buchstaben sind bereits verschlüsselt. Vervollständige die restlichen sechs Felder (markiert mit ?):
| Position | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| Klartext | G | E | H | E | I | M | T | E | X | T |
| Schlüssel (wiederholt) | C | O | D | E | C | O | D | E | C | O |
| Geheimtext | I | S | K | I | ? | ? | ? | ? | ? | ? |
Das Vigenère-Verfahren addiert die Positionen von Klartext- und Schlüsselbuchstaben (A=0, B=1, …, Z=25).
Beispiel: H (=7) + A (=0) = 7 → H | A (=0) + K (=10) = 10 → K
Falls die Summe ≥ 26 ist: ziehe 26 ab.
Beispiel: T (=19) + N (=13) = 32 → 32 – 26 = 6 → G
Klartextbuchstabe: I = 8
Schlüsselbuchstabe: C = 2
Summe: 8 + 2 = 10 → Buchstabe Nr. 10 = K
Trage K als Geheimtextbuchstabe an Position 5 ein.
A=0, B=1, C=2, D=3, E=4, F=5, G=6, H=7, I=8, J=9, K=10, L=11, M=12, N=13, O=14, P=15, Q=16, R=17, S=18, T=19, U=20, V=21, W=22, X=23, Y=24, Z=25
Rechne jetzt die Positionen 6–10 nach demselben Prinzip.
Denke dir eine eigene kurze Nachricht mit mindestens 10 Zeichen und einen Schlüssel aus (nur Großbuchstaben, keine Leerzeichen). Verschlüssele deine Nachricht mit dem Vigenère-Verfahren.
- Schreibe deinen Klartext auf (z. B. INFORMATIK).
- Schreibe deinen Schlüssel auf und wiederhole ihn, bis er so lang ist wie dein Klartext.
- Addiere die Positionen (A=0 … Z=25) buchstabenweise. Falls ≥ 26: ziehe 26 ab.
- Notiere den Geheimtext. Gib ihn anschließend an Partner B weiter – ohne Schlüssel und Klartext zu verraten!
Ist dein Klartext INFORMATIK (10 Zeichen) und dein Schlüssel STAR (4 Zeichen),
dann lautet der wiederholte Schlüssel: S T A R S T A R S T
I (=8) + S (=18) = 26 → 26 – 26 = 0 → A
N (=13) + T (=19) = 32 → 32 – 26 = 6 → G
F (=5) + A (=0) = 5 → F
... und so weiter für alle Buchstaben.
Alternativ zur Rechenformel kannst du das Vigenère-Quadrat nutzen:
Gehe in der Zeile des Schlüsselbuchstabens und der Spalte des Klartextbuchstabens zum Schnittpunkt – das ist dein Geheimtextbuchstabe.
Erhalte den Geheimtext und den Schlüssel von Partner A. Entschlüssele die Nachricht mit Hilfe des Vigenère-Quadrats oder der Formel.
- Wiederhole den Schlüssel, bis er so lang wie der Geheimtext ist.
- Für jede Position: Geheimtext-Position minus Schlüssel-Position = Klartext-Position.
- Falls das Ergebnis negativ ist: addiere 26.
Gehe in die Zeile des Schlüsselbuchstabens.
Suche in dieser Zeile deinen Geheimtextbuchstaben.
Lies dann ab, in welcher Spalte (= Kopfzeile) dieser Buchstabe steht – das ist dein Klartextbuchstabe.
Beispiel: Geheimtext I (=8), Schlüssel C (=2)
8 – 2 = 6 → G ✓
Negatives Beispiel: Geheimtext A (=0), Schlüssel O (=14)
0 – 14 = –14 → –14 + 26 = 12 → M ✓
Ergibt dein entschlüsselter Text ein sinnvolles deutsches oder englisches Wort/eine Phrase? Wenn nicht, prüfe:
• Hast du den Schlüssel korrekt wiederholt?
• Hast du bei negativen Werten +26 gerechnet?
🎉 Super – alle Aufgaben erledigt!
Du hast alle Aufgaben abgehakt. Wenn du deine Ergebnisse überprüfen möchtest, kannst du jetzt die Musterlösung aufrufen.
Musterlösung zu Aufgabe 1 (Vervollständigung der Tabelle):
| Position | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| Klartext | G | E | H | E | I | M | T | E | X | T |
| Schlüssel | C | O | D | E | C | O | D | E | C | O |
| Position (Klartext) | 6 | 4 | 7 | 4 | 8 | 12 | 19 | 4 | 23 | 19 |
| Position (Schlüssel) | 2 | 14 | 3 | 4 | 2 | 14 | 3 | 4 | 2 | 14 |
| Summe (mod 26) | 8 | 18 | 10 | 8 | 10 | 0 | 22 | 8 | 25 | 7 |
| Geheimtext | I | S | K | I | K | A | W | I | Z | H |
Geheimtext: ISKIKAWIZH
⚠ Hinweis zu Aufgaben 2 & 3: Da hier eigene Nachrichten verwendet wurden, gibt es keine feste Musterlösung. Überprüft gegenseitig eure Ergebnisse – wenn Partner B denselben Text wie Partner A erzeugt hat: ✓
🔵 Niveau: Basis
Du wendest das Vigenère-Verfahren selbstständig an und analysierst es schriftlich. Hilfen sind verfügbar, aber du solltest zuerst eigenständig versuchen, die Aufgaben zu lösen. Beide Partner bearbeiten alle Aufgaben, diskutieren aber gemeinsam.
Bearbeitet die folgenden Teilaufgaben in arbeitsteiliger Partnerarbeit:
🔴 Partner A Vervollständige die Verschlüsselung des Klartextes GEHEIMTEXT mit dem Schlüssel CODE aus dem Einstiegsbeispiel. Nutze die Formel: (Klartext-Position + Schlüssel-Position) mod 26.
🔴 Partner A Denke dir anschließend eine eigene Nachricht (≥ 10 Zeichen) und einen Schlüssel aus. Erzeuge den Geheimtext und gib ihn an Partner B weiter.
🟢 Partner B Erhalte Geheimtext und Schlüssel von Partner A. Entschlüssele die Nachricht mit dem Vigenère-Quadrat.
Wiederhole den Schlüssel cyclisch. Addiere für jede Position die Alphabetpositionen (A=0 … Z=25). Falls die Summe ≥ 26 ist, ziehe 26 ab.
Gehe im Vigenère-Quadrat in die Zeile des Schlüsselbuchstabens. Suche dort den Geheimtextbuchstaben. Die Spalte (Kopfzeile) ergibt den Klartextbuchstaben.
Mit Formel: (Geheimtext-Position – Schlüssel-Position + 26) mod 26
Erläutert, weshalb es sich beim Vigenère-Verfahren um ein polyalphabetisches Verfahren handelt, und gebt an, wie viele Geheimtextalphabete es bei einer Schlüssellänge von n gibt.
Vergleicht anschließend das Vigenère-Verfahren mit dem Caesar-Verfahren.
„Poly" = viele. Ein polyalphabetisches Verfahren verwendet mehrere Geheimtextalphabete – je nach Position im Text wird ein anderes Alphabet angewendet.
Frage dich: Wird der Buchstabe E im Klartext immer durch denselben Buchstaben ersetzt?
Jeder Schlüsselbuchstabe definiert eine andere Verschiebung = ein anderes Geheimtextalphabet.
Wie viele verschiedene Schlüsselbuchstaben gibt es bei Schlüssellänge n?
Beim Caesar-Verfahren gibt es genau einen Schlüssel (eine Verschiebung) für den gesamten Text. Welcher Begriff passt dazu: mono- oder polyalphabetisch?
Entscheidet, ob eine einfache Häufigkeitsanalyse beim Vigenère-verschlüsselten Geheimtext ein geeignetes Mittel der Kryptoanalyse ist. Begründet eure Antwort ausführlich.
Im deutschen Text ist E der häufigste Buchstabe. Beim Caesar-Verfahren wird E immer durch denselben Buchstaben ersetzt. Deshalb ist der häufigste Geheimtextbuchstabe wahrscheinlich das verschlüsselte E.
Überlege: Der Klartext-Buchstabe E an Position 1 wird mit Schlüsselbuchstabe C verschlüsselt → G.
Derselbe Buchstabe E an Position 5 wird mit Schlüsselbuchstabe G verschlüsselt → K.
Was bedeutet das für die Häufigkeitsverteilung im Geheimtext?
Formuliere: „Die einfache Häufigkeitsanalyse ist [geeignet / nicht geeignet], weil …"
Nutze konkrete Beispiele aus dem Vigenère-Verfahren als Belege.
🎉 Hervorragend – alle Aufgaben abgeschlossen!
Du hast alle Aufgaben abgehakt. Wenn du deine Ergebnisse überprüfen möchtest, kannst du jetzt die Musterlösung aufrufen.
Aufgabe 1 – Musterlösung (GEHEIMTEXT + CODE):
| Klartext | G | E | H | E | I | M | T | E | X | T |
|---|---|---|---|---|---|---|---|---|---|---|
| Schlüssel | C | O | D | E | C | O | D | E | C | O |
| Geheimtext | I | S | K | I | K | A | W | I | Z | H |
→ Geheimtext: ISKIKAWIZH
Aufgabe 2 – Musterlösung (Polyalphabetisch):
Das Vigenère-Verfahren ist polyalphabetisch, weil derselbe Klartextbuchstabe je nach seiner Position im Text unterschiedlich verschlüsselt wird – abhängig vom jeweiligen Schlüsselbuchstaben. Jeder der n verschiedenen Schlüsselbuchstaben definiert eine eigene Verschiebung, also ein eigenes Geheimtextalphabet. Bei Schlüssellänge n gibt es folglich n Geheimtextalphabete.
Im Vergleich dazu ist das Caesar-Verfahren monoalphabetisch: Es verwendet nur einen Schlüssel (eine feste Verschiebung) für den gesamten Text, sodass jeder Klartextbuchstabe immer durch denselben Geheimtextbuchstaben ersetzt wird.
Aufgabe 3 – Musterlösung (Häufigkeitsanalyse):
Die einfache Häufigkeitsanalyse ist beim Vigenère-Verfahren nicht geeignet. Im Vigenère-Verfahren wird derselbe Klartextbuchstabe (z. B. E) je nach Position durch unterschiedliche Geheimtextbuchstaben ersetzt. Dadurch werden die natürlichen Häufigkeitsunterschiede der deutschen Sprache (E ist häufigster Buchstabe mit ~17,5 %) im Geheimtext „geglättet" – die Buchstaben verteilen sich gleichmäßiger. Eine einfache Zuordnung „häufigster Geheimtextbuchstabe = E" ist deshalb nicht möglich.
🟣 Niveau: Challenge
Du bearbeitest alle Aufgaben eigenständig mit minimaler Unterstützung. Die Analyse- und Erkläraufgaben fordern präzise, formal korrekte Argumentation. Eine Bonusaufgabe führt dich über den Unterrichtsstoff hinaus.
🔴 Partner A Vervollständige die Verschlüsselung von GEHEIMTEXT mit Schlüssel CODE (vgl. Einstiegsbeispiel). Erzeuge anschließend eine eigene Nachricht (≥ 10 Zeichen) mit selbstgewähltem Schlüssel und übergib nur den Geheimtext an Partner B.
🟢 Partner B Entschlüssele die Nachricht von Partner A mithilfe des Vigenère-Quadrats.
Erläutert präzise, weshalb das Vigenère-Verfahren polyalphabetisch ist. Gebt dabei die allgemeine Formel für die Verschlüsselung an und bestimmt die Anzahl der Geheimtextalphabete in Abhängigkeit von der Schlüssellänge n.
Vergleicht systematisch mit dem Caesar-Verfahren und bewertet, welches Verfahren aus Sicht der Kryptographie sicherer ist – und warum.
Begründet, warum eine einfache Häufigkeitsanalyse beim Vigenère-Verfahren scheitert. Beschreibt dabei konkret, was mit der Häufigkeitsverteilung der Buchstaben im Geheimtext passiert.
Erweiterung: Recherchiert den Begriff „Kasiski-Test" und erklärt das Grundprinzip: Welches Ziel verfolgt dieser Test, und welche Information liefert er über den Schlüssel?
Ein Angreifer hat den Geheimtext ISKIKAWIZH abgefangen und weiß, dass die Schlüssellänge 4 beträgt. Erklärt schriftlich und strukturiert, wie der Angreifer vorgehen würde, um den Klartext zu ermitteln. Wendet das Verfahren anschließend auch praktisch an und gebt den Klartext an.
Geheimtext: I S K I K A W I Z H (Positionen 1–10)
Gruppe 1 (Pos. 1,5,9): I, K, Z
Gruppe 2 (Pos. 2,6,10): S, A, H
Gruppe 3 (Pos. 3,7): K, W
Gruppe 4 (Pos. 4,8): I, I
Probiere für jede Gruppe alle 26 möglichen Verschiebungen. Welche ergibt sinnvolle (deutsche) Buchstaben?
Beispiel Gruppe 1: Verschiebung 2 (= C): I(8)–2=6=G, K(10)–2=8=I, Z(25)–2=23=X → Teil von GEHE…
🏆 Exzellente Arbeit!
Du hast alle Aufgaben abgehakt. Wenn du deine Ergebnisse überprüfen möchtest, kannst du jetzt die Musterlösung aufrufen.
Aufgabe 1 – Geheimtext GEHEIMTEXT + CODE:
→ ISKIKAWIZH (Rechenschritte wie in Niveau 2)
Aufgabe 2 – Formale Erklärung:
Allgemeine Vigenère-Formel: ci = (mi + ki mod n) mod 26
Bei Schlüssellänge n gibt es genau n Geheimtextalphabete, weil jeder der n Schlüsselbuchstaben eine eigene Verschiebung (= eigenes Alphabet) definiert. Der Schlüssel wiederholt sich nach n Positionen.
Caesar (n=1): monoalphabetisch, ein Alphabet. Vigenère (n>1): polyalphabetisch, n Alphabete. Je größer n, desto schwieriger ist ein statistischer Angriff – da die Häufigkeiten stärker geglättet werden.
Aufgabe 3 – Häufigkeitsanalyse & Kasiski-Test:
Beim Vigenère-Verfahren wird derselbe Klartextbuchstabe je nach Position durch verschiedene Geheimtextbuchstaben ersetzt. Die Häufigkeitsverteilung im Geheimtext wird dadurch egalisiert – alle Buchstaben erscheinen annähernd gleich oft. Eine direkte Zuordnung (häufigster Geheimtextbuchstabe ≈ E) scheitert.
Kasiski-Test: Suche wiederholte Buchstabenfolgen im Geheimtext. Der Abstand zwischen Wiederholungen ist mit hoher Wahrscheinlichkeit ein Vielfaches der Schlüssellänge n. Ist n bekannt, teilt man den Geheimtext in n Gruppen und greift jede Gruppe separat per Häufigkeitsanalyse (Caesar-Angriff) an.
Bonusaufgabe – Angriff auf ISKIKAWIZH (Schlüssellänge 4):
| Gruppe | Positionen | Geheimtext | Verschiebung | Schlüsselbuchstabe | Klartext |
|---|---|---|---|---|---|
| 1 | 1, 5, 9 | I, K, Z | 2 | C | G, I, X |
| 2 | 2, 6, 10 | S, A, H | 14 | O | E, M, T |
| 3 | 3, 7 | K, W | 3 | D | H, T |
| 4 | 4, 8 | I, I | 4 | E | E, E |
Schlüssel: CODE | Klartext: GEHEIMTEXT ✓
Vorgehen: Für jede Gruppe wurden alle 26 Caesar-Verschiebungen ausprobiert. Die Verschiebung, die sinnvolle Buchstaben (Teil eines deutschen Wortes) ergab, liefert den Schlüsselbuchstaben.
Kryptoanalyse bei Vigenère
Untersuchen Sie den folgenden Geheimtext und analysieren Sie anhand eines Beispiels, wie sich wiederholende Muster im Klartext auf die Vigenère-Verschlüsselung auswirken.
FIQFIQIOUOELOTHFIQTTXOSHSELOIJMAQEJXDHHFDDTELOHRSNZVRGFGHGELFRWGUHSDLFSHFIQJGXOGXOD IJNGFTVJCKIEXUEOFIGFRQJCKUMHIROFBHODLHSRODHSNDMSZBPSFNWJEUJNGJEVFRHJNPBLLHEQGLDHGH
Untersuchen Sie den obigen Geheimtext gemeinsam mit Ihrem Sitzpartner auf Auffälligkeiten.
Lesen Sie den Geheimtext aufmerksam durch. Fallen Ihnen bestimmte Buchstabenfolgen auf, die sich wiederholen?
Suchen Sie gezielt nach identischen Teilfolgen, z. B. Trigrammen (3 Buchstaben) oder längeren Sequenzen. Notieren Sie, wo und wie oft diese vorkommen.
Wiederholungen im Geheimtext können ein Hinweis auf die Schlüssellänge sein – ein zentrales Werkzeug zur Kryptoanalyse der Vigenère-Chiffre (Kasiski-Test).
Betrachten Sie das folgende Beispiel einer Vigenère-Verschlüsselung des Klartextes
eswareinmaleinfischerundseinefraudiewohntenzusammenineinerkleinenfischerhuettedichtaneinem"mit dem Schlüssel
hund".Vervollständigen Sie die Geheimtextzeile (GT) in den folgenden Tabellen:
| KT | e | s | w | a | r | e | i | n | m | a | l | e | i | n | f | i | s | c | h | e | r | u | n | d | s | e | i | n | e |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| k | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h |
| GT |
| KT | d | i | e | w | o | h | n | t | e | n | z | u | s | a | m | m | e | n | i | n | e | i | n | e | r | k | l | e | i |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| k | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u |
| GT |
| KT | n | e | n | f | i | s | c | h | e | r | h | u | e | t | t | e | d | i | c | h | t | a | n | e | i | n | e | m | ... |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| k | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n | d | h | u | n |
| GT |
Bewegen Sie die Maus über die Tabelle:
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
|---|
Schreiben Sie den Schlüssel "hund" so oft unter den Klartext, bis jeder Buchstabe ein Schlüsselzeichen hat. Nutzen Sie dann das Vigenère-Quadrat, um jeden Buchstaben zu verschlüsseln.
Suchen Sie die Zeile des Schlüsselzeichens und die Spalte des Klartextzeichens. Der Buchstabe im Schnittpunkt ist das Geheimtextzeichen.
Das erste Zeichen: Klartext "e" + Schlüssel "h" → Zeile H, Spalte E im Vigenère-Quadrat → Geheimtext "L".
Untersuchen Sie den Klartext auf sich wiederholende 3-Gramme, 4-Gramme oder 5-Gramme (n-Gramm). Nutzen Sie hierzu das Onlinetool cryptool.
Ein 3-Gramm ist eine Folge von 3 aufeinanderfolgenden Buchstaben, z. B. "ein" oder "sch". Suchen Sie, welche solcher Folgen im Klartext besonders oft vorkommen.
Geben Sie den vollständigen Klartext in das Onlinetool ein und wählen Sie die n-Gramm-Analyse. Notieren Sie die häufigsten Trigramme und Tetragramme.
Achten Sie besonders auf Wiederholungen wie "ein", "ine", "ner" – typische Muster im Deutschen, die im Klartext häufig auftreten.
Analysieren Sie, welche Auswirkungen die gefundenen n-Gramme auf den Geheimtext haben und ob man daraus nützliche Schlüsse ziehen kann.
Wenn ein n-Gramm im Klartext mehrfach vorkommt und dabei zufällig an Positionen liegt, die denselben Schlüsselabschnitt verwenden, entsteht im Geheimtext eine identische Zeichenfolge.
Der Abstand zwischen zwei identischen Geheimtext-Sequenzen ist ein Vielfaches der Schlüssellänge. Daraus lässt sich die Schlüssellänge erschließen.
Je länger der Schlüssel im Verhältnis zum Klartext ist, desto seltener wiederholen sich die Schlüsselzeichen an gleichen Positionen – und desto weniger verwertbare Wiederholungen entstehen im Geheimtext.
🎉 Großartig – Aufgaben abgeschlossen!
Sie haben den Geheimtext untersucht, ein Vigenère-Beispiel verschlüsselt und die Bedeutung von n-Grammen für die Kryptoanalyse analysiert. Überprüfen Sie jetzt Ihre Ergebnisse mit der Musterlösung.
Aufgabe 1: Auffälligkeiten im Geheimtext
Im Geheimtext lässt sich die Zeichenfolge FIQ mehrfach finden (z. B. an Position 1, 4 und 64). Der Abstand zwischen diesen Wiederholungen ist jeweils ein Vielfaches von 3 – was auf eine Schlüssellänge von 3 hindeutet.
Aufgabe 2: Vigenère-Verschlüsselung (Auszug)
| KT | e | s | w | a | r | e | i | n |
|---|---|---|---|---|---|---|---|---|
| k | h | u | n | d | h | u | n | d |
| GT | l | m | j | d | y | y | v | q |
Aufgaben 3 & 4: n-Gramme und ihre Auswirkungen
| Beobachtung | Erklärung | Schlussfolgerung |
|---|---|---|
| Häufige Trigramme im Klartext: "ein", "ine", "ner" | Diese n-Gramme kommen im Deutschen sehr häufig vor und wiederholen sich im Märchentext mehrfach. | Treffen sie auf dieselbe Schlüsselposition, entstehen identische Geheimtext-Sequenzen. |
| Wiederholungen im Geheimtext (z. B. "FIQ") | Gleiche Klartextfolge + gleicher Schlüsselabschnitt = gleiche Geheimtextfolge. | Der Abstand der Wiederholungen ist ein Vielfaches der Schlüssellänge (Kasiski-Test). |
| Kurzer Schlüssel "hund" (4 Zeichen) | Der Schlüssel wiederholt sich sehr häufig, was viele gleichartig verschlüsselte Positionen erzeugt. | Ein längerer Schlüssel würde Wiederholungen reduzieren und die Chiffre deutlich stärken. |
⚠ Didaktischer Hinweis: Der Kasiski-Test funktioniert umso besser, je kürzer der Schlüssel im Verhältnis zum Klartext ist. Bei einem einmalig verwendeten Schlüssel gleicher Länge wie der Klartext (One-Time-Pad) ist dieses Angriffsmuster nicht anwendbar.
Kasiski-Test
Wir haben festgestellt, dass bei einer Vigenère-Verschlüsselung die ursprünglichen Zeichenhäufigkeiten des Klartextes „verwischt" werden – das ist der entscheidende Vorteil eines polyalphabetischen gegenüber einem monoalphabetischen Substitutionsverfahren. Sehr lange galt ein mit Vigenère verschlüsselter Text daher als unknackbar – bis zum Kasiski-Verfahren.
FIQFIQIOUOELOTHFIQTTXOSHSELOIJMAQEJXDHHFDDTELOHRSNZVRGFGHGLFRWGUHSDLFSHFIQJGXOGXODIJNGFTVJCKIEXUEOFIGFRQJCKUMHIROFBHODLHSRODHSNDMSZBPSFNWJEUJNGJEVFRHJNPBLLHEQGLDHGH
Zunächst sucht man im Geheimtext nach sich wiederholenden Zeichenketten mit mindestens 3 Zeichen (n-Gramme). Die Idee dahinter: Es ist sehr unwahrscheinlich, dass gleiche Zeichenketten im Geheimtext zufällig durch die Verschlüsselung verschiedener Klartextzeichen mit unterschiedlichen Schlüsselzeichen entstanden sind. Man nimmt daher an, dass diese Zeichenketten auch im Klartext identisch waren und mit denselben Schlüsselzeichen chiffriert wurden. Je länger eine Wiederholung, desto sicherer diese Annahme.
Im Geheimtext lassen sich folgende Wiederholungen finden:
FRQJCKUMHIROFBHODLHSRODHSNDMSZBPSFNWJEUJNGJEVFRHJNPBLLHEQGLDHGH
Wenn man annimmt, dass die Zeichenketten FIQ und ELO jeweils mit denselben Schlüsselzeichen chiffriert wurden, muss die Schlüssellänge ein ganzzahliger Teiler des Abstands zwischen zwei gleichen Vorkommen sein. Man zählt daher für jede Wiederholung alle Abstände vom Anfang eines Vorkommens bis zum Anfang des nächsten.
| Wiederholung | Abstände in Zeichen |
|---|---|
| FIQ | 3, 12, 57, 69, 72 |
| ELO | 15, 18, 33 |
Die gesuchte Schlüssellänge muss ein gemeinsamer Teiler aller (oder der meisten) gefundenen Abstände sein. Man bestimmt daher die Teiler jedes Abstands und sucht die Schnittmenge.
| Abstände | Teiler (gemeinsamer Teiler fett) |
|---|---|
| 3, 12, 57 | 3 | 2, 3, 4, 12 | 3, 19, 57 | 3, 11, 33, 69 | 2, 3, 4, 6, 8, 12, 24, 36, 72 |
| 15, 18 | 3, 5, 15 | 2, 3, 6, 9, 18 |
Wenn die Schlüssellänge tatsächlich 3 ist, wurde der 1., 4., 7., 10., … Buchstabe mit dem ersten Schlüsselzeichen verschlüsselt, der 2., 5., 8., 11., … mit dem zweiten und der 3., 6., 9., 12., … mit dem dritten. Jede dieser Gruppen für sich ist eine Caesar-Verschlüsselung. Der Geheimtext wird daher in 3 Blöcke aufgeteilt:
| Schlüsselzeichen | Block (alle Zeichen an dieser Schlüsselposition) |
|---|---|
| 1 | FFIOOFTOSOMEDFTOSVFGFSFFJOOFJIUFFJUIFOHOSMBFJFJBHGH |
| 2 | IOETITSEIAJHDENHRGERUDSIGGDNTCEEIRCMRBDSNSPNENERNELG |
| 3 | QQULHQXLJQHDLRZGHLWHLHXXVKXOGQKOHLHRDZSWUGVHPLQDH |
Da jeder Block mit Caesar chiffriert wurde, sucht man das Zeichen, das am häufigsten vorkommt – es entspricht wahrscheinlich dem „E", dem häufigsten Buchstaben im Deutschen. Gibt es kein eindeutiges Maximum, werden die nächst häufigsten Zeichen ebenfalls notiert.
| Block | Häufigste Zeichen |
|---|---|
| 1 | F: 14× |
| 2 | E: 9× | N: 6× | G: 6× |
| 3 | H: 11× |
Das häufigste Zeichen eines Blocks entspricht dem verschlüsselten „E". Der Caesar-Schlüssel ist der Abstand dieses Zeichens vom „E" im Alphabet (also seine Nummer minus 5, modulo 26). Bei mehreren Kandidaten werden alle möglichen Schlüssel notiert.
| Block | Häufigstes Zeichen → Caesar-Verschiebung → Schlüsselzeichen |
|---|---|
| 1 | F (14×) → Verschiebung 1 → B |
| 2 |
E (9×) → Verschiebung 0 → A N (6×) → Verschiebung 9 → I G (6×) → Verschiebung 2 → C |
| 3 | H (11×) → Verschiebung 3 → D |
Aus den ermittelten Schlüsselzeichen ergeben sich folgende mögliche Schlüsselwörter:
Das einzige sinnvolle Wort ist BAD. Dieses wird als Schlüssel getestet. Im Normalfall müsste man alle drei Möglichkeiten ausprobieren – ein sinnvolles Wort als Schlüssel zu wählen erleichtert die Kryptoanalyse und ist daher aus Sicherheitssicht nicht empfehlenswert.
Mit dem Schlüssel BAD (Verschiebungen 1 – 0 – 3) wird nun der Geheimtext Zeichen für Zeichen entschlüsselt:
| Geheimtext | F | I | Q | F | I | Q | I | O | U | O | E | L | O | T | H | F | I | Q | T | T |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Schlüssel | B | A | D | B | A | D | B | A | D | B | A | D | B | A | D | B | A | D | B | A |
| Verschiebung | 1 | 0 | 3 | 1 | 0 | 3 | 1 | 0 | 3 | 1 | 0 | 3 | 1 | 0 | 3 | 1 | 0 | 3 | 1 | 0 |
| Klartext | E | I | N | E | I | N | H | O | R | N | E | I | N | T | E | E | I | N | S | T |
Aufgaben
In den folgenden Aufgaben wenden Sie das Vigenère-Verfahren und das Kasiski-Verfahren selbstständig an, implementieren informationstechnische Werkzeuge zur Passwortprüfung sowie Kryptographie und lernen mit dem Running key eine Erweiterung des Vigenère-Verfahrens kennen. Bearbeiten Sie die Aufgaben sorgfältig und dokumentieren Sie alle Schritte.
Bearbeiten Sie die folgenden Teilaufgaben in Einzelarbeit.
Verschlüsseln Sie Ihren Vor- und Zunamen nach dem Vigenère-Verfahren mit dem Schlüsselwort Schule. Groß- und Kleinschreibung sowie Leerzeichen werden dabei ignoriert.
Schreiben Sie Ihren Namen in Kleinbuchstaben ohne Leerzeichen. Schreiben Sie dann den Schlüssel "schule" so oft darunter, bis jeder Klartextbuchstabe ein Schlüsselzeichen hat.
Suchen Sie die Zeile des Schlüsselzeichens und die Spalte des Klartextzeichens. Der Buchstabe im Schnittpunkt ist das Geheimtextzeichen.
Alternativ gilt: GT = (KT + Schlüssel) mod 26, wobei a=0, b=1, …, z=25.
Entschlüsseln Sie den folgenden Geheimtext mit dem Schlüsselwort geheim:
jmlwmebiyjitxiukixzylfmdsiovmdknhlztarkizfkeswvuilaovmioiez
KT = (GT − Schlüssel) mod 26. Ist das Ergebnis negativ, addieren Sie 26.
Suchen Sie die Zeile des Schlüsselzeichens. Finden Sie in dieser Zeile das Geheimtextzeichen. Die Spaltenüberschrift ist der Klartextbuchstabe.
GT = j (9), Schlüssel = g (6): 9 − 6 = 3 → KT = d.
Bearbeiten Sie die folgenden Teilaufgaben schriftlich und ausformuliert in Einzelarbeit.
Entschlüsseln Sie mit Hilfe des Kasiski-Verfahrens den Geheimtext „Geheimtext 1.odt", der mit dem Vigenère-Verfahren chiffriert wurde. Nutzen Sie:
- Ein Textverarbeitungsprogramm
- Häufigkeitsanalyse für n-Gramme (Cryptool)
- Vigenère-Entschlüsselung (Cryptool)
Beschreiben Sie das gesamte Verfahren mit allen Schritten schriftlich.
Öffnen Sie den Geheimtext und suchen Sie mit der Suchfunktion des Textverarbeitungsprogramms nach sich wiederholenden Zeichenketten mit mindestens 3 Zeichen.
Zählen Sie die Abstände zwischen den Wiederholungen. Der größte gemeinsame Teiler (ggT) aller Abstände gibt einen Hinweis auf die Schlüssellänge.
Teilen Sie den Geheimtext in Blöcke auf (1. Zeichen, 2. Zeichen, ... jedes n-ten Zeichens). Führen Sie für jeden Block eine Häufigkeitsanalyse durch und bestimmen Sie die Caesar-Verschiebung. Setzen Sie die Schlüsselzeichen zusammen und testen Sie das Schlüsselwort.
Entschlüsseln Sie mit Hilfe des Kasiski-Verfahrens den Geheimtext „Geheimtext 2.odt", der mit dem Vigenère-Verfahren chiffriert wurde.
Gehen Sie analog zu Aufgabe 2a vor. Dieser Text ist möglicherweise schwieriger — der Schlüssel könnte länger oder die Wiederholungen seltener sein.
Erläutern Sie, wieso die Vigenère-Chiffrierung lange Zeit als sicher galt.
Überlegen Sie, was bei der Caesar-Verschlüsselung die Häufigkeitsanalyse so einfach macht — und was Vigenère daran ändert.
Bei Vigenère wird jeder Buchstabe je nach seiner Position im Text durch einen anderen Buchstaben ersetzt. Ein "e" im Klartext erscheint im Geheimtext als viele verschiedene Buchstaben — das „verwischt" die Häufigkeitsverteilung.
Der entscheidende Schwachpunkt ist die endliche Schlüssellänge: Der Schlüssel wiederholt sich. Genau das nutzt das Kasiski-Verfahren aus.
Untersuchen Sie, wie die Schlüssellänge die Sicherheit des Vigenère-Verfahrens beeinflusst.
Überlegen Sie, was die Extremen bei der Schlüssellänge sein können und vergleichen Sie diese miteinander.
Überlegen Sie, was passiert, wenn der Schlüssel nur ein Zeichen lang ist.
Überlegen Sie, was passiert, wenn der Schlüssel genauso lang ist wie der Klartext.
Partnerarbeit
Um Daten verschlüsseln zu können, benötigt man ein Passwort, das verschiedene Bedingungen erfüllen soll. Beim Setzen eines neuen Passworts wird dieses algorithmisch auf verschiedenste Anforderungen geprüft und eventuelle Verstöße ausgegeben. In einem Programm Passwort sollen Passwörter auf verschiedene Aspekte geprüft werden.
Implementieren Sie ein Programm Passwort, in welchem Sie zunächst ein Passwort erfragen lassen und dieses als Zeichenkette abspeichern.
Um Angriffe möglichst schwierig zu machen, sollte ein sicheres Passwort eine gewisse Länge haben.
Ergänzen Sie das Programm um eine Überprüfung, ob die eingegebene Zeichenkette s eine Länge von 8 oder mehr hat. Je nach Ergebnis der Überprüfung soll eine entsprechende Ausgabe erzeugt werden.
Häufig genutzte Passwörter enthalten z. B. die Ziffernkombination "1234". Mit der Zeichenkettenoperation boolean contains(String s) wird geprüft, ob eine Zeichenkette die Teilzeichenkette s enthält. In diesem Fall wird true zurückgegeben, sonst false.
Hier ein Beispiel:
String passwort = "asd12345";
if (passwort.contains("asd") == true) {
println("Das Passwort ist unsicher.");
}
Erweitern Sie Ihr Programm um eine Überprüfung, ob das eingegebene Passwort die Teilzeichenkette "1234" enthält, und erzeugen Sie eine entsprechende Ausgabe mit einem vernünftigen Satz.
Damit Eingabefehler abgefangen werden können, müssen gewählte Passwörter häufig zweimal gesetzt werden. Die Zeichenkettenoperation boolean equals(String s) überprüft, ob eine Zeichenkette mit der übergebenen Zeichenkette s übereinstimmt.
Erweitern Sie Ihr Programm so, dass nach der ersten Eingabe des Passworts eine zweite Eingabe erfolgt und anschließend überprüft wird, ob beide Eingaben übereinstimmen.
Angenommen, ein Passwort muss die drei folgenden Eigenschaften haben:
- Das Passwort muss mindestens einen Großbuchstaben enthalten.
- Das Passwort muss mindestens einen Kleinbuchstaben enthalten.
- Das Passwort muss mindestens eine Ziffer beinhalten.
Analysieren Sie die folgende Ergänzung des bisherigen Programms und erläutern Sie dessen Funktionsweise:
String pw = Input.readString("Wähle dein Passwort.");
// ...bisheriges Programm
boolean zeichenG = false;
int index = 0;
while (index < pw.length()) {
char zeichen = pw.charAt(index);
int ascii = zeichen;
if (ascii >= 65 && ascii <= 90) {
zeichenG = true;
}
}
if (zeichenG == true) {
println("Das Passwort " + pw + " erfüllt die Anforderungen.");
} else {
println("Das Passwort" + pw + " erfüllt nicht die Anforderungen.");
}
- Ergänzen Sie zwei weitere Variablen vom Datentyp Wahrheitswert.
- Ergänzen Sie hinter dem grünen Code die Überprüfung der anderen beiden Anforderungen. Schauen Sie hierfür eigenständig die ASCII-Dezimalbereiche für Kleinbuchstaben und Ziffern nach.
- Erweitern Sie die blaue Bedingung so, dass auch die beiden neuen Variablen überprüft werden.
Eine neue Anforderung kommt hinzu: In einem Passwort dürfen Zeichenfolgen von zwei Zeichen nicht direkt hintereinander stehen. Z. B. wären "abab2D" oder "77AoAo" keine akzeptierten Passwörter.
Um solche Eigenschaften von Zeichenketten zu überprüfen, kann man die Operation boolean substring(String s) nutzen. Unten ist ein Beispiel für eine Überprüfung, ob ein einzelnes Zeichen mehr als einmal am Stück auftaucht:
String pw = "gg1H";
boolean passt = true;
int i = 0;
while (index < pw.length()) {
if (pw.substring(i, i + 1).equals(pw.substring(i + 1, i + 2))) {
passt = false;
}
}
if (passt == true) {
println("Das Passwort erfüllt die Bedingung.");
} else {
println("Das Passwort erfüllt nicht die Bedingung.");
}
- Analysieren Sie das obige Programm und erläutern Sie dessen Funktionsweise.
- Erweitern Sie Ihr Programm um eine Überprüfung, ob Zeichenfolgen von zwei Zeichen direkt hintereinander stehen.
Erweitern Sie Ihr Programm so, dass ein Passwort so lange eingegeben werden muss, bis es wirklich alle Anforderungen erfüllt.
Partnerarbeit – eA (gA später)
Wählen Sie die Variante, die Ihnen zugewiesen wurde, über die Tabs aus. (Für den Gesamtfortschritt ist die Bearbeitung einer Variante ausreichend).
🟢 Standardvariante (gA)
Arbeiten Sie mit dem Programm CryptoClassGA. Hier finden Sie vorbereitete Stellen und Hinweise direkt im Programmcode.
Kopieren Sie das Programm CryptoClassGA vom folgenden Link:
🔗 https://qr-lernhilfen.de/mobileUrl?url=e2da6d52cfcb818c
Dort finden Sie die Operation caesarVer(String s, int k) zum Caesar-Verschlüsseln einer übergebenen Zeichenkette s mit dem Schlüssel k.
Ergänzen Sie eine Operation caesarEnt(String s, int k) zum Entschlüsseln und testen Sie beide Operationen.
Ergänzen Sie im Programm CryptoClass die Operation vigenereVer(String s, String k) zum Vigenère-Verschlüsseln einer übergebenen Zeichenkette s mit dem Schlüssel k.
Hier muss man wieder schrittweise die Klartextzeichen verschieben. Da die konkrete Verschiebung allerdings regelmäßig wechselt, ist es innerhalb der Schleife nötig, als Verschiebung das aktuelle Schlüsselzeichen zu nutzen.
An das aktuelle Schlüsselzeichen kommt man mit
key.charAt(i), wenn key der Name der Schlüsselvariablen ist.
Da die Zählvariable
i über die Schlüsselgröße hinauswachsen kann, muss man wieder mit einer Modulorechnung der Art key.charAt(i % …) arbeiten.
Erweitern Sie das Programm auch so, dass eine Dechiffrierung möglich ist.
Implementieren Sie im Programm CryptoClass eine Operation
kasiskiTeilen(String s, int k) : String[]
welche eine übergebene Zeichenkette s entsprechend der bekannten Schlüssellänge k so aufteilt, dass der zum ersten Schlüsselzeichen gehörende Teil der Zeichenkette in eine neue Zeichenkette an den Index 0 einer Zeichenketten-Reihung, der Teil zum zweiten Schlüsselzeichen in eine neue Zeichenkette an den Index 1 der gleichen Zeichenketten-Reihung usw. gespeichert wird. Die Operation gibt die Zeichenketten-Reihung zurück.
🔵 Schwierige Variante (eA)
Arbeiten Sie mit dem Programm CryptoClassEA. Hinweise finden Sie direkt im Programmcode an den entsprechenden Stellen.
Kopieren Sie das Programm CryptoClassEA vom folgenden Link:
🔗 https://qr-lernhilfen.de/mobileUrl?url=e2da6d52cfcb818c
Dort finden Sie die Operation caesarVer(String s, int k) zum Caesar-Verschlüsseln einer übergebenen Zeichenkette s mit dem Schlüssel k.
Ergänzen Sie eine Operation caesarEnt(String s, int k) zum Entschlüsseln und testen Sie beide Operationen.
Ergänzen Sie im Programm CryptoClass die Operation vigenereVer(String s, String k) zum Vigenère-Verschlüsseln einer übergebenen Zeichenkette s mit dem Schlüssel k.
- Hier muss man wieder schrittweise die Klartextzeichen verschieben. Da die konkrete Verschiebung allerdings regelmäßig wechselt, ist es innerhalb der Schleife für die Verschiebung nötig, als Verschiebung das aktuelle Schlüsselzeichen zu nutzen.
- An dieses kommt man mit
key.charAt(i)heran, wennkeyder Name der Schlüsselvariablen ist. - Da die Zählvariable
iüber die Schlüsselgröße hinauswachsen kann, muss man wieder mit einer Modulorechnung der Artkey.charAt(i % …)arbeiten.
Erweitern Sie das Programm auch so, dass eine Dechiffrierung möglich ist.
Implementieren Sie im Programm CryptoClass eine Operation
kasiskiTeilen(String s, int k) : String[]
welche eine übergebene Zeichenkette s entsprechend der bekannten Schlüssellänge k so aufteilt, dass der zum ersten Schlüsselzeichen gehörende Teil der Zeichenkette in eine neue Zeichenkette an den Index 0 einer Zeichenketten-Reihung gespeichert wird.
Implementieren Sie eine Operation
kasiskiKey(String[] s) : String
welche eine aus der Operation kasiskiTeilen(String s, int k) : String[] übergebene Zeichenketten-Reihung nacheinander durchläuft, in jeder Zeichenkette mit Hilfe einer Häufigkeitsanalyse das entsprechende Schlüsselzeichen des Vigenère-Schlüssels bestimmt und diesen als Zeichenkette ausgibt.
Eine neue Variante namens Running key soll die Sicherheit von Vigenère verbessern. Dabei werden zwei Schlüsselwörter nacheinander verwendet: Ihre Verschiebungswerte werden addiert und modulo 26 gerechnet, um einen kombinierten Schlüssel zu bilden.
Buchstabe → Verschiebungswert:
| Zeichen | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Wert | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
Für den Klartext "the mandalorian is a bounty hunter" mit den Schlüsseln "grogu" und "dindjarin" ergibt sich:
| KT | t | h | e | m | a | n | d | a | l | o | r | i | a | n | i |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| key1 | g | r | o | g | u | g | r | o | g | u | g | r | o | g | u |
| key2 | d | i | n | d | j | a | r | i | n | d | i | n | d | j | a |
| k%26 | 9 | 25 | 1 | 9 | 3 | 6 | 11 | 22 | 19 | 23 | 14 | 4 | 17 | 15 | 20 |
| GT | c | g | f | s | g | t | o | w | e | l | f | m | r | c | c |
cgfsgtowelfmrccpzcxwgovnfcxvf
Verschlüsseln Sie den Klartext "love wins" mit den Schlüsseln "at" und "sun" nach der obigen Methode.
Entschlüsseln Sie den Geheimtext IHSQIRIHCQCU, der mit den Schlüsseln "go" und "cat" nach der obigen Methode verschlüsselt wurde.
Beurteilen Sie die folgende Aussage:
Vergleichen Sie die Sicherheit von Running key mit der von Vigenère in den bekannten Fällen.
Beurteilen Sie die Relevanz der Geheimhaltung von Algorithmus versus Schlüssel nach Kerckhoffs' Prinzip.
Formulieren Sie eine allgemeine Aussage basierend auf den mathematischen Beziehungen der Teilschlüssel (Teilerfremdheit).
🎉 Alle Aufgaben bearbeitet!
Überprüfen Sie Ihre Ergebnisse mit den offiziellen Musterlösungen.
Aufgabe 1
Aufgabe 1b – Entschlüsselung mit Schlüssel „geheim"
Der entschlüsselte Klartext lautet: „dieses verfahren galt über mehrere jahrhunderte als nicht knackbar"
Aufgabe 2
Aufgabe 2c – Warum galt Vigenère als sicher?
Bei der Vigenère-Verschlüsselung wird jeder Buchstabe je nach seiner Position im Text durch einen anderen Buchstaben ersetzt — ein „e" erscheint im Geheimtext als viele verschiedene Zeichen. Dadurch werden die charakteristischen Häufigkeitsmuster des Deutschen „verwischt", was eine Häufigkeitsanalyse wirkungslos macht. Erst die Erkenntnis, dass der endliche Schlüssel sich wiederholt und dadurch regelmäßige Muster im Geheimtext erzeugt, lieferte mit dem Kasiski-Test (1863) einen systematischen Angriff.
Aufgabe 3
Aufgaben zur Passwortprüfung
Überprüfen Sie Ihre Programmierlösungen mit der offiziellen Musterlösung unter folgendem Link:
🔗 Musterlösung (Passwortprüfung) aufrufen
Aufgabe 5
Aufgabe 5a – Verschlüsselung von „love wins"
Geheimtext: dbipqoff
Aufgabe 5b – Entschlüsselung von „IHSQIRIHCQCU"
Der Klartext lautet: „attack at dawn"
Aufgabe 5c – Beurteilung der Aussage
Die Aussage ist korrekt. Da sich der kombinierte keyB-Schlüssel erst nach kgV(|key1|, |key2|) Zeichen wiederholt, verhält sich Running key mathematisch exakt wie eine einfache Vigenère-Verschlüsselung mit einem Schlüssel dieser Länge.
Aufgabe 5f – Optimale Schlüssellängen
Allgemeine Aussage: Die Schlüssellängen der Teilschlüssel sollten teilerfremd sein (ggT = 1). Dann gilt kgV = Länge1 × Länge2, was den effektiven Schlüssel maximal verlängert und die Sicherheit maximiert.
Data Encryption Standard (DES)
Der Data Encryption Standard (DES) ist ein symmetrisches Verschlüsselungsverfahren. Er arbeitet mit dem gleichen Schlüssel zum Chiffrieren und Dechiffrieren einer Nachricht, weshalb sowohl der Absender als auch der Empfänger denselben Schlüssel nutzen und kennen müssen. DES gilt heute als unsicher und wurde durch den sichereren Advanced Encryption Standard (AES)-Algorithmus ersetzt, mit welchem wir uns hier nicht weiter beschäftigen werden.
DES wurde ursprünglich in den frühen 1970er Jahren von IBM-Forschern entwickelt. Im Jahr 1977 nahm die US-Regierung DES als offiziellen Federal Information Processing Standard (FIPS) für die Verschlüsselung kommerzieller sowie sensibler, noch nicht klassifizierter Computerdaten der Regierung an. DES war der erste Verschlüsselungsalgorithmus, der von der US-Regierung für die Veröffentlichung genehmigt wurde.
Das hatte erhebliche Auswirkungen. Der offizielle Segen der US-Regierung führte dazu, dass DES schnell von der Industrie angenommen wurde. Besonders bei den Finanzdienstleistern, bei denen der Bedarf für starke Verschlüsselung hoch war, stieß DES auf große Akzeptanz. Die Einfachheit im Umgang mit DES war auch der Grund, dass das Verfahren in vielen Bereichen eingesetzt wurde, darunter bei Embedded-Systemen, Smartcards, SIM-Karten und bei der Verschlüsselung von Netzwerkgeräten wie Modems, Set-Top-Boxen und Routern.
Der Data Encryption Standard basiert auf Blockverschlüsselung. Das bedeutet, dass ein kryptographischer Algorithmus gleichzeitig auf einen ganzen Block von Daten angewendet wird – anstatt nur auf ein Bit zu einem Zeitpunkt. Um eine Klartextnachricht zu verschlüsseln, gruppiert DES den Text in 64-Bit-Blöcke. Jeder Block wird unter Verwendung des geheimen Schlüssels durch Permutation und Substitution in einen 64-Bit-Chiffretext verschlüsselt. Der Prozess besteht aus 16 Runden und kann in vier verschiedenen Modi laufen. Die Blöcke lassen sich einzeln verschlüsseln, oder jeder Block wird in Abhängigkeit von allen vorangegangenen Blöcken verschlüsselt.
Entschlüsselung ist die Inverse der Verschlüsselung. Sie folgt den gleichen Schritten wie die Verschlüsselung, nur in der umgekehrten Reihenfolge, in der die Schlüssel angewendet wurden.
Die einfachste Angriffsmethode für jede Verschlüsselung ist die Brute-Force-Attacke. Sie probiert systematisch alle möglichen Schlüssel durch, bis der richtige gefunden wurde. Die Länge des Schlüssels bestimmt dabei die Anzahl der möglichen Schlüssel und somit die Ausführbarkeit dieser Art des Angriffs. DES verwendet einen 64-Bit-Schlüssel, wobei allerdings acht dieser 64 Bit zur Paritätsprüfung verwendet werden. Dies verringert den effektiven Schlüssel auf 56 Bit. Daher benötigt ein Brute-Force-Angriff ein Maximum von 256 (≈ 72 Billiarden) Versuchen, den richtigen Schlüssel zu finden.
Auch wenn wahrscheinlich nur wenige Nachrichten, die mit dem DES-Algorithmus verschlüsselt wurden, einem solchen Angriff ausgesetzt waren: Viele Sicherheitsexperten waren bereits kurz nach der Veröffentlichung von DES überzeugt, dass die 56-Bit-Schlüssellänge unzureichend war – und das noch bevor DES als Standard angenommen wurde. Im Jahr 1998 knackte ein Computer der Electronic Frontier Foundation (EFF) eine DES-verschlüsselte Nachricht in 56 Stunden. Im folgenden Jahr reduzierte die EFF die Entschlüsselungszeit durch die Nutzung von Tausenden von Netzwerkcomputern auf 22 Stunden.
Abgesehen von der Abwärtskompatibilität, die in einigen Fällen notwendig ist, ist heute in jedem Computer-System das Vertrauen in DES bezüglich der Geheimhaltung der Daten ein ernster Security-Design-Fehler und sollte vermieden werden. Es stehen heute sehr viel sicherere Algorithmen zur Verfügung, wie zum Beispiel AES. Ähnlich wie ein billiges Vorhängeschloss wird DES den Inhalt zwar sicher vor ehrlichen Leuten verstecken, aber es wird keinen entschlossenen Dieb stoppen.
Die Verschlüsselungsstärke hängt direkt von der Schlüsselgröße ab. Die DES-56-Bit-Schlüssellänge ist in Anbetracht der Rechenleistung moderner Computer viel zu klein. Deshalb hat das National Institute of Standards and Technology (NIST) im Jahr 1997 eine Initiative angekündigt, um einen Nachfolger für DES zu wählen. Als Ersatz für DES wurde dann im Jahr 2001 der Advanced Encryption Standard (AES) bestimmt.
Der Data Encryption Standard (FIPS 46-3) wurde offiziell im Mai 2005 zurückgenommen, obwohl eine variante von DES – der Triple DES (3DES) – bis 2030 für sensible Informationen der US-Regierung genehmigt ist. 3DES führt drei Iterationen des DES-Algorithmus aus. Wenn die Keying-Option Nummer eins gewählt wird, wird jedes Mal ein anderer Schlüssel verwendet, um die Schlüssellänge auf 168 Bit zu erhöhen. Doch aufgrund der Wahrscheinlichkeit eines Meet-in-the-Middle-Angriffs ist die effektive Sicherheit nur 112 Bit. 3DES-Verschlüsselung ist außerdem langsamer als normales DES.
Obwohl der Data Encryption Standard das Ende seiner Lebensdauer erreicht hat, ist sein Nutzen nicht zu unterschätzen. Er hat wichtige kryptographische Aspekte initiiert, deren Studium angestoßen und die Entwicklung neuer Verschlüsselungsalgorithmen gefördert. Bis DES war Kryptographie eine dunkle Kunst, die beschränkt war auf die Geheimdienste von Militär und Regierung. Der offene Charakter von DES sprach Wissenschaftler, Mathematiker und alle an, die Interesse an Sicherheitsfragen hatten.
Wesentliche Operationen des DES
Es werden nun wesentliche Operationen des DES dargestellt. Diese bilden die Grundlage aller weiteren Aufgaben:
| 1. Substitution (S-Boxen) | 2. Transposition (Permutation) |
|---|---|
|
Substitution ist der Prozess, bei dem bestimmte Teile des Klartextes durch andere Werte ersetzt werden. Im eigentlichen DES erfolgt dies durch die Verwendung von sogenannten S-Boxen (Substitutionsboxen), die eine zentrale Rolle im Verschlüsselungsalgorithmus spielen. Der eigentliche DES verwendet acht S-Boxen, jede mit einer Größe von 6×16. Jede S-Box nimmt 6 Bits als Eingabe und gibt 4 Bits als Ausgabe zurück. Die Verwendung von S-Boxen ermöglicht es, die statistischen Eigenschaften des Klartextes zu verschleiern, da die Beziehung zwischen dem Klartext und dem Geheimtext nicht linear ist. |
Transposition (Permutation) ist der Prozess, bei dem die Positionen der Bits oder Gruppen von Bits im Klartext geändert werden, ohne deren Werte zu verändern. In DES erfolgt dies durch Permutationen. In unserer vereinfachten Version des DES geschieht die Substitution durch die XOR-Verschlüsselungen. |
Permutationen
Permutationen sind spezielle Transpositionen, die wir bereits in der Einführungsphase kennengelernt haben. Hier ein Beispiel:
Auf den Klartext 10110110 soll die Permutation (7, 1, 5, 3, 8, 2, 4, 6) angewendet werden. Das bedeutet: An Position 1 des Geheimtextes steht das Zeichen, das vorher an Position 2 des Klartextes stand; an Position 2 steht das Zeichen von Position 6; an Position 3 das Zeichen von Position 4 – und so weiter.
Möchte man eine Permutation rückgängig machen, wendet man die inverse Permutation auf das Ergebnis an. Die inverse Permutation leitet man wie folgt her: Wir wissen, dass in der Permutationsvorschrift an der 2. Stelle die 1 steht, also muss das 1. Zeichen des Geheimtextes an die 2. Position zurückgeführt werden. Wir wissen aus der Permutationsvorschrift, dass das an der 6. Position die 2 stand, also muss das Zeichen an der 2. Position im Geheimtext an die 6. Position getauscht werden. Führt man dies für alle Positionen durch, ergibt sich als inverse Permutation: (2, 6, 4, 7, 3, 8, 1, 5).
XOR-Verschlüsselung
Ein einfaches Verschlüsselungsverfahren arbeitet wie folgt: Zeichen werden als Bitfolgen aufgefasst (hier: als Byte, also Folgen von 8 Bit).
Zwei Zeichen werden miteinander XOR-verschlüsselt, indem man sich die Bitfolgen übereinander hingeschrieben denkt und die jeweils übereinanderstehenden Bits XOR-verknüpft: Sind die Bits gleich, ist das Ergebnis eine 0, sonst eine 1.
| XOR ⊕ | 0 | 1 |
|---|---|---|
| 0 | 0 | 1 |
| 1 | 1 | 0 |
| KT | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| key | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| GT | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 |
| GT | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|
| key | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| KT | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
(KT ⊕ Schlüssel) ⊕ Schlüssel = KT.
Hinweis: Sie können nun die Aufgaben 1 und 2 bearbeiten oder lesen zunächst den folgenden Text noch durch.
Vereinfachtes Verfahren
Wir betrachten nun eine vereinfachte Version des DES. Anstelle von einem 64-Bit-Block verschlüsseln wir einen 8-Bit-Block. Die Verschlüsselungsfunktion besteht im Folgenden aus einer Permutation und einer XOR-Verschlüsselung, die sich aus einem 8-Bit-Schlüssel ergibt.
Insgesamt wird die Verschlüsselung in zwei Runden durchgeführt. Der Unterschied in beiden Runden ist die jeweilige XOR-Verschlüsselung. In der ersten Runde wird mit den Zeichen 2, 4, 6 und 8 des Schlüssels, also den Zeichen an den geraden Positionen und in der zweiten Runde mit den Zeichen 1, 3, 5 und 7, also den Zeichen an den ungeraden Positionen des Schlüssels, XOR-verschlüsselt. Wenn zum Beispiel der Schlüssel 11010001 ist, dann wird bei der Verschlüsselungsfunktion in der ersten Runde mit 1101 und in der zweiten Runde mit 1000 XOR-verschlüsselt.
Beispiel einer Ver- und Entschlüsselung mit dem vereinfachten DES
Zu verschlüsseln ist der Klartext 10110011 mit dem Schlüssel 10101110. Die Verschlüsselung hat zwei Runden. In beiden Runden wird während des Anwendens der Verschlüsselungsfunktion zunächst die rechte Teilfolge Ri mit der Permutation (2,3,4,1) permutiert. Anschließend erfolgt in der ersten Runde eine XOR-Verschlüsselung mit den Schlüsselpositionen 2, 4, 6 und 8 und in der zweiten Runde mit 1, 3, 5 und 7.
| Klartext | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
|---|---|---|---|---|---|---|---|---|
| Schlüssel | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| L0 | 1 | 0 | 1 | 1 | S2468 | 0 | 0 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|
| R0 | 0 | 0 | 1 | 1 | S1357 | 1 | 1 | 1 | 1 |
Verschlüsseln – Runde 1
Schritt 1 (Aufteilung): L0 = 1011 und R0 = 0011
Schritt 2 (Verschlüsselungsfunktion anwenden):
Permutation (2,3,4,1) mit R0 durchführen und das Ergebnis mit S2468 XOR-verschlüsseln:
| R0 | 0 | 0 | 1 | 1 |
|---|---|---|---|---|
| Permutation | 2 | 3 | 4 | 1 |
| R0p | 1 | 0 | 0 | 1 |
| R0p | 1 | 0 | 0 | 1 |
|---|---|---|---|---|
| S2468 | 0 | 0 | 1 | 0 |
| R0p ⊗ S2468 | 1 | 0 | 1 | 1 |
Schritt 3 (XOR von R0p ⊗ S2468 mit L0):
| R0p ⊗ S2468 | 1 | 0 | 1 | 1 |
|---|---|---|---|---|
| L0 | 1 | 0 | 1 | 1 |
| R1 | 0 | 0 | 0 | 0 |
Schritt 4 (L1 = R0): L1 = R0 = 0011
Also ergibt sich als Ergebnis nach der ersten Runde:
Verschlüsseln – Runde 2
Schritt 1 (Aufteilung): L1 = 0011 und R1 = 0000
Schritt 2 (Verschlüsselungsfunktion anwenden):
Permutation (2,3,4,1) mit R1 durchführen und das Ergebnis mit S1357 XOR-verschlüsseln:
| R1 | 0 | 0 | 0 | 0 |
|---|---|---|---|---|
| Permutation | 2 | 3 | 4 | 1 |
| R1p | 0 | 0 | 0 | 0 |
| R1p | 0 | 0 | 0 | 0 |
|---|---|---|---|---|
| S1357 | 1 | 1 | 1 | 1 |
| R1p ⊗ S1357 | 1 | 1 | 1 | 1 |
Schritt 3 (XOR von R1p ⊗ S1357 mit L1):
| R1p ⊗ S1357 | 1 | 1 | 1 | 1 |
|---|---|---|---|---|
| L1 | 0 | 0 | 1 | 1 |
| R2 | 1 | 1 | 0 | 0 |
Schritt 4 (L2 = R1): L2 = R1 = 0000
Also ergibt sich als Ergebnis nach der zweiten Runde:
Entschlüsseln – Runde 1
Schritt 1 (Aufteilung): L2 = 0000 und R2 = 1100
Schritt 2 (Verschlüsselungsfunktion anwenden):
Permutation (2,3,4,1) mit L2 durchführen und das Ergebnis mit S1357 XOR-verschlüsseln:
| L2 | 0 | 0 | 0 | 0 |
|---|---|---|---|---|
| Permutation | 2 | 3 | 4 | 1 |
| L2p | 0 | 0 | 0 | 0 |
| L2p | 0 | 0 | 0 | 0 |
|---|---|---|---|---|
| S1357 | 1 | 1 | 1 | 1 |
| L2p ⊗ S1357 | 1 | 1 | 1 | 1 |
Schritt 3 (XOR von L2p ⊗ S1357 mit R2):
| L2p ⊗ S1357 | 1 | 1 | 1 | 1 |
|---|---|---|---|---|
| R2 | 1 | 1 | 0 | 0 |
| L1 | 0 | 0 | 1 | 1 |
Schritt 4 (R1 = L2): R1 = L2 = 0000
Also ergibt sich als Ergebnis nach der ersten Entschlüsselungsrunde:
Entschlüsseln – Runde 2
Schritt 1 (Aufteilung): L1 = 0011 und R1 = 0000
Schritt 2 (Verschlüsselungsfunktion anwenden):
Permutation (2,3,4,1) mit L1 durchführen und das Ergebnis mit S2468 XOR-verschlüsseln:
| L1 | 0 | 0 | 1 | 1 |
|---|---|---|---|---|
| Permutation | 2 | 3 | 4 | 1 |
| L1p | 1 | 0 | 0 | 1 |
| L1p | 1 | 0 | 0 | 1 |
|---|---|---|---|---|
| S2468 | 0 | 0 | 1 | 0 |
| L1p ⊗ S2468 | 1 | 0 | 1 | 1 |
Schritt 3 (XOR von L1p ⊗ S2468 mit R1):
| L1p ⊗ S2468 | 1 | 0 | 1 | 1 |
|---|---|---|---|---|
| R1 | 0 | 0 | 0 | 0 |
| L0 | 1 | 0 | 1 | 1 |
Schritt 4 (R0 = L1): R0 = L1 = 0011
Das Ergebnis nach der zweiten Entschlüsselungsrunde ist der ursprüngliche Klartext:
Aufgaben
Bearbeiten Sie die folgenden Aufgaben zu Permutationen (Aufgabe 1) und zur XOR-Verschlüsselung (Aufgabe 2). Nutzen Sie bei Bedarf die gestaffelten Hilfen.
Verschlüsseln Sie den Klartext geheimnis mit der Permutation (3, 4, 5, 1, 9, 6, 2, 8, 7). Entschlüsseln Sie anschließend den Geheimtext gmserhupeei, der mit der 11-stelligen Permutation (3, 7, 8, 10, 5, 1, 4, 6, 9, 11, 2) chiffriert wurde.
Die Permutation (3, 4, 5, 1, 9, 6, 2, 8, 7) bedeutet: Das Zeichen, das im Klartext an Position 3 steht, kommt im Geheimtext an Position 1; das Zeichen von Position 4 kommt an Position 2; und so weiter.
Zum Entschlüsseln: Die inverse Permutation gibt an, wohin das Zeichen des Geheimtextes an Position i im Klartext wandert. Erstellen Sie eine Tabelle: Für jede Position j in der ursprünglichen Permutation mit dem Wert p(j) = k gilt: in der inversen Permutation steht an Position k der Wert j.
Beispiel für Permutation (3, 1, 2): Zeichen 1 geht nach Position 3 → In der Inversen: Position 3 erhält den Wert 1. Zeichen 2 geht nach Position 1 → Inverse: Position 1 erhält Wert 2. Zeichen 3 geht nach Position 2 → Inverse: Position 2 erhält Wert 3. Inverse Permutation: (2, 3, 1).
Eine Erweiterung für Klartexte, die länger sind, ist ein Transpositionsverfahren mit Periode. Schauen wir uns zunächst ein Beispiel an:
Zu verschlüsseln ist der Klartext „Wir essen beim Italiener" (Leerzeichen werden nicht beachtet). Die Periode wird auf 3 gesetzt. Dann werden immer je drei Zeichen mit der Permutation (2, 1, 3) vertauscht:
| Block | Klartext | → | Geheimtext |
|---|---|---|---|
| 1 | W i r | → | i W r |
| 2 | e s s | → | s e s |
| 3 | e n b | → | n e b |
| 4 | e i m | → | i e m |
| 5 | I t a | → | t I a |
| 6 | l i e | → | i l e |
| 7 | n e r | → | e n r |
Verschlüsseln Sie den Klartext „Wir essen beim Italiener", ohne Leerzeichen, mit einer selbstgewählten Permutation für die Periode 7.
Zählen Sie zunächst die Zeichen des Klartextes ohne Leerzeichen. Prüfen Sie, ob 7 die Textlänge teilt.
Für Periode 7 benötigen Sie eine Permutation der Form (a, b, c, d, e, f, g), in der jede Zahl von 1 bis 7 genau einmal vorkommt, z. B. (3, 1, 4, 2, 7, 5, 6).
Verschlüsseln Sie per Hand das Wort AFFE mit dem Schlüssel DU. Das Verschlüsselungsverfahren soll dann wie folgt arbeiten: Die Zeichen des Klartextes werden zeichenweise mit den Zeichen des Schlüssels XOR-verknüpft. Ist der Schlüssel kürzer als der Klartext, wird bei Bedarf von vorne begonnen.
Wandeln Sie alle Zeichen in ihre 8-Bit-ASCII-Darstellung um:
A = 65 = 01000001, F = 70 = 01000110, E = 69 = 01000101
D = 68 = 01000100, U = 85 = 01010101
Schlüsselwiederholung: D U D U (für AFFE). Verknüpfen Sie jedes Bit-Paar mit XOR. Denken Sie daran: gleiche Bits → 0, verschiedene Bits → 1.
Rechnen Sie das binäre Ergebnis zurück in einen Dezimalwert und schauen Sie nach, welchem ASCII-Zeichen er entspricht (z. B. über eine ASCII-Tabelle).
Vergleichen Sie das Vigenère-Verfahren mit der XOR-Verschlüsselung. Arbeiten Sie dabei die Gemeinsamkeiten und Unterschiede heraus.
🎉 Alle Aufgaben abgeschlossen!
Überprüfen Sie Ihre Ergebnisse mit der Musterlösung.
Aufgabe 1 – Permutationen
Aufgabe 1a) – Verschlüsselung von „geheimnis"
Permutation (3, 4, 5, 1, 9, 6, 2, 8, 7) auf g e h e i m n i s:
| Position | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| Klartext | g | e | h | e | i | m | n | i | s |
| Perm. | 3 | 4 | 5 | 1 | 9 | 6 | 2 | 8 | 7 |
| Geheimtext | e | n | g | e | s | m | i | i | h |
Geheimtext: engesmiih – Hinweis: Die Permutation gibt an, von welcher Position das Zeichen kommt. Pos. 1 des GT = Pos. 3 des KT = 'h', etc. Je nach Interpretationsrichtung kann das Ergebnis variieren.
Aufgabe 1a) – Entschlüsselung von „gmserhupeei"
Gerechnet mit der Permutation (3, 7, 8, 10, 5, 1, 4, 6, 9, 11, 2) Inverse Permutation bestimmen und anwenden. Geheimtext: gmserhupeei Klartext: supergeheim
Aufgabe 1b) – Transpositionsverfahren mit Periode 7
„Wir essen beim Italiener" ohne Leerzeichen = WiressenbeimItaliener (21 Zeichen, durch 7 teilbar).
Aufgabe 2 – XOR-Verschlüsselung
Aufgabe 2a) – AFFE ⊕ DU
| KT-Zeichen | Binär (KT) | Schlüssel | Binär (Schlüssel) | XOR-Ergebnis | GT-Zeichen |
|---|---|---|---|---|---|
| A (65) | 01000001 | D (68) | 01000100 | 00000101 | ENQ (5) |
| F (70) | 01000110 | U (85) | 01010101 | 00010011 | DC3 (19) |
| F (70) | 01000110 | D (68) | 01000100 | 00000010 | STX (2) |
| E (69) | 01000101 | U (85) | 01010101 | 00010000 | DLE (16) |
Das Ergebnis sind nicht-druckbare ASCII-Steuerzeichen, was bei XOR mit zufälligen Schlüsseln häufig vorkommt.
Aufgabe 2b) – Vergleich XOR ↔ Vigenère
| Eigenschaft | XOR-Verschlüsselung | Vigenère-Verfahren |
|---|---|---|
| Schlüsselnutzung | Schlüssel wird wiederholt (modulo-Länge) | Schlüssel wird wiederholt |
| Zeichenmenge | Alle 256 ASCII-Werte (Bytes) | Nur Buchstaben (a–z oder A–Z) |
| Operation | Bitweise XOR-Verknüpfung | Alphabetische Addition (mod 26) |
| Entschlüsselung | Selbstinvers: erneutes XOR mit gleichem Schlüssel | Inverse Operation: alphabetische Subtraktion |
| Sicherheit | Theoretisch unknackbar bei einmaligem Schlüssel gleicher Länge (One-Time-Pad) | Durch Kasiski-Test angreifbar |
⚠ Didaktischer Hinweis: XOR ist in der modernen Kryptographie allgegenwärtig. Der entscheidende Vorteil gegenüber Vigenère liegt in der mathematischen Einfachheit und der universellen Anwendbarkeit auf beliebige Binärdaten.
Es soll die 8-Bit-Klartextfolge 1 0 1 1 0 0 1 1 mit dem vereinfachten DES chiffriert werden. Arbeiten Sie die Teilaufgaben arbeitsteilig in Ihrer Partnergruppe ab und dokumentieren Sie jeden Zwischenschritt.
Wählen Sie einen beliebigen, jeweils unterschiedlichen 8-Bit-Schlüssel. Jede Person in der Gruppe verschlüsselt anschließend mit ihrem eigenen Schlüssel.
Teilen Sie Ihre 8-Bit-Folge in zwei Hälften L0 und R0 auf. Wenden Sie dann die Verschlüsselungsfunktion auf R0 an:
- Permutiert R0 mit der Permutation
(2, 3, 1, 4). Dies ergibt R0p. - Verschlüsselt R0p mit XOR unter Verwendung der Zeichen an den Positionen 2, 4, 6 und 8 Ihres Schlüssels.
Die Permutation gibt an, an welche neue Position jedes Zeichen von seiner alten Position wandert. Das Zeichen an alter Position 1 wandert an neue Position 2, das Zeichen an alter Position 2 an neue Position 3, usw.
Schreiben Sie sich eine kleine Tabelle: Alte Position (1–4), Zeichen, neue Position (laut Permutation). Sortieren Sie anschließend nach der neuen Position, um R0p abzulesen.
Beim XOR gilt: gleiche Bits ergeben 0, unterschiedliche Bits ergeben 1. Schreiben Sie R0p und die vier Schlüsselzeichen (Position 2, 4, 6, 8) untereinander und verrechnen Sie Stelle für Stelle.
Verschlüsseln Sie das Ergebnis aus b) mit XOR und der linken Hälfte L0 der Klartextfolge. Das Ergebnis ist die rechte Hälfte R1 für den zweiten Durchgang.
Die neue linke Hälfte L1 ist die ursprüngliche rechte Hälfte R0 der Ausgangsbitfolge – hier ist also keine Berechnung nötig, nur die Übernahme des Werts.
Wiederholen Sie die Schritte b) bis d) mit L1 und R1. Wählen Sie diesmal während der Verschlüsselungsfunktion die Zeichen an den Positionen 1, 3, 5 und 7 Ihres Schlüssels (ungerade Positionen).
Die Permutation (2, 3, 1, 4) wird erneut auf R1 angewendet – nur der Teilschlüssel ändert sich (jetzt Position 1, 3, 5, 7 statt 2, 4, 6, 8).
Nach Runde 2 erhalten Sie L2 und R2. Der Geheimtext ist die Aneinanderreihung L2R2 (8 Bit).
Tauschen Sie Ihr Ergebnis zusammen mit Ihrem gewählten Schlüssel mit Ihrem Nachbarn. Entschlüsseln Sie anschließend den Geheimtext der anderen Person mithilfe der grafischen Darstellung des DES (siehe Abbildung oben) – führen Sie die Runden in umgekehrter Reihenfolge durch.
Da XOR selbstinvers ist (zweimal mit demselben Wert XOR-verschlüsselt ergibt wieder den Ausgangswert), lässt sich jede Runde durch erneutes Anwenden derselben Operationen in umgekehrter Reihenfolge rückgängig machen.
Starten Sie mit L2 und R2 des Geheimtextes. Da L2 = R1, kennen Sie sofort R1. Verschlüsseln Sie R1 wie in b)/e) (Permutation + XOR mit dem Runde-2-Teilschlüssel) und verrechnen Sie das Ergebnis per XOR mit R2 – das ergibt L1 = R0. Anschließend wiederholen Sie das Vorgehen für Runde 1, um L0 zu erhalten.
(Zusatz) Wiederholen Sie die Aufgabe mit einer selbst gewählten Klartextfolge, einem selbst gewählten Schlüssel und selbst gewählten Permutationen.
🎉 Alle Teilaufgaben bearbeitet!
Vergleichen Sie Ihr Vorgehen mit dem folgenden durchgerechneten Beispiel (Schlüssel 11010001).
Ausgangswerte: Klartext 1 0 1 1 0 0 1 1 → L0 = 1011, R0 = 0011. Schlüssel: 11010001 → Runde-1-Teilschlüssel 1101 (Position 2,4,6,8), Runde-2-Teilschlüssel 1000 (Position 1,3,5,7).
Runde 1
| Schritt | Rechnung | Ergebnis |
|---|---|---|
| Permutation (2,3,1,4) auf R0 | 0011 → R0p | 1001 |
| XOR mit Teilschlüssel 1101 | 1001 ⊕ 1101 | 0100 |
| XOR mit L0 = 1011 | 0100 ⊕ 1011 | R1 = 1111 |
| L1 = R0 | – | L1 = 0011 |
Runde 2
| Schritt | Rechnung | Ergebnis |
|---|---|---|
| Permutation (2,3,1,4) auf R1 | 1111 → R1p | 1111 |
| XOR mit Teilschlüssel 1000 | 1111 ⊕ 1000 | 0111 |
| XOR mit L1 = 0011 | 0111 ⊕ 0011 | R2 = 0100 |
| L2 = R1 | – | L2 = 1111 |
Geheimtext (L2 R2): 1111 0100
⚠ Da jede Gruppe einen anderen Schlüssel gewählt hat, wird Ihr Ergebnis von diesem Beispiel abweichen – das Rechenschema bleibt aber identisch. Nutzen Sie diese Musterlösung, um Ihre eigene Rechnung Schritt für Schritt zu überprüfen.
Erinnern Sie sich an den Ablauf des DES (siehe Abbildung oben). Verschaffen Sie sich zunächst gemeinsam einen Überblick zu den notwendigen Operationen, die zur algorithmischen Umsetzung des Verschlüsselns notwendig sind. Sie benötigen hierfür das Grundgerüst des Programms CryptoClass.
Diskutieren Sie gemeinsam, welche Bausteine (Operationen) für die Umsetzung des vereinfachten DES notwendig sind: eine XOR-Operation, eine Permutations-Erzeugung, eine Anwendung der Permutation sowie eine Operation, die eine komplette Runde durchführt.
CryptoClass erhalten Sie über den von Ihrer Lehrkraft bereitgestellten Link.
Wählen Sie nun Ihr Anforderungsniveau für die weitere Bearbeitung aus:
Sie betrachten nur die reduzierte Variante von DES mit einer Klartext- und Schlüssellänge von 8 Bit. Bearbeiten Sie die folgenden Teilprobleme in beliebiger Reihenfolge.
Vervollständigen Sie im Programm CryptoClass die Operation xor(String s, String k), welche eine Zeichenkette s mit dem Schlüssel k XOR-verschlüsselt und das Ergebnis als Zeichenkette zurückgibt.
Erläutern Sie auch, weshalb es keine Operation zum Entschlüsseln geben muss.
Vervollständigen Sie im Programm CryptoClass die Operation permutationErstellen(int k), welche eine zufällige Permutation der Länge k erzeugt und als Ganzzahlreihung zurückgibt.
Vervollständigen Sie im Programm CryptoClass die Operation permutationVer(String s, int[] p), welche eine übergebene Zeichenkette s mit einer als Ganzzahlreihung übergebenen Permutation p und der passenden Periode verschlüsselt und das Ergebnis als Zeichenkette zurückgibt. Sie können davon ausgehen, dass die Länge von s ein Vielfaches der Länge von p ist.
Implementieren Sie im Programm CryptoClass eine Operation desVer(String s, String k, int[] p), welche eine übergebene Zeichenkette s mit dem Schlüssel k und der Permutation p eine Runde nach dem DES verschlüsselt. Integrieren Sie eine übersichtliche Konsolenausgabe, um die einzelnen Schritte zu verfolgen. Nutzen Sie hierfür die Operationen permutationVer und xor.
XOR ist selbstinvers: a ⊕ b ⊕ b = a. Ruft man
xor also einfach ein zweites Mal mit demselben Schlüssel auf, erhält man wieder den Ausgangstext – eine eigene Entschlüsselungsmethode ist daher überflüssig.
Erzeugen Sie eine Liste mit den Zahlen 1 bis k und mischen Sie sie zufällig (z. B. mit
Collections.shuffle in Java oder einem eigenen Fisher-Yates-Algorithmus).
🎉 Alle Teilprobleme bearbeitet!
Warum keine Entschlüsselungs-Operation nötig ist: Da XOR selbstinvers ist, entschlüsselt derselbe Aufruf von xor(geheimtext, schluessel) den Text wieder – Ver- und Entschlüsselung nutzen also dieselbe Methode.
public class CryptoClass {
// XOR-Verschlüsselung zweier gleich langer Bitfolgen
public String xor(String s, String k) {
StringBuilder ergebnis = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char bitS = s.charAt(i);
char bitK = k.charAt(i % k.length());
ergebnis.append(bitS == bitK ? '0' : '1');
}
return ergebnis.toString();
}
// Erzeugt eine zufällige Permutation der Länge k (Werte 1..k)
public int[] permutationErstellen(int k) {
int[] p = new int[k];
for (int i = 0; i < k; i++) p[i] = i + 1;
Random zufall = new Random();
for (int i = k - 1; i > 0; i--) { // Fisher-Yates-Shuffle
int j = zufall.nextInt(i + 1);
int tausch = p[i]; p[i] = p[j]; p[j] = tausch;
}
return p;
}
// Wendet Permutation p blockweise auf s an (alte Position i -> neue Position p[i])
public String permutationVer(String s, int[] p) {
int periode = p.length;
char[] ergebnis = new char[s.length()];
for (int block = 0; block < s.length() / periode; block++) {
for (int i = 0; i < periode; i++) {
int altePos = block * periode + i;
int neuePos = block * periode + (p[i] - 1);
ergebnis[neuePos] = s.charAt(altePos);
}
}
return new String(ergebnis);
}
// Eine DES-Runde: Permutation + XOR
public String desVer(String s, String k, int[] p) {
System.out.println("Eingabe: " + s);
String permutiert = permutationVer(s, p);
System.out.println("Nach Permutation: " + permutiert);
String verschluesselt = xor(permutiert, k);
System.out.println("Nach XOR (Schlüssel " + k + "): " + verschluesselt);
return verschluesselt;
}
}
Sie können selbst entscheiden, ob Sie die reduzierte Variante von DES mit 8 Bit oder die Variante mit 64 Bit Klartext- und Schlüssellänge umsetzen. Zusätzlich zur Verschlüsselung soll auch die Entschlüsselung implementiert werden.
Entwerfen und implementieren Sie die Operationen xor(String s, String k), permutationErstellen(int k), permutationVer(String s, int[] p) sowie desVer(String s, String k, int[] p) in beliebiger Reihenfolge (Beschreibung siehe Grundkurs-Tab). Erläutern Sie zusätzlich, weshalb es keine Operation zum Entschlüsseln für xor geben muss.
Implementieren Sie im Programm CryptoClass eine Operation permutationEnt(String s, int[] p), welche eine übergebene Zeichenkette s mit einer Permutation p und der passenden Periode entschlüsselt und das Ergebnis als Zeichenkette zurückgibt.
Bei der Verschlüsselung gilt: altePos i → neue Position p[i]. Bei der Entschlüsselung ist die neue Position (= Position im Geheimtext) bekannt, die alte Position wird gesucht. Sie müssen also für jede Position im Geheimtext das passende i mit p[i] = Position finden.
Sie können
permutationVer nahezu unverändert wiederverwenden, wenn Sie statt p die inverse Permutation p⁻¹ übergeben. Berechnen Sie dazu vor dem Aufruf einmalig p⁻¹ mit p⁻¹[p[i]-1] = i+1.
Implementieren Sie im Programm CryptoClass eine Operation desEnt(String s, String k, int[] p), welche eine übergebene Zeichenkette s mit dem Schlüssel k und der Permutation p eine Runde nach dem DES entschlüsselt. Integrieren Sie auch hier eine übersichtliche Konsolenausgabe. Nutzen Sie permutationEnt und xor.
🎉 Alle Teilprobleme bearbeitet!
Teil a) ist identisch zur Musterlösung im Grundkurs-Tab (xor, permutationErstellen, permutationVer, desVer). Ergänzend Teil b):
// Kehrt die Permutation p blockweise um (Entschlüsselung der Transposition)
public String permutationEnt(String s, int[] p) {
int periode = p.length;
char[] ergebnis = new char[s.length()];
for (int block = 0; block < s.length() / periode; block++) {
for (int i = 0; i < periode; i++) {
int altePos = block * periode + i;
int neuePos = block * periode + (p[i] - 1);
// Umkehrung: Zeichen von neuePos zurück an altePos
ergebnis[altePos] = s.charAt(neuePos);
}
}
return new String(ergebnis);
}
// Eine DES-Runde entschlüsseln: erst XOR rückgängig machen, dann Permutation umkehren
public String desEnt(String s, String k, int[] p) {
System.out.println("Geheimtext: " + s);
String entschluesselt = xor(s, k); // XOR ist selbstinvers
System.out.println("Nach XOR (Schlüssel " + k + "): " + entschluesselt);
String klartext = permutationEnt(entschluesselt, p);
System.out.println("Nach inverser Permutation: " + klartext);
return klartext;
}
Da beim vereinfachten DES pro Runde zuerst permutiert und dann XOR-verschlüsselt wird, müssen beim Entschlüsseln die Operationen in umgekehrter Reihenfolge rückgängig gemacht werden: zuerst XOR (selbstinvers), dann die inverse Permutation.
eA – optional. Ein Blockverschlüsselungsverfahren mit mehreren Verschlüsselungsrunden funktioniert wie folgt:
- Ein 256-Bit-Schlüssel
keywird zufällig erzeugt und in eine linke und eine rechte Teilhälfte aufgeteilt (key1undkey2). Für alle ungeraden Runden (1, 3, 5, …) wirdkey1, für alle geraden Runden (2, 4, 6, …) wirdkey2genutzt. - Der Klartext
ktbesteht aus 256 Bit und wird zu Beginn jeder Runde in eine linke und rechte Teilhälfte aufgeteilt (ktLundktR). - In jeder Runde wird das Ergebnis der vorherigen Runde als neuer Klartext genutzt.
Ablauf einer Verschlüsselungsrunde:
- Klartext und Schlüssel in 2 gleich große Blöcke aufteilen.
- Rechte Klartexthälfte mit dem entsprechenden Schlüssel XOR-verschlüsseln.
- Ergebnis aus Schritt 2 um eine Position nach rechts rotieren (das erste Zeichen wird das zweite usw., das letzte Zeichen wird das erste).
- Ergebnis aus Schritt 3 mit der linken Klartexthälfte XOR-verschlüsseln.
- Ergebnis nach einer Runde neu zusammensetzen.
Die Operation rundenVer(int[] kt, int[] key, int n) ist als Struktogramm gegeben; xor(int[] a, int[] b) führt die XOR-Verschlüsselung zweier Reihungen durch, rotiere(int[] a) führt die in Schritt 3 beschriebene Rotation durch.
Analysieren Sie die Funktionsweise der Operation rundenVer. Gehen Sie hierbei auch auf die Anweisungen „gib kt zurück" und „gib rundenVer(gt, key, n-1) zurück" ein.
rundenVer ruft sich innerhalb der eigenen Definition selbst wieder auf (mit n-1 statt n) – das ist eine rekursive Funktion.
Was passiert, wenn
n = 0 ist? In diesem Fall wird direkt kt zurückgegeben, ohne eine weitere Runde durchzuführen – das ist der Abbruch der Rekursion (Basisfall). Ohne diesen Fall würde sich die Funktion unendlich oft selbst aufrufen.
Ist
n > 0, wird zunächst eine Runde durchgeführt (Ergebnis gt) und anschließend rundenVer(gt, key, n-1) aufgerufen – also dieselbe Funktion mit dem Ergebnis der aktuellen Runde als neuem Klartext und einer Runde weniger. Nach genau n Aufrufen ist n = 0 erreicht und die Rekursion endet.
Implementieren Sie ein Programm Runden256, in dem eine Ganzzahlreihung kt der Größe 256 und eine zweite Ganzzahlreihung key der Größe 256 mit zufälligen Werten (0 oder 1) erstellt werden.
Implementieren Sie im Programm Runden256 die Operationen xor(int[] a, int[] b), rotiere(int[] a) und rundenVer(int[] kt, int[] key, int n). Testen Sie Ihre Ergebnisse anschließend.
Nutzen Sie
Arrays.copyOfRange(...), um kt und key jeweils in eine linke und eine rechte Hälfte (128 Elemente) aufzuteilen.
Prüfen Sie mit
n % 2, ob die aktuelle Runde ungerade oder gerade ist, um zu entscheiden, ob key1 oder key2 verwendet wird. Achten Sie darauf, ob Ihre Rundenzählung aufsteigend oder absteigend erfolgt.
Bei der Rotation um eine Position nach rechts wandert jedes Element eine Position weiter, das letzte Element an den Anfang:
ergebnis[(i+1) % laenge] = a[i].
🎉 Alle Teilaufgaben bearbeitet!
Aufgabe 5a – Analyse der Rekursion
rundenVer ist eine rekursive Operation, die eine Verschlüsselungsrunde durchführt und sich danach mit dem Rundenergebnis gt und einem um 1 verringerten Rundenzähler n-1 selbst erneut aufruft. Die Anweisung „gib kt zurück" ist der Basisfall der Rekursion: Sobald n = 0 erreicht ist (also alle gewünschten Runden durchlaufen wurden), wird keine weitere Runde mehr ausgeführt, sondern direkt das aktuelle Ergebnis zurückgegeben. Ohne diesen Fall würde sich die Funktion unendlich oft aufrufen. Die Anweisung „gib rundenVer(gt, key, n-1) zurück" ist der rekursive Fall: Sie sorgt dafür, dass nach Durchführung einer Runde automatisch die nächste Runde mit dem neuen Klartext gt und einem Rundenzähler gestartet wird, der jedes Mal um 1 sinkt – nach genau n Aufrufen ist der Basisfall erreicht.
Aufgabe 5b & c – Beispielimplementierung (Java)
import java.util.Arrays;
import java.util.Random;
public class Runden256 {
public static void main(String[] args) {
Random zufall = new Random();
int[] kt = erzeugeZufallsfolge(256, zufall);
int[] key = erzeugeZufallsfolge(256, zufall);
int[] geheimtext = rundenVer(kt, key, 4); // z.B. 4 Runden testen
System.out.println("Geheimtext: " + Arrays.toString(geheimtext));
}
private static int[] erzeugeZufallsfolge(int laenge, Random zufall) {
int[] folge = new int[laenge];
for (int i = 0; i < laenge; i++) folge[i] = zufall.nextInt(2); // 0 oder 1
return folge;
}
// XOR zweier gleich langer Ganzzahlreihungen (bitweise)
public static int[] xor(int[] a, int[] b) {
int[] ergebnis = new int[a.length];
for (int i = 0; i < a.length; i++) {
ergebnis[i] = (a[i] == b[i]) ? 0 : 1;
}
return ergebnis;
}
// Rotiert die Reihung um eine Position nach rechts
public static int[] rotiere(int[] a) {
int[] ergebnis = new int[a.length];
for (int i = 0; i < a.length; i++) {
ergebnis[(i + 1) % a.length] = a[i];
}
return ergebnis;
}
// Rekursive Rundenfunktion
public static int[] rundenVer(int[] kt, int[] key, int n) {
if (n == 0) {
return kt; // Basisfall
}
int haelfte = kt.length / 2;
int[] ktL = Arrays.copyOfRange(kt, 0, haelfte);
int[] ktR = Arrays.copyOfRange(kt, haelfte, kt.length);
int[] keyL = Arrays.copyOfRange(key, 0, haelfte);
int[] keyR = Arrays.copyOfRange(key, haelfte, key.length);
// ungerade Runden (n ungerade, absteigend gezählt) -> keyL, sonst keyR
int[] rundenSchluessel = (n % 2 != 0) ? keyL : keyR;
int[] xorErgebnis = xor(ktR, rundenSchluessel);
int[] rotiert = rotiere(xorErgebnis);
int[] neueRechte = xor(rotiert, ktL);
int[] gt = new int[kt.length];
System.arraycopy(ktR, 0, gt, 0, haelfte); // neue linke Hälfte = alte rechte Hälfte
System.arraycopy(neueRechte, 0, gt, haelfte, haelfte);
return rundenVer(gt, key, n - 1); // rekursiver Fall
}
}
⚠ Hinweis: Ob key1 (linke Hälfte) für ungerade oder gerade Runden verwendet wird, hängt davon ab, ob Ihre Rundenzählung n aufsteigend oder absteigend gezählt wird – passen Sie die Bedingung n % 2 ggf. an Ihre eigene Zählweise an.
Asymmetrische Verfahren
Probleme mit dem Schlüsseltausch
Stellen Sie sich vor, Alice und Bob möchten ein sehr sicheres Verschlüsselungsverfahren nutzen, um sich geheime Nachrichten zu schreiben.
Bevor die beiden Nachrichten versenden können, müssen sie sich auf einen gemeinsamen Schlüssel einigen. Dafür müssen sich die beiden entweder treffen oder den Schlüssel über die Post oder einen digitalen Kommunikationsweg austauschen. Letzteres ist heutzutage eher wahrscheinlich. Wenn nun die neugierige Eve erfahren hat, dass die beiden geheime Nachrichten austauschen, möchte sie unbedingt erfahren, welche Geheimnisse die beiden wohl zu bereden haben. Wie kann Eve dabei vorgehen?
Alice schickt nun eine verschlüsselte Nachricht an Bob und Eve hat die Möglichkeit, diese Nachricht abzufangen.
Da die Nachricht verschlüsselt und die Verschlüsselung sehr sicher ist, nützt ihr dieser Schritt nichts. Das Problem ist aber, dass Eve offenbar die Möglichkeit hat, Nachrichten abzufangen und auch weiterzuleiten. Wenn sie das mit der verschlüsselten Nachricht kann, kann sie sicher auch den Austausch des Schlüssels abfangen und weiterleiten. In der analogen Welt könnte Eve einfach die Briefe mit dem Schlüssel und der verschlüsselten Nachricht abfangen. Somit könnte sie jede Nachricht entschlüsseln, lesen und unbemerkt weiterleiten.
Bei allen symmetrischen Verschlüsselungsverfahren muss ein gemeinsamer Schlüssel ausgetauscht werden. Egal wie sicher das eigentliche Verschlüsselungsverfahren ist, stellt dieser Schlüsseltausch immer einen Angriffspunkt und damit eine Schwachstelle dar. Diese Schwachstelle existiert, da beide Kommunikationspartner den gleichen Schlüssel benötigen.
Ein Verfahren ist nur so lange sicher, wie der Schlüssel geheim gehalten werden kann. Sie können davon ausgehen, dass bei Massenkommunikation, wie im Internet oder in Messenger-Diensten, das Verschlüsselungsverfahren selbst nicht geheim ist. Demnach müssen angreifende Personen oder Maschinen immer nur den Schlüssel „finden“. Je mehr mögliche Schlüssel infrage kommen, desto schwieriger ist dies. Ein möglichst großer Schlüsselraum erhöht also die Sicherheit enorm.
Stellen Sie sich folgende Situation vor: Karl Kunde sitzt sonntags vor dem PC, um zu shoppen. Er entdeckt den Online-Shop von Vera Verkäuferin, bei dem er gerne einige Dinge erwerben möchte. Für die Bezahlung möchte er seine Kreditkarte nutzen, die Vera auch akzeptiert. Selbstverständlich sollen die notwendigen Daten ausschließlich an Vera gehen und niemandem sonst, vor allem nicht Spike Spitzbube, der sehr gerne die Kreditkarteninformationen von Karl in die Hände bekäme. Sie können davon ausgehen, dass Vera und Karl sich aufgrund räumlicher Distanz nicht treffen können.
Bilder von einer KI erstellt
Erläutern Sie, warum ein symmetrisches Verschlüsselungsverfahren für die Kommunikation von Vera und Karl nicht geeignet ist.
Denken Sie an den Abschnitt „Probleme mit dem Schlüsseltausch“ oben: Welches grundlegende Problem haben Alice und Bob, bevor sie überhaupt verschlüsselt kommunizieren können?
Übertragen Sie das Problem auf die Situation: Wie müssten Karl und Vera einen gemeinsamen Schlüssel vereinbaren, wenn sie sich nicht treffen können? Welche Rolle könnte Spike dabei einnehmen?
Karl und Vera haben ein neues, besonderes Verfahren entwickelt. Dieses Verfahren kann man sich wie ein Schloss vorstellen. Doch dieses Schloss hat eine Besonderheit: Es besitzt zwei Schlüssellöcher.
Das Neue ist hier, dass sowohl Karl als auch Vera einen eigenen, privaten Schlüssel für das Schloss besitzen.
Der gelbe Schlüssel ist Karls privater Schlüssel und der grüne Veras. Wenn nun eine Nachricht verschlüsselt werden soll, muss das Schloss an diese Nachricht gehängt und geschlossen werden. Wenn die Nachricht wieder gelesen werden soll, muss das Schloss an der Nachricht geöffnet werden.
Situation: Karl möchte eine verschlüsselte Nachricht an Vera schicken
Beschreiben Sie den Ablauf des Verfahrens, wenn Vera eine Nachricht an Karl schicken möchte.
Überlegen Sie zunächst, welcher der beiden Schlüssel (gelb oder grün) zu Karl gehört und welcher zu Vera. Wer soll die Nachricht am Ende lesen können?
Beachten Sie, dass das Schloss zwei getrennte Schritte kennt: das Anhängen/Schließen (Verschlüsseln) und das Öffnen (Entschlüsseln) mit einem bestimmten Schlüssel. Beschreiben Sie beide Schritte einzeln.
Der neugierige Spike hat nun die Möglichkeit, den verschlüsselten Brief abzufangen. Untersuchen Sie, welche der am Kryptosystem beteiligten Komponenten (Schloss, Veras Schlüssel, Karls Schlüssel) öffentlich bekannt sein bzw. ausgetauscht werden dürfen und welche nicht.
Gehen Sie den Ablauf aus a) noch einmal durch: Welche der drei Komponenten wird beim Versenden der Nachricht überhaupt über den unsicheren Kanal transportiert?
Überlegen Sie für jede Komponente einzeln: Könnte Spike allein mit dieser Komponente (ohne die anderen beiden) die Nachricht entschlüsseln?
Karl und Vera müssen das gemeinsame Schloss vorher austauschen. Das soll zwar auf einem möglichst sicheren Kanal geschehen, aber der clevere Spike kann das Schloss abfangen. Entscheiden Sie, ob Spike mit dem Schloss etwas anfangen kann.
Kann man ein Schloss ohne einen passenden Schlüssel öffnen? Kann man es aber verschließen?
Überlegen Sie, ob Spike mit dem bloßen Besitz des Schlosses bereits abgefangene oder zukünftige Nachrichten lesen könnte.
Nun ändern wir die Situation: Karl und Vera haben einen eigenen Schlüssel, wie vorher auch, aber nun jeweils ein eigenes Schloss. Wir gehen davon aus, dass beide Schlösser nur durch den jeweiligen (eigenen) Schlüssel geöffnet werden können. Das Verschließen eines Schlosses kann durch jede Person vorgenommen werden.
Erläutern Sie, weshalb Karl und Vera vorher ihre jeweiligen Schlösser geöffnet austauschen oder an irgendeinem öffentlich zugänglichen Ort deponieren müssen, wenn die beiden verschlüsselte Nachrichten austauschen wollen.
Untersuchen Sie, welchen Nutzen Spike das Abfangen
- der Schlösser,
- einer verschlüsselten Nachricht,
- beider oben genannten Teile
bringen würde.
Überlegen Sie: Wenn Vera an Karl schreiben möchte, mit wessen Schloss muss sie die Nachricht verschließen, damit nur Karl sie öffnen kann?
Ein Schloss kann von jeder Person verschlossen werden – es muss also nicht geheim sein. Was würde passieren, wenn das Schloss stattdessen geheim gehalten würde?
Prüfen Sie für jeden der drei Fälle separat: Was kann Spike mit den abgefangenen Informationen tun, wenn er (1) nur das Schloss, (2) nur die verschlüsselte Nachricht oder (3) beides besitzt? Kommt er in irgendeinem Fall an den Klartext?
Erläutern Sie, was die Verfahren in dieser Aufgabe von allen bisher betrachteten Verschlüsselungsverfahren unterscheidet und worin genau der Mehrwert an Sicherheit liegt. Geben Sie auch ganz deutlich an, welche Komponenten eines solchen Kryptosystems öffentlich, also bekannt, und welche privat, also geheim, sein müssen. Gehen Sie dabei auch darauf ein, weshalb bestimmte Komponenten gerade öffentlich sein müssen.
Erinnern Sie sich an das Kernproblem symmetrischer Verfahren aus dem Einführungsabschnitt: Was mussten Alice und Bob dort zwingend austauschen, was hier nicht mehr nötig ist?
Überlegen Sie: Damit Vera überhaupt eine Nachricht an Karl verschlüsseln kann, muss sie etwas von Karl kennen. Muss dieses „etwas“ also zwangsläufig öffentlich zugänglich sein?
Die privaten Schlüssel sind geheim, während die öffentlichen Schlüssel für jede Person zugänglich sind bzw. auch sein müssen.
Diffie-Hellman-Schlüsseltausch
Durch die Symmetrie der bisher betrachteten Verfahren ergeben sich ganz praktische Schwierigkeiten, wenn man mithilfe von symmetrischen Verfahren kommunizieren möchte. Zum Beispiel mussten im 2. Weltkrieg die Code-Bücher für die Enigma monatlich verteilt werden. Dies setzte einen enormen logistischen Aufwand voraus.
In den 1970er Jahren beauftragten Banken langjährige, vertrauenswürdige Mitarbeiter mit der Überbringung der Schlüssel an Kunden. Dies stellte ebenso einen sehr hohen Aufwand dar.
In der heutigen Zeit ist aufgrund des immens hohen und immer weiter wachsenden Datenaufkommens eine direkte physische Schlüsselverteilung logistisch und finanziell unmöglich.
Eine Forschergruppe in den USA stellte sich in den 1970er Jahren die Frage, ob der Schlüsseltausch so wie bisher angenommen ablaufen muss.
Grundlegend wurde zunächst untersucht, ob ein asymmetrischer Schlüsseltausch möglich ist. Das konkrete Verschlüsselungsverfahren ist hierfür zweitrangig. Der Fokus wird im Folgenden nur auf die Schwachstelle des Schlüsseltauschs gesetzt. Die erste Idee von Diffie und Hellman war, Verfahren so zu gestalten, dass die beiden an der Kommunikation beteiligten Parteien (im Folgenden als Alice und Bob bezeichnet) nicht einen gemeinsamen, sondern einen privaten Schlüssel nutzen, der nicht öffentlich ausgetauscht werden muss. Das Ziel sollte sein, dass jeder mit seinem privaten Schlüssel die Informationen individuell verschlüsseln kann, sodass am Ende beide Parteien zur Entschlüsselung benötigt werden.
Dieser Ansatz hat jedoch den Nachteil, dass wer zuletzt verschlüsselt hat, wieder zuerst entschlüsseln muss. Es muss also die Reihenfolge der Ver- und Entschlüsselung exakt eingehalten werden.
Man kann beweisen, dass es kein sicheres Verschlüsselungsverfahren gibt, bei dem diese Reihenfolge vertauscht werden darf.
1976 entdeckte Hellman eine Variante, wie man einen Schlüsseltausch so durchführen kann, dass am Ende jeder einen eigenen, privaten Schlüssel hat, aber keine der öffentlich getauschten Informationen auf die Schlüssel schließen lässt.
Ein Angreifer darf also alle ausgetauschten Informationen mithören, trotzdem kann er den Schlüssel nicht ableiten. Die Annahme bei dem Verfahren ist, dass das „public secret“ nicht effizient getrennt werden kann.
Hier ist eine vereinfachte grafische Darstellung der Idee:
Das Farbmodell zur Veranschaulichung
- Gemeinsame Farbe wählen: Sie einigen sich über einen öffentlich zugänglichen Kanal auf eine gemeinsame Ausgangsfarbe.
- Geheime Farbe wählen: Jede Seite wählt für sich eine geheime private Farbe aus.
- Mischen und austauschen: Die gemeinsame Farbe wird mit der eigenen privaten Farbe gemischt und öffentlich verschickt. Es wird angenommen, dass sich die Mischung nicht wieder in ihre Bestandteile trennen lässt.
- Empfangene Mischung ergänzen: Die empfangene Farbmischung wird nun mit der eigenen geheimen Farbe vermischt.
- Gemeinsames Ergebnis: Auf beiden Seiten entsteht exakt dieselbe Endfarbe, da nun beide Parteien alle beteiligten Farben zusammengeführt haben.
Alice verschickt nun an Bob die Zahlen A, g und p. Öffentlich bekannt sind nun das Ergebnis von Alices Rechnung ga mod p sowie die Basis für die Potenz g und die Primzahl p. Alices Berechnung geht sehr leicht. Die Frage ist jedoch, wie leicht es für Unbefugte ist, unter Kenntnis des Ergebnisses, der Basis und der Zahl p ihren privaten Schlüssel a (den Exponenten) zu rekonstruieren. Betrachten Sie hierzu das folgende Beispiel:
Alice wählt g = 3, p = 7 und a = 5. Dann berechnet sie: 35 mod 7 = 243 mod 7 = 5.
Ein Angreifer kann nun ohne Probleme an die öffentlichen Informationen 3x mod 7 = 5 gelangen und muss das x rekonstruieren. Hier sehen Sie einen Auszug aus der Wertetabelle der Funktion f mit f(x) = 3x mod 7:
| x | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 3x | 3 | 9 | 27 | 81 | 243 | 729 | 2187 | 6561 | 19683 | 59049 | 177147 |
| f(x) | 3 | 2 | 6 | 4 | 5 | 1 | 3 | 2 | 6 | 4 | 5 |
| x | 12 | 13 | 14 | 15 | 16 | 17 |
|---|---|---|---|---|---|---|
| 3x | 531441 | 1594323 | 4752969 | 14348907 | 43046721 | 129140163 |
| f(x) | 1 | 3 | 2 | 6 | 4 | 5 |
In diesem kleinen Ausschnitt gibt es bereits vier Möglichkeiten für Alices privaten Schlüssel – und die Tabelle setzt sich unendlich fort. Somit hat ein Angreifer keine Möglichkeit, Alices privaten Schlüssel eindeutig zu bestimmen. Der Schlüsseltausch ist an dieser Stelle somit sicher.
Nun berechnet Bob B = gb mod p. Bob wählt seinen privaten Schlüssel b = 7. Daraus ergibt sich: B = 37 mod 7 = 3.
Bob übermittelt seinen Wert B = 3 ebenfalls öffentlich an Alice.
Jetzt berechnet Alice Ba mod p und Bob Ab mod p:
- Alice erhält:
35 mod 7 = 5 - Bob erhält:
57 mod 7 = 5
Alice hat insgesamt (37 mod 7)5 mod 7 und Bob (35 mod 7)7 mod 7 berechnet. Nach den mathematischen Potenzenregeln gilt:
(35 mod 7)7 mod 7 = 35 · 7 mod 7 = (37 mod 7)5 mod 7
Beide Parteien haben somit denselben gemeinsamen Schlüssel K berechnet.
Konkretes Berechnungsbeispiel
Auch bei diesem Verfahren besteht eine Herausforderung: Beide Kommunikationspartner müssen gleichzeitig aktiv sein, um den Schlüssel zu vereinbaren. Die Suche nach noch flexibleren Verfahren führte daher zu neuen Konzepten.
Idee: Asymmetrische Verschlüsselung
- Entdeckung: Von Whitfield Diffie entdeckt und 1976 veröffentlicht.
- Zwei Schlüsselpaare:
- Öffentlicher Schlüssel (Public Key) zum Verschlüsseln/Chiffrieren.
- Privater Schlüssel (Private Key) zum Entschlüsseln/Dechiffrieren.
- Praktische Umsetzung:
- Zunächst handelte es sich lediglich um ein theoretisches Konzept.
- Ronald Rivest, Adi Shamir und Leonard Adleman fanden 1977 schließlich eine passende mathematische Funktion hierfür (das RSA-Verfahren).
- Historischer Hintergrund: Das Verfahren wurde bereits Anfang der 1970er Jahre von James H. Ellis, Clifford Cocks und Malcolm J. Williamson beim britischen Nachrichtendienst GCHQ entdeckt, durfte damals jedoch aufgrund von Geheimhaltungsvorschriften nicht veröffentlicht werden.
Aufgaben
Bearbeiten Sie die folgenden Aufgaben zum Diffie-Hellman-Schlüsseltausch und zur Asymmetrischen Kryptologie. Nutzen Sie bei Bedarf die Hilfestellungen.
Lesen Sie sich den obigen Text zum Diffie-Hellman-Schlüsseltausch durch oder schauen Sie sich das Video an und machen Sie sich Notizen zum Ablauf des Verfahrens.
Achten Sie beim Lesen bzw. Anschauen besonders auf folgende Punkte:
- Welche Werte werden öffentlich ausgetauscht?
- Welche Werte bleiben geheim?
- Wie berechnet jede Seite am Ende denselben Schlüssel?
Führen Sie den Diffie-Hellman-Schlüsseltausch gemeinsam mit Ihrer Partnerin bzw. Ihrem Partner durch. Nutzen Sie dafür das bereitgestellte Tool.
Wählen Sie eine Zahl x zwischen 2 und 15.
Als öffentliche Schlüssel werden g = 7 und p = 11 festgelegt.
Berechnen Sie a = gx mod p und übermitteln Sie das Ergebnis an Ihre Partnerin bzw. Ihren Partner.
Berechnen Sie zuerst
7x (also 7 hoch Ihre gewählte Zahl) und teilen Sie das Ergebnis durch 11. Der mathematische Rest dieser Division ist Ihr Ergebnis a.
Nennen Sie die Zahl, die Sie von Ihrer Partnerin bzw. Ihrem Partner übermittelt bekommen, b.
Berechnen Sie nun k = bx mod p.
Vergleichen Sie das Ergebnis anschließend mit Ihrer Partnerin bzw. Ihrem Partner.
Führen Sie einen weiteren Durchgang aus, indem Sie g = 7 und p = 11 durch andere Zahlen ersetzen.
(Beachten Sie: Die erste Zahl muss kleiner als die zweite Zahl sein und der Modul sollte eine Primzahl sein.)
→ Kapitel65 eine Datei „VorlageAufgabe2“, welche Sie verwenden können, um eine Struktur zu haben.
In dieser Aufgabe wird untersucht, wo genau die mathematischen Herausforderungen für Spike liegen, um bei unserem Schlüsseltauschverfahren an die privaten Schlüssel von Karl und Vera zu gelangen.
Angenommen, Spike hat alle öffentlich ausgetauschten Informationen abgefangen:
- den Generator
g = 7 - das Modul
p = 11 - Veras Ergebnis der Berechnung:
73 mod 11 = 2 - Karls Ergebnis der Berechnung:
76 mod 11 = 4
Versuchen Sie, aus den öffentlich abgefangenen Werten die privaten Schlüssel zu bestimmen.
Untersuchen Sie anhand der folgenden Beispiele, wie das diskrete Logarithmusproblem konkret beschaffen ist:
- Gegeben sei
p = 11,g = 2undA = 8. Finden Siea, sodass2a mod 11 = 8ist. - Gegeben sei
p = 23,g = 5undA = 10. Finden Siea, sodass5a mod 23 = 10ist. - Gegeben sei
p = 101,g = 2undA = 19. Finden Siea, sodass2a mod 101 = 19ist.
Diskutieren Sie, inwieweit sich auch hier a durch Ausprobieren ermitteln lässt und welche praktischen Schwierigkeiten bei größeren Zahlen auftreten können.
In Ihrer Analyse sollten Sie insbesondere darauf eingehen, wie der Schwierigkeitsgrad der Lösung mit der Wahl der Parameter variiert und warum in realen Anwendungen wesentlich größere Werte gefordert sind.
In dieser Aufgabe wird untersucht, wie die Wahl des Moduls die Sicherheit beeinflussen kann.
Wählen Sie das Modul p = 11 und den Generator g = 2.
Berechnen Sie die folgenden Werte durch wiederholtes Multiplizieren mit 2 und jeweils das Bilden des Restes bei Division durch 11.
Erstellen Sie eine Liste der Ergebnisse, bis sich ein Muster wiederholt:
21 mod 11, 22 mod 11, 23 mod 11, 24 mod 11 ...
Beobachten Sie: Erscheinen in Ihrer Liste alle Zahlen, die zwischen 1 und 10 liegen?
Erklären Sie in eigenen Worten, warum es hilfreich ist, dass jede Zahl (außer 0) einmal auftritt.
Wählen Sie nun das Modul p = 15 und den gleichen Generator g = 2.
Berechnen Sie erneut die folgenden Werte und erstellen Sie eine Liste der Ergebnisse, bis sich ein Muster wiederholt:
21 mod 15, 22 mod 15, 23 mod 15, 24 mod 15 ...
Beobachten Sie, ob in der Liste alle Zahlen von 1 bis 14 auftauchen. Gibt es Zahlen, die gar nicht vorkommen?
Diskutieren Sie, warum dieses unvollständige „Verhalten“ Nachteile für die Sicherheit des Schlüsseltauschs haben könnte.
Fassen Sie zusammen, was Ihnen die beiden Beispiele über die Wahl des Moduls sagen, und gehen Sie hierbei auf die folgenden Aspekte ein:
- Warum ist es für die Sicherheit eines Schlüsseltausch-Verfahrens sinnvoll, ein Modul
pzu wählen, bei dem beim wiederholten Multiplizieren (mit einem festen Startwert) alle möglichen Reste (von 1 bis p-1) auftreten? - Warum könnte ein zusammengesetztes Modul (z. B. 15) Probleme bereiten, wenn es darum geht, aus den Berechnungsergebnissen einen sicheren geheimen Schlüssel abzuleiten?
So weit, so gut. Erweitern wir unser Angriffsszenario.
Spike hat nun auch ein eigenes Schloss mit entsprechendem geheimen Schlüssel.
Untersuchen Sie, welche Möglichkeiten sich für Spike jetzt ergeben, wenn er die gesamte Kommunikation zwischen Karl und Vera abfangen kann.
Gehen Sie insbesondere darauf ein, ob Spike mit seinem eigenen Schloss etwas anfangen kann und ob dies den anderen beiden gegebenenfalls auffällt.
Wir erweitern das Szenario erneut. In der Realität ist es so, dass man sowohl mit einem Schlüssel als auch mit einem Schloss verschlüsseln kann. Das wirkt vielleicht auf den ersten Blick nicht möglich, aber ein sehr einfaches Beispiel kennt jede Person aus dem Mathematikunterricht.
Der zu verschlüsselnde Klartext sei die Zahl 5.
Veras privater Schlüssel ist die Funktion g, mit g(x) = √√x (Kubikwurzel).
Veras öffentlicher Schlüssel, also das bisherige Schloss, ist dann die Funktion f, mit f(x) = x3.
Um die Abbildungen anzupassen, werden die öffentlichen Schlüssel ab nun nicht mehr als Schloss dargestellt und die privaten nicht mehr als Schlüssel dargestellt.
Erläutern Sie die Funktionsweise in der Abbildung.
Entwickeln Sie einen privaten und einen öffentlichen Schlüssel für Karl.
Beschreiben Sie den Ablauf, wenn Vera an Karl die Klartextnachricht 4 schicken möchte.
So, jetzt sind wir so weit, dass Vera die für eine Überweisung des Betrags der von Karl gekauften Produkte an Karl weitergeben möchte. Der fiese Spike denkt sich jedoch, dass er viel lieber das Geld auf sein eigenes Konto überwiesen haben möchte. Um das umzusetzen, tauscht er den öffentlichen Schlüssel von Vera aus.
Vergleichen Sie beide Szenarien aus Ihrem Unterrichtsmaterial und beurteilen Sie, ob es mit dem asymmetrischen Konzept des privaten und öffentlichen Schlüssels möglich ist, dass ein Sender authentifiziert, also als der vermeintliche Sender erkannt werden kann.
Erläutern Sie diesen Ablauf.
Schauen Sie sich noch einmal das Verschlüsseln mit öffentlichen und privaten Schlüsseln an. Karl möchte zunächst verschlüsselt einkaufen. Da er weiß, dass er mit Vera kommunizieren möchte, sucht er im öffentlichen Register nach ihrem öffentlichen Schlüssel.
Da Karl ein Kundenkonto besitzt, möchte er natürlich mit seinem Konto einkaufen. Entwickeln Sie mithilfe von Aufgabenteil a) eine Möglichkeit, dass Karl sich bei seiner verschlüsselten Bestellung auch bei Vera authentifizieren kann. Stellen Sie diesen Ablauf auch grafisch dar.
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!
Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.
Musterlösung zu den Aufgaben 1 bis 7
- Ablauf: Beide Kommunikationspartner verständigen sich öffentlich auf zwei Parameter (
gundp). Jede Seite wählt geheim eine eigene Zahl (xbzw.y) und berechnet einen öffentlichen Zwischenwert. Diese Zwischenwerte werden ausgetauscht. Durch erneute Anwendung der Formel mit dem eigenen geheimen Exponenten berechnen beide Seiten denselben gemeinsamen Schlüsselk.
- Öffentliche Werte:
g = 7,p = 11 - Partner A (x = 3): Berechnet
a = 73 mod 11 = 343 mod 11 = 2. Übermittelta = 2. - Partner B (y = 6): Berechnet
b = 76 mod 11 = 117649 mod 11 = 4. Übermitteltb = 4. - Schlüsselberechnung Partner A:
k = bx mod 11 = 43 mod 11 = 64 mod 11 = 9. - Schlüsselberechnung Partner B:
k = ay mod 11 = 26 mod 11 = 64 mod 11 = 9. - Ergebnis: Beide Partner erhalten übereinstimmend den gemeinsamen Schlüssel
k = 9.
- a) Bestimmung der Schlüssel: Aus
7x mod 11 = 2mussxdurch Probieren ermittelt werden (hierx = 3). Aus7y mod 11 = 4ergibt sichy = 6. Bei kleinen Zahlen lässt sich das Problem schnell durch systematisches Ausprobieren lösen. - b) Diskretes Logarithmusproblem:
-2a mod 11 = 8→a = 3(da23 = 8).
-5a mod 23 = 10→a = 3(da53 = 125,125 mod 23 = 10).
-2a mod 101 = 19→ Durch Ausprobieren der Exponenten findet mana = 15.
Erkenntnis: Bei sehr großen Schlüssellängen (z. B. 2048 Bit) existiert kein bekannter effizienter Algorithmus zur Berechnung vona. Das macht das Verfahren sicher.
- a) Modul p = 11 (Primzahl): Die Folge
2n mod 11erzeugt alle Werte von 1 bis 10 (Erzeuger/Primitive Wurzel). Das bedeutet, dass jeder mögliche Rest im Schlüsselraum vorkommen kann. - b) Modul p = 15 (Zusammengesetzte Zahl): Die Folge
2n mod 15ergibt die Werte2, 4, 8, 1, 2, 4, 8, 1.... Es treten nur 4 Reste auf, viele Zahlen fehlen völlig. - c) Sicherheitsbewertung: Wenn nur wenige Reste vorkommen, schrumpft der Suchraum für einen Angreifer drastisch. Ein Modul muss daher eine große Primzahl sein (und
gein primitiver Erzeuger), damit der gesamte Wertebereich ausgenutzt wird.
- Man-in-the-Middle-Angriff: Wenn Spike die gesamte Kommunikation abfängt und durch sein eigenes Schlüsselpaar ersetzt, kann er sich gegenüber Karl als Vera und gegenüber Vera als Karl ausgeben. Ohne Authentifizierung merken Karl und Vera nicht, dass sie in Wirklichkeit jeweils einen Schlüssel mit Spike vereinbart haben.
- a) Funktionsprinzip: Karl verschlüsselt die 5 mit Veras öffentlichem Schlüssel
f(5) = 53 = 125. Vera entschlüsselt mit ihrem privaten Schlüsselg(125) = √√125 = 5. - b) Karls Schlüsselpaar: Z. B. Karls öffentlicher Schlüssel
fK(x) = x2und privater SchlüsselgK(x) = √x. Vera verschlüsselt die 4 mit Karls öffentlichem SchlüsselfK(4) = 42 = 16. Karl berechnetgK(16) = √16 = 4.
- a) Authentifizierung / Signatur: Verschlüsselt der Sender eine Nachricht mit seinem *eigenen privaten Schlüssel*, kann sie jeder mit seinem *öffentlichen Schlüssel* entschlüsseln. Da nur der echte Sender den privaten Schlüssel besitzt, beweist dies die Identität des Senders (Digitale Signatur).
- b) Verschlüsseln & Signieren: Karl signiert seine Bestellung zuerst mit seinem privaten Schlüssel (Authentifizierung) und verschlüsselt das Paket anschließend mit Veras öffentlichem Schlüssel (Vertraulichkeit). Vera entschlüsselt mit ihrem privaten Schlüssel und prüft die Signatur mit Karls öffentlichem Schlüssel.
Digitale Zertifikate und Authentifikation
Wir haben festgestellt, dass die Sicherheit eines asymmetrischen Kryptosystems stark von der Vertrauenswürdigkeit der öffentlichen Schlüssel abhängt. Dies schauen wir uns nun genauer an.
Karl möchte seinen Kauf bei Vera über sein Bankkonto online zahlen.
Analysieren Sie die folgende Abbildung und identifizieren Sie die genauen Bereiche, an denen es Schwachstellen im asymmetrischen Kryptosystem gibt. Erläutern Sie, dass nach der Vorgehensweise der Abbildung Nachrichten sowohl mitgelesen als auch manipuliert werden können.
- Wer stellt den öffentlichen Schlüssel der Bank bereit und wie gelangt Karl an diesen?
- Welchen Schlüssel nutzt Spike, um Karls Nachricht zu entschlüsseln?
- Wie verändert Spike den Inhalt der Überweisung vor der Weiterleitung an die Bank?
Eines der Probleme wurde bereits in einer der vorherigen Aufgaben gelöst. Identifizieren Sie die Stelle, an der die Authentifizierung eine Schwachstelle in der obigen Abbildung beseitigt.
Die Bank möchte ihren öffentlichen Schlüssel verifizieren lassen.
Analysieren Sie die folgende Abbildung und erläutern Sie den Ablauf der Zertifizierung eines öffentlichen Schlüssels.
Spike möchte nicht aufgeben und denkt sich das folgende Szenario aus.
Analysieren Sie die Abbildung und diskutieren Sie, was Spike vorhat und ob seine Ideen erfolgreich sein können.
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!
Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung und Zusammenfassung.
Musterlösung & Zusammenfassung
Problem 1: Vertrauenswürdigkeit der öffentlichen Schlüssel
Damit sichergestellt werden kann, dass ein öffentlicher Schlüssel verlässlich ist, gibt es digitale Zertifikate, auch Public-Key-Zertifikat genannt. Wie der Name verrät, sind dies Zertifikate, welche die Zugehörigkeit eines öffentlichen Schlüssels zum angegebenen Eigentümer dieses Schlüssels bestätigen. Diese Aufgabe übernimmt eine dritte vertrauenswürdige Institution. In der Regel enthält ein digitales Zertifikat die folgenden Informationen:
- den zu bestätigenden öffentlichen Schlüssel
- den Eigentümer / die Eigentümerin des Schlüssels
- die ausstellende Institution des Zertifikats (CA → Certificate Authority)
- die genutzten kryptographischen Verfahren
- die Gültigkeitsdauer des Zertifikats
- eine digitale Signatur der ausstellenden Institution
Problem 2 (gelöst durch digitale Signaturen)
Die Bank erwartet eine signierte Nachricht von Karl, die sie mit seinem öffentlichen Schlüssel verifizieren kann:
Spike könnte allerdings nur seinen eigenen privaten Schlüssel dafür nutzen und die Bank stellt fest, dass sie mit Karls öffentlichem Schlüssel den Sender nicht verifizieren kann:
Zusammenfassung zur finalen Sicherheitsbetrachtung asymmetrischer Verfahren
Bei einem asymmetrischen Verschlüsselungsverfahren hat jeder Kommunikationsteilnehmer einen eigenen privaten Schlüssel. In Kombination mit einem eigenen öffentlichen Schlüssel ist so eine nicht symmetrische Verschlüsselung möglich. Die privaten Schlüssel sind geheim, während die öffentlichen Schlüssel für jede Person zugänglich sind.
Verschlüsselt man eine Nachricht mit dem eigenen privaten Schlüssel, kann man sich so als der tatsächliche Absender authentifizieren. So ist also eine digitale Unterschrift, auch digitale Signatur genannt, ermöglicht worden.
Damit ein solches Kryptosystem, vor allem aufgrund der Tatsache, dass heutzutage sehr viele Personen daran beteiligt sind, möglichst sicher ist, gibt es Zertifizierungsstellen, die digitale Zertifikate für die öffentlichen Schlüssel ausstellen. Damit gewährleisten diese Institutionen unter anderem die folgenden Punkte:
- den zu bestätigenden öffentlichen Schlüssel
- den Eigentümer / die Eigentümerin des Schlüssels
- die ausstellende Institution des Zertifikats (CA → Certificate Authority)
- die genutzten kryptographischen Verfahren
- die Gültigkeitsdauer des Zertifikats
- eine digitale Signatur der ausstellenden Institution
Das noch offene Problem ist, dass Karl sicher sein müsste, dass die zertifizierten Schlüssel vertrauenswürdig sind. Hierfür gibt es keine 100 %-ige Sicherheit. Die folgenden Möglichkeiten, die Sicherheit zu erhöhen, sind diese:
-
Fest eingebaut / fest verdrahtet (Trust Stores): Die wichtigsten Schlüssel sind bereits ab Werk tief in Ihrem Smartphone, in Windows oder in Ihrem Browser (wie Firefox) verankert. Ein Angreifer müsste Ihr komplettes System hacken, um dort einen falschen Schlüssel unterzuschieben.
-
Der Offline-Bote (Out-of-Band): In hochsicheren Firmen werden die Schlüssel gar nicht erst über das unsichere Internet verschickt, sondern zum Beispiel ganz altmodisch per persönlichem Boten übergeben.
-
Fest verdrahtet (Pinning): Viele Apps (wie z. B. Banking-Apps) haben den originalen Schlüssel direkt einprogrammiert. Wenn jemand versucht, der App einen anderen Schlüssel zu präsentieren, verweigert sie sofort die Arbeit.
-
Das gesicherte Telefonbuch (DANE/DNSSEC): Das "Telefonbuch" des Internets (DNS) merkt sich nicht nur die IP-Adresse einer Webseite, sondern notiert auch direkt, welcher Schlüssel der richtige ist – geschützt durch ein fälschungssicheres, digitales Siegel.
-
Das öffentliche Kassenbuch (Certificate Transparency): Das "Telefonbuch" des Internets (DNS) merkt sich nicht nur die IP-Adresse einer Webseite, sondern notiert auch direkt, welcher Schlüssel der richtige ist – geschützt durch ein fälschungssicheres, digitales Siegel.
Im Grunde funktioniert die Sicherheit hier nach dem "Schweizer-Käse-Prinzip": Eine einzelne Methode hat vielleicht irgendwo eine Schwachstelle, aber weil all diese verschiedenen Sicherheitsnetze übereinandergelegt werden, kommt ein Angreifer am Ende nicht hindurch. Hier sind die theoretisch besten Alternativen und warum sie im Alltag scheitern:
-
Vertrauens-Netzwerke (Web of Trust): Statt großen Firmen vertraut man Bekannten ("Ich kenne Person A, A kennt B, also vertraue ich B"). Das ist für das weltweite Internet mit Milliarden von Webseiten aber viel zu unpraktisch.
-
Gemeinschaftliche Kontrolle (Blockchain): Alle Schlüssel liegen in einem dezentralen, fälschungssicheren Kassenbuch, das niemandem allein gehört. Das System ist jedoch starr: Wer sein Passwort verliert, dem kann keine zentrale Stelle mehr helfen.
-
Persönliches Treffen (Der paranoide Weg): Man trif sich physisch im echten Leben und tauscht die Schlüssel direkt aus. Das ist zu 100 % sicher, würde aber spontanes weltweites Surfen und Onlineshopping unmöglich machen.
-
Die Gesetze der Physik (Quanten-Kryptographie): Die Naturgesetze schlagen sofort Alarm, sobald jemand versucht, die Leitung abzuhören. Die Technik ist aktuell jedoch extrem teuer, funktioniert nur auf kurzen Strecken und löst das Problem des ersten "Kennenlernens" nicht.
Fazit: Absolute Sicherheit und weltweite Bequemlichkeit schließen sich gegenseitig aus. Unser heutiges System aus verschiedenen Sicherheitsnetzen ist schlichtweg der beste und alltagstauglichste Kompromiss.
Hashfunktionen für digitale Signaturen
Im Folgenden betrachten wir ein konkretes Verfahren, eine Nachricht digital mit einer sogenannten Hashfunktion zu signieren, um eine Authentifikation zu ermöglichen.
Ein Beispiel für eine vereinfachte Variante der digitalen Signatur mit einer Hashfunktion ist:
| Schritt | Beschreibung | Beispiel |
|---|---|---|
| 1 |
Die Hashfunktion überführt jedes Zeichen der Nachricht in seinen Unicode-Wert, also seinen ASCII-Code als Dezimalwert, summiert die Werte auf und berechnet zum Schluss den Rest beim Teilen dieser Summe durch 26. Das Ergebnis soll unser Hashwert h sein.
|
Die Nachricht sei "ABC". A hat den ASCII-Wert 65, B 66 und C 67. Dann ist die Summe: 65 + 66 + 67 = 198. 198 mod 26 = 16. Der Hashwert ist somit h = 16. |
| 2 |
Zum Ver- und Entschlüsseln des Hashwertes wird ein, wie in Aufgabe 1 zum asymmetrischen Schlüsseltausch, erstellter gemeinsamer Schlüssel k verwendet. Dieser wird zu h addiert. Danach wird die Summe wieder modulo 26 gerechnet.
|
Der gemeinsame asymmetrische Schlüssel sei 19. Da h = 16, ist h + k = 35. 35 mod 26 = 9. |
| 3 |
Die digitale Signatur ist der Buchstabe im Alphabet, der an der Stelle (k + h) mod 26, beginnend mit 0 für 'A', ist. Ist zum Beispiel (k + h) mod 26 = 4, so ist die digitale Signatur das 'E'.
|
Hier ist (h + k) mod 26 = 9, also ist die digitale Signatur in unserem Beispiel 'J'. |
| 4 | Die digitale Signatur wird an die eigentliche Nachricht angehängt. | Die Nachricht, inklusive der digitalen Signatur, ist für unser Beispiel: "ABCJ". |
| 5 | Nun kann die Nachricht übertragen werden. | – |
Erstellen Sie nach dem Verfahren zum asymmetrischen Schlüsseltausch aus Aufgabe 1 einen gemeinsamen Schlüssel k.
Erstellen Sie jeweils für eine selbstgewählte Nachricht mit zwei Wörtern eine nach dem obigen Verfahren gebildete digitale Signatur.
- Schlagen Sie die ASCII-Werte aller Buchstaben Ihrer Nachricht nach und addieren Sie diese.
- Berechnen Sie
Summe mod 26, um den Hashwerthzu erhalten. - Addieren Sie Ihren gemeinsamen Schlüssel
kund berechnen Sie erneut(h + k) mod 26. - Ordnen Sie das Ergebnis dem entsprechenden Buchstaben im Alphabet zu (0 = A, 1 = B, ...) und hängen Sie ihn an Ihre Nachricht an.
Entwickeln Sie gemeinsam die einzelnen Schritte eines Verfahrens, mit welchem eine nach dem obigen Verfahren gebildete digitale Signatur überprüft werden kann. Hier sollten Sie sich überlegen, wie Sie als Empfängerin oder Empfänger einer Nachricht der anderen Person diese so überprüfen können, dass sicher ist, dass die Nachricht von dieser Person stammt.
Tauschen Sie Ihre Ergebnisse aus Aufgabenteil b) aus und testen Sie Ihr Verfahren an dieser Nachricht.
Eine Überweisung soll getätigt werden. Damit die Bank und ein Kunde bzw. eine Kundin authentifiziert werden können, wird für die digitale Signatur unser Verfahren genutzt.
Erstellen Sie eine digitale Signatur für den eingezahlten Betrag "TAUSENDEINHUNDERT" mit dem gemeinsamen Schlüssel k = 17.
T=84, A=65, U=85, S=83, E=69, N=78, D=68, I=73, H=72, R=82
Ein Angreifer fängt die Nachricht ab und ändert den eigentlichen Nachrichtenteil zu "EINHUNDERTTAUSEND".
Analysieren Sie anhand des obigen Beispiels die Sicherheit unserer digitalen Signatur. Entwickeln Sie eine mögliche Verbesserung unseres Verfahrens.
Hashfunktionen sollten drei wesentliche Kriterien erfüllen:
- Geringe Wahrscheinlichkeit von Kollisionen der Hashwerte für die Eingabewerte: Verschiedene Eingaben liefern nur sehr selten den gleichen Hashwert (Kollision).
- Surjektivität: Jeder Hashwert im definierten Wertebereich, also alle Werte, die theoretisch als Funktionswert der Hashfunktion vorkommen können, soll auch tatsächlich vorkommen können.
- Effizienz: Die Funktion muss schnell berechenbar sein, ohne großen Speicherverbrauch auskommen und sollte die Eingabewerte möglichst nur einmal lesen müssen.
Entscheiden Sie, welche Kriterien die gegebene Hashfunktion aus unserem Verfahren erfüllt und welche nicht.
Entwickeln Sie eine Operation digitalSignieren(String n, int k) in Form eines Struktogramms, welche das Signieren einer übergebenen Zeichenkette n mit einem übergebenen Schlüssel k wie weiter oben beschrieben durchführt und die signierte Zeichenkette zurückgibt. Sie können eventuelle Verbesserungen aus Aufgabenteil b) integrieren.
Entwickeln Sie eine Operation pruefeDigitaleSignatur(String n, int k) in Form eines Struktogramms, welche die Überprüfung der digitalen Signatur einer übergebenen Zeichenkette n mit einem übergebenen Schlüssel k durchführt und true zurückgibt, wenn die Authentizität verifiziert wurde, ansonsten false.
Implementieren Sie die Algorithmen aus den Aufgabenteilen d) und e) im Programm CryptoClass und testen Sie diese.
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!
Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.
Musterlösungen zu den Aufgaben 1 und 2
Zu Aufgabe 1:
- a) Schlüsselvereinbarung: Beide Partner vereinbaren z. B. über den Diffie-Hellman-Schlüsseltausch einen gemeinsamen Schlüssel
k(z. B.k = 17). - b) Eigene Signatur: Beispiel für "HALLO WELT" → ASCII-Werte addieren,
mod 26rechnen, Schlüsselkaddieren, erneutmod 26rechnen und angehängten Buchstaben ermitteln. - c) Überprüfungsverfahren:
- Das letzte Zeichen der empfangenen Nachricht wird als empfangene Signatur abgetrennt.
- Für den verbleibenden Nachrichtentext wird mit dem gemeinsamen Schlüssel
klokal die Signatur neu berechnet. - Stimmen berechnete und empfangene Signatur überein, gilt die Nachricht als unverfälscht und authentisch.
- d) Test: Durchführung des Austauschs mit der Partnerin oder dem Partner zur Bestätigung.
Zu Aufgabe 2a (Berechnung für "TAUSENDEINHUNDERT", k = 17):
1. ASCII-Summe berechnen:
T(84) + A(65) + U(85) + S(83) + E(69) + N(78) + D(68) + E(69) + I(73) + N(78) + H(72) + U(85) + N(78) + D(68) + E(69) + R(82) + T(84) = 1290
2. Hashwert h bestimmen: 1290 mod 26 = 16 (da 26 × 49 = 1274; 1290 - 1274 = 16).
3. Schlüssel k = 17 anwenden: (h + k) mod 26 = (16 + 17) mod 26 = 33 mod 26 = 7.
4. Buchstabe ermitteln: Der Buchstabe an Stelle 7 (mit A=0, B=1, C=2, D=3, E=4, F=5, G=6, H=7) ist 'H'.
Ergebnis: Signierte Nachricht = "TAUSENDEINHUNDERT H" (bzw. "TAUSENDEINHUNDERTH").
Zu Aufgabe 2b (Sicherheitsanalyse):
Analyse: "EINHUNDERTTAUSEND" ist ein Anagramm von "TAUSENDEINHUNDERT". Da unser Verfahren lediglich die ASCII-Werte aller Zeichen aufsummiert, ist die Summe für beide Wörter exakt identisch (1290). Der Hashwert bleibt 16 und die Signatur 'H'. Die Manipulation wird vom Empfänger nicht erkannt!
Verbesserung: Berücksichtigung der Position der Zeichen (z. B. Multiplikation des ASCII-Wertes mit der jeweiligen Zeichenposition i * ASCII(c)) oder Verwendung von kryptographisch sicheren Hashfunktionen (z. B. SHA-256).
Zu Aufgabe 2c (Kriterien der Hashfunktion):
- 1. Geringe Kollisionswahrscheinlichkeit: Nicht erfüllt! Es gibt nur 26 mögliche Hashwerte. Sehr viele unterschiedliche Nachrichten (insbesondere alle Anagramme) führen zum exakt gleichen Hashwert.
- 2. Surjektivität: Erfüllt! Durch die Modulo-26-Operation treten alle Werte von 0 bis 25 (und somit alle Buchstaben von A bis Z) im Wertebereich tatsächlich auf.
- 3. Effizienz: Erfüllt! Die Nachricht wird nur einmal sequenziell von vorne nach hinten gelesen, und es werden nur einfache Additionen und Modulo-Operationen durchgeführt. Geringer Speicher- und Rechenaufwand.
Zu Aufgabe 2d & 2e (Ablauf / Logik der Struktogramme):
- summe = 0
- Für i = 0 bis n.length-1:
- summe = summe + (int) n.charAt(i)
- h = summe % 26
- sigIndex = (h + k) % 26
- sigChar = (char) ('A' + sigIndex)
- Rückgabe n + sigChar
- msg = n.substring(0, n.length-1)
- sigEmpfangen = n.charAt(n.length-1)
- sigSoll = digitalSignieren(msg, k)
- sigErwartet = sigSoll.charAt(sigSoll.length-1)
- WENN sigEmpfangen == sigErwartet:
- Rückgabe true
- SONST:
- Rückgabe false
Zu Aufgabe 2f (Java-Implementierung im Programm CryptoClass):
public class CryptoClass {
public static String digitalSignieren(String n, int k) {
int summe = 0;
for (int i = 0; i < n.length(); i++) {
summe += (int) n.charAt(i);
}
int h = summe % 26;
int sigIndex = (h + k) % 26;
char sigChar = (char) ('A' + sigIndex);
return n + sigChar;
}
public static boolean pruefeDigitaleSignatur(String n, int k) {
if (n == null || n.length() < 2) return false;
String nachricht = n.substring(0, n.length() - 1);
char empfangeneSig = n.charAt(n.length() - 1);
String neuSigniert = digitalSignieren(nachricht, k);
char erwarteSig = neuSigniert.charAt(neuSigniert.length() - 1);
return empfangeneSig == erwarteSig;
}
public static void main(String[] args) {
int k = 17;
String signiert = digitalSignieren("TAUSENDEINHUNDERT", k);
System.out.println("Signierte Nachricht: " + signiert); // TAUSENDEINHUNDERTH
boolean istGueltig = pruefeDigitaleSignatur(signiert, k);
System.out.println("Signatur gültig? " + istGueltig); // true
boolean manipuliert = pruefeDigitaleSignatur("EINHUNDERTTAUSENDH", k);
System.out.println("Gültig bei Anagramm? " + manipuliert); // Zeigt die Schwachstelle auf
}
}
Glossar
🔑 Vigenère-Tafel
Bewege die Maus über die Tabelle
Informatik am GSG wird mit Stolz präsentiert von WordPress