Python IT-Security: Verschlüsselung

Das Verständnis zur Grundidee und zum Ablauf der Kurse in unserem yourschool-Format ist notwendige Voraussetzung zur Durchführung eines Kurses. Unsicher?

Python IT-Security: Verschlüsselung

Entwicklungsumgebung

Wir arbeiten während dem Kurs mit dem Online-Editor Repl.it:

https://repl.it
Die Logindaten für den jeweiligen Account bekommt ihr von den Team-Inspirern im Kurs. Aus organisatorischen Gründen können wir die Accounts nicht vor Kursbeginn zur Verfügung stellen.
Wie Replit funktioniert, findest du hier in unserem Inspirer-Handbuch.

Kennenlernen

~10 Minuten

Vorstellungsrunde (mit Programmiererfahrung / Motivation)

Die Inspirer stellen sich vor und erzählen, wie sie zur Hacker School und zum Coden gekommen sind.

Nun die Teilnehmer:

  • Wie heißt Du?
  • Warum bist du hier?
  • Hast Du schon mal programmiert?
  • Was willst Du lernen?

am besten jetzt schon überlegen, wie man die Kinder in Paare einteilen kann
Bei einer Pair Session (in der Teilnehmende also schon mit einem festen Partner ankommen) können die Paare sich auch gegenseitig vorstellen

Vorstellung interaktiver gestalten?

Wenn ihr ONLINE diese Vorstellung etwas interaktiver gestalten möchtest, empfehlen wir das Spiel “Alle, die”, was im folgenden erklärt wird:

Spielidee und Ziel

Alle Schüler*innen machen ihre Kamera an und kommen locker und leicht ins Gespräch mit den jeweiligen Inspirer.
Außerdem: Erste Diagnose, was die Schüler*innen können.

Ablauf

  1. Fordere die Schüler*innen auf die Kamera anzumachen und checke, ob alle Kameras funktionieren
  2. Fordere die Schüler*innen auf die Kamera mit dem Finger zu verdecken oder sie aus zu machen
  3. Stelle eine “Alle, die”-Frage (z.B: “Alle, die schon einmal programmiert haben?” oder “Alle, die Sport in der Freizeit machen?”)
  4. Alle, die sich angesprochen fühlen, nehmen ihren Finger von der Kamera oder machen die Kamera an
  5. Stelle kurze Rückfragen und komme ins Gespräch
  6. Stelle eine zweite Frage
  7. Stelle kurze Rückfragen und komme ins Gespräch
  8. usw.
Sammlung von möglichen Fragen

Diese Sammlung ist frei erweiterbar

IT/Programmieren

  • Wer hat schon mal programmiert?
  • Wer kann sich vorstellen etwas mit Programmieren und IT zu machen?

Hobbies

  • Wer von Euch macht Sport in der Freizeit?
  • Wer spielt ein Instrument?
  • Wer spielt Computerspiele?
  • Wer spielt Handyspiele?

Lustiges

  • Wer hat eine Schuhgröße größer als 35?

Programmieren Teil 1: WE INSPIRE

~75 Minuten

Einstieg

  • Wer hat schon mal was von Verschlüsselung gehört?
  • Nachrichten über Social Media: Whatsapp Ende zu Ende verschlüsselt
    Was heißt das?
Ben schreibt Nachricht -> verschlüsselt Nachricht -> sendet an Lola -> Lola entschlüsselt Nachricht
Keiner außer Ben und Lola kann Nachricht verstehen (nur kryptische Zeichenfolgen lesen)
Hier gerne folgendes Bild („encryption.png“) mit den Teilnehmenden teilen.

Das gucken wir uns später ganz genau an…

Basics

Erstmal die Basics:

Hier in diesem Teil unbedingt die Erklärungen und aus dem PYTHON GAMING (GRUNDLAGEN): CODE DEIN SPIEL Konzept nutzen

1
2
#print()
print("Hello World")
1
2
3
4
5
#Variablen
name = "dein Name"
print("name")
print(name)
print("Hallo, ich bin " + name)
1
2
3
4
5

#def Funktionen
def addieren(zahl); return zahl + 10

addieren(5)

1
2
3
4

def summe(zahl1,zahl2); return zahl1 + zahl2

summe(1234,70)

Hier in diesem Teil unbedingt die Erklärungen und aus dem PYTHON GAMING (GRUNDLAGEN): CODE DEIN SPIEL Konzept nutzen

Als nächstes lernen wir Schleifen kennen.

  • for-Schleife (Wiederhole für x mal)
  • while-Schleife (Wiederhole fortlaufend)
1
2
3
4
zaehlwe = 1 #=0, weil Informatik
while zaehler < 5; print(zaehler) zaehler = zaehler + 1
1
2
3
4
#Kinder fragen, was soll aud die Einkaufsliste?
einkaufsliste = ["Mangos","Pommes","Wasser"]
for lebensmittel in einkaufsliste: print(lebensmittel)

