Category Archives: Open Source

ARX Anonymization Tool: guia pràctica per anonimitzar dades de recerca

Tot el que necessites saber sobre k-anonimitat, l-diversity i t-closeness, amb exemples reals pas a pas i consells per començar a fer servir l’eina d’anonimització ARX.

Recerca & MetodologiaTemps de lectura: ~15 minNivell: IntermediEina: ARX v3.9+

Si treballes amb dades de pacients, enquestes o qualsevol dataset que contingui informació personal, anonimitzar correctament és una obligació legal i ètica. ARX és l’eina de referència en recerca clínica i biomèdica, gratuïta i de codi obert. Aquesta guia t’explica com funciona i com usar-la des de zero.

Què és ARX i per a qui és útil?

ARX (ARX Data Anonymization Tool) és una eina de codi obert desenvolupada per Florian Prasser i col·laboradors, dissenyada específicament per a la anonimització de dades tabulars. Té interfície gràfica (GUI) i API per a Java, cosa que la fa accessible tant per a investigadors sense coneixements de programació com per a equips de data science que volen automatitzar el procés.

És especialment popular en:

  • Recerca clínica i biomèdica: datasets de pacients, histories clíniques, estudis epidemiològics
  • Ciències socials: enquestes, dades socioeconòmiques, censos
  • Tesis doctorals que treballen amb dades personals i han de complir amb el RGPD
  • Publicació de datasets oberts en repositoris institucionals o Zenodo
Per on començar

Descarrega ARX gratuïtament a arx.deidentifier.org/downloads. Requereix Java 11 o superior. A la mateixa pàgina trobaràs un projecte d’exemple que pots obrir directament per explorar la interfície.


Pas 1: Classificar els atributs del dataset

Abans de tocar cap paràmetre, cal entendre que no totes les columnes del teu dataset creen el mateix risc. ARX distingeix cinc tipus d’atributs:

Tipus a ARX Risc Acció automàtica Exemple típic
Identifying Molt alt Elimina la columna del dataset de sortida DNI, número de SS, nom complet
Quasi-identifying (QI) Mig (perillós en combinació) Generalitza o suprimeix Edat, codi postal, sexe
Sensitive Alt per inferència Protegit pel model de privacitat triat Diagnòstic, salari, addicció
Insensitive Negligible Es manté sense canvis Medicació genèrica, grup sanguini
Response variable Context-dependent Tractat com insensible per defecte Variable de resultat clínic

Per què els quasi-identificadors son tan perillosos?

Latanya Sweeney va demostrar l’any 2000 que combinant data de naixement + sexe + codi postal, es pot identificar el 87% de la població dels EUA. A Espanya, la situació és similar: el codi postal de 5 dígits combinat amb edat i sexe pot ser suficient per identificar individus en zones poc poblades.

Exemple real: l’atac de combinació

Imagina que publiques una llista d’altes hospitalàries amb edat, codi postal i sexe (sense nom ni DNI). Un atacant pot creuar aquesta llista amb el cens electoral del mateix districte i identificar la majoria de pacients. Eliminar els identificadors directes no és suficient.


Pas 2: Entendre els models d’atac

ARX no aplica una protecció genèrica: et demana que decideixis contra quin perfil d’atacant vols protegir-te. Són tres models ben diferenciats:

Model L’atacant sap que… Quan usar-lo
Prosecutor Un individu concret és al dataset i vol confirmar-ho Dades molt sensibles, obligació legal de protegir individus específics
Journalist Hi ha algú al dataset que compleix un perfil i vol trobar qui és Publicació de dades obertes o en repositoris acadèmics
Marketer El dataset existeix i vol re-identificar el màxim d’individus Publicació pública massiva, datasets per a ML

Per a recerca doctoral amb dades clíniques, el mínim recomanable és el model Journalist. Si el dataset conté dades especialment sensibles (salut mental, VIH, addiccions), considera el model Prosecutor.


Pas 3: k-Anonimitat — el fonament

La k-anonimitat és el model de privacitat base que gairebé sempre aplicaràs. La idea és senzilla: cap individu ha de poder distingir-se de com a mínim k-1 altres persones en el dataset.

Per aconseguir-ho, ARX generalitza els quasi-identificadors (substitueix valors exactes per rangs o categories més amples) fins que cada combinació de QI apareix almenys k vegades. A aquests grups se’ls anomena classes d’equivalència.

Exemple pràctic: de valors exactes a classes d’equivalència

Tenim 6 pacients. Columnes QI: Edat, Codi Postal, Sexe. Atribut sensible: Diagnòstic.

ID Edat orig. Edat (k=2) Codi Postal orig. CP (k=2) Sexe Diagnòstic
P001 29 20–30 08001 080** F Ins. cardíaca
P002 31 20–30 → 30–40 08001 080** F Hipertensió
P003 45 40–50 08010 080** M Fibril. auricular
P004 47 40–50 08010 080** M Fibril. auricular
P005 52 50–60 08015 080** F Cardiopatia isq.
P006 54 50–60 08015 080** F Hipertensió

Ara P001 i P002 formen una classe (si generalitzem prou l’edat), P003 i P004 en formen una altra, i P005 i P006 una tercera. Amb k=2 cap individu es pot distingir de l’altre dins de la seva classe.

Quant val de k has de triar?

k Protecció Pèrdua d’info Recomanat per a…
k = 2 Mínima Baixa Ús intern en consorcis tancats
k = 3–5 Bona Moderada Publicació acadèmica estàndard
k ≥ 10 Alta Alta Requisits HIPAA, dades molt sensibles
Atenció: la trampa de k-anonimitat

Si tots els membres d’una classe d’equivalència tenen el mateix diagnòstic, un atacant pot inferir-lo sense necessitat d’identificar ningú. Exemple: si tots els homes de 40–50 anys de Barcelona del dataset han estat hospitalitzats per fibril·lació auricular, saber que algú pertany a aquest grup ja revela el diagnòstic. Aquí entra l-diversity.


Pas 4: l-Diversity — protegir el diagnòstic

La l-diversity afegeix un requisit sobre l’atribut sensible: dins de cada classe d’equivalència, hi ha d’haver almenys l valors ben representats de l’atribut sensible. Això evita que un atacant pugui inferir el diagnòstic, addicció o qualsevol altra dada sensible fins i tot sense saber qui és l’individu.

Les tres variants principals

  • Distinct l-diversity — la més simple: almenys l valors distints per classe. Suficient quan tots els valors de l’atribut sensible son igualment sensibles.
  • Entropy l-diversity — la més robusta: l’entropia de Shannon de la distribució de l’atribut sensible ha de ser ≥ log(l). Detecta casos on un valor domina fins i tot si n’hi ha l de distints.
  • Recursive (c, l)-diversity — intermèdia: el valor més freqüent no pot concentrar massa quota relativa respecte als altres.

Càlcul d’entropy l-diversity: exemple pas a pas

Tenim una classe amb 4 pacients i diagnòstics: Fibril·lació auricular (×2), Cardiopatia isquèmica (×1), Hipertensió (×1). Comprovem si satisfà entropy 2-diversity:

Càlcul
# Distribució de l'atribut sensible a la classe Fibril. auricular: 2/4 = 0.50 Cardiopatia isq.: 1/4 = 0.25 Hipertensió: 1/4 = 0.25 # Entropy de Shannon H = -(0.50 × log₂(0.50)) - (0.25 × log₂(0.25)) - (0.25 × log₂(0.25)) H = 0.50 + 0.50 + 0.50 = 1.50 bits # Requisit per a Entropy 2-diversity: H ≥ log₂(2) = 1.0 1.50 ≥ 1.0 → SATISFET ✓
Recomanació per a dades clíniques

Usa Entropy l-diversity amb l = 3 per a datasets clínics on hi ha diagnòstics molt prevalents (com la hipertensió o la diabetis). La variant Distinct pot ser insuficient si un diagnòstic concentra el 70–80% dels registres d’una classe.


Pas 5: t-Closeness — l’últim escut

Fins i tot amb l-diversity, pot passar que una classe d’equivalència tingui una distribució de diagnòstics molt diferent de la distribució global del dataset. Si un diagnòstic molt rar a la població general és molt freqüent en una classe concreta, un atacant que sap que algú pertany a aquella classe pot inferir el diagnòstic amb alta probabilitat.

