Motivation
Ich arbeite mit Datensätzen, die personenbezogene Daten (PII) enthalten, und muss manchmal einen Teil eines Datensatzes mit Dritten auf eine Weise teilen, die PII nicht gefährdet und meinem Arbeitgeber eine Haftung auferlegt. Unser üblicher Ansatz besteht darin, Daten vollständig zurückzuhalten oder in einigen Fällen ihre Auflösung zu verringern. B. Ersetzen einer genauen Straße durch den entsprechenden Landkreis oder Zensusabschnitt.
Dies bedeutet, dass bestimmte Arten der Analyse und Verarbeitung intern durchgeführt werden müssen, auch wenn ein Dritter über Ressourcen und Fachwissen verfügt, die für die jeweilige Aufgabe besser geeignet sind. Da die Quelldaten nicht offen gelegt werden, mangelt es uns an Transparenz bei der Analyse und Verarbeitung. Infolgedessen kann die Fähigkeit Dritter, QA / QC durchzuführen, Parameter anzupassen oder Verfeinerungen vorzunehmen, sehr eingeschränkt sein.
Anonymisierung vertraulicher Daten
Eine Aufgabe besteht darin, Personen anhand ihres Namens in von Benutzern übermittelten Daten zu identifizieren und dabei Fehler und Inkonsistenzen zu berücksichtigen. Eine Privatperson kann an einer Stelle als "Dave" und an einer anderen als "David" aufgezeichnet werden. Kommerzielle Einheiten können viele verschiedene Abkürzungen haben, und es gibt immer einige Tippfehler. Ich habe Skripts basierend auf einer Reihe von Kriterien entwickelt, die bestimmen, wann zwei Datensätze mit nicht identischen Namen dieselbe Person darstellen, und ihnen eine gemeinsame ID zuweisen.
Zu diesem Zeitpunkt können wir den Datensatz anonymisieren, indem wir die Namen zurückhalten und durch diese persönliche ID-Nummer ersetzen. Dies bedeutet jedoch, dass der Empfänger fast keine Informationen über z. B. die Stärke des Spiels hat. Wir möchten möglichst viele Informationen weitergeben können, ohne Identität preiszugeben.
Was geht nicht
Zum Beispiel wäre es großartig, Zeichenfolgen verschlüsseln zu können, während der Bearbeitungsabstand beibehalten wird. Auf diese Weise können Dritte eine eigene QA / QC durchführen oder die weitere Verarbeitung selbst vornehmen, ohne jemals auf die PII zuzugreifen (oder sie möglicherweise rückentwickeln zu können). Vielleicht ordnen wir die Zeichenfolgen intern dem Bearbeitungsabstand <= 2 zu, und der Empfänger möchte die Auswirkungen einer Verschärfung dieser Toleranz auf den Bearbeitungsabstand <= 1 untersuchen.
Aber die einzige Methode, mit der ich vertraut bin, ist ROT13 (allgemeiner jede Verschiebungsverschlüsselung ), die kaum als Verschlüsselung gilt. Es ist, als würde man die Namen verkehrt herum schreiben und sagen: "Versprichst du, dass du das Papier nicht umdrehen wirst?"
Eine andere schlechte Lösung wäre, alles abzukürzen. Aus "Ellen Roberts" wird "ER" und so weiter. Dies ist eine schlechte Lösung, da in einigen Fällen die Initialen in Verbindung mit öffentlichen Daten die Identität einer Person offenbaren, in anderen Fällen ist sie zu mehrdeutig. "Benjamin Othello Ames" und "Bank of America" haben die gleichen Initialen, aber ihre Namen sind ansonsten unterschiedlich. Also tut es auch nichts, was wir wollen.
Eine unelegante Alternative besteht darin, zusätzliche Felder einzufügen, um bestimmte Attribute des Namens zu verfolgen, z.
+-----+----+-------------------+-----------+--------+
| 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 |
+-----+----+-------------------+-----------+--------+
Ich nenne das "unelegant", weil man vorhersehen muss, welche Eigenschaften interessant sein könnten und es relativ grob ist. Wenn die Namen entfernt werden, können Sie nicht viel über die Stärke der Übereinstimmung zwischen den Zeilen 2 und 3 oder über den Abstand zwischen den Zeilen 2 und 4 (dh wie nahe sie der Übereinstimmung sind) schließen.
Fazit
Ziel ist es, die Zeichenfolgen so zu transformieren, dass möglichst viele nützliche Eigenschaften der ursprünglichen Zeichenfolge erhalten bleiben, während die ursprüngliche Zeichenfolge verdeckt wird. Die Entschlüsselung sollte unabhängig von der Größe des Datensatzes unmöglich oder praktisch unmöglich sein. Insbesondere wäre eine Methode, die den Bearbeitungsabstand zwischen beliebigen Zeichenfolgen beibehält, sehr nützlich.
Ich habe ein paar Artikel gefunden, die vielleicht relevant sind, aber ein bisschen über meinem Kopf liegen: