Tengo una aplicación de cliente WPF interna que accede a una base de datos.A Dificultad de seguridad (cifrado)
La aplicación es un recurso central para un equipo de soporte y, como tal, incluye acceso remoto/información de inicio de sesión para los clientes. Por el momento, esta base de datos no está disponible a través de una interfaz web, etc., pero es probable que algún día lo haga.
La información de acceso remoto incluye el nombre de usuario y las contraseñas para las redes del cliente para que las aplicaciones de software de nuestro cliente puedan ser remotamente admitidas por nosotros. Necesito almacenar los nombres de usuario y las contraseñas en la base de datos y proporcionar a los consultores de soporte el acceso a ellos para que puedan iniciar sesión en el sistema del cliente y luego brindar asistencia. Espero que esto tenga sentido.
Así que el dilema es que no quiero almacenar los nombres de usuario y contraseñas en texto plano en la base de datos para asegurar que si el DB se vio comprometido, no estoy proporcionando acceso a las redes de nuestros clientes a quien obtenga la base de datos .
He examinado el cifrado bidireccional de las contraseñas, pero como se dice, bidireccional no es muy diferente de texto claro como si pudieras descifrarlo, también un atacante ... eventualmente. El problema aquí es que he configurado un método para usar una sal y un código de acceso que están almacenados en la aplicación, he usado una sal que está almacenada en el archivo db, pero todos tienen sus puntos débiles, es decir, si la aplicación se refleja, expone las sales, etc.
¿Cómo puedo proteger los nombres de usuario y las contraseñas en mi base de datos, y todavía puedo permitir a mis consultores de soporte ver la información en la aplicación para que puedan usarla para iniciar sesión?
Esto es obviamente diferente al almacenamiento de las contraseñas del usuario, ya que son de una sola manera, ya que no necesito saber cuáles son. Pero sí necesito saber cuáles son las contraseñas de acceso remoto del cliente, ya que necesitamos ingresarlas en el momento de la comunicación remota.
¿Alguien tiene algunas teorías sobre cuál sería el mejor enfoque aquí?
actualización La función que intento crear es para nuestra aplicación CRM que almacenará los detalles de acceso remoto para el cliente. El sistema CRM proporciona funcionalidad de seguimiento de llamadas/problemas y durante el curso de la investigación del problema, el consultor de soporte deberá ingresar de manera remota. Luego verán los detalles de acceso remoto del cliente y harán la conexión
¿Los detalles de la cuenta tienen privilegios administrativos en las redes de sus clientes? He tratado con una empresa que suministró y apoyó nuestro servidor de forma remota. Aunque tenían acceso remoto, solicitaron la contraseña de administrador cada vez que los llamé. – stukelly
Travis, lea mi respuesta a sus comentarios sobre mi respuesta. (Solo escribo este comentario porque el problema es grave y no sé si StackOverflow le notificará mi respuesta) –