[Veranschaulichung des Public-Key-Verfahrens]

KRYPTOLOGIE

in der Sekundarstufe I

[Veranschaulichung des Public-Key-Verfahrens]

Spiralcurriculum

Spiralumdrehung 3:     
9. - 10. Jahrgang

Annahmen
für die dritte 'Spiralumdrehung'

Wir beschreiben hier ein Spiralcurriculum für die Sekundarstufe I zum Thema Kryptologie. Diese dritte 'Spiralumdrehung' im 9. und 10. Jahrgang setzt daher voraus, dass in den Jahrgängen 5 bis 8 die beiden anderen 'Spiralumdrehungen' durchgeführt worden sind. Das wird hoffentlich in der Zukunft Realität sein.

Ausgehend von dieser Annahme gehen wir davon aus, dass entsprechend der zuvor durchgeführten Einheiten ein grundsätzliches Verständis von Kryptologie entwickelt worden ist und zumindest die grundlegenden Verfahren Caesar und Vigenère programmiert worden sind.
Mit den SMS-Programmen ist die Anwendung dieser Verfahren in einer Netzumgebung bei einem einfachen Messenger-System praktiziert worden. Damit ist die Sicherheitsproblematik solcher Systeme erfahren worden. Die begrenzte Praktikabilität eines symmetrischen Verfahrens durch problematische Passwortverwaltung bzw. -Weitergabe ist deutlich geworden und auch besprochen worden.

In dieser Einheit wird darauf aufbauend die Arbeitsweise von Public-Key-Verfahren behandelt.

Wiederholung

In den vorigen Einheiten sind das Caesar- und das Vigenère-Verfahren behandelt worden und anschliessend jeweils mit den Programmen SMS 1 und SMS 2 im Netz praktiziert worden. Zum Start dieser Einheit muss dies kurz wiederholt werden, um zu verdeutlichen, dass in der Praxis asymmetrische Public-Key-Verfahren - die den Lernenden noch nicht bekannt sind - häufig eine sinnvolle Alternative zu symmetrischen Verfahren darstellen.

Eine solche Wiederholung sollte eine Erinnerung der Verfahren im Pseudocode und Quellcode beinhalten. Die Wiederholung der Anwendung der beiden SMS-Programme verdeutlicht erneut die Begrenzheit und Sicherheitsproblematik dieser Verfahren in der Praxis.

Public-Key - Verfahren

Die Lernenden haben zuerst das Caesar-Verfahren kennengelernt. Es erfüllt keine Sicherheitsanforderungen. Das Vigenère-Verfahren ist zwar prinzipiell sicher - vor allem, wenn das Passwort so lang wie der Klartext ist -, aber ist vor allem im Internet oft unpraktisch, weil der Schlüsselaustausch (zeitlich) problematisch ist. Die Lösung für solche Fälle ist ein Public-Key-Verfahren.

Die Idee eines solchen Verfahrens ist eigentlich einfach: Der Klartext wird mit einem (bekannten) Schlüssel, dem Public-Key codiert, für die Decodierung bedarf es aber eines zweiten nur dem Empfänger bekannten Schlüssels, den Private Key. Es versteht sich von selbst, dass dieser Private Key aus dem Public-Key nicht berechnet werden kann. Diese Forderung ist keine einfache Bedingung. Häufig ist die Umkehrung einer Berechnung nicht so aufwändig, sodass diese bei Interesse (notfalls mit einiger Mühe) erledigt werden kann. In der Öffentlichkeit bekannt ist das RSA-Verfahren, dass auf die Zerlegung einer Zahl in seine Primfaktoren beruht. Dieses basiert auf Erkenntnissen der (mathematischen) Zahlentheorie und Algebra und ist in der Schule generell nicht nachzuvollziehen (auch nicht in der Sek II!). Es ist aber nicht das einzige Verfahren.

Für den Unterricht in der Sekundarstufe I ist ein solches mathematisch schwieriges Verfahren auch nicht nötig. Im Gegenteil: Wenn der Private Key in einem solchen schulischen Verfahren ermittelt werden kann, wird deutlich, dass 'in der freien Wildbahn' genau diese oben beschiebene Bedingung gelten muss.
Daher wird hier ein sehr einfaches (knackbares) Verfahren praktiziert: Der Klartext wird wie bisher mit einem Codewort verschlüsselt. Die Entschlüsselung gelingt nur, wenn wir ein zweiten Passwort verwenden, das sich aus der Differenz des ersten Codewortes und eines intern verwendeten zusätzlichen Schlüssels ergibt.

Pseudocode des Public-Key - Verfahrens

Damit ergibt sich aus einer Erweiterung des Pseudocodes des Vigenère - Verfahrens der Pseudocode des Public-Key - Verfahrens:


PROZEDUR verschluesseln(satz, codewort)
  buchstabe <-- "" ;  codebuchstabe <-- ""
  asciizahl <-- 0 ;  codeasciizahl <-- 0
  zusatz <-- 0
  verschluesselter_satz <-- ""
  
  stelle <-- 0
  codestelle <-- 0
  WIEDERHOLE SOLANGE stelle < satzlaenge IST
    buchstabe <-- satz[stelle]
    codebuchstabe <--  codewort[codestelle]

    asciizahl <-- ASCII-Zahl des Buchstabens
    codeasciizahl <-- ASCII-Zahl des Codebuchstabens
    zusatz <-- 0

    asciizahl <-- asciizahl + codeasciizahl + zusatz - 64
    buchstabe <-- Zeichen gemäss ASCII-Zahl

    verschluesselter_satz <-- verschluesselter_satz + buchstabe

    stelle <-- stelle + 1
    codestelle <-- codestelle + 1
    zusatz <-- zusatz + 1
    FALLS zusatz > 2  
      DANN zusatz <-- 0
    ENDE von FALLS

    FALLS codestelle = Länge des Codeworts  
      DANN codestelle <-- 0
    ENDE von FALLS
  
  ENDE von WIEDERHOLE
  
  satz <-- verschluesselter_satz
ENDE der PROZEDUR verschluesseln


PROZEDUR verschluesseln
 (satz, codewort)
  buchstabe <-- ""   
  codebuchstabe <-- ""
  asciizahl <-- 0   
  codeasciizahl <-- 0
  zusatz <-- 0
  verschluesselter_satz <-- ""
  
  stelle <-- 0
  codestelle <-- 0
  WIEDERHOLE SOLANGE 
   stelle < satzlaenge IST
    buchstabe 
     <-- satz[stelle]
    codebuchstabe 
     <--  codewort[codestelle]

    asciizahl 
     <-- ASCII-Zahl 
      des Buchstabens
    codeasciizahl 
     <-- ASCII-Zahl 
      des Codebuchstabens
    zusatz <-- 0

    asciizahl 
     <-- asciizahl + codeasciizahl 
      + zusatz - 64
    buchstabe 
     <-- Zeichen gemäss ASCII-Zahl

    verschluesselter_satz 
     <-- verschluesselter_satz 
      + buchstabe

    stelle <-- stelle + 1
    codestelle <-- codestelle + 1
    zusatz <-- zusatz + 1
    FALLS zusatz > 2  
      DANN zusatz <-- 0
    ENDE von FALLS

    FALLS 
     codestelle = 
      Länge des Codeworts  
      DANN codestelle <-- 0
    ENDE von FALLS
  
  ENDE von WIEDERHOLE
  
  satz <-- verschluesselter_satz
ENDE der PROZEDUR verschluesseln

Die Entschlüsselungsroutine unterscheidet sich durch eine Subtraktion der Code-ASCII-Zahl von der ASCII-Zahl sowie einer unterschiedlichen Zusatz-Verschiebung (statt: 0,1,2 bei der Verschlüsselung 0,2,4 bei der Entschlüsselung) von der Verschlüsselungsprozedur.

