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

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

 

  1. Fordert die Schüler*innen auf die Kamera anzumachen und checke, ob alle Kameras funktionieren
  2. Fordert die Schüler*innen auf die Kamera mit dem Finger zu verdecken oder sie aus zu machen
  3. Stellt 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. Stellt kurze Rückfragen und kommt ins Gespräch
  6. Stellt eine zweite Frage
  7. Stellt kurze Rückfragen und kommt ins Gespräch
  8. 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

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.

Grafik mit Verschlüsselung

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

Buchstaben des Alphabets in einer Reihe

Ü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

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

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
  • 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)

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:

  1. Datei passwords anklicken
  2. „fork“ auswählen
  3. Variable password ändern (in Datei level1.py, level2.py und level3.py jeweils Zeile 6)
Screenshot in Replit mit Kreis über "password ="

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
Screenshot in Replit mit Zeilen 1,3,6 Markiert

   5. In Zeile 6 jeweils das „PASSWORD“ mit my_secret ersetzen

Screenshot in Replit mit Zeile 6 markiert

   6. In der linken Leiste Tools ausklappen und „Secrets“ auswählen ODER einen neuen Tab neben der Konsole öffnen und hier „Secrets“ eingeben

Screenshot in Replit mit Kreis über relevante Stellen

   7. Secret „my_password“ erstellen und ein Passwort festlegen, „Add new secret“- Button anklicken – fertig!

Screenshot in Replit, zeigt "Secrets" fenster

Berufsorientierung und Feedback

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.

Feedback abgeben

Format:

Konzept:

Link: