Estoy trabajando en un proyecto web y quiero (en la medida de lo posible) manejar los datos de los usuarios de forma que se reduzcan los daños a la privacidad de los usuarios en caso de que alguien comprometa nuestros servidores / bases de datos.
Por supuesto, solo tenemos los datos de usuario que se necesitan para que el sitio web haga su trabajo, pero debido a la naturaleza del proyecto, tenemos bastante información sobre nuestros usuarios (parte de la funcionalidad es aplicar a los trabajos y enviando su cv con eso)
Pensamos en cifrar / descifrar datos confidenciales con un par de claves privado / público cuya clave privada está cifrada con la contraseña del usuario, pero encontramos algunos problemas de seguridad e implementación con eso: P
la pregunta es ¿cómo implementar la privacidad del usuario y una protección contra el robo de datos en servidores web centralizados con protocolos compatibles con el navegador, mientras que para la funcionalidad se requiere que los usuarios puedan intercambiar datos sensibles?
Para dar una idea adicional: este proyecto aún no está en la etapa de producción, por lo que todavía hay tiempo para hacer las cosas bien.
ya estamos haciendo algunas cosas básicas como
- sirviendo https
- hacer cumplir https para sitios que pueden manejar datos confidenciales
- hashing contraseñas saladas
- un poco de endurecimiento de nuestro servidor y servicios en él
- discos duros cifrados para evitar que alguien lea toda la información del cliente después de robar nuestros servidores / discos duros
pero eso es todo, además del hash de contraseña, no hay un mecanismo que pueda detener / al menos dificultar que alguien que logró ingresar (parte de) el servidor obtenga todos los datos de todos nuestros usuarios. Tampoco vemos una manera de encriptar los datos de los usuarios para impedirnos a nosotros mismos leerlos, ya que necesitamos los datos (no los hubiéramos recopilado de otra forma) para alguna parte del sitio web / la funcionalidad que queremos que proporcione. Incluso si, por ejemplo, gestionamos de alguna manera (quizás con algún javascript) todos los datos nos cifraran (por el navegador del cliente) y le entregamos al cliente su clave privada cifrada con alguna contraseña (como por ejemplo su contraseña de inicio de sesión), no podríamos examle scan usuario subió archivos para virus y similares. Por otro lado, un cifrado del lado del cliente al menos con el concepto de navegador / servidor web dejaría algunos problemas con la seguridad al menos como lo imaginamos (le invitamos a demostrar que estoy equivocado) y parece bastante como reinventar la rueda, y tal vez como este proyecto no se trata principalmente de privacidad, sino que la privacidad es una propiedad preferible que no queremos reinventar la rueda para ella. Creo firmemente que no soy el primer desarrollador web que piensa en esto, ¿verdad? Entonces, ¿qué han hecho otros proyectos? ¿Qué has hecho para intentar proteger los datos de tus usuarios?
si es relevante, estamos usando django y postrgreSQL para la mayoría de las cosas y javascript para alguna interfaz de usuario
ps: este artículo describe algunas otras razones por las que dudamos acerca del cifrado del lado del cliente