Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
lehrkraefte:blc:informatik:glf19:hashing:hashing [2020/04/26 14:49] Werner Winkelmann |
lehrkraefte:blc:informatik:glf19:hashing:hashing [2020/04/28 16:27] Ivo Blöchliger [Ablauf Lektion] |
||
---|---|---|---|
Line 22: | Line 22: | ||
=== Fazit === | === Fazit === | ||
- | Die Frage, ob digitales Contact Tracing (nicht Contact Tracking) mit den Grundrechten vereint werden kann, hat somit eine eindeutige Antwort: ja. Rüstet man Smartphones mit Epidemie-Software aus, so landet man also nicht zwingend in einem Überwachungsstaat. Also Entscheidend ist, dass die Apps von Grund auf mit dem Ziel entwickelt werden, die Privatsphäre zu schützen (ohne Nennung von Namen oder zentraler Speicherung von persönlichen Daten). Und dass der Quellcode offen liegt, | + | Die Frage, ob digitales Contact Tracing (nicht Contact Tracking) mit den Grundrechten vereint werden kann, hat somit eine eindeutige Antwort: ja. Rüstet man Smartphones mit Epidemie-Software aus, so landet man also nicht zwingend in einem Überwachungsstaat. Also Entscheidend ist, dass die Apps von Grund auf mit dem Ziel entwickelt werden, die Privatsphäre zu schützen (ohne Nennung von Namen oder zentraler Speicherung von persönlichen Daten). Und dass der Quellcode offen liegt, |
===== Ablauf Lektion ===== | ===== Ablauf Lektion ===== | ||
- Zunächst ein Einstieg von der Lehrperson in das Thema ([[https:// | - Zunächst ein Einstieg von der Lehrperson in das Thema ([[https:// | ||
- | - Sie haben dann 15 Minuten Zeit um den Artikel | + | - Sie haben nun 20 Minuten Zeit um die Thematik |
- Sie öffnen nun [[https:// | - Sie öffnen nun [[https:// | ||
- Kopieren Sie diesen {{ : | - Kopieren Sie diesen {{ : | ||
Line 35: | Line 35: | ||
- Falls wir noch Zeit haben, beginnen wir noch mit dem eigentlichen Einstieg in die Kryptographie | - Falls wir noch Zeit haben, beginnen wir noch mit dem eigentlichen Einstieg in die Kryptographie | ||
+ | |||
+ | <code python> | ||
+ | #################################################################################### | ||
+ | ### Aufgabe 0: Öffnen Sie https:// | ||
+ | ### diesen Code dorthin. | ||
+ | #################################################################################### | ||
+ | |||
+ | |||
+ | |||
+ | # Ganz ganz schlechter Hash weil | ||
+ | # viel zu kurz (8 Stellen Hexadezimal -> nur 32 Bits) | ||
+ | # | ||
+ | # (man braucht nicht alles auszuprobieren, | ||
+ | def badHash(text): | ||
+ | modulo = 2**31-1 | ||
+ | summe = 1234567 | ||
+ | counter = 12345 | ||
+ | for c in text: | ||
+ | summe = summe*(ord(c)+counter) % modulo | ||
+ | counter = (counter+65001)%modulo | ||
+ | | ||
+ | return " | ||
+ | |||
+ | #################################################################################### | ||
+ | ### Aufgabe 1: Wählen Sie ein Geheimnis, das Sie danach **nicht** mehr ändern. | ||
+ | #################################################################################### | ||
+ | |||
+ | geheimnis = " | ||
+ | |||
+ | #################################################################################### | ||
+ | ### Aufgabe 2: " | ||
+ | ### oder einem Mitschüler. Einigen Sie sich auf einen Zeitstempel HH: | ||
+ | ### tragen Sie diesen unten ein und berechnen Sie die Prüfsumme. Tauschen | ||
+ | ### Sie die Ihre Prüfsummen (Output vom Programm) aus und tragen Sie diese ### | ||
+ | ### unten in den Logs ein. ### | ||
+ | ### Wiederholen Sie das mit mindestens 5 weiteren Personen. | ||
+ | #################################################################################### | ||
+ | |||
+ | zeitstempel = " | ||
+ | |||
+ | pruefsumme = badHash(zeitstempel+geheimnis) | ||
+ | print(" | ||
+ | print(" | ||
+ | |||
+ | ### | ||
+ | # Hier alle Zeitstempel und Prüfsummen Paare eintragen, die Sie übermittelt bekommen haben. | ||
+ | ### | ||
+ | logs = [ | ||
+ | [' | ||
+ | ] | ||
+ | |||
+ | |||
+ | #################################################################################### | ||
+ | ### Aufgabe 3: Auf dem Chat wird das Geheimnis von jemandem publiziert. Tragen | ||
+ | ### Sie dieses hier ein. Das Programm berechnet alle Prüfsummen damit und wird ### | ||
+ | ### ausgeben, ob Sie mit dieser Person Kontakt hatten oder nicht. | ||
+ | ### Nur mit den Daten in diesem Programm können Sie die infizierte Person nicht ### | ||
+ | ### identifizieren. Mit den zusätzlichen Daten im Chat natürlich schon. Darum ### | ||
+ | ### muss eine solche App OpenSource sein, damit überprüft werden kann, dass ### | ||
+ | ### keine zusätzlichen Daten gespeichert werden. | ||
+ | #################################################################################### | ||
+ | |||
+ | infiziert = " | ||
+ | |||
+ | |||
+ | if infiziert != " | ||
+ | |||
+ | print(" | ||
+ | risk = False | ||
+ | for l in logs: | ||
+ | pruefsumme = badHash(l[0]+infiziert) | ||
+ | if pruefsumme==l[1]: | ||
+ | print(" | ||
+ | risk = True | ||
+ | | ||
+ | if not risk: | ||
+ | print(" | ||
+ | | ||
+ | |||
+ | </ |