Steganografie mit Snap!

Die Steganografie ist die Kunst, zusätzliche Informationen in einem Medium zu verstecken. In der Digitaltechnik geschieht dies häufig dadurch, dass ein bestimmtes, für Aussenstehende unauffälliges Bitmuster hinterlegt wird.

Das folgende Snap!-Beispiel verwendet eine einfachere Methode und nutzt die Tatsache, dass in einem Computersystem jeder Buchstabe auch durch eine Zahl repräsentiert werden kann. Diese Zahl wird dann einfach in einen Farbkanal von Bildpunkten geschrieben.

In diesem Kunstwerk aus Quadraten versteckt sich eine geheime Botschaft.

Programmierung in Snap!

Das Programm besteht aus zwei Teilen:

  1. Im Hauptteil, welcher direkt beim Start aufgerufen wird, berechnet das Programm für jeden Buchstaben einer Geheimbotschaft den entsprechenden nummerischen Wert und verwendet diesen dann, um den Grünkanal der einzelnen Farbquadrate zu setzen. Damit diese Veränderungen im Grünkanal nicht so augenfällig sind, werden für den Blau- und den Rotkanal zusätzlich zufällige Werte gesetzt.
  2. Das Auslesen der Bildinformation wird gestartet, sobald die Leertaste gedrückt wird. Dazu wird der Grünwert eines jeden Quadrates bestimmt und wieder in einen Buchstaben umgerechnet.
Mit diesen Befehlen kann eine vorher festgelegte Botschaft in das Bild kodiert und anschliessend auch wieder ausgelesen werden.

Um die farbigen Quadrate auf den Bildschirm zu zeichnen werden drei ineinander verschachtelte for-Schlaufen verwendet:

  1. Die z-Schlaufe zeichnet die einzelnen Quadrate, deren Farbe durch jeweils einen einzelnen Buchstaben bestimmt wird.
  2. Die x-Schlaufe rechnet für jeden Buchstaben den passenden Farbwert (Grünkanal) aus und zeichnet jeweils eine Zeile von Quadraten.
  3. Die y-Schlaufen bestimmt, wo die Quadratzeile auf dem Bildschirm platziert wird.

Dabei benutzt das Programm zusätzliche Bibliotheken, welche erst über das Dateimenü importiert werden müssen:

Die Funktion „set pen color“ ermöglicht das einfache Festlegen der Quadratfarbe nach dem RGB-Schema.

Die Funktion „multiline“ aus der Bibliothek „allow multi-line text input into a block“ erleichtert die Texteingabe für die Geheimnachricht.

Verwendung der Steganografie

Bei der Verschlüsselung von Daten sorgt man heute meist für Offenheit, was bedeutet, dass die Verfahren zur Verschlüsselung offengelegt werden können und es einer Drittperson trotzdem nicht in nützlicher Frist gelingt, die Geheimbotschaft zu lesen. Bei der Steganografie hingegen versucht man die Tatsache zu verschleiern, dass überhaupt eine geheime Mitteilung besteht. Verwendung findet dieses Verfahren deshalb in folgenden Situationen:

  • Bei verschiedenen Medien kann mittels der Steganografie ein Wasserzeichen eingebaut werden, welches Rückschlüsse auf die Weitergabe eines solchen Mediums zulässt. Dies ist beispielsweise dann nützlich, wenn überprüft werden soll, ob ein Copyright eingehalten wurde.
  • Mittels des gleichen Verfahrens ist es aber beispielsweise auch möglich, einen Schadcode, z.B. für einen Virus, in eine dafür geeignete Computerdatei einzufügen.

Verwendung in der Schule

In der Informatik können mit dem Programmbeispiel die Konzepte Variable, verschachtelte Schlaufen und die Kodierung von Zeichen und Farben thematisiert werden. Fortgeschrittene Schülerinnen und Schüler können den Kodierungsalgorithmus so anpassen, dass das Auslesen der Informationen durch eine Drittperson erschwert wird, indem beispielsweise mehr als ein Farbkanal für die Verschlüsselung verwendet wird (Rotation oder Auswahl eines RGB-Kanals abhängig vom zuletzt verschlüsselten Buchstaben). Etwas einfacher ist die Anpassung des Farbraums durch geschicktes Auswählen der Zufallszahlen für die nicht kodierten Farbkanäle.

Natürlich können sich die Schülerinnen und Schüler auch mit Geheimbotschaften hinterlegte Bilddateien austauschen. Sie können die Bilder mit einem Rechtsklick auf die Bühnenfläche (stage) speichern.

Ein Bild kann mittels der eingebauten Speicherfunktionen gesichert werden.

Ebenso einfach kann ein Bild geladen werden, indem man dieses dem Hintergrund als neues Kostüm zuordnet.

Ein Bild lädt man, indem man dem Hintergrund oder wahlweise einem anderen Objekt ein neues Kostüm zuordnet.

Damit steht dem Austausch von geheimen Botschaften innerhalb einer Klasse nichts mehr im Wege.

Quellen

Representing Data with Images and Sound (Kurs der Rasperry Pi Foundation auf FutureLearn), https://www.futurelearn.com/courses/representing-data-with-images-and-sound

Wikipedia: Steganografie, https://de.wikipedia.org/wiki/Steganographie#Ziele_der_Steganographie

Snap!-Roboter

Roboter können wesentliche Prinzipien der Informatik wie die Anwendung von Sensoren und Aktoren veranschaulichen. Allerdings kann die Verwendung von Robotern auch erhebliche Kosten bei deren Anschaffung verursachen, weshalb es zumindest für die Vermittlung von Grundprinzipien sinnvoll sein kann, das Verhalten von Robotern erst einmal zu simulieren, bevor man zur Hardware greift.

Der folgende Roboter wurde in Snap! programmiert. Er verfügt über zwei einfache Sensoren, welche dafür sorgen, dass sich der Roboter in eine neue Richtung dreht. (Bei einem richtigen Roboter würden diese Sensoren die Drehzahl von Motoren steuern.) Sobald der Sensor die Farbe Schwarz meldet, dreht sich der Roboter ab.

Pfad eines einfachen Roboters in seiner Umgebung.

Programmierung des Roboters

Die Programmierung des Roboters erfolgte über drei Elemente:

  • Umgebung,
  • Roboter und
  • Sensoren.

Innerhalb der Umgebung wurde ein Zeitgeber programmiert, welcher für die Taktung der weiteren Elemente sorgt, indem jeweils ein Signal versendet wird:

Der Roboter und seine Sensoren werden durch die Umgebung getaktet.

Innerhalb der Umgebung wird auch die Variable für die Laufrichtung des Roboters festgelegt.

Der Roboter selbst bewegt sich in jedem Zyklus um eine bestimmte Anzahl von Schritten in die berechnete Richtung.

Da es vorkommen kann, dass der Roboter aus dem Bild läuft, kann dieser mit der Leertaste auf den Nullpunkt zurückgeholt werden.

Der Zufallswert bei der Vorwärtsbewegung soll Abweichungen bei der Fahrt durch ein „physikalisches“ Gelände simulieren. Diese Ungenauigkeiten sorgen dafür, dass der Roboter sich nicht perfekt verhält, sondern sein Verhalten durch kleine Störungen beeinflusst werden. Lässt man hier einen grösseren Bereich zu, kann man damit Unzulänglichkeiten in der mechanischen Konstruktion nachbilden.

Ausserdem hinterlässt der Roboter eine Spur, durch welche sich sein Bewegungsmuster auch über eine längere Zeit verfolgen lässt.

Die eigentliche Steuerung des Roboters erfolgt über zwei seitlich angebrachte Sensoren:

Der Sensor reagiert auf die Farbe Schwarz. Dadurch zeigt der Roboter ein Vermeidungsverhalten gegenüber der Dunkelheit.

In jeden Schritt werden die Sensoren zuerst relativ zum Roboterkörper positioniert, was bei einem richtigen Roboter nicht notwendig ist. Wenn der Sensor auslöst, wird dies durch einen Kostümwechsel (grün) angezeigt und die Richtung, in welche sich der Roboter bewegt, wird angepasst. Auch hier werden Zufallswerte verwendet, um kleine Ungenauigkeiten einzuführen.

Verwendung im Unterricht

Die Simulation dient der Veranschaulichung von grundlegenden Elementen der Robotik. Die Lernenden können in Snap! den Hintergrund gestalten, um die Grenzen der einfachen Steuerung auszuloten. Mögliche Fragestellungen sind:

  • Welche Auswirkungen haben die Veränderungen von Steuerungswerten wie z.B. bei der Richtungsänderung oder Vorwärtsbewegung?
  • Bei welcher Umgebungsgestaltung verhält sich der Roboter nicht so wie geplant?
  • Kann die Anordnung der Sensoren für allgemeine oder spezielle Umgebungen optimiert werden?

Im Vordergrund steht hier also nicht die eigentliche Programmierung des Roboters, sondern dessen Interaktionen mit der Umgebung. Damit wird für die Lernenden schnell ersichtlich, wo die Grenzen einer einfachen Steuerung liegen und sie können damit besser nachvollziehen, weshalb die Programmierung eines komplexeren Verhaltens seine Tücken haben kann.

Quellen

Online-Kurs „Begin Robotics“ auf FutureLearn: https://www.futurelearn.com/courses/begin-robotics

Ben Ari und Mondada (2018). Elements of Robotics. SpringerOpen: https://link.springer.com/book/10.1007%2F978-3-319-62533-1

Fotofilter mit Snap!

Die Raspberry Pi Foundation bietet über FutureLearn interessante Kurse zum Bereich „Medien und Informatik“ an. Einer dieser Kurse, „Representing Data with Images and Sound: Bringing Data to Life“ greift unter anderem das Thema Foto-Filter auf und bietet dazu auch einige interessante Code-Beispiele mit Python, welche die Fähigkeiten von Anfängerinnen und Anfängern wohl teilweise übersteigen. Eine Umsetzung mit Snap! erleichtert nicht nur die Programmierung, durch die Verwendung der Webcam ist auch das Einbinden von Bilddateien wesentlich einfacher.

In Snap! programmierte Farbfilter. Das Originalbild befindet sich links oben.

Programmierung in Snap!

Ein geeignetes Bild kann man in Snap! mittels der Zusatzbibliothek „Pixels“ leicht über die Webcam aufnehmen.

In Snap! kann man einem Objekt (Sprite) ein Bild der Webcam als Kostüm zuweisen.

Der abgebildete Programmcode verschiebt zusätzlich das aufgenommene Bild in die linke obere Ecke.

Ein zweites Objekt liest nun die Pixel vom Bildschirm ab, rechnet diese um und bildet das Ergebnis an einer anderen Stelle des Bildschirms ab. Der folgende Programmcode erzeugt drei Abbildungen:

  • Graustufenbild: Alle drei Farbkanäle (Rot, Grün, Blau) werden auf den Wert des Rotkanals gesetzt;
  • Negativbild: Für alle drei Farben wird die neue Farbe berechnet, indem der Farbwert des Kanals von 255 subtrahiert wird.
  • Rotierende Farben: Jeder Farbwert wird mit einem Faktor multipliziert. Damit kein Wert grösser 255 entsteht, wird das Produkt anschliessend modulo 255 gerechnet, d.h., es handelt sich um den Rest nach einer Division durch 255.

Im Wesentlichen besteht das Programm aus zwei verschachtelten Schlaufen, die dafür sorgen, dass jeder Pixel ausgelesen wird. In der inneren Schlaufe wird der Farbwert ausgelesen, umgerechnet und ein entsprechender Pixel an der richtigen Stelle geschrieben.

Das Hauptprogramm rechnet die ausgelesenen Farbwerte in drei Varianten um und schreibt die so berechneten Bilder auf den Bildschirm.

Das verwendete Verfahren ist zwar sehr langsam, dafür aber recht anschaulich. Dieses kann gut anhand eines kleinen Bildes von Hand nachvollzogen werden, da die neuen Bilder zeilenweise auf dem Bildschirm erscheinen.

Verwendung im Unterricht

Foto-Filter gehören zum Alltag von Jugendlichen und werden von diesen auch gerne genutzt. Nebst dem technischen Aspekt (Medien und Informatik) kann das Beispiel auch im Kunstunterricht (Bildnerisches Gestalten) verwendet werden. Für ansprechende Farbfilter sind dabei unter Umständen schon recht komplexe Umrechnungen notwendig.

Haben die Schülerinnen und Schüler das Prinzip einmal begriffen, lädt die Aktivität zu umfangreichen Experimenten ein.

Quellen

Representing Data with Images and Sound: Bringing Data to Life: https://www.futurelearn.com/courses/representing-data-with-images-and-sound

Python: https://www.python.org

Raspberry Pi Foundation: https://www.raspberrypi.org

Snap-Programmierumgebung: https://snap.berkeley.edu/snap/snap.html