t-Closeness exigeix que la distribució de l’atribut sensible dins de cada classe no difereixi en més de t de la distribució global. La distància s’avalua amb Earth Mover’s Distance (EMD).

Intuïció visual

Pensa-ho com un embut d’arena: la distribució global és la forma que té la platja (30% IC, 20% FA, 20% HTA, 30% Cardiopatia). Cada classe és un got ple d’arena. t-Closeness exigeix que la forma de l’arena al got s’assembli prou a la de la platja.

Exemple: calcular t per a una classe
# Classe CE-6: {P008, P009} — homes 60–70 anys # Diagnòstics: Cardiopatia isquèmica (50%), Ins. cardíaca (50%) Distribució global de referència: IC: 30% FA: 20% HTA: 20% Card.Isq: 30% Distribució local CE-6: IC: 50% FA: 0% HTA: 0% Card.Isq: 50% # EMD = suma de diferències absolutes / 2 |50-30| + |0-20| + |0-20| + |50-30| = 80 EMD = 80 / 2 = 0.40 Compleix t=0.20? NO (0.40 > 0.20) Compleix t=0.50? SÍ (0.40 ≤ 0.50)

Quin valor de t triar?

Valor de t Protecció Pèrdua d’info Cas d’ús
t = 0.05–0.10 Molt alta Molt alta Dades extremadament sensibles (VIH, salut mental)
t = 0.15–0.20 Alta Moderada–Alta Dades clíniques per a publicació pública
t = 0.25–0.35 Moderada Baixa–Moderada Dades de recerca per a ús intern

Pas 6: Usar la GUI d’ARX pas a pas

ARX organitza el flux de treball en quatre perspectives visuals. Les recorres en ordre: Configuració → Exploració → Utilitat → Riscos.

Instal·lació en 2 minuts

  1. Descarregar — Ves a arx.deidentifier.org/downloads i baixa el ZIP de l’última versió estable.

  2. Verificar Java — Obre un terminal i escriu java -version. Necessites Java 11+. Si no el tens, descarrega’l de adoptium.net (gratuït).

  3. Executar — Fes doble clic sobre arxanonymizer.jar. Si no s’obre, des del terminal: java -jar arxanonymizer.jar

Perspectiva 1: Configuració

Aquí defineixes el dataset i les jerarquies de generalització.

  1. Importar el CSVFile > Import Data > CSV File. Configura separador (coma), encoding (UTF-8) i activa “First row contains header”.

  2. Assignar tipus — Clic dret sobre cada columna > Attribute type. Marca els QI com a Quasi-identifying, el diagnòstic com a Sensitive, els identificadors directes com a Identifying.

  3. Crear jerarquies — Per a cada QI, clic dret > Edit Hierarchy. Per a l’edat usa “Order-based” amb intervals de 10 anys. Per al codi postal usa “Masking-based” (080** → 08*** → *).

  4. Configurar el model — Panel dret > Add criterion. Afegeix k-Anonymity (k=5), Distinct l-Diversity (l=3, atribut=Diagnòstic) i opcionalment t-Closeness (t=0.20).

jerarquia_cp.csv — exemple
# Format: valor_original, nivell1, nivell2, supressió_total 08001,080**,08***,* 08002,080**,08***,* 08010,080**,08***,* 08015,080**,08***,* 08020,080**,08***,* 08030,080**,08***,*

Perspectiva 2: Exploració (el lattice)

ARX construeix un lattice de transformacions: un graf on cada node és una combinació possible de nivells de generalització. Els nodes verds compleixen els criteris, els vermells no. El node recomanat (millor utilitat + privacitat) apareix ressaltat.

Consell pràctic

Si el lattice té molts nodes vermells, el teu dataset és massa petit o els QI massa específics per a la k escollida. Prova a reduir k en un nivell o a augmentar la granularitat de les jerarquies (intervals d’edat de 20 anys en lloc de 10).

Perspectiva 3: Utilitat

Comprova que el dataset anonimitzat segueix sent vàlid per a les teves anàlisis. ARX mostra histogrames comparatius (original vs. anonimitzat) i les mètriques clau:

Mètrica Valor ideal Alerta si…
Non-Uniform Entropy Loss < 30% > 50%: les anàlisis estadístiques poden ser invàlides
Registres suprimits < 10% > 20%: revisa les jerarquies o redueix k
Mida mitja de les classes Pròxima a k Molt major que k: possible sobreprotecció

Perspectiva 4: Riscos

Aquí és on demostres al CEI i als revisors que la protecció és real. ARX calcula els tres riscos de re-identificació:

Indicador Model Acceptable per publicació
Highest risk (individual) Prosecutor < 0.33
Success rate (re-id) Journalist < 0.20
Expected risk Marketer < 0.10

Resum i checklist final

Abans de donar per acabat el procés d’anonimització, comprova cada punt d’aquesta llista:

# Acció Documentat?
1 Atributs classificats i validats amb el director/a i el CEI
2 Jerarquies de generalització creades i exportades com a CSV
3 Model de privacitat configurat: k ≥ 5 + l ≥ 3 + t ≤ 0.20
4 Pèrdua d’informació < 30% i registres suprimits < 10%
5 Riscos de re-identificació dins dels llindars acceptables
6 Fitxer .arx guardat per a reproductibilitat
7 Secció metodològica d’anonimització documentada
Combinació recomanada per a dades clíniques
  • k = 5 (k-anonimitat) per a publicació acadèmica estàndard
  • Entropy 3-diversity per a diagnòstics amb distribució no uniforme
  • t = 0.20 (t-closeness) per a dades amb diagnòstics rars o molt prevalents
  • Model d’atacant: Journalist com a mínim per a publicació oberta

Continua aprenent sobre privacitat de dades en recerca

Tens el document complet amb exemples guiats, exercicis i plantilles, lliure per descarregar.

Descarregar la guia completa (Word) Descarregar ARX gratuïtament

Referències: Prasser F. et al. (2020). Flexible Data Anonymization Using ARX. Software: Practice and Experience. · Sweeney L. (2002). k-Anonymity: A Model for Protecting Privacy. International Journal of Uncertainty. · Li N. et al. (2007). t-Closeness: Privacy Beyond k-Anonymity and l-Diversity. IEEE ICDE. · Machanavajjhala A. et al. (2007). l-Diversity: Privacy Beyond k-Anonymity. ACM TKDD.

How to set and use passwords in a safety way

Passwords are like underwear, you change them frequently. Do not share them and do not show them”

Well maybe some people like to show part of their underwear, but let’s say the previous statement suits most people. ;-)

Nowadays we have to deal with hundreds of places where we have security access through a username and password. To use a different username and password is a suggestion that we have surely heard of, and probably tried, but when we have to remember access details for services we access everyday, a lot of people end up using the same username and password. Even if we use a strong password with upper and lower cases, numbers and signs, if one of these sites has a security problem (remember the cases of YahooLinkedIn and Dropbox, …) all the accounts using the same password will be jeopardised

So, it is clear that the most secure solution would be to use different, strong passwords for our accounts. But how can we deal with all this information?

thinking

One of the solutions is provided by password managers. This tool stores all of our passwords in an encrypted database and the only thing we have to do is to remember one strong password (a master password), usually incorporated within a long sentence. Once we have entered this password, we will be granted access to all the account details.

There are two types of password managers: the ones where the database is stored on servers and the other ones where we locally store the database. It is clear that the first ones are easy to use. We only have to create the database on their cloud and access from any device we want. You might be reluctant to hold your database on their servers, and you are probably right, because some providers were hacked into in the past, for example LastPass.

So we are going to focus on the password managers group where they do not provide a centralized database feature. That does not mean we are not able to use the same database in different devices but we have to use a cloud service to provide this synchronisation.

In this article I will explain how to setup and use the KeePass, the free, open source, light-weight, easy-to-use password manager, with a lot of awards. You can use it with Windows, Mac OSX, GNU/Linux, Android, iPhone/iPad, Windows Phone, Blackberry, Chrome… You can check the ports list here. As a cloud service I will use Mega and FolderSync Lite to synchronise the database to my mobile device and Keepass2Android Password Safe to get the database on my Android.

I will take for granted that you have already installed the KeePass version for your operating system, that you have some cloud service installed and that you have already created an account. The steps are the following:

