Sto cercando di bilanciare le buone pratiche di sicurezza contro la registrazione eccessiva dei metadati dell'utente / Informazioni di identificazione personale.
Sto costruendo un'app Web che consente la messaggistica sicura. In parte nella progettazione del mio sistema, sto cercando di minimizzare la perdita di metadati dell'utente.
Parte della progettazione del mio sistema include un modulo che tiene traccia degli indirizzi IP per prevenire abusi, come Denial-of-Service o cracking dell'account. Mantengo il registro degli indirizzi IP solo per il tempo necessario. Un approccio diretto sarebbe quello di registrare l'indirizzo IP e un timestamp in un file di log e cancellare le voci dopo un periodo di tempo. Per evitare qualsiasi distrazione, l'intento è quello di bandire gli indirizzi IP abusivi per un determinato periodo di tempo (ad esempio, offset lineare), non in modo permanente.
Il modello di minaccia è che i registri potrebbero essere utilizzati per determinare chi stava usando il sistema e quando. Voglio che gli utenti di questo sistema abbiano fiducia che anche se un server è compromesso, i registri non sono progettati in modo tale che una terza parte possa dedurre chi ha usato il sistema e quando, per parlare con chi.
Il mio primo pensiero è che l'archiviazione di informazioni in un modulo che può essere verificato in seguito, ma non memorizzato in testo in chiaro, è simile a come si memorizzano in modo sicuro le password di sistema utilizzando una funzione di derivazione della chiave (ad esempio, l'applicazione di un hash a una passphrase e un sale per un gran numero di iterazioni). Quindi, allo stesso modo in cui una password utente può essere verificata con il suo hash basato su KDF, un IP può essere verificato con il suo hash basato su KDF nel file di log per vedere se lo stesso indirizzo IP è stato registrato prima.
Quali sono i punti di forza e di debolezza di questo approccio? Esistono metodi superiori per la memorizzazione dei metadati / informazioni personali dell'utente non in testo semplice, in un formato che può essere verificato da un'app Web?
Aggiornato per chiarire lo scopo delle app Web e il modello delle minacce.