Mascarea datelor și generarea cu Faker

Confidențialitatea datelor și anonimizarea în Python

Rebeca Gonzalez

Data engineer

Cvasiidentificatori

Informațiile de identificare personală non-sensibile pot fi, de asemenea, cvasiidentificatori. Text cu „Șef de guvern în Europa" și o dată de naștere, cu linii care indică fața Angelei Merkel

1 Fotografie a Angelei Merkel de pe Wikimedia Commons
Confidențialitatea datelor și anonimizarea în Python

Cvasiidentificatori

Combinate cu alți cvasiidentificatori, devin identificatoare.

  • Vârstă
  • Gen
  • Ocupație
  • Date personale: naștere, deces, internare medicală, vizită etc.

Desen al unui bărbat cu ferestre pop-up în jurul său conținând informații personale

Confidențialitatea datelor și anonimizarea în Python

Cvasiidentificatori și atacuri de re-identificare

Diagramă care ilustrează intersecția a două seturi de date: date medicale și lista electorală, cu intersecția formată din cod poștal, dată de naștere și gen

Confidențialitatea datelor și anonimizarea în Python

Mai multe tehnici de anonimizare

Tehnici de anonimizare pentru cvasiidentificatori, pentru reducerea riscurilor de divulgare. Două tabele cu date medicale și personale. În stânga datele originale, în dreapta setul de date rezultat cu atributul nume eliminat

Confidențialitatea datelor și anonimizarea în Python

Mascarea datelor

DataFrame original

     name                phone
0    Cassandra Nelson    4399406975395
1    Brian Moss          0389407128613
2    Melody Gill         8283308773967
3    Sandra Huber        4366608954250
4    Patricia Webster    4466462475574

DataFrame cu numele mascate

     name    phone
0    xxxx    4399406975395
1    xxxx    0389407128613
2    xxxx    8283308773967
3    xxxx    4366608954250
4    xxxx    4466462475574

Înlocuirea valorilor sensibile cu caractere precum „x" se numește mascare a datelor.

Confidențialitatea datelor și anonimizarea în Python

Mascarea datelor

# Explore the DataFrame
df.head()
     country         card_number           email
0    Finland         3546746666030419      [email protected]
1    Belarus         4303032415762821      [email protected]
2    Turkmenistan    4536883671157         [email protected]
3    Puerto Rico     3568819286614160      [email protected]
4    Angola          2514167462583016      [email protected]
Confidențialitatea datelor și anonimizarea în Python

Mascarea datelor

# Uniformly mask the card number colum 
df['card_number'] = '****'


# See resulting DataFrame df.head()
     country         card_number     email
0    Finland         ****            [email protected]
1    Belarus         ****            [email protected]
2    Turkmenistan    ****            [email protected]
3    Puerto Rico     ****            [email protected]
4    Angola          ****            [email protected]
Confidențialitatea datelor și anonimizarea în Python

Mascarea parțială a datelor

Captură de ecran a secțiunii de resetare a parolei de pe Facebook, cu e-mailul parțial mascat

Confidențialitatea datelor și anonimizarea în Python

Mascarea parțială a datelor

# Mask username from email
df2['email'] = df2['email'].apply(lambda s: s[0] + '****' + s[s.find('@'):] )


# See the resulting pseudonymized data df2.head()
     country         card_number           email
0    Finland         3546746666030419      f****@gmail.com
1    Belarus         4303032415762821      m****@gmail.com
2    Turkmenistan    4536883671157         a****@gmail.com
3    Puerto Rico     3568819286614160      k****@gmail.com
4    Angola          2514167462583016      d****@gmail.com
Confidențialitatea datelor și anonimizarea în Python

Generarea datelor sintetice

În stânga, un tabel cu datele originale inclusiv numerele de card; în dreapta, numere noi de card de credit generate sintetic.

  • Înlocuirea informațiilor sensibile cu date nou generate, similare celor originale.
Confidențialitatea datelor și anonimizarea în Python

Generarea datelor sintetice

# Import Faker class
from faker import Faker


# Create fake data generator fake_data = Faker()
# Generate a credit card number fake_data.credit_card_number()
3542216874440804
Confidențialitatea datelor și anonimizarea în Python

Generarea datelor sintetice

# Mask card number with new generated data using a lambda function
df['card_number'] = df['card_number'].apply(lambda x: fake_data.credit_card_number())

# See the resulting pseudonymized data df.head()
     country         card_number            email
0    Finland         3596625386355448       [email protected]
1    Belarus         376297265347524        [email protected]
2    Turkmenistan    4377494880888682       [email protected]
3    Puerto Rico     30553931809810         [email protected]
4    Angola          4241735748382          [email protected]
Confidențialitatea datelor și anonimizarea în Python

Generarea altor tipuri de date

fake_data.name()
'Kelly Clark'
fake_data.name_male()
'Antonio Henderson'
fake_data.name_female()
'Jennifer Ortega'
Confidențialitatea datelor și anonimizarea în Python

Moment de practică!

Confidențialitatea datelor și anonimizarea în Python

Preparing Video For Download...