Estoy tratando de equilibrar las buenas prácticas de seguridad con el registro excesivo de los metadatos del usuario / Información de identificación personal.
Estoy construyendo una aplicación web que permite la mensajería segura. En parte del diseño de mi sistema, estoy tratando de minimizar la pérdida de metadatos del usuario.
Parte del diseño de mi sistema incluye un módulo que rastrea las direcciones IP para evitar abusos, como la denegación de servicio o el descifrado de cuentas. Solo mantengo el registro de direcciones IP durante el tiempo que sea necesario. Un enfoque directo sería registrar la dirección IP y la marca de tiempo en un archivo de registro, y eliminar las entradas después de un período de tiempo. Para evitar cualquier distracción, la intención es prohibir las direcciones IP abusivas durante un tiempo determinado (es decir, un desplazamiento lineal), no de forma permanente.
El modelo de amenaza es que los registros podrían usarse para determinar quién estaba usando el sistema y cuándo. Quiero que los usuarios de este sistema tengan confianza en que, incluso si un servidor está comprometido, que los registros no están diseñados de tal manera que un tercero pueda inferir quién usó el sistema y cuándo, para hablar con quién.
Mi primer pensamiento fue que el almacenamiento de información en una forma que se puede verificar más tarde, pero no se almacena en texto simple, es similar a cómo se almacenan de forma segura las contraseñas del sistema mediante una función de derivación de claves (es decir, aplicar un hash a una frase de contraseña y un Sal para un gran número de iteraciones). Por lo tanto, de la misma manera que se puede verificar una contraseña de usuario contra su hash basado en KDF, se puede verificar una IP contra su hash basado en KDF en el archivo de registro para ver si se ha registrado la misma dirección IP anteriormente.
¿Cuáles son las fortalezas y debilidades de este enfoque? ¿Existen métodos superiores para almacenar metadatos / PII de usuarios que no estén en texto sin formato, en un formato que una aplicación web pueda verificar?
Actualizado para aclarar el propósito de la aplicación web y el modelo de amenaza.