Tag Archives: losowość

Polerowanie interfejsu IRandomization

W poprzednim poście, w którym analizowałem wydajność implementacji generatorów liczb pseudolosowych odkryłem, że w ostatecznym rozrachunku planuję używać systemowego typu Random w celu generowania serii liczb losowych – ma znakomitą wydajność i bardzo dobry rozkład – a przynajmniej dla wywołań zakresowych – GetNext(min, max). W międzyczasie, odkryłem jeszcze istnienie kilku innych opcji, które zamierzam sprawdzić w wolnej chwili. (Będzie ciężko, bo The Division…) Spodziewam się znaleźć coś ciekawego, stąd niniejsza część kodu. Planuję:

  • Opakować generator ustandaryzowanym interfejsem, który w miarę potrzeb będę rozbudowaywał
  • Dorobić klasę proxy, która zapewni te funkcje:
    • Umożliwi serializację stanu generatora, w celu odtworzenia jego stanu
    • Umożliwi śledzenie zdarzeń związanych z generowaniem liczb, przydatne zwłaszcza w projektach growych
  • Przy okazji naprawię odziedziczoną ze starych plików klasę Rnd, która jest napisana dość słabo w stosunku do obecnych standardów :-/

Continue reading Polerowanie interfejsu IRandomization

Dane wrażliwe

Dane osobowe to szeroki temat, jakkolwiek szeroko lub wąsko rozumiany – dla wielu wrażliwych jest to temat bardzo drażliwy. Jednak niezależnie od tego jak bardzo dana osoba przejmuje się bezpieczeństwem czy poufnością danych powierzonych innym podmiotom (świadomie czy nie) to jednak ustawa na każdego administratora danych osobowych nakłada obowiązek takiego ich przetwarzania, przechowywania i transmitowania by ich spójność i bezpieczeństwo były gwarantowane (i zgodne z ustawą – bla, bla, bla).

Część danych pozwala na jednoznaczną identyfikację osoby (lub podmiotu), której dotyczą. Są to unikalne identyfikatory typu PESEl, NIP, czy REGON. Mniej oczywiste są identyfikatory typu nazwa / imię i nazwisko – które w skali globalnej wcale nie muszą być unikalne. Podobnie poszczególne fragmenty adresu zamieszkania / korespondencyjnego nie muszą precyzyjnie wskazywać konkretnej osoby lub grupy osób (pomijając nawet zmienność i rozbieżność takich danych w czasie – ludzie i firmy często zmieniają miejsce zamieszkania / prowadzenia działalności– także jeden adres może być współdzielony przez wiele podmiotów) ale już w połączeniu z imieniem i nazwiskiem lub datą urodzenia mogą zawęzić zbiór potencjalnych osób do jednego człowieka.

A nawet jeśli nie – to wskazanie konkretnej grupy osób (np. rodziny) może już być odebrane jako pogwałcenie prywatności. Należy bardzo uważać przy łączeniu danych – może się zdarzyć, że połączenie częściowo zamaskowanego adresu (np. do poziomu nazwy ulicy, ale już bez numerów mieszkań) z samym tylko faktem posiadania ubezpieczenia medycznego w konkretnej firmie może precyzyjnie identyfikować konkretną osobę! (A najprawdopodobniej nazwa firmy ubezpieczeniowej nie będzie podlegać anonimizacji, ze względu na wymagania biznesowe systemu testowego…)

Oczywiście, jeżeli wiemy, że dane w całej bazie zostały zanonimizowane wówczas wiemy, że wszelkie próby statystycznego zestawiania poszczególnych elementów nie mają wielkiego sensu. Pod warunkiem wszakże, że poziom anonimizacji jest wystarczający. Wydaje się, że można próbować wskazać właściwe poziomy minimalne dla poszczególnych danych. W wielu przypadkach okaże się, że można zwiększyć te poziomy, gdyż zbyt szeroki zakres realnych danych nie będzie potrzebny podczas korzystania z bazy de-identyfikowanej (np. adresy pozostaną prawdziwe do poziomu miast, związanego z testowanymi zapytaniami raportowymi). Losowa de-identyfikacja ma jedną zasadniczą wadę – może tworzyć osobowości, które fragmentarycznie odpowiadają prawdziwym podmiotom – imiona, nazwiska czy numery PESEL nie mają jakiejś gigantycznej zmienności. Jednym z wymogów może być, by wylosowane wartości anonimizacyjne były różne od oryginalnych. Ale już sprawienie by nie były identyczne z innymi w systemie – niekoniecznie. Pewnym problemem mogą okazać się indeksy unikalne (np. na PESEL, czy niepoprawny na kombinacji imienia i nazwiska), które uniemożliwią takie duplikaty – aplikacja powinna być przygotowana na taką ewentualność i albo sprawdzać to z góry (konfiguracja) albo przechwytywać stosowny wyjątek i losować nową wartość.

Wróćmy zatem do listy proponowanej przez HIPPA:

Continue reading Dane wrażliwe