Cosa è la k-anonymity?

Oggi mi sono immersa nel concetto di k-anonymity.  

La k-anonymity è una tecnica che permette di proteggere i dati sensibili garantendo che ogni individuo sia indistinguibile da almeno k altre persone. È come nascondersi in una folla: se un dato appare almeno k volte, diventa impossibile identificare chi ci sia dietro.

Immagina un database come una gigantesca illustrazione di "Dov’è Wally?": prima, ogni persona ha dettagli unici che la rendono facilmente riconoscibile. Con la k-anonymity, invece, ogni Wally si confonde tra decine di altri con la stessa maglietta a righe e berretto. Trovarlo diventa praticamente impossibile!

⚙️ Dalle persone alle password:  

il ruolo dell’hashing e della k-anonymity

La stessa logica si applica alla protezione delle password. Per verificarne la sicurezza senza inviarla in chiaro, ho creato uno script che utilizza l’API di Have I Been Pwned e il metodo delle prime 5 cifre dell’hash, una pratica che rientra perfettamente nella k-anonymity.

🔑 Come funziona:

1️⃣ La password viene trasformata in un hash SHA-1.  

2️⃣ Si inviano solo le prime 5 lettere dell’hash all’API.  

3️⃣ L’API restituisce tutti gli hash che iniziano con quella sequenza.  

4️⃣ Localmente, si controlla se la parte restante dell’hash corrisponde a uno degli hash compromessi.

💡 Ma cos’è esattamente un hash?

Una funzione hash trasforma un input di qualsiasi lunghezza in una stringa di lunghezza fissa (es. SHA-1 restituisce sempre 40 caratteri esadecimali). Questo processo è irreversibile per design, grazie a una serie di passaggi complessi:

  • 🔄 Mescolamento: Ogni bit influisce su molti altri bit del risultato finale.
  • 📏 Compressione: L’input viene ridotto a una lunghezza fissa, causando perdita di informazioni.

👉 È come fare una spremuta: puoi spremere l’arancia, ma non puoi ricostruirla dal succo! 🍊

🌪 Effetto valanga:

Anche un singolo cambiamento nell’input genera un hash completamente diverso.  

Ad esempio:

`password123 → CBFDAC6008F9CAB4083784CBD1874F76618D2A97`
`password124 → 4B2ADDDCC8993F3BB7244AF7A8C8B44B322B1A84`

🚫 Non esistono chiavi segrete:  

A differenza della crittografia, l’hash non usa chiavi. L’unico modo per risalire all’input originale è tentare tutte le combinazioni possibili, come provare ogni pezzo di un puzzle alla cieca.

💪 K-Anonymity e Hashing insieme:

Quando il mio script invia solo le prime 5 lettere dell’hash (CBFDA), sta applicando la stessa logica della k-anonymity: senza la parte restante, è impossibile sapere quale fosse la password originale, perché ogni hash corrisponde a migliaia di possibili input.

Insomma, la prossima volta che cerchi Wally in un mare di dati anonimi, ricordati che non è solo un gioco… è sicurezza! 😉

Qui il link alla mia repository contenente lo script

Illustrazione K-anonymity

Related Post

Aprile 4, 2025
Come la meditazione sta migliorando la mia produttività e resilienza mentale: il mio percorso con ZTM

Ho appena completato il corso "Learning to Meditate" di Zero To Mastery e non posso fare a meno di condividere come questa pratica abbia trasformato la mia routine quotidiana. In pochi mesi, sono passata da essere una novizia della meditazione (ma di quelle persone che non reggono 2 minuti!) a qualcuno che può iniziare ad […]

Aprile 1, 2025
🎉 Level Up! Ho completato il corso “Complete Python Developer” e sbloccato nuove skill!

🎉 Level Up! Ho appena completato il corso “Complete Python Developer: Zero to Mastery” e mi sento come se avessi appena sbloccato un nuovo achievement nel mondo della programmazione! 🏆🐍 Un viaggio entusiasmante affrontato con il mio approccio preferito: sperimentare, costruire e imparare divertendomi… e sì, anche combattere qualche bug lungo il cammino. Ma del […]

veronicaschembri
Copyright © Veronica Schembri

Privacy Policy
Cookie Policy