Risiko der Re-Identifizierung mit k-Anonymität darstellen

In diesem Artikel wird gezeigt, wie mithilfe von Cloud Data Loss Prevention (DLP) die k-Anonymität eines Datasets gemessen und in Google Data Studio dargestellt werden kann. Auf diese Weise können Sie auch Risiken besser verstehen und die Kompromisse in Bezug auf den Nutzen abwägen, die Sie möglicherweise eingehen, wenn Sie Daten entfernen oder de-identifizieren. In der API sind auch weitere Messwerte wie die l-Diversität verfügbar, aber der Schwerpunkt dieses Artikels liegt auf k-Anonymität.

Einführung

De-Identifikationstechniken können sehr hilfreich sein, um die Privatsphäre von Personen zu schützen, während Sie Daten verarbeiten oder verwenden. Aber woher wissen Sie, ob ein Datensatz ausreichend de-identifiziert wurde? Wie stellen Sie außerdem fest, ob Ihre De-Identifikation zu viel Datenverlust für Ihren Anwendungsfall verursacht hat? Das heißt: Wie können Sie das Risiko der Re-Identifizierung mit dem Nutzen der Daten vergleichen, um datengestützte Entscheidungen zu treffen?

Die Berechnung des k-Anonymitätswerts eines Datensatzes hilft durch die Beurteilung der Re-Identifizierbarkeit von Datensatzeinträgen bei der Beantwortung dieser Fragen. Cloud DLP enthält integrierte Funktionen zum Berechnen eines k-Anonymitätswerts für ein Dataset auf der Grundlage von Quasi-Identifikatoren, die Sie angeben. Auf diese Weise können Sie schnell beurteilen, ob die De-Identifikation einer bestimmten Spalte oder Kombination von Spalten zu einem Datensatz führt, der mehr oder weniger wahrscheinlich re-identifiziert wird.

Beispieldatensatz

Im Folgenden sind die ersten Zeilen eines großen Beispiel-Datasets aufgeführt.

user_id zip_code age score
121317473 94043 25 52
121317474 92104 43 87
... ... ... ...

Für den Zweck dieses Tutorials wird nicht auf user_id eingegangen, da der Schwerpunkt auf Quasi-Identifikatoren liegt. In der Praxis sollten Sie dafür sorgen, dass die Spalte entsprechend entfernt oder tokenisiert wird. Die Spalte score ist proprietär für dieses Dataset und es ist unwahrscheinlich, dass ein Angreifer sie auf andere Weise in Erfahrung bringen könnte. Deshalb beziehen Sie diese nicht in die Analyse ein. Ihr Schwerpunkt liegt auf den verbleibenden Spalten zip_code und age, mit denen ein Angreifer potenziell über andere Datenquellen etwas über eine Person erfahren kann. Die Fragen, die Sie für das Dataset beantworten möchten, lauten:

  • Welche Auswirkung haben die beiden Quasi-Identifikatoren zip_code und age auf das Gesamtrisiko der Re-Identifizierung der de-identifizierten Daten?
  • Wie wirkt sich die Anwendung einer De-Identifikationstransformation auf dieses Risiko aus?

Wichtig ist, dass die Kombination aus zip_code und age nicht auf eine kleine Gruppe von Nutzern zurückzuführen ist. Angenommen, es gibt nur einen Nutzer im Datensatz, der am Ort mit der Postleitzahl 94043 lebt und 25 Jahre alt ist. Ein Angreifer ist möglicherweise in der Lage, diese Informationen mit demografischen Informationen über das Gebiet oder andere verfügbare Informationen zu verknüpfen, herauszufinden, wer die Person ist, und den Wert ihres Ergebnisses zu erfahren. Weitere Informationen über dieses Phänomen finden Sie im Abschnitt Entitäten-IDs und Berechnen der k-Anonymität im Konzept-Thema Risikoanalyse.

Schritt 1: k-Anonymität für den Datensatz berechnen

Verwenden Sie zuerst Cloud DLP, um die k-Anonymität des Datasets zu berechnen. Senden Sie den folgenden JSON-Code an die Ressource. In diesem JSON-Code legen Sie die Entitäts-ID DlpJob auf die Spalte user_id fest und identifizieren die beiden Quasi-Identifikatoren als die Spalten zip_code und age. Sie weisen Cloud DLP außerdem an, die Ergebnisse in einer BigQuery-Tabelle zu speichern.

JSON-Eingabe:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/dlpJobs?key={YOUR_API_KEY}

{
  "riskJob":{
    "privacyMetric":{
      "kAnonymityConfig":{
        "entityId":{
          "field":{
            "name":"user_id"
          }
        },
        "quasiIds":[
          {
            "name":"zip_code"
          },
          {
            "name":"age"
          }
        ]
      }
    },
    "actions":[
      {
        "saveFindings":{
          "outputConfig":{
            "table":{
              "projectId":"dlp-demo-2",
              "datasetId":"risk",
              "tableId":"risk1"
            }
          }
        }
      }
    ],
    "sourceTable":{
      "projectId":"dlp-demo-2",
      "datasetId":"deid",
      "tableId":"source1"
    }
  }
}

Sobald der k-Anonymitätsjob abgeschlossen ist, sendet Cloud DLP die Jobergebnisse an eine BigQuery-Tabelle mit dem Namen dlp-demo-2.risk.risk1.

Schritt 2: Ergebnisse mit Google Data Studio verbinden

