Skip to content

INFO

This text is provided in German as it requires coordination with our data protection officer. Given the sensitivity of data protection matters and the importance of precise wording to ensure the intended meaning, we are proceeding in the original language to maintain clarity and compliance. An english version can be found here

Pseudonymisierung

Anforderungen

  1. Der ID-Austauschprozess erfolgt über eine Treuhandstelle (TCA).
  2. Eine Rückidentifizierung durch die Treuhandstelle muss möglich sein.
  3. Die sIDs müssen bei wiederholten Übertragungen konstant bleiben.

Übertragungsprozess

In einem Übertragungsprozess fordert der CDA vom TCA die Zuordnung von oIDs zu Transport-IDs (tID) an. Bevor das Patientenbündel an den Forschungsdomänenagenten gesendet wird, werden die oIDs durch tIDs ersetzt. Nach Erhalt des transportpseudonymisierten Patientenbündels fordert der RDA die Zuordnung von tIDs zu sIDs an und ersetzt die tIDs durch die sIDs.

Erzeugung der Transport-IDs und pseudonymisierten IDs

sID

Der TCA verwendet gPAS zur Generierung und Speicherung von Pseudonymen. Für jeden Patienten werden zwei Pseudonyme erzeugt:

patientOIDpatientSIDSalt_+patientOIDSalt

Als Schlüssel werden die oID des Patienten und die Konkatenation von Salt_ und der oID verwendet. Hierbei ist zu beachten, dass Salt_ ein feststehendes Literal und keine Variable oder ein tatsächliches Salt ist.

Das erste Pseudonym ersetzt die oID der Patientenressource, d.h. es ist ein direktes Mapping auf die sID des Patienten, und kann zur Rückidentifizierung genutzt werden. Das zweite Pseudonym wird als Salt für die Erzeugung der Pseudonyme für die restlichen Ressourcen verwendet:

Ressourcen-sID=SHA256(Salt+oID)

Sicherheitshinweis

Die Kombination aus Alphabetgröße A und Salt-Länge n — also An mögliche Varianten — muss ausreichend groß gewählt werden, um gegen Brute-Force-Angriffe resistent zu sein (siehe Sicherheitsaspekte).

tID

Für jede oID wird eine zufällige Zahl generiert, die als tID dient. Das Mapping

oIDtID

wird temporär in einem Key-Value-Store gespeichert, sodass tIDs bei erneuten Übertragungen variieren.

Beispiel

Angenommen, wir haben einen Patienten mit zwei Ressourcen:

Patient:
  oID = 1,
  Ressourcen:
  [
    Encounter: oID = 2,
    Medication: oID = 3
  ]

Der CDA sendet die zu pseudonymisierenden IDs an den TCA:

1d7dsjdg4Salt_15kf8344f

Transport-Mapping: Ersetzung der oIDs durch tIDs

Sobald der CDA die zu pseudonymisierenden oIDs an den TCA sendet, werden temporäre Transport-IDs ( tIDs) generiert. Diese tIDs ersetzen die ursprünglichen oIDs, bevor die Daten an den RDA übermittelt werden.

Beispiel für das Transport-Mapping:

184613221234186571397354168

Nach diesem Mapping wird das Bundle mit den transportpseudonymisierten IDs an den RDA weitergeleitet:

transport-Patient:
  tID = 84613221,
  Ressourcen:
  [
    Encounter: tID = 34186571,
    Medication: tID = 97354168
  ]

Research Mapping

Nachdem der RDA das transportpseudonymisierte Bundle erhalten hat, fordert dieser vom TCA die Zuordnung der tIDs zu stabilen Pseudonymen (sIDs) an. Diese sIDs sind für Forschungszwecke bestimmt und bleiben für wiederholte Übertragungen konstant.

Beispiel für das Research-Mapping:

84613221d7dsjdg434186571SHA256(5kf83442)97354168SHA256(5kf83443)

Anschließend ersetzt der RDA die tIDs durch die sIDs:

research-Patient:
 <sID = d7dsjdg4,
 Ressourcen: [
  Encounter: sID = SHA256(5kf83442),
  Medication: sID = SHA256(5kf83443)
 ]

Sicherheitsaspekte

Salt Bruteforcen

Angenommen einer Angreiferin sind die oIDs und sIDs bekannt und sie versucht eine Beziehung zwischen oIDs und sIDs herzustellen. Dazu versucht sie mittels Brute-Force-Angriffen das Salt zu bestimmen.

Die Dauer T, die die Angreiferin benötigt, um das Salt zu bestimmen, ist durch

T=Anv

gegeben, wobei A die Alphabetgröße, n die Länge des Salts, und v die Anzahl der Hashes pro Sekunde sind.

Mit heutiger Hardware sind 109 Hashes pro Sekunde eine realistische Annahme.

Alphabetgröße (A)Länge (n)Mögliche Kombinationen (A)Zeit bei 109 Hashes/Sekunde
10 (Ziffern)81080,1 s
10 (Ziffern)121012103 s (16 min)
10 (Ziffern)161016107 s (4 Monate)
10 (Ziffern)2410241015 s (32 Mio. Jahre)
26 (Kleinbuchst.)82682,11011210 s (3,5 min)
26 (Kleinbuchst.)1226129,510169,5107 s (3 Jahre)
26 (Kleinbuchst.)1626164,410224,41013 s (1,4 Mio. Jahre)
26 (Kleinbuchst.)2426249,110339,11024 s (31017 Jahre)
62 (Alphanumerisch)86282,210142,2105 s (2,5 Tage)
62 (Alphanumerisch)1262123,210213,21012 s (100.000 Jahre)
62 (Alphanumerisch)1662164,810284,81019 s (1,51012 Jahre)
62 (Alphanumerisch)2462241,010431,01034 s (31026 Jahre)