Ist eine Nummer statt eines Namens schon anonym?
Pseudonymisieren heißt, direkte Merkmale wie einen Namen durch einen Ersatzwert zu tauschen. Anonym sind Daten erst, wenn niemand mehr herausfinden kann, wer gemeint ist.
Eine Hochschule gibt die Ergebnisse einer Umfrage an eine Forschungsgruppe weiter. Sie ersetzt die Namen durch Nummern. Reicht das?
Am Ende dieser Lektion
Notiz
Ich kann Daten pseudonymisieren und beurteilen, ob sie anonym sind.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Pseudonymisierung | ein direktes Merkmal durch einen Ersatzwert tauschen | |
| Anonymisierung | Daten so verändern, dass keine Person mehr erkennbar ist | |
| Hashwert | eine feste Zeichenfolge, die aus einem Text berechnet wird | SHA-256 |
| Salz | ein geheimer Zusatz, der vor dem Hashen an den Text kommt | |
| Gruppengröße | wie viele Personen dieselben Merkmale teilen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Pseudonymisieren ersetzt Namen durch Ersatzwerte
Bei der Pseudonymisierung steht statt des Namens ein Ersatzwert in der Tabelle, etwa eine Nummer. Wer die Zuordnungstabelle hat, kann den Namen zurückfinden.
Die Daten bleiben darum personenbezogen. Die Zuordnung gehört an einen anderen, geschützten Ort. Richten Sie zuerst das Terminal ein.
Das Zertifikat des Servers annehmen
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnfHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine Abkürzung für den Client
alias db='mariadb -h db -u student -pstudent -t -e'Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Hashwert ändert sich bei jedem Buchstaben ganz
Ein Hashwert wird aus einem Text berechnet. Derselbe Text ergibt immer denselben Wert. Ändert sich ein Buchstabe, sieht der Wert völlig anders aus. SHA-256 liefert 64 Zeichen.
Starten Sie beide Runs und vergleichen Sie den Anfang. Bei anna beginnt er mit 55579b55, bei Anna mit bf4fccd6.
Den Hashwert von anna berechnen
printf 'anna' | sha256sumHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Hashwert von Anna berechnen
printf 'Anna' | sha256sumHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Pseudonym aus der E-Mail-Adresse
db "SELECT id, LEFT(SHA2(email, 256), 10) AS pseudonym, city FROM shop.customers ORDER BY id LIMIT 5"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Hashwert ohne Salz lässt sich erraten
Die Adressen im Shop folgen einem festen Muster: [email protected]. Wer das weiß, kann jede Adresse raten, hashen und mit der Spalte vergleichen.
Das Salz verhindert das. Es ist ein geheimer Zusatz, der vor dem Hashen an den Text kommt. Ohne das Salz bleibt der Vergleich ohne Treffer.
Die Person hinter dem Hashwert erraten
db "SELECT id FROM shop.customers WHERE SHA2(email, 256) = SHA2('[email protected]', 256)"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Dasselbe Raten gegen ein gesalzenes Pseudonym
db "SELECT COUNT(*) AS treffer FROM shop.customers WHERE SHA2(CONCAT('geheimes-salz', email), 256) = SHA2('[email protected]', 256)"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele glauben, ein Hashwert der E-Mail-Adresse mache die Daten anonym. Das stimmt nicht. Der erste Run findet die Person mit der Zeile 1, weil die Adresse zu erraten war. Ein Hash ohne Salz ist ein Pseudonym, das sich knacken lässt.
Anonym ist nur, wer in einer Gruppe verschwindet
Auch ohne Namen kann ein Merkmal zu einer Person führen. Zählen Sie darum die Gruppengröße: wie viele Personen dieselben Werte teilen.
Eine Gruppe mit einer Person verrät sie. Je größer die kleinste Gruppe ist, desto besser sind die Daten versteckt.
Städte mit genau einer Person finden
db "SELECT country, city, COUNT(*) AS personen FROM shop.customers GROUP BY country, city HAVING COUNT(*) = 1 ORDER BY country, city"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Stadt und Beitrittsjahr zusammen
db "SELECT city, YEAR(joined_on) AS jahr, COUNT(*) AS personen FROM shop.customers GROUP BY city, jahr HAVING COUNT(*) = 1 ORDER BY city, jahr"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Beispiel: gröber heißt sicherer
| Gruppiert nach | Gruppen | Kleinste Gruppe |
|---|---|---|
| Stadt und Beitrittsjahr | 21 | 1 Person |
| Stadt | 12 | 1 Person |
| Land und Beitrittsjahr | 10 | 1 Person |
| Land | 5 | 4 Personen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Probieren Sie es: Postleitzahl vergröbern
-- Das Ergebnis ohne Namen: die Nummer bleibt, die Postleitzahl wird grober.
SELECT id AS pseudonym, SUBSTR(plz, 1, 2) AS region, studiengang
FROM teilnehmende
ORDER BY id;
-- Ändern Sie SUBSTR(plz, 1, 2) in SUBSTR(plz, 1, 1). Wie viele Regionen bleiben übrig?