Als Nächstes verbinden Sie die BigQuery-Tabelle, die Sie in Schritt 1 erstellt haben, mit einem neuen Bericht in Google Data Studio.

  1. Öffnen Sie Google Data Studio und klicken Sie unter Neuen Bericht starten auf die Option Leer.
  2. Klicken Sie rechts im Bereich Datenquelle hinzufügen unten auf Neue Datenquelle erstellen.
  3. Zeigen Sie im Bereich Google-Connectors auf BigQuery und klicken Sie dann auf Auswählen.
  4. Wählen Sie auf der BigQuery-Datenquellenseite in der Spaltenauswahl das Projekt, den Datensatz und die Tabelle aus. Wählen Sie für dieses Beispiel dlp-demo-2 als Projekt, risk als Datensatz und risk1 als Tabelle aus.
  5. Klicken Sie auf die Schaltfläche Verbinden, die blau wird, sobald Sie aus allen drei Spalten gewählt haben. Wenn die Verbindung hergestellt ist, sehen Sie eine Liste farblich gekennzeichneter Felder, wie diese hier: Liste der Felder in Data Studio.
  6. Suchen Sie in der Spalte Feld das Feld upper_endpoint. Wählen Sie in der Zeile unter Zusammenfassung die Option Summe im Drop-down-Menü aus.
  7. Klicken Sie auf Zum Bericht hinzufügen.

Die Ergebnisse der k-Anonymitätsprüfung wurden jetzt dem neuen Data Studio-Bericht hinzugefügt. Im nächsten Schritt erstellen Sie das Diagramm.

Schritt 3: Diagramm erstellen

Zum Schluss erstellen Sie das Diagramm auf der Grundlage der importierten Felder. So fügen Sie das Diagramm ein:

  1. Klicken Sie in Data Studio im Menü Einfügen auf Kombinationsdiagramm.
  2. Klicken und zeichnen Sie auf der Editorseite ein Rechteck, wo das Diagramm angezeigt werden soll.

Konfigurieren Sie als Nächstes die Diagrammdaten so, dass das Diagramm die Auswirkungen der Änderung der Größen- und Wertebereiche von Buckets darstellt:

  1. Entfernen Sie unter dem Tab Daten auf der rechten Seite die Zeitraumdimension, indem Sie auf Zeitstempel zeigen und auf das eingekreiste X klicken, wie hier gezeigt:
    Detail des Zeitstempelfelds mit aktivierter Löschschaltfläche.
  2. Ziehen Sie das Feld upper_endpoint in die Felder Dimension und Sortieren in der rechten Spalte und wählen Sie dann Aufsteigend aus dem Drop-down-Menü unter dem Feld Sortieren.
  3. Ziehen Sie die Felder bucket_size und bucket_value_count in das Feld Messwert und entfernen Sie alle weiteren Messwert-Auswahloptionen in der rechten Spalte. Wenn Sie fertig sind, sollte die Spalte so aussehen:
    Screenshot der Feldliste.
  4. Zeigen Sie auf das Symbol links neben dem Messwert bucket_size und ein Bearbeitungssymbol (Stift) wird angezeigt. Klicken Sie auf das Bearbeitungssymbol und wählen Sie dann aus den entsprechenden Drop-down-Menüs die beiden folgenden Einstellungen aus:

    • Anzeigen als > Prozent des Gesamtwerts
    • Laufende Berechnung anwenden > Laufende Summe
  5. Wiederholen Sie den vorherigen Schritt, nun aber für den Messwert bucket_value_count.

Konfigurieren Sie das Diagramm nun so, dass für beide Messwerte ein Liniendiagramm angezeigt wird:

  1. Klicken Sie auf den Tab STIL im Bereich auf der rechten Seite des Fensters.
  2. Wählen Sie für beide Serien (# 1 und # 2, die bucket_size und bucket_value_count darstellen) die Option Linie aus.
  3. Wenn Sie das endgültige Diagramm separat ansehen möchten, klicken Sie auf die Schaltfläche Ansicht in der oberen rechten Ecke des Fensters.

Abschließendes Diagramm mit Markierung von k-Anonymität = 10.

Diagramm interpretieren

Das generierte Diagramm hat k-Anonymitätswerte auf der x-Achse und den prozentualen Datenverlust auf der y-Achse. Im obigen Screenshot ist der markierte Datenpunkt beispielsweise ein k-Anonymitätswert von 10. Dies kann so interpretiert werden: Wenn Sie alle Zeilen mit einem k-Anonymitätswert von höchstens 10 löschen, gehen 82 % der Zeilen aus dem Dataset verloren. Zusätzlich würde dies zu einem Verlust von 92 % aller eindeutigen Kombinationen aus Alter und Postleitzahl führen. Das obige Diagramm zeigt, dass es schwierig ist, in diesem Dataset einen k-Anonymitätswert über 2 oder 3 zu erreichen, ohne eine signifikante Anzahl von Zeilen und Werten zu verlieren.

Glücklicherweise ist das Auslassen von Daten nicht die einzige Option. Andere De-Identifikationstechniken können ein besseres Gleichgewicht zwischen Verlust und Nutzen erzielen. Als Abhilfe für den Datenverlust im Zusammenhang mit höheren k-Anonymitätswerten und diesem speziellen Datensatz könnten Sie beispielsweise das Alter oder die Postleitzahlen in Buckets fassen, um die Eindeutigkeit der Alter/PLZ-Kombinationen zu reduzieren. Beispielsweise könnten Sie Alterswerte in Bereiche von 20 bis 25, 25 bis 30, 30 bis 35 und so weiter gruppieren. Weitere Informationen dazu finden Sie unter Generalisierung und Bucketing sowie unter Sensible Daten de-identifizieren.