Sto lavorando ad uno strumento di acquisizione e preelaborazione dei dati per un database dei tumori cerebrali. Lo strumento esegue il preprocesso dei dati e lo armonizza in modo che possa essere unito in un unico grande database. A causa delle restrizioni sulla privacy, delle leggi sulla protezione dei dati e della nostra morale ci viene richiesto di generare pseudonimi per i pazienti. Qual è il modo migliore per farlo?
Ci sono più scansioni cerebrali per paziente ed è importante che possano essere collegate a ciascun individuo in modo da poter tracciare il tumore al cervello nel tempo. Dalla mia comprensione limitata non posso usare un algoritmo come bcrypt per questo motivo, poiché genererà un hash diverso ogni volta a causa del sale unico?
Il mio piano attuale era di usare SHA-3 256 con il nome del paziente + un sale locale diverso per ogni ospedale (penso che in questo contesto il sale sia chiamato anche pepe?). Tuttavia, per quanto ho capito, sha-3 è suscettibile agli attacchi di forza bruta?
Questo approccio ha anche lo svantaggio che lo stesso paziente genererà diversi hash nel caso in cui venga scansionato in un'altra istituzione. Tuttavia questo è accettabile in quanto i pazienti purtroppo muoiono a digiunare per migrare tra gli ospedali. Tuttavia sarebbe ancora bello se potessimo evitare questo problema se la rete di ricerca volesse incorporare meno malattie mortali in futuro.
Ho un electron + vue JS che esegue l'interfaccia utente connessa tramite websockets (socket.io) a un server di palloni python che esegue i pesanti calcoli all'interno di un container. Dato che tutto è in esecuzione localmente, suppongo che il mio setup non sia realmente vulnerabile agli attacchi man in the middle, quindi sarebbe accettabile eseguire l'hashing sul backend Python?
Quale approccio consiglieresti?
Grazie mille per il tuo tempo!
PS: rispondere alle domande: Per cominciare abbiamo ospedali in Germania, Austria e Svizzera che partecipano (questo significa EU + legge svizzera sulla protezione dei dati). Tuttavia, se sorgono opportunità, vorremmo espanderci a livello internazionale, anche negli Stati Uniti.
L'obiettivo della piattaforma è fornire ai ricercatori dati. Attualmente ogni istituzione sta lavorando con i propri dati, tuttavia gli approcci moderni, in particolare l'apprendimento approfondito, trarrebbero grande profitto dai grandi insiemi di dati sull'addestramento.
Quindi si tratta di nascondere l'identità dei pazienti dai ricercatori utilizzando il database completo che verrà fornito in modo curatissimo. Le istituzioni locali hanno comunque accesso ai loro dati sui pazienti non trattati, quindi non c'è bisogno di nasconderlo da loro.
L'idea di utilizzare un sale locale per istituzione era quella di evitare che gli utenti della clinica A che conoscono il paziente "John Doe" possano tracciare i set di dati di "John Doe" quando visita la clinica B.
Penso che invece del nome del paziente + sale locale sia un'idea migliore usare lo pseudonimo locale fornito dal sistema informativo ospedaliero. Quindi, nel caso qualcuno riesca a decifrare i dati, finisce con lo pseudonimo locale. Sfortunatamente questi sistemi non sono standardizzati e non sono sicuro che ogni sistema fornisca tale record.
Se possibile vorrei davvero evitare l'approccio di avere una tabella di ricerca. I computer che elaborano i dati sono spesso offline e ci sono più computer per istituto quindi sarà davvero difficile prenderne il controllo e tenerlo sincronizzato e sicuro. I medici sono spesso stressati, con gli occhi cisposi e hanno una motivazione limitata a seguire i protocolli di protezione dei dati, quindi sono scettico sul fatto che possano gestire questo lavoro manuale.
PPS: dopo aver letto più a fondo l'argomento mi chiedo se PGP potrebbe essere una via d'uscita dal mio dilemma. Gli utenti potevano firmare i propri dati con la mia chiave pubblica. Quindi decodificare le informazioni e generare pseudonimi per i pazienti con la mia tabella di ricerca centrale. Gli pseudonimi non avrebbero alcun collegamento con i dati del paziente, quindi non ci sarebbe modo di ricollegarlo ai pazienti con accesso al normale database.
Quindi un utente malintenzionato dovrebbe intercettare la comunicazione crittografata RSA tra i nostri server e decifrarlo per ottenere l'accesso ai dati del paziente. Un utente malintenzionato che è in grado di farlo potrebbe probabilmente accedere ai dati non elaborati anche sui server dell'ospedale, che sembra essere l'obiettivo più attraente, come con i dati grezzi con cui finirebbe, ad esempio, le scansioni Ct complete e non solo cervelli estratti da loro.