AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Realdaten konsistent verwürfeln?

Ein Thema von stahli · begonnen am 26. Aug 2016 · letzter Beitrag vom 29. Aug 2016
Antwort Antwort
Seite 2 von 3     12 3      
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#11

AW: Realdaten konsistent verwürfeln?

  Alt 27. Aug 2016, 17:15
im einfachsten Fall exportiere man Namensdaten aus einer Telefonbuch CD.
Dann jeweils die Datensatznummerm von Vornamen und Nachnamen gegenläufig indiziert wieder zusammensetzen.. vola, fertig ist eine braucbar lesbare Namensliste mit zufälliger Kombination aus Vor- & Nachnamen.

Sagen wir das ergibt 65536 Datensätze mit "Demo-Namen"... dann rechne ich über die zu anonymisierenden Teile (oder einem HASH davon) meiner sagen wir 10000 org. Daten einen CRC16 und nutze diesen als Index auf meine 65536 DemoDatensätze. Da lässt sich nix per Wörterbüchern oder CRC16/MD5 Revers eineindeutig zurückrechnen, also es lässt sich so definitiv nicht wieder deanonymisieren
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Realdaten konsistent verwürfeln?

  Alt 28. Aug 2016, 02:58
Sagen wir das ergibt 65536 Datensätze mit "Demo-Namen"... dann rechne ich über die zu anonymisierenden Teile (oder einem HASH davon) meiner sagen wir 10000 org. Daten einen CRC16 und nutze diesen als Index auf meine 65536 DemoDatensätze. Da lässt sich nix per Wörterbüchern oder CRC16/MD5 Revers eineindeutig zurückrechnen, also es lässt sich so definitiv nicht wieder deanonymisieren
Vergiss doch mal den Hash quatsch... Darum geht es doch überhaupt nicht...
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#13

AW: Realdaten konsistent verwürfeln?

  Alt 28. Aug 2016, 11:31

Vergiss doch mal den Hash quatsch... Darum geht es doch überhaupt nicht...
Hier im Post 1 steht, das:
..."Dazu müsste pro Datei ein Schlüsselfeld angegeben werden und es müsste für jeden Monat konsistent aus original
"KdNr";"Vorname";"Nachname";"KontoNr"
"01";"Klaus";"Müller";"2222"
nun
"01";"Gerhard";"Lehmann";"4444"
Erst wenn Klaus Müller wegen Heirat Klaus Maier heisst, sollte auch der Demo-Nachname geändert werden."...

Es geht also nach meinem Verstädnis nicht nur um x-beliebige Zuordnung von puren Zufallsdatensätzen.
=> Ich würde deshalb speziell bei/wegen dieser Anforderung vorschlagen, eine Hash oder CRC basierte Indexauswahl von konstanten Listen mit zufälligen Werten zu verwenden, denn damit bleibt die "zufällige" Zuordnung solange gleich, bis sich im Ausgangswert(Namen) etwas ändert.
  Mit Zitat antworten Zitat
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#14

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 09:25
Hallo,

wenn es PHP sein darf - für die Erstellung von Demodaten nutze ich immer Faker. Das Script sollte locker deine Anforderungen erfüllen.

Viele Grüße ...
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#15

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 09:52

Vergiss doch mal den Hash quatsch... Darum geht es doch überhaupt nicht...
Hier im Post 1 steht, das:
..."Dazu müsste pro Datei ein Schlüsselfeld angegeben werden und es müsste für jeden Monat konsistent aus original
"KdNr";"Vorname";"Nachname";"KontoNr"
"01";"Klaus";"Müller";"2222"
nun
"01";"Gerhard";"Lehmann";"4444"
Erst wenn Klaus Müller wegen Heirat Klaus Maier heißt, sollte auch der Demo-Nachname geändert werden."...

Es geht also nach meinem Verständis nicht nur um x-beliebige Zuordnung von puren Zufallsdatensätzen.
=> Ich würde deshalb speziell bei/wegen dieser Anforderung vorschlagen, eine Hash oder CRC basierte Indexauswahl von konstanten Listen mit zufälligen Werten zu verwenden, denn damit bleibt die "zufällige" Zuordnung solange gleich, bis sich im Ausgangswert(Namen) etwas ändert.
Nicht wirklich gut von Stahli beschrieben. Demodaten aus original Daten zu erstellen, ohne diese im Unfang noch einzuschmelzen finde ich kritisch. Aber darum geht es anscheinend auch nicht.

Mich würde interessieren, wiso die Zuordnung stattfinden muss.
  • Sollen die Demodaten in Originaldaten zurück gerechnet werden?
  • Soll mit den Demodaten richtig gearbeitet werden?
  • Vileicht sind es auch nur konvertierte Daten aus einer Konkurenz-Software, die erst mal getestet werden sollen.

Mit mehr Input könnte man ggf. die passende Lösung finden.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#16

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 11:11
Leg dir einfach eine Liste mit Vornamen und Nachnamen an und stelle diese per Random zu neuen Namen zusammen...

Original

[0] Petra;Putzig;Gartenstraße 7;53111; Bonn
[1] Rudi;Rastlos;Hofgarten 42;52223 Stolberg;

Daraus 5 Listen machen

Dann 5x Random; Randomwerte 1-5 müssen unterschiedlich sein.
Randomwert verbraucht, aus der Liste werfen..

So hast Du n Adressen aber keine ist real...
Das halte ich aber für alles andere als sauber. Man hat immer noch die reellen Namen und Daten, nur in gequirlter Zuordnung. Datentechnisch halte ich das für nicht unbedenklich.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 12:37
Sorry, ich habe das etwas unscharf beschrieben, aber andererseits will ich mich nicht nur auf meinen Spezialfall beschränken. Vielleicht kann man das gleich etwas allgemeiner betrachten.

Grundsatz:
- Es sollen Testdaten für Entwickler erzeugt werden, die nach Struktur und Umfang Realdaten entsprechen, aber keinen Bezug auf reale Personen- oder Firmendaten (Namen, Adressen, Kontonummern, Schulden) zulassen.
- "Max Mustermann"-Datensätze sind unerwünscht, um Grenzfälle ausreichend testen zu können.

Spezialfall:
Bei uns liegen pro Monat mehrere Importdateien als csv vor, die monatlich in das Hauptprojekt importiert wurden.
Die Dateien bilden untereinander relationale Beziehungen ab und monatlich chronologische Änderungen der Importdaten.

allgemeines Problem:
Für eine Neuerstellung des Hauptprojektes sollen anonyme Demodaten zur Verfügung gestellt werden.
Einmalig im Hauptprojekt die Kundennamen und Adressen zu verwürfeln wäre kein sehr großes Problem. Allerdings wären dann beispielhaft z.B. Rechnungsnummern und Auftragsnummern noch original. Gut, das könnte man vielleicht so hinnehmen.

spezielles Problem:
Vorliegend sollen aber auch die gesamten Importfiles in Demodaten umgewandelt werden, also je alle 6 csv´s über mehrere Monate (ggf. auch über alle Jahre).

Das Tool müsste also erfahren, welche "Spalte" in welcher csv wie zu ändern ist.
Wenn Kunde Id=10, Name=Müller z.B. umgewandelt wurde in Kunde=10, Name=Meier müsste das in allen späteren Konvertierungen gleichermaßen gemacht werden.
Wenn gleichzeitig die Id geändert wird (Kunde Id=10, Name=Müller in Kunde=999, Name=Meier) geändert würde, müsste auch in Rechnungsdaten die KundenId angepasst werden.

Auch wäre sinnvoll, eMail-Adressen, Telefonnummern und Kontonummern zu verfälschen und künftig auch immer diese verfälschte Nummer wieder zu verwenden. Also wirklich über ein Dictionary.

Tool:
Ich habe schon eine Vorstellung, wie ich unsere Daten entsprechend umstellen könnte, wollte aber mal generelle Meinungen (zu Bedarfen und Lösungen) hören.
Ich werde mal ein Tool erstellen. Vielleicht kann man das ja dann allgemein einsetzen (wobei unser eigener Anwendungsfall vermutlich schon sehr speziell ist).


