Skip to content

Kryptosystem mit natürlichen Alphabeten

Martin Pfister
Die Einheit ist eine Vertiefung und Ergänzung nach dem Kapitel 2 „Geheimschriften und Datensicherheit“ von 2-4 Lektionen inkl. Vorbereitungsauftrag und Hausaufgaben. Inhaltlich ist die Einheit interdisziplinär angelegt und öffnet den Schülerinnen und Schülern Zugang zu dem, was die Sprachwissenschaft über Schriften und ihre Eigenschaften weiss. Dieses Wissen soll wiederum genutzt werden, um ein eigenes Kryptosystem nach dem Vorbild von Vigenère zu entwickeln. In einer vorgelagerten Vorbereitungsaufgabe soll der Klasse bewusst werden, dank welcher Eigenschaften Alphabete sich als Grundlage für Geheimschriften eignen. Die Schüler sollen erkennen, dass der fixierten Reihenfolge der Buchstaben eine Schlüsselrolle zukommt. Nur sie erlaubt eine praktikable Matrix, auf welcher die Transpositionsalgorithmen von Caesar bis Vigenère angewandt werden. Ein Vergleich mit anderen Schriftsystemen soll alternative Ordnungsprinzipien zeigen, die ebenfalls fest verfügbar sind und von kulturellen Faktoren abhängig sind. Nun soll die Aufgabe sein, im polyalphabetischen Verfahren nach Vigenère positionsbedingt nicht nur den Schlüssel zu wechseln, sondern das ganze alphabetische Bezugssystem. Die indische, Inuit- und japanische Schrift soll dabei die Ordnung liefern. Anschliessend soll die Friedman’sche Charakteristik geprüft werden und beurteilt werden, ob ein Angriff mit stochastischen Methoden, selbst bei kürzestem Schlüssel, noch eine Chance hat. Nach diesem Zwischenerfolg sollen die Schülerinnen und Schüler Stärken und Schwächen des bisher entwickelten Kryptosystems beurteilen. Es werden Ideen gesucht, um den Wechsel der Alphabete nicht zyklisch zu iterieren, sondern deren Abfolge besser zu verschleiern. Mit der Idee der Fibonacci-Folge, deren Glieder jeweils modulo 4 gerechnet werden, haben wir zudem einen Ansatz, der auch für das Programmieren eine wertvolle Zusatzübung darstellt. Fachdidaktik I, HS 2023 Martin Pfister Je nach Zeitbudget können die Programme in Python vorgegeben oder als Programmieraufgabe gelöst werden.