Una funzione manuale per l'identità hasing?

1

Spero che non chiuderai la domanda. Anche se non ci sono computer coinvolti, si tratta ancora di informazioni e sicurezza, e penso che gli esperti di sicurezza siano quelli che saranno in grado di aiutare meglio.

Voglio fare qualche ricerca utente. Ho bisogno che le persone compilino un questionario e poi compilino un altro questionario due mesi dopo. Devo garantire loro l'anonimato, ma sarà comunque molto buono se riesco a far corrispondere le risposte di una persona dal turno A alle risposte della stessa persona del turno B.

Anche se questo viene fatto online, non penso di poter lasciare che un sistema informatico scopra qualcosa su di loro in modo che possa fare l'abbinamento per me. In teoria, potrei chiedere loro un nome e memorizzare il suo hash MD5. In pratica, se dico ai partecipanti che saranno anonimi e poi chiederanno un nome, perderò la loro fiducia. E l'inizio di un questionario non è un buon posto per educare le persone a caso su cosa sia MD5. Ma per renderlo ancora più difficile, penso che farò il mio prossimo sondaggio usando carta e penna, per ragioni logistiche.

Se ho iniziato a distribuire i token della gente, penso che li perderanno durante i due mesi. Quindi la soluzione migliore che riesco a pensare è una sorta di hash manuale. Ad esempio, potrei chiedere loro "per favore riempia la seconda e la quinta lettera del tuo cognome e il giorno del mese in cui sei nato". Quindi la mia domanda è, come faccio a trovare una buona funzione di questo tipo?

  • quali dati possono essere utilizzati su una persona? Devono essere garantiti per esistere (il mio esempio precedente si rompe se la persona ha un cognome di quattro lettere), altamente individuale (ma non al 100% unico), e la persona deve conoscerli senza doverli cercare da qualche parte.
  • C'è un modo conveniente per calcolare quante cifre / lettere devo chiedere per garantire una probabilità di collisione inferiore al X% in un gruppo di persone Y?
  • Alcuni dei dati possibili sono più problematici di altri? Ad esempio, potrebbe essere che le persone sarebbero più riluttanti a scrivere la prima lettera del loro cognome rispetto al secondo, perché pensano che sarebbe facile per qualcuno cercare di cercarli in un "attacco di forza bruta" e scoprire chi sono?
  • Come faccio a scoprire il massimo livello di complessità oltre il quale le persone non giocano o iniziano a commettere errori?
posta rumtscho 07.06.2014 - 14:30
fonte

2 risposte

2

È stato fatto uno studio, a cui sfortunatamente non ho un link, utilizzando il quale hanno scoperto che anche quando i dati dell'utente non contenevano informazioni di identificazione personale, potevano rintracciare le persone da altri attributi purché avessero un'idea approssimativa della loro posizione. Ora questo può o meno essere applicabile tanto alle aree dense quanto alle aree sparse, ma se qualcuno promette l'anonimato, può essere una preoccupazione.

Con l'approccio che stai suggerendo, come garantisci che riceveranno lo stesso codice entrambe le volte e non commettano un minimo errore ad arrivare a un codice diverso? Ricorda, non hanno modo di verificarlo.

Dato che la tua domanda è aperta, esistono diversi tipi di approcci che puoi adottare:

1) Quando stai distribuendo loro i questionari, puoi semplicemente dare entrambi in anticipo? Ad esempio, chiedi loro di compilarne una immediatamente, e poi di avere l'altra in una busta sigillata che aprono due mesi dopo e poi si riempiono? Se è possibile, ovviamente, puoi avere lo stesso ID in entrambi i sondaggi. Ovviamente c'è la possibilità che perdano il sondaggio, ma penso che nel tuo esempio dovresti assumere che alcune persone che vengono intervistate per la prima volta non forniranno sondaggi la seconda volta. Probabilmente è un po 'meno probabile che perderanno i sondaggi rispetto a un codice che hai fornito.

2) Forse puoi farli usare una funzione di hash CRC32 o MD5 online usando le loro ultime quattro cifre del loro telefono, due cifre del loro indirizzo, ecc. o qualche semplice combinazione come quella. Non forniranno ancora troppe informazioni di identificazione personale e potranno verificare che il sito da cui ricevono l'hash non sia correlato a te, se hanno dubbi. Questo non è facile da usare, ma sicuramente più amichevole di quanto calcolino il loro hash, usando lo schema che hai specificato nella tua domanda. (per esempio, vedi qui: link - puoi anche cercare "calcolare hash online" o qualcosa di simile. Sono sicuro che ci saranno anche alcune app telefoniche.)

Per quanto riguarda l'approccio al codice che hai, tieni presente che ogni volta che usi qualsiasi variabile che si trova in un database da qualche parte, gli utenti saranno tracciabili. Ad esempio, lo studio del mio medico ha la mia sicurezza sociale, la mia data di nascita, il mio nome - indipendentemente da come mi chiedi di inserirlo nel sondaggio, qualcuno può facilmente eseguire uno strumento automatico per scoprire quali saranno i codici calcolati per ciascuno di questi record e trova il sondaggio. Naturalmente, si riduce a quanto è importante essere anonimi e ciò che si sta promettendo e l'impatto se qualcuno dovesse tracciare il sondaggio a un individuo.

FYI. Anche l'approccio hash in # 2 è vulnerabile allo stesso approccio, anche se è richiesto un po 'più di sforzo a seconda dell'hash utilizzato.

Mi dispiace, questo è il meglio che posso pensare fino ad ora, si spera, ti aiuterà ad andare verso una soluzione. IMO, se puoi andare con l'approccio n. 1 sopra (dare entrambi i sondaggi in anticipo), questo è il modo migliore per affrontarlo e garantire un alto livello di anonimato.

    
risposta data 07.06.2014 - 22:47
fonte
1

Potresti chiedere le ultime tre cifre del loro numero di cellulare.

Basta essere chiari sul motivo per cui lo stai facendo e spiega perché non saranno tracciabili in questo modo. Altrimenti, ti diranno numeri (o lettere, o altro) a caso, e lo scopo sarà sconfitto.

Per quanto riguarda la probabilità, supponendo che la distribuzione sia piatta e che il "token" possa assumere valori N (in questo esempio, sarebbe 998 - penso che "000" potrebbe non essere un finale valido in alcuni paesi), e tu chiedono M persone, quindi la probabilità di avere una collisione è 1 - (998/998) (997/998) (996/998) ... ((998 -M) / 998).

Con 200 persone, hai la massima probabilità di avere circa 18-19 collisioni, ed è molto improbabile che tu possa ottenere meno di 10 collisioni o più di 30. Il che significa che "riconoscerai" 170 persone su 200.

Con quattro cifre e 200 persone, puoi aspettarti 1-2 collisioni; le probabilità sono trascurabili di ottenere più di 8-9 collisioni.

Con 500 persone e quattro cifre (o qualsiasi altra cosa che può assumere circa diecimila valori distribuiti casualmente - puoi ottenere una cifra dalla targa dell'auto, una dall'ultimo numero di indirizzi streed, una dall'ultima cifra dell'anno di nascita e così via) ci si può aspettare 12-13 collisioni e ancora nessuna possibilità reale di ottenere meno di 2 collisioni, o più di 22.

    
risposta data 07.06.2014 - 22:48
fonte

Leggi altre domande sui tag