Python IT-Security: Verschlüsselung
- dann gehe nochmal eine Ebene höher und klicke dich dort durch
- und lies dir unseren Blogeintrag zu unserem Mindset durch
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
- Fordere die Schüler*innen auf die Kamera anzumachen und checke, ob alle Kameras funktionieren
- Fordere die Schüler*innen auf die Kamera mit dem Finger zu verdecken oder sie aus zu machen
- Stelle 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
- Stelle kurze Rückfragen und komme ins Gespräch
- Stelle eine zweite Frage
- Stelle kurze Rückfragen und komme ins Gespräch
- 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?
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() |
1 2 3 4 5 | #Variablen |
1 2 3 4 5 |
|
1 2 3 4 |
|
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 |
1 2 3 4 | #Kinder fragen, was soll aud die Einkaufsliste? |
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" |
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
Ü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?
- 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
1 2 | wort = "programmieren" |
#list() erstellt Buchstabenliste aus Wort
1 2 | liste = list(wort) |
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?
- buchstaben[i] macht was?
ord( ) macht aus einem Buchstaben eine Zahl a -> 97
ASCII-Tabelle
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) |
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) |
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 |
|
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!)
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?
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
- In Zeile 6 jeweils das „PASSWORD“ mit my_secret ersetzen
- In der linken Leiste Tools ausklappen und „Secrets“ auswählen ODER einen neuen Tab neben der Konsole öffnen und hier „Secrets“ eingeben
- Secret „my_password“ erstellen und ein Passwort festlegen, „Add new secret“- Button anklicken – fertig!
Berufsorientierung und Feedback
~30 Minuten
- 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.
- 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?
Ihr möchtet noch mehr Schüler*innen begeistern!