Słownik metodologiczny · Etyka i ochrona danych

Anonimizacja i pseudonimizacja danych – definicje z RODO i praktyka w badaniach

Pseudonimizacja zastępuje dane identyfikujące kodem, ale dane pozostają osobowe; po anonimizacji osoby nie da się już zidentyfikować. Podajemy definicje z RODO, rodzaje identyfikatorów i sprawdzenie k-anonimowości w R.

Strona główna / Słownik / Anonimizacja i pseudonimizacja
W skrócie: Pseudonimizacja zastępuje dane identyfikujące kodem, a klucz przechowuje osobno – dane wciąż są osobowe. Anonimizacja sprawia, że osoby nie da się zidentyfikować żadnym rozsądnie prawdopodobnym sposobem, dlatego przed udostępnieniem danych sprawdź też kombinacje cech pośrednich, np. wieku i kierunku studiów.

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).

k = liczebność najmniejszej grupy osób o tej samej kombinacji identyfikatorów pośrednich

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

Przed udostępnieniem danych usunięto klucz łączący kody z adresami e-mail, wiek zastąpiono przedziałami 19–21 i 22+, kierunek – kategoriami „psychologia” i „inny kierunek”, rok studiów – stopniem studiów, a płeć pominięto; każdą kombinację tych cech miało co najmniej 7 osób (k = 7).
Przykład reprodukowalny

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

Dane wejściowe: ramka ankieta – 120 osób z fikcyjnymi adresami e-mail, płcią, wiekiem, kierunkiem, rokiem studiów i wynikiem skali (dane symulowane, set.seed(9501)).

Co odczytać: liczbę i odsetek rekordów unikatowych oraz k po pseudonimizacji i po uogólnieniu cech.

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łci
Wynik 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.

  1. 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

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. 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
  2. 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}}
R