PS:
Danke für den Heise-Artikel. Habe ich mir gekauft.
Danke auch für das PHP-Tool. Das scheint aber nicht ganz zu passen, soweit ich das nachvollziehen kann.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (29. Aug 2016 um 13:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 13:33
Du hast doch eine Datenbank, wo die Spalten auch untereinander ordentlich verbunden sind.
Wozu also in den CSV das nochmal versuchen zu verknubbeln?

Importiere die Daten in eine leere/neue Datenbank, verändere dort die Namen und die Abhängigkeiten sollten sich dann alle von Alleine anpassen.
REFERENCES ON UPDATE CASCADE
Und so Dinge, wie "ausversehn" doppelte Namen, welche ausversehn entstehen könnten, sollten sich ebenfalls mit den passenden CHECK-CONSTRAINTS verhindern lassen.

Und dann kann man das gern wieder als CSV exportieren.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 14:28
Es geht bei uns auch darum, den regelmäßigen Datenimport neu zu realisieren.
Deshalb ist es nicht ausreichend, die Datenbanken umzustellen.
Wir benötigen auch über einen größeren Zeitraum passende umgestellte Demodaten für den Import-Test.

Aber ich sehe schon, das wird eher ein Sonderfall sein.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#20

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 17:13
Ich versuche mal die Aufgabenstellung etwas flacher darzustellen:

Ich bekommt irgendwann mal die Daten für:

Peter Müller, KundenID = 4711, Kontonummer = 4812 bei der Postbank.

Daraus sollen nun Testdaten werden, bei denen nicht mehr nachvollziehbar ist, welcher Person sie ursprünglich zugehörig waren.

Also wird aus o. g. Person nunmehr durch "irgendeinen Zufall" für die Testdaten:

Hansi Meier, KundenID = 1234, Kontonummer = 9876 bei der Targo-Bank.

Bei einer einmaligen Datenlieferung wäre das ok.

Nun kommt aber zu einem späteren Zeitpunkt mal wieder was an Daten für Peter Müller.
Bei den Originaldaten ist eine Zuordnung kein Problem.

Für die Testdaten muss der o. g. "irgendeinen Zufall" aber die Daten wiederum korrekt dem zufällig entstandenen Hansi Meier zugeordnet werden.

Letztlich wird hier also ein "reproduzierbarer Zufall" benötigt. Damit ist es aber letztlich keiner mehr.

Was meiner Meinung nach gehen müsste wäre:

Über die Originaldaten wird pro Satz irgendein Wert (Hash, MD5 ...) ermittelt und gespeichert.

Dieser Wert wird mit der eindeutigen ID der Testdaten verbunden.
  • Zuordnung Original zu Testdaten
  • Hashwert
  • TestdatenID
Nun kann man beim Eintreffen neuer Daten in der Tabelle den Wert des Originals suchen und die zu den Testdaten gehörige TestdatenID finden und damit eine entsprechende Zuordnung machen.

Über diese Tabelle wird aber immer ein Rückschluss von den Testdaten auf die Originaldaten möglich sein, es sei denn:

Den Algorithmus zur Ermmittlung des Hashwertes macht man nicht bekannt.

Aus dem MD5-Wert kann man z. B. nicht zurückschließen, wie der Originalwert war. Bei ihm ist die Eindeutigkeit aber nicht sichergestellt.
Aber: MD5 über Vorname + MD5 über Nachname + MD5 über KundenID sollten sicher reichen.

Eine "Rückwärtssuche" über die TestdatenID in dieser Tabelle und dann diese drei MD5-Werte ermitteln, um ans Original zu kommen, dürfte schon etwas "umfangreicher" werden, da für alle Originaldaten geprüft werden muss, ob sie den entsprechenden Wert ergeben. Ist der Algorithmus nicht bekann, dürfte es sehr schwierig werden.

Wenn sichergestellt ist, dass die Entwickler ... keinen Zugriff auf diese Tabelle bekommen, dürfte ein ausreichend sicherer Schutz der Originaldaten gegeben sein.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz