¿Cómo maximizar la seguridad para un repositorio de contraseñas? [cerrado]

2

Estoy creando un almacén de contraseñas, que consiste en un conjunto de servicios HTTP, un cliente web, una aplicación de Android y una aplicación iOS.

Hay una tabla muy simple llamada Passwords que tiene estas columnas:

Id
UserId
Username
Password
Url
Notes

Un usuario inicia sesión a través de cualquier cliente, agrega contraseñas a este repositorio y luego tiene acceso a la lista de sus contraseñas.

De hecho, estoy creando KeePass, pero en la nube.

Por supuesto que necesito hacerlo lo más seguro posible. He configurado HTTPS para servicios, y solo se aceptan las llamadas HTTPS. También he cifrado las contraseñas en la columna Password , pero todas con una clave.

¿Qué opciones puedo tomar para maximizar la seguridad de este sistema? Cualquier sugerencia, incluso los niveles físicos serían bienvenidos.

Aclaración : como usuarios del mundo moderno, la vida se está complicando mucho para nosotros. Nuestros antepasados solo tuvieron que lidiar con pocos conceptos y todo lo que tenían por seguridad eran sus escudos y lanzas. Hoy en día, cada usuario probablemente tenga más de 100 cuentas en toda Internet. He sido objeto de un hack y realmente he perdido algunas cosas. Así que decidí usar las contraseñas de forma más segura. KeePass es una opción sobresaliente. Pero su uso está fuera de línea y no se puede compartir entre dispositivos. Hay servicios por ahí, pero todos son servicios pagados. Debe existir al menos un servicio gratuito para ayudar a las personas con sus problemas de administración de contraseñas. Por eso he decidido desempeñar mi papel lo más que pueda. No puedo hacer esta pregunta más específica, ya que es muy específica. Necesito ayudar a las personas a administrar sus contraseñas y tener acceso a ellas en cualquier dispositivo, cuando lo deseen, de forma gratuita. Para llegar allí, necesito hacer que el sistema sea lo más seguro posible. Tal vez esto podría convertirse en un esfuerzo de colaboración, al igual que LetsEncrypt. Merecemos vivir en seguridad y seguridad. Pero necesitamos tecnología que nos ayude. Ahora todo lo que pido es que la gente me dé consejos sobre cómo hacer que este sistema sea más seguro. Esto es totalmente objetivo, se puede responder como se muestra y es relevante para este sitio tanto como leo en el centro de ayuda.

    
pregunta Saeed Neamati 18.10.2017 - 12:34
fuente

1 respuesta

9

Guardar las contraseñas de otras personas a otros servicios es una muy, muy mala idea. Significa que ahora tiene la capacidad de robar cada contraseña de sus usuarios, ya que tiene la clave de descifrado y sus usuarios solo tienen su palabra de que no la usarán. E incluso si puedes convencer a tus usuarios de que realmente eres un parangón de incorruptibilidad y nunca harías algo así (no lo tomes como algo personal, pero ciertamente no me convencerás), existe el riesgo de que alguien hackee. tú. Y considerando lo valioso que eres como objetivo, muchas personas harán todo lo posible para lograrlo. Realmente no puede esperar que ninguna persona en su sano juicio confíe tanto en usted como en su seguridad operativa.

Si realmente tiene en mente el mejor interés y la privacidad de su usuario, almacene toda la base de datos de contraseñas como BLOB, cifrada con una clave que está bajo el control del usuario. Realice tanto el cifrado como el descifrado de la base de datos de contraseñas en el lado del cliente, para que su servidor nunca vea la clave del usuario o sus datos en texto sin cifrar. Su aplicación del lado del cliente puede derivar la clave de la contraseña maestra del usuario (que usted tampoco debería saber) utilizando un algoritmo de derivación de claves como PBKDF2 .

Problema: cuando el usuario olvida su contraseña maestra, pierde toda su base de datos de contraseñas. No puedes ayudarlos, porque por diseño no tienes la capacidad de descifrarlos. No hay una buena solución para eso. La seguridad de los datos siempre requiere algún secreto, y un secreto conocido por un tercero ya no es un secreto.

    
respondido por el Philipp 18.10.2017 - 14:05
fuente

Lea otras preguntas en las etiquetas