Motywacja
Pracuję z zestawami danych, które zawierają dane osobowe (PII) i czasami muszę udostępniać część zbioru danych stronom trzecim w sposób, który nie naraża PII i nie naraża mojego pracodawcy na odpowiedzialność. Naszym typowym podejściem jest tutaj całkowite wstrzymanie danych lub, w niektórych przypadkach, zmniejszenie rozdzielczości; np. zastąpienie dokładnego adresu ulicy odpowiednim okręgiem lub spisem spisowym.
Oznacza to, że niektóre rodzaje analiz i przetwarzania muszą być wykonywane wewnętrznie, nawet jeśli strona trzecia ma zasoby i wiedzę bardziej dostosowane do tego zadania. Ponieważ dane źródłowe nie są ujawniane, sposób, w jaki podchodzimy do tej analizy i przetwarzania, nie jest przejrzysty. W rezultacie zdolność jakiejkolwiek strony trzeciej do przeprowadzania kontroli jakości / kontroli jakości, dostosowywania parametrów lub wprowadzania udoskonaleń może być bardzo ograniczona.
Anonimizacja poufnych danych
Jedno z zadań obejmuje identyfikację osób według ich nazw, w danych przesłanych przez użytkownika, z uwzględnieniem błędów i niespójności. Osoba prywatna może być zarejestrowana w jednym miejscu jako „Dave”, aw innym jako „David”, podmioty komercyjne mogą mieć wiele różnych skrótów i zawsze są jakieś literówki. Opracowałem skrypty oparte na wielu kryteriach, które określają, kiedy dwa rekordy o nieidentycznych nazwach reprezentują tę samą osobę i przypisują im wspólny identyfikator.
W tym momencie możemy uczynić zestaw danych anonimowym, ukrywając nazwy i zastępując je tym osobistym numerem identyfikacyjnym. Ale to oznacza, że odbiorca prawie nie ma informacji o np. Sile dopasowania. Wolelibyśmy móc przekazywać jak najwięcej informacji bez ujawniania tożsamości.
Co nie działa
Na przykład byłoby wspaniale móc szyfrować ciągi przy zachowaniu odległości edycji. W ten sposób strony trzecie mogą wykonać niektóre z własnej kontroli jakości / kontroli jakości lub zdecydować się na dalsze przetwarzanie samodzielnie, bez uzyskiwania dostępu (lub możliwości potencjalnej inżynierii wstecznej) danych osobowych. Być może dopasowujemy ciągi wewnętrznie z odległością edycji <= 2, a odbiorca chce przyjrzeć się implikacjom zaostrzenia tej tolerancji na odległość edycji <= 1.
Ale jedyną znaną mi metodą, która to robi, jest ROT13 (bardziej ogólnie dowolny szyfr przesuwny ), który prawie nie liczy się jako szyfrowanie; to tak, jakby napisać imiona do góry nogami i powiedzieć: „Obiecujesz, że nie przewrócisz papieru?”
Innym złym rozwiązaniem byłoby skrócenie wszystkiego. „Ellen Roberts” zmienia się w „ER” i tak dalej. Jest to kiepskie rozwiązanie, ponieważ w niektórych przypadkach inicjały w połączeniu z danymi publicznymi ujawnią tożsamość osoby, aw innych przypadkach są zbyt niejednoznaczne; „Benjamin Othello Ames” i „Bank of America” będą miały te same inicjały, ale ich nazwy są inaczej różne. Więc nie robi żadnej z rzeczy, których chcemy.
Nieelegatywną alternatywą jest wprowadzenie dodatkowych pól w celu śledzenia niektórych atrybutów nazwy, np .:
+-----+----+-------------------+-----------+--------+
| Row | ID | Name | WordChars | Origin |
+-----+----+-------------------+-----------+--------+
| 1 | 17 | "AMELIA BEDELIA" | (6, 7) | Eng |
+-----+----+-------------------+-----------+--------+
| 2 | 18 | "CHRISTOPH BAUER" | (9, 5) | Ger |
+-----+----+-------------------+-----------+--------+
| 3 | 18 | "C J BAUER" | (1, 1, 5) | Ger |
+-----+----+-------------------+-----------+--------+
| 4 | 19 | "FRANZ HELLER" | (5, 6) | Ger |
+-----+----+-------------------+-----------+--------+
Nazywam to „nieelegantem”, ponieważ wymaga przewidywania, które cechy mogą być interesujące i jest stosunkowo gruby. Jeśli nazwy zostaną usunięte, niewiele można rozsądnie wnioskować o sile dopasowania między rzędami 2 i 3 lub o odległości między rzędami 2 i 4 (tj. O tym, jak blisko są dopasowania).
Wniosek
Celem jest transformacja ciągów w taki sposób, aby zachować jak najwięcej użytecznych właściwości oryginalnego ciągu, jednocześnie zasłaniając oryginalny ciąg. Odszyfrowanie powinno być niemożliwe, lub tak niepraktyczne, aby było faktycznie niemożliwe, bez względu na rozmiar zestawu danych. W szczególności bardzo przydatna byłaby metoda, która zachowuje odległość edycji między dowolnymi ciągami.
Znalazłem kilka dokumentów, które mogą być istotne, ale są trochę ponad moją głową: