Personuppgifter och anonymisering
Kunna identifiera personuppgifter i data och tillämpa pseudonymisering och dataminimering.
Förkunskaper
- DLicenser och öppna datakrävs
Intuition
Personuppgift är all information som kan kopplas till en identifierbar fysisk person — direkt eller indirekt.
| Typ | Exempel |
|---|---|
| Direkt identifierande | namn, personnummer, e-post, telefonnummer |
| Indirekt (kvasi-identifierare) | postnummer + födelsedatum + kön, IP-adress, enhets-id |
| Känsliga kategorier | hälsa, etnicitet, religion, politisk åsikt, sexuell läggning, biometri |
Den mittersta raden är den som överraskar. Sweeney visade att postnummer, födelsedatum och kön räcker för att unikt identifiera ungefär 87 % av USA:s befolkning. Att ta bort namnet räcker alltså inte alls.
Formellt
Skillnaden som avgör vad lagen kräver:
- Pseudonymisering: identifierare ersätts med ett id, men en nyckel finns kvar (eller återidentifiering är möjlig). Datan är fortfarande personuppgifter och GDPR gäller fullt ut.
- Anonymisering: återidentifiering är omöjlig även med extra information. Då gäller inte GDPR — men tröskeln är hög, och de flesta «anonymiserade» dataset är i praktiken pseudonymiserade.
Tekniker och vad de faktiskt ger:
| Teknik | Skydd | Begränsning |
|---|---|---|
| Ta bort direkta identifierare | lågt | kvasi-identifierare kvarstår |
| k-anonymitet | varje rad delas av minst k andra | sårbar för homogenitets- och bakgrundskunskapsattacker |
| l-diversitet, t-närhet | variation i känsliga attribut | komplext, förstör nytta |
| Differentiell integritet | matematisk garanti via kalibrerat brus | kostar noggrannhet; ε måste väljas och motiveras |
| Aggregering | hög om grupperna är stora | detaljer går förlorade |
Dataminimering är den starkaste och billigaste åtgärden: samla inte in det du inte behöver. En uppgift som aldrig samlats in kan inte läcka, inte missbrukas och inte behöva raderas.
För AI-system tillkommer att modellen kan memorera träningsdata. Carlini m.fl. har visat att exakta textsträngar går att extrahera ur språkmodeller. Personuppgifter i träningsdata är därför en risk även efter att datan raderats.
Kod
import re, hashlib, os
PII = {
"personnummer": re.compile(r"\b(19|20)?\d{6}[-+]?\d{4}\b"),
"epost": re.compile(r"[\w.+-]+@[\w-]+\.[\w.]+"),
"telefon": re.compile(r"\b0\d{1,3}[-\s]?\d{5,8}\b"),
"kortnummer": re.compile(r"\b(?:\d[ -]?){13,16}\b"),
}
def maskera(text: str) -> tuple[str, dict]:
hittade = {}
for namn, m in PII.items():
text, n = m.subn(f"<{namn.upper()}>", text)
if n:
hittade[namn] = n
return text, hittade
PEPPAR = os.environ["PSEUDONYM_PEPPER"].encode() # hemlig, roteras inte lättvindigt
def pseudonymisera(identifierare: str) -> str:
"""Stabilt id utan att röja originalet. OBS: fortfarande personuppgift."""
return hashlib.blake2b(identifierare.encode() + PEPPAR, digest_size=8).hexdigest()
text = "Kontakta Anna på [email protected] eller 070-1234567."
print(maskera(text))
# ('Kontakta Anna på <EPOST> eller <TELEFON>.', {'epost': 1, 'telefon': 1})
# ↑ namnet fångas inte av regex — kräver NER eller manuell granskning
Exemplet visar begränsningen: regex fångar strukturerade identifierare men inte namn, platser eller fritext som avslöjar någon. Kombinera med NER och mänsklig granskning på ett stickprov.
Behärskning innebär
- Identifierar direkta och indirekta personuppgifter
- Tillämpar pseudonymisering och dataminimering
- Förstår varför anonymisering är svårare än det låter
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- IMY — Integritetsskyddsmyndigheten — myndighetsmaterial
- GDPR — förordning (EU) 2016/679 — EU-rättsakt
- arXiv — Extracting Training Data from Large Language Models — arXiv (öppen åtkomst; licens per artikel)