[Veranschaulichung des Public-Key-Verfahrens]

KRYPTOLOGIE

in der Sekundarstufe I

[Veranschaulichung des Public-Key-Verfahrens]

Fachliche Grundlagen

Vorüberlegungen und Einstiegsaufgabe

Bevor beurteilt werden kann, ob eine Thematik im Unterricht an der Schule (in Informatik) unterrichtet werden kann bzw. sollte, bedarf es einer fachlichen Analyse, die die wesentlichen Aspekte des Themas aus fachlicher Sicht beleuchtet. Hierzu gehört auch, ob wesentliche Elemente des Themas in der angestrebten Schulstufe ausreichend Möglichkeiten im Sinne eines Computational Thinking bieten, Programme dazu im Unterricht zu entwickeln, zu testen und auszuführen. Daher wollen wir zunächst einige Verfahren, die möglicherweise im Unterricht behandelt werden sollen, selbst programmieren.

Wir wissen heute nicht, welche Programmiersprachen in den nächsten Jahren in der Schule in den verschiedenen Schulstufen eingesetzt werden. Exemplarisch werden wir daher hier einige Sprachen und Systeme einsetzen, die vielleicht zumindest in absehbarer Zeit interessant sein können.

Idee des Caesar - Verfahrens

Das Caesar-Verfahren ist das wohl einfachste Verfahren. Es ist sowohl ohne und mit Computer einfach zu nutzen bzw. zu programmieren. Daher eignet es sich sowohl in der Anfangsphase des Unterrichts in der Kryptologie, in der im Jg. 5 oder Jg. 6 in die Ideen der Kryptologie eingeführt werden soll, aber evtl. noch nicht programmiert werden soll. Aber auch wenn sofort implementiert werden soll, ist dieses Verfahren geeignet.

Alle Zeichen werden mit demselben Versatz verschlüsselt. Das ist heute sicherlich aus Sicherheitsgründen nicht mehr praktikabel. Dass das ohne Automatisierung nicht offensichtlich ist, erkennt man daran, dass eine verschlüsselte Nachricht mit einem unbekannen Versatz evtl. bei einem nicht bekannten Versatz nicht adhoc entschlüsselt werden kann.

Ein Beispiel mit dem Versatz  2:

Klartext:    A F F E N H O R D E
Versatz:     2 2 2 2 2 2 2 2 2 2
--------------------------------
Codetext:    C H H G P J Q T F G

Pseudocode des
Caesar - Verfahrens


PROZEDUR verschluesseln
	  (satz, versatz)
  buchstabe <-- ""
  asciizahl <-- 0
  verschluesselter_satz <-- ""
  versatz <-- codewort
    falls das Codewort 
    eine Zahl ist, oder:
  versatz <-- ASCII-Zahl 
              des Codewortes - 64
    falls das Codewort 
    ein Buchstabe ist
  
  stelle <-- 0
  WIEDERHOLE SOLANGE 
   stelle < satzlaenge IST
    buchstabe <-- satz[stelle]
    asciizahl <-- 
     ASCII-Zahl des Buchstabens

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

    verschluesselter_satz <-- 
       verschluesselter_satz 
		   + buchstabe

    stelle <-- stelle + 1
  ENDE von WIEDERHOLE
  
  satz <-- verschluesselter_satz
ENDE der PROZEDUR verschluesseln

Pseudocode des Caesar - Verfahrens


PROZEDUR verschluesseln(satz, codewort)
  buchstabe <-- "" 
  asciizahl <-- 0
  verschluesselter_satz <-- ""
  versatz <-- codewort
   falls das Codewort eine Zahl ist, oder:
  versatz <-- ASCII-Zahl des Codewortes - 64
   falls das Codewort ein Buchstabe ist
  
  stelle <-- 0
  WIEDERHOLE SOLANGE stelle < satzlaenge IST
    buchstabe <-- satz[stelle]
    asciizahl <-- ASCII-Zahl des Buchstabens

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

    verschluesselter_satz <-- verschluesselter_satz + buchstabe

    stelle <-- stelle + 1
  ENDE von WIEDERHOLE
  
  satz <-- verschluesselter_satz
ENDE der PROZEDUR verschluesseln

Die Entschlüsselungsroutine unterscheidet sich nur durch eine Subtraktion anstelle einer Addition des Versatzes von der ASCII-Zahl von der Ver­schlüs­se­lungs­pro­ze­dur.

Einstiegsaufgabe in Skriptsprachen

Das einfache Caesar-Verfahren ist in der Einstiegsaufgabe in einer bekannten Sprache programmiert worden. Wir wollen uns nun einigen Skriptsprachen zuwenden. Davon gibt es unglaubliche viele Sprachen. Derzeit wird oft von Python gesprochen, das zweifelsohne eine recht grosse Verwendungsbreite besitzt. Weiterhin wollen wir Ruby untersuchen, das eine besonders durchdachte objektorientierte Sprache sein will.
Als Besonderheit untersuchen wir Coffeescript, das in der Entwicklungsumgebung Pencilcode die Darstellung als Block- und Textsprache ermöglicht.
Nur dann, wenn eine Informatiklehrkraft Realisierungen zumindest einiger unterrichtsrelevanter Inhalte in verschiedenen Sprachen kennt, kann sie die Eignung einer ausgewählten Programmiersprache für den Unterricht in einer Schulstufe beurteilen.

Programmierlabor

Es ist sehr unwahrscheinlich, dass in Zukunft in der Schule in der Sekundarstufe I in Java programmiert wird. Auch Java-ähnliche Sprachen (z.B. Groovy) werden dort wohl nicht genutzt werden. Es ist davon auszugehen, dass blockbasierte und/oder Skriptsprachen verwendet werden. Daher wollen wir einige Übungen in den ausgewählten Skriptsprachen durchführen.
Die Übungen sollen auch deutlich machen, dass es relativ einfach ist, die klassischen Grundverfahren zu variieren. Damit wird das Entschlüsseln auf der nichtmaschinellen Ebene erheblich erschwert, sodass diese zumeist unterbleibt.
Allerdings gilt dies nicht, wenn das Entschlüsseln mit dem Computer vorgenommen wird. Dieses sollte auch exemplarisch im Unterricht gezeigt werden.

Fazit: Prinzipien von Verschlüsselungsverfahren

Alle Verschlüsselungsverfahren lassen sich auf ...
  1. ... Ersetzen von Zeichen durch andere Zeichen
        (Substitution)
  2. ... Verändern der Positionen der Zeichen
        (Transposition)
  3. ... eine Kombination von Ersetzen und Po­si­tions­ver­än­derung
... zurückführen.

Die einfachsten Verfahren sind das Caesar-Verfahren und das einfache Umdrehen des Textes.
Aber natürlich wird des Entschlüsseln schon erheblich erschwert, wenn diese Verfahren nur etwas abgewandelt werden. Das gilt allerdings nur, solange die Entschlüsselung nicht maschinell durchgeführt wird.

Analyse der Skript-Programmiersprachen

Wir haben nun erste Programmiererfahrungen in verschiedenen Skript-Programmiersprachen gemacht. Es ist Zeit für ein erstes sicher sehr vorläufiges Fazit.

  1. Beurteile die drei Sprachen Coffeescript, Python und Ruby aus fachlicher Informatiksicht.
  2. Welche dieser Eigenschaften hat ein mögliche Bedeutung für den Unterricht in der Sekundarstufe I.