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
5 Minuten
Vorstellungsrunde mit Programmiererfahrung/Motivation
Ihr stellt euch vor und erzählt, wie ihr zur Hacker School und zum Coden gekommen seid.
Nun die Teilnehmer:
- Wie heißt Du? (Achtet darauf, dass die Kinder sich nur mit Vornamen vorstellen – Datenschutz.)
- Warum bist Du hier?
- Hast Du schon mal programmiert?
- Was willst Du lernen?
⛛Vorstellung interaktiver gestalten?
In unserem Inspirer Handbuch findet ihr weitere Spielideen.
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
- Fordert die Schüler*innen auf die Kamera anzumachen und checke, ob alle Kameras funktionieren
- Fordert die Schüler*innen auf die Kamera mit dem Finger zu verdecken oder sie aus zu machen
- Stellt eine “Alle, die”-Frage (z.B: “Alle, die schon einmal programmiert haben?” oder “Alle, die Sport in der Freizeit machen?”)
- Alle, die sich angesprochen fühlen, nehmen ihren Finger von der Kamera oder machen die Kamera an
- Stellt kurze Rückfragen und kommt ins Gespräch
- Stellt eine zweite Frage
- Stellt kurze Rückfragen und kommt ins Gespräch
- usw.
Nutzt den Chat, wenn die Kameras deaktiviert sind. Viele Schüler*innen kennen das aus dem Gamingbereich.
Zum Beispiel folgendermaßen:
- “Tippt in den Chat: 1 = Zustimmung , 2 = Ablehnung”
Wenn Ihr den Chat nicht nutzen möchtet, könnt ihr auch die Reaktionen in Zoom verwenden (z.B. Daumen hoch Emoji für alle, die die Kamera deaktiviert haben.)
⛛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
#print()
print("Hello World")
#Variablen
name = "dein Name"
print("name")
print(name)
print("Hallo, ich bin " + name)
#def Funktionen
def addieren(zahl);
return zahl + 10
addieren(5)
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)
zaehlwe = 1 #=0, weil Informatik
while zaehler < 5;
print(zaehler)
zaehler = zaehler + 1
#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.
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?
⛛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?
- Wort in Variable speichern
- Funktion für Verschlüsselung schreiben
- verschlüsseltes Wort printen
- Funktion für Entschlüsselung schreiben
- entschlüsseltes Wort printen
- variablen Schlüssel erstellen
1. Wort in Variable speichern
wort = "programmieren"
print(wort)
#list() erstellt Buchstabenliste aus Wort
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?
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?
- buchstaben[i] macht was?
Gerne gemeinsam mit den Teilnehmenden Kommentare zum Verständnis schreiben.
3. verschlüsselte Nachricht printen
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?
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
klartext = decrypt(chiffre)
print("entschlüsselt (decrypt): " + klartext)
6. Komplettes Programm (mit Variable key statt +1/-1)
#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
- 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)
⛛ChatGPT richtig nutzen?
Wenn ihr möchtet, könnt ihr jetzt zusammen mit den Schüler*innen ChatGPT öffnen und ChatGPT nach einer Lösung für das Spiel fragen. Vergleicht dann das Ergebnis von ChatGPT mit dem Ergebnis der Schüler*innen. "Was findet ihr heraus?”
Kurzanleitung, falls ihr oder die Teilnehmenden das Passwort für das Spiel selbst festlegen wollt:
- Datei passwords anklicken
- „fork“ auswählen
- 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.
- Datei passwords anklicken
- „fork“ auswählen
- Variable password ändern (in Datei level1.py, level2.py & level3.py jeweils Zeile 6)
- 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
⛛Weitere Kurse buchen?
Ihr möchtet weitere Jugendliche für das Programmieren begeistern und euer Vorgehen beim Begeistern optimieren?
Hier meldet ihr euch für weitere Hacker School Kurse an.