Dieses hier vorgestellte Verfahren ist sicher sehr einfach und evtl. auch einfach durchschaubar. Es lässt sich allerdings erheblich verbessern, indem die Zusatzverschiebung auf mehr Stellen verlängert und der Wert der einzelnen Zeichen mehr zufällig gewählt wird.

Progamm SMS 3

Nun kann dieses Verfahren wie bisher in ein SMS 3 - Programm eingebaut werden und wie bisher in der Kommunikation benutzt werden. Wenn die Lernenden dieses Programm benutzen, erfahren sie sehr schnell, dass sie für die Entschlüsselung ein anderes Codewort benutzen müssen.

Die Public-Key - Ver- und Entschlüsselungsroutinen sind an Stelle der Vigenère-Routinen in das schon bekannte Anwendungsprogramm   SMS    eingebaut worden. Wie bisher, kann in diesem Programm menügesteuert ein Satz, genannt SMS, eingelesen, ver- und auch entschlüsselt sowie auf einem (gemeinsamen) Verzeichnis gespeichert bzw. von diesem geladen werden.
Auch bei dieser Version geben sich die Teilnehmer beim Start des Programms einen Namen. Die gespeicherten Dateien können dann vom (korrekten) Empfänger geladen werden.

Die Oberfläche des Programmes SMS 3 hat das bekannte Aussehen:

       --------------------------------------------------

       Programm SMS 3 *** Teilnehmer: erwin
       Die SMS ist derzeit:   Dies ist mein Satz!
       ==================================================
       ==================================================

       Bitte gib Deinen Namen an:   erwin

       ==================================================
       E: Einlesen         **        A: Ausgeben
       S: Senden           **        H: Holen
       V: Verschlüsseln    **        D: Entschlüsseln
       Z: Zeigen alle SMS  **        C: Codewort eingeben
       Q: QUIT

       Bitte wählen:   

       --------------------------------------------------
--------------------------------------------------

Programm SMS 3 *** Teilnehmer: erwin
Die SMS ist derzeit:   Dies ist mein Satz!
==================================================
==================================================

Bitte gib Deinen Namen an:   erwin

==================================================
E: Einlesen         **        A: Ausgeben
S: Senden           **        H: Holen
V: Verschlüsseln    **        D: Entschlüsseln
Z: Zeigen alle SMS  **        C: Codewort eingeben
Q: QUIT

Bitte wählen:   

--------------------------------------------------

Einsatz des SMS 3 - Programmes

Es gilt im Wesentlichen bereits für die zuvor beschriebenen Programme SMS 1 und SMS 2 auch für das Programm SMS 3 und wird hier entsprechend wiederholt:
Je nach schulischen Voraussetzungen wird das Programm nun konkret eingesetzt:

  • Coffeescript:
    Das Programm SMS 3 in Coffeescript ist für die IDE Pencilcode geschrieben. Dort werden alle Eingaben als HTML-Elemente durchgeführt.
    In Pencilcode ist es möglich, mit einem Account zu arbeiten. Dann können dort auch Dateien abgelegt werden, das in diesem Programm SMS 3 möglich sein muss. Es gehen daher alle Lernenden mit einem gemeinsamen Account in das System. Damit kann das Programmm auch durchgeführt werden, wenn im Schulsystem keine Möglichkeit für ein gemeinsames Arbeiten in einem Verzeichnis möglich ist.
    Das Anzeigen aller SMS-e ist (noch) nicht realisiert. In einem weiteren Browser-Tab kann eine Dateiansicht ermöglicht werden, indem dort auch das Programm geladen wird und dann in der URL in die Verzeichnisebene höher gewechselt wird. (Aktualisieren der Ansicht nicht vergessen!) Die SMS-Dateien haben immer den Dateinamen: <empfaenger_absender>.sms
  • Python/Ruby:
    Es muss in einem gemeinsamen Verzeichnis gearbeitet werden. Dazu gibt es folgende Möglichkeiten:
    • Es wird in einem gemeinsamen Verzeichnis auf einem Fileserver gearbeitet. Man starte eine Shell-Sitzung (Kommandozeile), wechsle in das gewünschte Verzeichnis uns starte:  python sms3.py   bzw.   ruby sms3.rb
    • Man starte eine Shellsitzung und starte eine ssh-Sitzung mit einem gemeinsamen Account. In der SSH-Sitzung wechselt man ebensfalls in das gewünschte Verzeichnis uns starte dort ebenso:  python sms3.py   bzw.   ruby sms3.rb
      Als Alternative hat jeder Teilnehmer einen eigenen Account. Jeder Teilnehmer kann aber auf ein gemeinsames Verzeichnis in der SSH-Sitzung wechseln.
    • Man nutzt eine Online-Umgebung für Python bzw. Ruby. Dort nutzt die Gruppe einen gemeinsamen Account und kann dort wie oben bei Coffee-Script beschrieben arbeiten (noch nicht getestet!).
    • Hinweis für Python und Ruby:
      Im Verzeichnis des Programmes sms1 muss in Linux das Shell-Programm verzeichnis.sh und in Windows das Batch-Programm verzeichnis.bat enthalten und ausführbar sein. Sonst kann der Inhalt des Verzeichnisses mit den Messages im Programm nicht angezeigt werden.

Ausprobieren des Programmes

Dieses Programm ist nicht von den Lernenden erstellt worden. Im Gegensatz zur den bisherigen Verschlüsselungsverfahren haben sie hier auch nicht die Funktionen für die Ver- und Entschlüsselung aus den bisher bekannten Routinen entwickelt.
Die Lernenden werden aufgefordert, wie bisher das Programm anzuwenden. Sie werden schnell merken, dass es zwei unterschiedlicher Passwörter bedarf, um das Programm nutzen zu können. Ihnen wird wahrscheinlich trotz Probierens überhaupt keine Entschlüsselung gelingen. Es ist auch naheliegend, dass sie behaupten, dass es gar keine Entschlüsselung gibt. Dass dies nicht stimmt, kann und muss dann aber demonstriert werden.

Sinnvolle Nutzung des Programmes

Ohne weitere Erklärungen macht wahrscheinlich aus Sicht der Schülerinnen und der Schüler dieses Programm keinen Sinn. Es wird daher erklärt, dass sie nicht mehr das Passwort frei aussuchen sollen oder können, sondern die Lehrkraft jedem Lernenden einen Private Key zuordnet sowie die Public Keys z.B. auf einem Arbeitsblatt allen zugänglich macht.
Nun können die Teilnehmer das Programm praktisch ausnutzen. Es ist natürlich etwas mühselig, die verschiedenen Passworte einzugeben und damit zu wechseln. Aber diese intensive 'händische' Eingabe und damit verbundene Kontrolle des eigenen Handelns führt zu einem tatsächlichen Begreifen der Idee des Public-Key - Verfahrens.

Das Prinzip des Verfahrens sowie die Arbeitsweise sollte von den Schülerinnen und Schülern am Ende dieser Phase samt Skizze(n) schriftlich fixiert werden.

Praktische Erfahrungen

Beim Programm SMS 2 war die Weitergabe bzw. Mitteilung der Passwörter ein grosses Problem. Die Lernenden haben sich das Passwort beispielsweise durch Zuruf mitgeteilt. Das ist natürlich kein sicheres Vorgehen. In der Praxis zeigte es sich bisher, dass dadurch eine grosse Unruhe (und auch Lautstärke) entstand, in der diese Problematik offenkundig wurde. Alternativ wurde der Empfänger vom Absender 'besucht', um das Passwort mitzuteilen. Das macht das System als solches natürlich obsolet. Vor allem der relativ gleichzeitige Kontakt mit mehreren Teilnehmern mit den dann verwendeten unterschiedlichen(!) Passwörtern führt regelmässig zu Irritationen.
Es ist offenkundig, dass das jetzt verwendete Programm SMS 3 mit den von der Lehrkraft zugeteilten öffentlichen und privaten Schlüsseln diese Probleme vollständig beseitigt.

