Anonymisieren und Pseudonymisieren von Daten
In Microsoft Access, Random, Anonym, Pseudonym, einfache
Umwandlung in functions. ID Nummer ohne Hash in vba
In der folgenden Demo-Datenbank werden wichtige Daten
anonymisiert und pseudonymisiert.
Das heißt, für wichtige Nummern werden nicht rückführbare andere
Zahlen eingefügt,
Und für Texte werden Pseudonyme vergeben
Hier eine anonymisierte und pseudonymisiert Tabelle
Anwenden der Random -Funktion in einer Tabelle oder
Abfrage
Mit einer einmaligen Random-Nummer werden die Nummern
verändert, sodass diese nicht zurückverfolgt werden können.
Diese Funktion ist möglich, sobald in der vba Code-Seite die
public function wie folgt eingefügt wurde.
Über ein Formular kann die Random-Nummer manuell erzeugt
werden und auf Veränderung geprüft werden
Die Änderung der Wichtigen Nummern wird durch ein Update /
Aktualisierungsabfrage ausgeführt
Dabei werden die kritischen Nummern, welche nicht zurückgeführt
werden können sollten, durch einen Anonymisierungsfunktion umgewandelt.
Anschliessend können in einer Abfrage die Zahlen einheitlich
verschlüsselt werden
Pseudonymisierung
Bei der Pseudonymisierung werden jedem kritischen Text Pseudonyme
vergeben.
Also wird anstatt Maier, Müller Huber entweder Name 123, Name
234, Name 456 oder Hase, Maus, Elefant vergeben.
Update in SQL
UPDATE tblPersonal_Data
SET tblPersonal_Data.Firstname = "Firstname " &
[PersonalNumber]
, tblPersonal_Data.LastName = "LastName " &
[PersonalNumber]
, tblPersonal_Data.BirthDay = Date(), tblPersonal_Data.ZipCode =
Left([PersonalNumber],5)
, tblPersonal_Data.City = "City " & [PersonalNumber]
, tblPersonal_Data.Email = "Email@" & [PersonalNumber]
& ".com";
|
Vba Code zum Formular Random Nummer erstellen, init
Vba Code zum Button
Option Compare Database
Option Explicit
Private Sub BtnRandom_Click()
'--------------< BtnRandom_Click()>-------------
'create public Random Number
create_Public_Random_Number
'anzeigen
tbxRandom.Value = public_Random_Zahl
'--------------</ BtnRandom_Click()>-------------
End Sub
|
Mit der Randomize Klasse in vba Office und der Rnd(123) Funktion
können dann in vba neue Zufallszahlen erstellt werden
Der Rnd() Befehl erstellt eine double-Zahl von 0-1.
Mit der Multiplikation einer Basis-Zahl entsteht dann der
gültige Zahlenbereich von 0 bis 999.999.999
Dann wird mit einer vba Funktion eine Random Zahl erzeugt,
welche einen Offset nach einer zufälligen Zahl zwischen 0 und 999.999.99
erzeugt
Public Function create_Public_Random_Number()
'--------------< create_Public_Random_Number() >--------------
'Init Zufallszahlen
Randomize
'bilde Zufallszahl
Dim lngRandom As Long
lngRandom = Rnd(10000) * 999999 '*eine Zahl von 0 bis 6 stellen
'Public zuweisen
public_Random_Zahl = lngRandom
'--------------</ create_Public_Random_Number() >--------------
End Function
|
Anonymisieren von
Zahlen mit Referenz-Funktionen
Mit der folgenden public function in Microsoft Access oder
Microsoft Excel kann man Nummern anonymisieren ähnlich wie ein Hash bilden.
Der einzige Unterschied ist, dass dabei zufällige Nummern
erstellt werden, welche für den Rechenvorgang im Offset gleichbleiben.
Bei Hash Funktionen entstehen immer auch Buchstaben, welche anschließend
nicht in Daten-Tabellen als Zahl weiterverwendet werden können.
Eine zufällige Nummer wäre hier auch nicht sinnvoll, wenn
externe Import oder Export Funktionen auf Doubletten oder auf Index-Verweise
berechnen oder referenzieren müssen.
Option Compare Database
Option Explicit
Public public_Random_Zahl As Long
Public Function Anonymize_Number(ByVal sInput As String)
'--------------< Anonymize_Number() >--------------
'Zugriff ueber Excel oder Access Tabelle als Funktion =Anonymize_Number()
'veraendere eine IDNummer mit einem Random-Shift
'< check >
If public_Random_Zahl = 0 Then create_Public_Random_Number
If sInput = "" Then Exit Function
If Len(sInput) < 3 Then Exit Function
'</ check >
'< convert >
'convert string to number (Excel numbers as string, from SAP)
Dim long_Input As Long
long_Input = CLng(sInput)
'</ convert >
Dim new_Number As Long
new_Number = long_Input + public_Random_Zahl
'< return >
Anonymize_Number = new_Number
'</ return >
'--------------</ Anonymize_Number() >--------------
End Function
|
Aufgabe:
Für wichtigere Aufgaben mit höherem Level kann die
Umwandlungs-Funktion natürlich verbessert und ausgefeilt werden.
Fazit
Natürlich ist unter viel Aufwand bei einer einfachen
Änderung die Rekonstruktion mit kriminellen Mitteln und viel Aufwand möglich.
Allerdings ist eine Interne Änderung in dieser Weise für interne
Aufgaben möglich.
Die Funktion kann natürlich komplexer aufgebaut werden, und
die Daten sind auch nach wie vor nicht für den öffentlichen Gebrauch zu verwenden.