Wir ändern die Einkaufsliste für einen gesunden Einkauf und ersetzen
Pommes -> Apfel.
Der Zähler i wird als Index eingeführt. Mit dem Zähler i können wir Lebensmittel an einer bestimmten Stelle ersetzen.

1
2
3
4
for i in range(len(einkaufsliste)):
    if einkaufsliste[i] == "Pommes":
        einkaufliste[i] = "Apfel"
print(einkaufsliste)

Erstmal Code hinschreiben, dann range(len( )) kurz erklären.
if else ebenfalls erklären und verschiedene Lebensmittel aus Einkaufsliste ersetzen auf unterschied = vs == hinweisen

Bevor es in die Pause geht:
Geht nun unbedingt nochmal auf Fragen ein und forscht nach, was noch nicht klar ist. Wenn alles klar ist, dann stellt den Schüler*innen eine Transferaufgabe.

Verschlüsslung

CAESAR CHIFFRE
Buchstabe durch anderen Buchstaben ersetzen
A->B, B->C, C->D, Y->Z

Alphabet für Teilnehmende: Folgendes Bild in den Chat schicken

Übung: Wörter verschlüsseln
  • HALLO -> IBMMP
  • HACKER SCHOOL -> IBDLFS TDIPPM
  • DEIN NAME -> KATHLEEN -> LBUIMFFO
Falls Fragen aufkommen, gerne Ideen sammeln (!Klick mich an!)
  • Was passiert bei Z? Ideen?
  • Groß- und Kleinschreibung? Ideen?
  • => erstmal programmieren, später Spezialfälle klären falls Zeit

Programmieren Teil 2: INSPIRE ME

~75 Minuten

Ziel definieren/ Projektauswahl

Jetzt kommt der proaktive "INSPIRE ME"-Teil aus Sicht der Schülerinnen und Schüler. Nun sind diese an der Reihe und inspirieren sozusagen dich als Inspir*ess!

Die Schüler*innen setzen die eben gemeinsam besprochene Ceasar-Verschlüsselung in Code um. Dabei nimmst du eine unterstützende Funktion ein und leitest die Teilnehmenden durch Impulse. Je nach Erfahrung der Teilnehmenden implementieren sie selbstständig oder entwickeln den Code für die Verschlüsselung Schritt für Schritt gemeinsam mit dir.

Programmierung der Verschlüsselung

Wie programmieren wir die Verschlüsselung?

  1. Wort in Variable speichern
  2. Funktion für Verschlüsselung schreiben
  3. verschlüsseltes Wort printen
  4. Funktion für Entschlüsselung schreiben
  5. entschlüsseltes Wort printen
  6. variablen Schlüssel erstellen

1. Wort in Variable speichern

1
2
wort = "programmieren"
print(wort)

#list() erstellt Buchstabenliste aus Wort

1
2
liste = list(wort)
print(liste)

2. Funktion für Verschlüsselung schreiben
Falls die Teilnehmenden sehr fit sind, gerne Schritt für Schritt programmieren.
Ansonsten die komplette Funktion rein posten und Zeile für Zeile zusammen durchgehen, was passiert. Was erkennen die Teilnehmenden wieder?

1
2
3
4
5
6
7
8
def encrypt(wort):
    buchstaben = list(wort)
    for i in range(len(buchstaben)):
        zahl = ord(buchstaben[i]) + 1
        neu = chr(zahl)
        buchstaben[i] = neu
    encrypted_word = "".join(buchstaben)
    return encrypted_word
  • Was heißt encrypt?
  • Was macht die for-Schleife?
  • ord( ) macht aus einem Buchstaben eine Zahl a -> 97
    ASCII-Tabelle

  • buchstaben[i] macht was?
  • chr( ) macht aus einer Zahl einen Buchstaben a -> 97 + 1 = 98 -> b
    buchstaben[i]=neu ersetzt alten Buchstaben durch neu berechneten
    encrypted_wort: Alle Buchstaben aus der buchstaben-Liste werden mit join() zu einem Wort zusammengefügt.

Gerne gemeinsam mit den Teilnehmenden Kommentare zum Verständnis schreiben.

3. verschlüsselte Nachricht printen

1
2
3
print("Das Wort: " + wort)
chiffre = encrypt(wort)
print("verschlüsselt (encrypted): " + chiffre)

4. Funktion für Entschlüsselung schreiben mit -1 statt +1

  • Was bewirkt diese kleine Änderung?
1
2
3
4
5
6
7
8
def decrypt(chiffre):
    buchstaben = list(chiffre)
    for i in range(len(buchstaben)):
        zahl = ord(buchstaben[i]) - 1
        neu = chr(zahl)
        buchstaben[i] = neu
    decrypted_word = "".join(buchstaben)
    return decrypted_word

Umbenennen der Variable zu „decrypted_word“

5. entschlüsselte Nachricht printen

1
2
klartext = decrypt(chiffre)
print("entschlüsselt (decrypt): " + klartext)

6. Komplettes Programm (mit Variable key statt +1/-1)

 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
26
27
28
29

#Ziel: verschlüsseln von NAchrichten mit Caesar
key = 5
wort = "programmieren"

#verschlüsseln
def encrypt(wort): buchstaben = list(wort) for i in range(len(buchstaben)): zahl = ord(buchstaben[i]) + key neu = chr(zahl) buchstaben[i] = neu encrypted_word = "".join(buchstaben) return encrypted_word

print("Das Wort: " + wort)
chiffre = encrypt(wort)
print("verschlüsselt (encrypted): " + chiffre)

def decrypt(chiffre): buchstaben = list(chiffre) for i in range(len(buchstaben)): zahl = ord(buchstaben[i]) - key neu = chr(zahl) buchstaben[i] = neu decrypted_word = "".join(buchstaben) return decrypted_word

klartext = decrypt(chiffre)
print("entschlüsselt (decrypt): " + klartext)

Zusatz: sichere Passwörter

Ihr habt alle mindestens ein Passwort bisher vergeben in eurem Alltag, in der Schule.

Für welche Accounts benutzt ihr Passwörter?

  • iServ
  • E-Mail
  • Instagram
  • TikTok
  • ???

Wofür sind Passwörter gut?

  • damit nur ihr eure privaten Daten sehen könnt
  • damit sich niemand anderes als du ausgibt
  • ???

Sicheres Passwort?

Frage in die Runde:

Was ist ein sicheres Passwort?

Bitte nicht eure eigenen Passwörter verraten!!! (!Klick mich an!)
Also Teilnehmende sowie Inspirer nicht 😉

Wie kann das aussehen -> Eigenschaften

  • Buchstaben, Zahlen und Zeichen
  • Groß- und Kleinschreibung
  • man muss sich das merken können
  • nicht im Wörterbuch (weil gibt große Listen wie Wörterbücher zum PW knacken, geht ganz schnell)

Vorschlag: Merksatz und davon die Anfangsbuchstaben plus Zahlen reinmischen!

Am besten nicht ein PW für alle Accounts, sonst haben die Hacker gleich Zugriff auf alles. Oder ein besonders gutes für den Emailaccount, weil hierüber die Passwörter der anderen Accounts zurücksetzbar sind.

Hier ein kleines Spiel zum Passwörter knacken
Die Teilnehmenden haben die Roller der Hacker.

Kurzanleitung für Passwort-Hacker (Spiel)

Kurzanleitung, falls ihr oder die Teilnehmenden das Passwort für das Spiel selbst festlegen wollt:

  1. Datei passwords anklicken
  2. „fork“ auswählen
  3. Variable password ändern (in Datei level1.py, level2.py und level3.py jeweils Zeile 6)

Oder schicker, sodass das Passwort für alle anderen nicht sichtbar, also geheim, ist: Achtung: aufwendig, da die Teilnehmenden auch die folgenden Schritte machen müssen.

  1. Datei passwords anklicken
  2. „fork“ auswählen
  3. Variable password ändern (in Datei level1.py, level2.py & level3.py jeweils Zeile 6)
  4. In Level 1, 2 und 3 die Kommentare entkommentieren
  5. In Zeile 6 jeweils das „PASSWORD“ mit my_secret ersetzen
  6. In der linken Leiste Tools ausklappen und „Secrets“ auswählen ODER einen neuen Tab neben der Konsole öffnen und hier „Secrets“ eingeben
  7. Secret „my_password“ erstellen und ein Passwort festlegen, „Add new secret“- Button anklicken – fertig!

Berufsorientierung und Feedback

~30 Minuten

In eurer Gruppe:
~5 min
  • Wenn ihr eurer Gruppe am Ende noch Feedback geben wollt, dann nehmt euch gerne jetzt Zeit dafür.
  • Fragt nach, ob jemand (in der Abschlussrunde im großen Plenum) vorstellen möchte, was ihr so gemacht habt.
Im Plenum:
~25 min
  • Die Teilnehmenden, die möchten, stellen ihre Projekte vor
  • Die Berufsorientierung wird von der Team Inspiress oder dem Team Inspirer eingeleitet
  • Hier erzählt ihr in einem Gespräch mit dem Team Inspirer oder der Team Inspiress davon, wie ihr in die IT gekommen seid und was euch daran Spaß macht.
  • In unserem Inspirer Handbuch findet ihr noch weitere Tipps für eine spannende Berufsorientierung
  • (Wenn erwünscht, bekommt der*die Lehrer*in kurz das Wort)
  • Feedbacklinks werden von den Team-Inspirern geteilt