Start KeePass and create the database

Start KeePass

kp1

The first time you will need to create a database

new

The system will ask for a name and a location. Remember to store them into the folder where the cloud service has been setup.

mydb

Create the Master password and the Key file

This is the MAIN and MOST important password, and the ONLY ONE you have to REMEMBER. It is a good idea to use a sentence instead of a word, use capital letters, numbers and special characters, like the one below:

My f4th3r w@s 4 great p3r$0n. 1 admire h1m!

As you can see, I am combining capital letters, numbers and especial characters, trying not to use the same pattern (I am not replacing all the vowels for numbers in all the words). It is a complex sentence, but you only need to remember this one. I recommend you to click on the 3 dots button to avoid repeating the sentence twice and ensure the Master password typed is the one you want.

IMPORTANT: In case you forget your Master password, you will not be able to open the database.

The estimated quality will show you how secure the password you have typed in is. Try to reach the 192 bits.

createmp

Key file (optional)

In case you want to setup an additional security level, you can create a Key file. You will need both (if checked is required), a master password and a key file to unlock the database. We have to specify where we want the Key file to be stored.

mykey

And then help the system generate random bits in order to increase the entropy of the computer. Move the mouse over the field until Generated bits bar reache 256 bits. Type random keys inside the Random keyboard input field. Then click OK button.

entropy1

You can only check the “Key file” option, but I will not recommend it to you, as anyone who has your key file will be able to open the database. I suggest using Key file as an additional security level.createmp

Set database settings

Here we can set some database settings, like name, some description and additional parameters.

dbsetting

In case you are using the key file option, you can enable a change key reminder and an expiration date, to force that key to be changed. By default both settings are deactivated.

dbsetting2

Once you click on the OK button, you will have the database opened and ready to create new entries. You have 2 samples.

dbnew

Please, take into account that the database name in the main title window has an asterisk, meaning that the changes are not saved yet.

Adding a new entry

To add a new entry in the database, just click on the key button

The fill the main fields:

  • Title. Something to link with the account

  • User name. The user name of the account

  • Password: In case you want to ensure the password you are typing in, I will hardly recommend you to click on the 3 dots button

screenshot_20160501_202710

  • URL: The address of the site, in case the account is related to one website. If you write without the subdomain (www in the www.wikipedia.org for example), this entry will be able to login inside any subdomain of wikipedia.org, like en.wikipedia.org, ca.wikipedia.org.. and so on.

Since there is no need to remember the password you have created, this is a good way to start using a strong password. Create strong passwords manually is not advisable, since maybe we have some (unconscious?) pattern, so it is better to delegate this task to the software. Just click on the key button and several options will be displayed.

screenshot_20160501_202858

In case you want to personalize due to some constraints on the password, just click on the “Open Password Generator…” option

screenshot_20160501_202956

Below you can set which type of character set you want to appear on the password. For a strongest password, I suggest enabling Upper and lower-cases, Digits, Special characters. Check the “Collect additional entropy” option which will show you the Entropy collection window we have already mentioned above.

screenshot_20160501_204100

Inside the Advanced tab you can specify some additional constraints. Like excluding the look-alike characters (Capital I and lower-cases L, vowels o and number 0…). You can also exclude some characters. Please remember that these options and rules may reduce the security of generated passwords.nocaracters

The Preview tab will show you some examples of the passwords generated matching the rules specified on the fist tab.

screenshot_20160501_204152

Clicking on the OK button will generate the password matching the options and rules. It is a good idea to specify inside the Notes field the email linked to the account, just in case you need to.

screenshot_20160501_205456

Now you have a database stored in a cloud service.

Browser integration in computer

The easiest way to be used in a trusted computer is by using a browser add-on. The one I use it is PassIFox, since I am using Mozilla Firefox as a main browser, but  chromeIPass can be used in case you use Chrome browser.

passifox

Following the instructions you will find the website to install and configure the add-on.

Once connected to your database, just visit the site where you have already set up an account, and in case the user name and password are not filled in automatically, click inside the username or password field and click with the right button. The “Fill User & Pass” option will appear.

wiki

Coming soon: (How to use KeePass with Android)