Facharbeiten in der Schul-Cloud
AFB I–IIDie Schul-Cloud eines Gymnasiums bietet eine Ende-zu-Ende-Verschlüsselung mit einem asymmetrischen Verfahren (RSA) an. Beim ersten Anmelden erzeugt jedes Gerät ein Schlüsselpaar; der öffentliche Schlüssel wird in ein Verzeichnis eingetragen, das alle Nutzer lesen können (Material M1). Im Deutschkurs von Frau Demir sollen die 28 Schülerinnen und Schüler ihre Facharbeiten so abgeben, dass niemand außer der Lehrkraft sie lesen kann – auch nicht der Betreiber der Cloud.
| Nutzer | öffentlicher Schlüssel (RSA, 3072 Bit, gekürzt) | sichtbar für |
|---|---|---|
| Demir, Selin (Lehrkraft) | 30 82 01 8a 02 82 01 81 00 c4 7e … | alle Nutzer |
| Albers, Lars (Q1) | 30 82 01 8a 02 82 01 81 00 9b 12 … | alle Nutzer |
| Yilmaz, Hanna (Q1) | 30 82 01 8a 02 82 01 81 00 e0 5f … | alle Nutzer |
- Beschreiben Sie, wie Lars Albers seine Facharbeit so an Frau Demir übermittelt, dass nur sie sie lesen kann. Gehen Sie dabei auf jeden verwendeten Schlüssel ein.
- Vergleichen Sie den Schlüsselbedarf eines symmetrischen und des asymmetrischen Verfahrens, wenn im Kurs alle 29 Personen (28 Lernende und Frau Demir) paarweise vertraulich miteinander kommunizieren sollen.
- Erläutern Sie, warum es die Vertraulichkeit der Facharbeiten nicht gefährdet, dass das Schlüsselverzeichnis M1 für alle Nutzer lesbar ist, und welches Problem trotzdem offenbleibt.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
- Frau Demirs Gerät hat ein Schlüsselpaar erzeugt; der öffentliche Schlüssel steht in M1, der private bleibt auf ihrem Gerät.
- Lars liest den öffentlichen Schlüssel von Frau Demir aus dem Verzeichnis.
- Er verschlüsselt die Facharbeit (bzw. in der Praxis einen Sitzungsschlüssel, hybrid) mit diesem öffentlichen Schlüssel und lädt den Geheimtext hoch.
- Cloud-Betreiber und Mitschüler sehen nur den Geheimtext; mit dem öffentlichen Schlüssel lässt er sich nicht entschlüsseln.
- Frau Demir entschlüsselt mit ihrem privaten Schlüssel.
Lars' eigenes Schlüsselpaar wird für diese Übertragung nicht benötigt.
Erwartungshorizont zu Aufgabe b)
| Kriterium | symmetrisch | asymmetrisch |
|---|---|---|
| Schlüssel insgesamt (n = 29) | \(\frac{29\cdot 28}{2}=406\) geheime Schlüssel | 29 Schlüsselpaare (58 Schlüssel, davon 29 öffentlich) |
| geheim zu haltende Schlüssel pro Person | 28 | 1 (der eigene private) |
| vorheriger Austausch | jeder Schlüssel muss über einen sicheren Kanal verteilt werden | nur öffentliche Schlüssel, über ein offenes Verzeichnis |
| eine neue Person kommt hinzu | 29 neue geheime Schlüssel | 1 neues Schlüsselpaar |
Gemeinsamkeit: Beide Verfahren sichern bei geheim gehaltenen Schlüsseln die Vertraulichkeit. Der Schlüsselbedarf wächst symmetrisch quadratisch, asymmetrisch nur linear mit der Personenzahl; dafür ist das asymmetrische Verfahren deutlich langsamer.
Erwartungshorizont zu Aufgabe c)
Mit einem öffentlichen Schlüssel kann man nur verschlüsseln, nicht entschlüsseln. Der passende private Schlüssel lässt sich aus dem öffentlichen praktisch nicht berechnen: Bei RSA ist das Erzeugen leicht (zwei große Primzahlen multiplizieren), das Zurückrechnen würde das Zerlegen einer über 900-stelligen Zahl in ihre Primfaktoren erfordern (Einwegfunktion). Bei 3072 Bit ist das mit heutigen Rechnern nicht machbar. Wer M1 liest, kann Frau Demir also Nachrichten schicken, aber keine lesen.
Offen bleibt die Authentizität des Verzeichnisses: Könnte ein Angreifer (oder der Betreiber) den Eintrag „Demir“ durch seinen eigenen öffentlichen Schlüssel ersetzen, würde Lars für den Angreifer verschlüsseln (Man-in-the-Middle). Lösung: öffentliche Schlüssel über Zertifikate bzw. einen Abgleich des Schlüssel-Fingerabdrucks bestätigen.
Eine verschlüsselte Schülersprecher-Wahl
AFB II–IIIFür die Wahl der Schülersprecherin bzw. des Schülersprechers programmiert die Informatik-AG einen Prototyp: Jede Stimme ist die Nummer einer Kandidatin bzw. eines Kandidaten. Die Wahl-App verschlüsselt die Nummer mit dem öffentlichen Schlüssel der Wahlleitung und sendet den Geheimtext an einen Server; nach Wahlschluss zählt die Wahlleitung auf ihrem eigenen Rechner aus. Zum Testen verwendet die AG ein RSA-Schlüsselpaar mit sehr kleinen Zahlen (Material M2).
N = 3233 # Modul (öffentlich)
E = 17 # öffentlicher Exponent
D = 2753 # privater Exponent
def verschluesseln(stimme):
return pow(stimme, E, N)
def entschluesseln(geheim):
return pow(geheim, D, N)
pow(a, b, n) berechnet den Rest von \(a^b\) bei Division durch \(n\). Kandidatennummern: 1 = Aylin, 2 = Ben, 3 = Chiara.geheimtexte = [1752, 1211, 1, 1752, 1211, 1752, 1752, 1]
- Analysieren Sie den Quelltext in M2 im Hinblick darauf, welche Werte die Wahlleitung veröffentlichen darf, welche geheim bleiben müssen und auf welchem Gerät welche Funktion ausgeführt wird.
- Implementieren Sie eine Funktion
auszaehlen(geheimtexte), die alle Geheimtexte entschlüsselt und ein Dictionary zurückgibt, das jeder Kandidatennummer ihre Stimmenzahl zuordnet. Geben Sie das Ergebnis für M3 an. - Beurteilen Sie, ob der Prototyp das Wahlgeheimnis wahrt. Beziehen Sie M3 und die verwendeten Zahlen ein und nennen Sie geeignete Verbesserungen.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
entschluesseln aufrufen und im Dictionary hochzählen. Achten Sie auf Nummern, die noch nicht als Schlüssel im Dictionary vorkommen.Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
NundEbilden den öffentlichen Schlüssel; sie dürfen in jeder Wahl-App stehen.D(zusammen mit N) ist der private Schlüssel; er darf nur auf dem Rechner der Wahlleitung vorkommen. Im Prototyp steht D im selben Quelltext – in der echten App muss D entfernt werden.verschluesselnnutzt nur öffentliche Werte und läuft auf jedem Wählergerät.entschluesselnbenötigt D und läuft ausschließlich bei der Wahlleitung.- Verschlüsselung und Entschlüsselung sind jeweils eine modulare Potenz; der Unterschied liegt nur im Exponenten (E bzw. D).
Erwartungshorizont zu Aufgabe b)
def auszaehlen(geheimtexte):
ergebnis = {}
for g in geheimtexte:
stimme = entschluesseln(g)
if stimme in ergebnis:
ergebnis[stimme] = ergebnis[stimme] + 1
else:
ergebnis[stimme] = 1
return ergebnis
Entschlüsselt ergibt M3 die Stimmen 2, 3, 1, 2, 3, 2, 2, 1, also {2: 4, 3: 2, 1: 2}: Ben 4 Stimmen, Aylin und Chiara je 2.
Erwartungshorizont zu Aufgabe c)
Schwäche 1 – zu kleine Zahlen: \(N = 3233 = 61\cdot 53\) lässt sich sofort faktorisieren; daraus kann jeder D berechnen und alle Stimmen entschlüsseln.
Schwäche 2 – wenige, vorhersagbare Klartexte: Es gibt nur die Klartexte 1, 2, 3, und die Verschlüsselung ist deterministisch. Jeder kann mit dem öffentlichen Schlüssel alle drei verschlüsseln (1 → 1, 2 → 1752, 3 → 1211) und die Geheimtexte in M3 einfach vergleichen – ganz ohne privaten Schlüssel. Besonders auffällig: \(1^{17}\bmod 3233 = 1\), Stimmen für Aylin stehen sogar im Klartext da. Das gilt auch bei 3072-Bit-Schlüsseln.
Weitere Punkte: Der Server sieht, von welchem Gerät welcher Geheimtext kommt; ohne Anmeldung/Signatur könnte jemand mehrfach abstimmen.
Verbesserungen: ausreichend lange Schlüssel (mind. 3072 Bit), jede Stimme vor dem Verschlüsseln mit einer Zufallszahl auffüllen (zufälliges Padding) oder hybrid mit zufälligem Sitzungsschlüssel verschlüsseln, private Schlüssel getrennt verwahren, Stimmabgabe authentisieren, aber Identität und Stimme trennen.
Urteil: In der vorliegenden Form wahrt der Prototyp das Wahlgeheimnis nicht; das asymmetrische Prinzip ist geeignet, die Umsetzung aber nicht.