Aufgabe:
Praktiziert die beschriebenen Alternativen aus und spielt in der Gruppe das Austauschen von Nachrichten.

Signieren

Mit diesem System sind viele Anforderungen einer sicheren Kommunikation gelöst, aber nicht alle. Das wird an folgendem Szenario deutlich.
Jemand kann unter Täuschung über seine echte Identität mit einem öffentlichen Schlüssel einem anderen Teilnehmer zwar eine verschlüsselte Nachrichten zukommen lassen, die nur der Empfänger lesen kann, aber dieser kann nicht sicher wissen, dass sich hinter dem Absender auch der verbirgt, als der er sich auszugeben versucht. Es ist offensichtlich, dass eine Kommunikation in einer vernetzten Gesellschaft auch diese Authenzitätfrage lösen muss.

Die Lösung ist, dass der Klartext zweimal verschlüsselt wird: Zuerst wird der private Schlüssel des Absenders verwendet, dann der öffentliche Schlüssel des Empfängers. Der Empfänger decodiert nun den codierten Text mit seinem privaten Schlüssel und dann mit dem öffentlichen Schlüssel des Absenders und kann dann die Nachricht lesen. Mit diesem Verfahren ist der Text vom Absender also signiert worden und eindeutig einem Absender zuzuordnen.

Die Schülerinnen und Schüler können sich mit dem Programm SMS 3 signierte verschlüsselte Nachrichten zusenden. Das Handling mit den verschiedenen Schlüsseln verlangt aber ein genaues konzentriertes Arbeiten und zeigt in der korrekten Anwendung, in wie weit die Lernenden die Verfahren auch tatsächlich verstanden haben und dann auch praktizieren können.

Anmerkungen

  • Das von uns verwendete Verfahren hat eine besondere Eigenart. Es ist nicht symmetrisch, das heisst: Der zum Signieren zu verwendende private Schlüssel (Signierschlüssel) ist nicht identisch mit dem privaten Schlüssel zum Decodieren von Nachrichten. Die Teilnehmer erhalten daher zwei private Schlüssel. In der Praxis verwendete Verfahren wie z.B. das RSA-Verfahren sind normalerweise symmetrisch. Dieser Begriff symmetrisch bezieht sich auf die Reihenfolge der Verschlüsselung und ist damit zu unterscheiden vom Begriff symmetrisch bezüglich der Verfahren als solche wie beispielsweise dem symmetrischen Vigenère - Verfahren mit einem Schlüssel oder dem asymmetrischen Public-Key - Verfahren mit mehr als einem Schlüssel.
  • In der Praxis wird oft nicht der gesamte Text signiert, sondern nur ein Teil, beispielsweise eine sogenannte digitale Unterschrift. Da unsere Texte sehr kurz sind, können sie ohne Probleme als Ganzes signiert werden.

Aufgabe:
Praktiziert das Verschlüsseln und Signieren im Programm SMS 3 und spielt in der Gruppe auf diese Weise das Austauschen von Nachrichten.

Schlüsselausgabestellen/Zertifikate

Diese sichere Kommunikation kann nur funktionieren, wenn gewährleistet ist, dass die Schlüssel tatsächlich auch den Personen gehören, für die es behauptet wird. In der Schule bei unserem System ist das dadurch gewährleistet, da jede Schülerin und jeder Schüler mitbekommt, dass die Schlüssel von der Lehrkraft verteilt werden.
Das ist bei realen Systemen keine einfache Angelegenheit! Das ist sogar eine sehr schwierige Sache, denn es verlangt Vertrauen. Es muss also Ausgabestellen geben, die die Authenzität garantieren können oder man muss Personen trauen, die von sich behaupten, dass ein Schlüssel zu einer Person gehört.

Soll mit Schlüsselausgabestellen gearbeitet werden, müssen diese die Authenzität der Personen zumindest einmalig überprüfen, z.B. über amtliche Ausweispapiere. Sind die Ausgabestellen auch für die Erstellung der Schlüssel zuständig, muss auch die Person, die sich authentifizieren lässt, ein Vertrauen zu dieser Stelle haben. Staatliche Organisationen kommen daher nicht in Frage, weil ansonsten der Staat Zugriff auf alle Nachrichten hat. Eine Möglichkeit ist, dass es mehrere Ausgabestellen gibt, aus denen ein Interessent die aussucht, zu der er oder sie ein Vertrauen hat.
Alternativ könnte jemand als potentieller Teilnehmer durch ein Zufallsverfahren selber ein Schlüsselpaar erzeugen und nur den öffentlichen Schlüssel der Ausgabestelle zusenden.

Eine solche datenschutzrechtliche Diskussion und Auseinandersetzung stellt den Abschluss der Kryptologie in der Sekundarstufe I dar. Das betrifft nicht alleine die Messengersysteme, sondern beispielsweise auch die Kommunikation im Web mit dem https-Protokoll und den dazugehörigen Zertifikaten. Damit wird den Lernenden deutlich, dass Kryptologie sowohl eine technische als auch eine gesellschaftliche Dimension hat.

Aufgabe:
Überlegt eine (beispielsweise technische) Struktur, mit der eine Festlegung von Schlüsseln in unserem System praktiziert werden könnte, wenn wir auf den Lehrer oder die Lehrerin als Vertrauensperson verzichten wollen.

Erkenntnisse und Kompetenzen

  • Kryptologische Verfahren arbeiten nach den beiden Prinzipien Zeichenersetzung und Positionsveränderung.
  • Die einfachen Verfahren -- Caesar und Umdrehen -- sind absolut unsicher.
  • Das Vigenère-Verfahren ist ein sicheres Verfahren, sofern das Passwort lang genug ist. Es ist ein symmetrisches Verfahren: Das Passwort zum Ver- und Entschlüsseln ist gleich.
  • Mit den Public-Key - Verfahren lässt sich eine Kommunikation mit mehreren Partnern leicht realisieren. Es sind asymmetrische Verfahren: Die Passwöter zum Ver- und Entschlüsseln sind nicht identisch.
  • Mit dem Computer können wir die Ver- und Entschlüsselung (auch komplizierter) Verfahren automatisieren.
  • Ein zusätzliches Problem stellt die Authenzität der Teilnehmer dar. Diese kann durch Signieren der Nachrichten erreicht werden.
  • Zur Lösung der Authenzitätsfrage ist ein vertrauensvoller Austausch der Schlüssel notwendig.

Die obigen Erkenntnisse wurden entweder selbst in Algorithmen umgesetzt oder durch die Anwendung eines einfachen Messengerprogrammes erfahren. Dabei musste der Ablauf einer verschlüsselten Kommunikation korrekt praktiziert werden.

Zusammenfassendes Ergebnis

In der heutigen Zeit findet überall (auch) eine netzbasierte Kommunikation statt. Diese muss oft gesichert durchgeführt werden. Ausgewählte Verfahren sind beispielhaft in diesen Einheiten praktiziert worden. Vor allem die Kommunikation bei Nachrichtensystem und im Web verlaufen nach diesen Prinzipien. Um im Netz nicht ungewollt ausgehorcht zu werden, sind Kenntnisse über die prinzipiellen Vorgehensweisen der Kryptologie notwendig.
Diese sollten über diese Reihe erreicht werden.

Es gilt:

  • Es gibt unterschiedliche Prinzipien der Ver- und Entschlüsselung.
  • Das Ver- und Entschlüsseln lässt sich mit dem Computer automatisieren.
  • Dazu müssen die Verfahren maschinenverarbeitbar programmiert werden.
  • Beim Ver- und Entschlüsseln ist der Computer deutlich schneller als der Mensch.
  • Nachrichten, die über das Netz ausgetauscht werden, können abgehört werden.
  • Es müssen sichere Verfahren sowie sichere Passwörter verwendet werden.