Co to jest anonimizacja i pseudonimizacja danych?
Pseudonimizacja (ang. pseudonymisation) to według RODO „przetworzenie danych osobowych w taki sposób, by nie można ich było już przypisać konkretnej osobie, której dane dotyczą, bez użycia dodatkowych informacji”, przechowywanych osobno i chronionych (art. 4 pkt 5). Anonimizacja (ang. anonymisation) sięga dalej: po niej osoby nie da się już zidentyfikować. Artykuły RODO jej nie definiują – opisuje ją motyw 26, według którego rozporządzenie nie dotyczy informacji anonimowych, także przetwarzanych do celów statystycznych lub naukowych (Parlament Europejski i Rada Unii Europejskiej, 2016).
Ten sam motyw wyjaśnia, że dane spseudonimizowane, które przy użyciu dodatkowych informacji można przypisać osobie, nadal są danymi osobowymi. W psychologii dotyczy to zwłaszcza badań podłużnych, w których kod łączy pomiary, i udostępniania danych w duchu open science.
Identyfikatory bezpośrednie i pośrednie
RODO mówi o osobie, którą można zidentyfikować „bezpośrednio lub pośrednio” (art. 4 pkt 1), a motyw 26 każe brać pod uwagę „wszelkie rozsądnie prawdopodobne sposoby (w tym wyodrębnienie wpisów dotyczących tej samej osoby)”, z uwzględnieniem kosztu, czasu i dostępnej technologii. Sprawdź więc dwie grupy cech:
- identyfikatory bezpośrednie – imię i nazwisko, e-mail, numer telefonu lub albumu, adres IP, nagranie głosu, wizerunek; pseudonimizacja zastępuje je kodem;
- identyfikatory pośrednie – wiek, płeć, kierunek i rok studiów, miejscowość, daty, rzadkie rozpoznania; pojedynczo nikogo nie wskazują, ale ich kombinacja może wyróżnić jedną osobę.
Prostą miarą ryzyka jest k-anonimowość: zbiór ją spełnia, gdy każdy rekord jest nieodróżnialny od co najmniej k − 1 innych (Sweeney, 2002).
Przykład
W symulowanej ankiecie 120 osób z jednego wydziału adresy e-mail zastąpiono losowymi kodami, a klucz „e-mail – kod” zapisano w osobnym, chronionym pliku. To pseudonimizacja: 55 rekordów (45.8%) nadal miało unikatową kombinację płci, wieku, kierunku i roku studiów (k = 1). Przed udostępnieniem usuń więc klucz i uogólnij cechy: wiek 19–21 albo 22+, psychologia albo inny kierunek, stopień zamiast roku, bez płci, zbędnej w analizach. Wtedy każdą kombinację ma co najmniej 7 osób (k = 7); uogólnienia opisz w książce kodowej.
Jak zapisać w pracy
Przykład w R
Kod tworzy dane z przykładu, zastępuje adresy e-mail losowymi kodami i sprawdza k-anonimowość: liczy rekordy o unikatowej kombinacji wskazanych cech i liczebność najmniejszej grupy (k). Liczby w tekście pochodzą z tego kodu.
Pseudonimizacja i sprawdzenie k-anonimowości
R
set.seed(9501)
n <- 120
ankieta <- data.frame(email = sprintf("student%03d@uczelnia.example", 1:n), # fikcyjne e-maile
plec = sample(c("K", "M"), n, TRUE, c(.7, .3)), wiek = 19 + rpois(n, 2.6),
kierunek = sample(c("psychologia", "pedagogika", "socjologia", "filozofia"), n, TRUE, c(.5, .25, .15, .10)),
rok = sample(1:5, n, TRUE), wynik = round(rnorm(n, 3.2, 0.7), 2))
k_anonimowosc <- function(d, cechy) { # k = liczba osób o tej samej kombinacji cech
k <- ave(seq_len(nrow(d)), d[cechy], FUN = length)
c(unikatowe = sum(k == 1), procent = round(100 * mean(k == 1), 1), k = min(k))
}
klucz <- data.frame(email = ankieta$email, kod = sample(sprintf("P%03d", 1:n))) # osobny, chroniony plik
dane <- merge(ankieta, klucz)[, c("kod", "plec", "wiek", "kierunek", "rok", "wynik")]
k_anonimowosc(dane, c("plec", "wiek", "kierunek", "rok")) # po pseudonimizacji
dane$wiek_2 <- ifelse(dane$wiek <= 21, "19–21", "22+")
dane$kierunek_2 <- ifelse(dane$kierunek == "psychologia", "psychologia", "inny")
dane$stopien <- ifelse(dane$rok <= 3, "I", "II")
k_anonimowosc(dane, c("wiek_2", "kierunek_2", "stopien")) # po uogólnieniu, bez płciWynik w R
unikatowe procent k
55.0 45.8 1.0
unikatowe procent k
0 0 7 Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats); dodatkowe pakiety nie są potrzebne.
- R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
Na co uważać
- Kod zamiast nazwiska to jeszcze nie anonimizacja. Dopóki istnieje klucz – u Ciebie, u promotora albo w platformie ankietowej – dane są spseudonimizowane, czyli osobowe.
- Samo k nie wystarcza. Sweeney (2002) opisuje ataki reidentyfikacyjne skuteczne mimo k-anonimowości, gdy nie przestrzega się dodatkowych zasad. Przejrzyj też odpowiedzi otwarte i rzadkie wartości.
- Decyzje po fakcie. O udostępnieniu danych informujesz uczestników przed badaniem (zob. świadoma zgoda i RODO w badaniach).
Szerzej piszemy o tym we wpisach o pakiecie replikacyjnym i o przygotowaniu bazy danych do analizy. Hasło nie jest poradą prawną: plan ochrony danych uzgodnij z inspektorem ochrony danych uczelni.
Najczęstsze pytania
Czy zamiana nazwiska na kod uczestnika to anonimizacja?
Nie, to pseudonimizacja. Dopóki istnieje klucz łączący kody z osobami, dane da się przypisać konkretnym ludziom, więc według motywu 26 RODO nadal są danymi osobowymi.
Co to jest k-anonimowość?
To warunek, przy którym każdy rekord zbioru jest nieodróżnialny od co najmniej k − 1 innych pod względem cech pośrednich (Sweeney, 2002). Przy k = 5 każdą kombinację cech ma co najmniej pięć osób.
Jak sprawdzić, czy dane z ankiety są anonimowe?
Usuń identyfikatory bezpośrednie i klucz kodów, a potem policz, ile osób ma każdą kombinację cech pośrednich, np. wieku, płci i kierunku. Unikatowe kombinacje uogólnij, przejrzyj odpowiedzi otwarte, a ocenę skonsultuj z IOD.
Powiązane hasła
Poradniki, w których użyjesz tego pojęcia
Pakiet replikacyjny: dane i kod do artykułu
Struktura folderów, README, książka kodowa, skrypty R działające od zera, anonimizacja i RODO, licencje, OSF i deklaracja dostępności danych + szablon ZIP.
Czytaj →PoradnikJak przygotować bazę danych do analizy
Układ bazy, nazwy zmiennych, kodowanie ankiety, braki, pułapki Excela, widok zmiennych w SPSS i kontrola jakości – z szablonem .xlsx, .sav i .csv do pobrania.
Czytaj →Potrzebujesz wsparcia w analizie danych?
Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.
Wyceń analizęOferta dla studentówBibliografia i dalsza literatura naukowa (APA 7)
- Parlament Europejski i Rada Unii Europejskiej. (2016). Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (ogólne rozporządzenie o ochronie danych). Dziennik Urzędowy Unii Europejskiej. https://eur-lex.europa.eu/eli/reg/2016/679/oj ● Otwarty dostęp: pełny tekst
- Sweeney, L. (2002). k-Anonymity: A model for protecting privacy. International Journal of Uncertainty, Fuzziness and Knowledge-Based Systems, 10(05), 557–570. https://doi.org/10.1142/s0218488502001648 ● Otwarty dostęp: pełny tekst
Cytowania BibTeX
@misc{eu2016regulation, author={{Parlament Europejski i Rada Unii Europejskiej}}, title={{Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (ogólne rozporządzenie o ochronie danych)}}, howpublished={Dziennik Urzędowy Unii Europejskiej}, year={2016}, volume={L 119}, pages={1--88}, url={https://eur-lex.europa.eu/eli/reg/2016/679/oj}}@article{sweeney2002k, author={Sweeney, Latanya}, title={{k-Anonymity: A model for protecting privacy}}, journal={International Journal of Uncertainty, Fuzziness and Knowledge-Based Systems}, year={2002}, volume={10}, number={05}, pages={557--570}, doi={10.1142/s0218488502001648}}