¿Qué protección adicional se requiere para la autenticación y el envío de mensajes además de TLS? [cerrado]

1

Uso TLS para proteger las comunicaciones TCP de mi cliente-servidor.
Tengo un servidor Qt y clientes Android y iOS. Para la conexión TLS solo uso certificados del lado del servidor, por lo que solo los clientes están seguros de que están conectados al servidor real, pero el servidor no sabe si es una aplicación confiable o malintencionada. Cuando el servidor y el cliente TLS a través de sockets TCP están conectados, el cliente puede registrar un nuevo usuario o iniciar sesión como un usuario existente.

El registro se ve así:

  1. El usuario proporciona inicio de sesión, contraseña e información adicional sobre el usuario (edad, ubicación, etc.) a la aplicación cliente.
  2. La contraseña se revisa con este esquema: hashed_password = hash(salt + hash(password)) , donde salt - uno de los campos de datos del usuario.
  3. El cliente envía el inicio de sesión, la contraseña con hash y la información adicional del usuario en el servidor con la solicitud de registro.
  4. El servidor realiza algunas operaciones de rutina (verifique si este usuario ya existe, ¿son correctos los tipos de campos?) y luego registra un nuevo usuario en la base de datos: inserta el inicio de sesión, el hash en la contraseña del lado del cliente e información adicional sobre el usuario en el users table.

El inicio de sesión se ve así:

  1. El usuario proporciona inicio de sesión y contraseña.
  2. La contraseña está en hash usando mismo esquema: hashed_password = hash(salt + hash(password)) .
  3. El cliente envía la contraseña de inicio de sesión y hash al servidor con la solicitud de autorización.
  4. El servidor comprueba la tabla users en la base de datos: ¿hay un par apropiado de inicio de sesión y contraseña con hash? Si es así, el servidor autoriza el socket de ese cliente como un usuario, ahora todas las solicitudes de este socket se interpretan como solicitudes del usuario identificado, hasta que se cierra el socket. Pero el servidor no tiene ningún "token" y / o algunas otras cosas (y sé que esto no es tan bueno, verifique esta pregunta ),
  5. El servidor envía la identificación del usuario al cliente (por supuesto, esta identificación se usará solo para la identificación del cliente en el futuro).

Todo lo que puedo decir sobre los mensajes y otras solicitudes es que se pasan sin ninguna protección adicional, excepto para TLS.

Entonces, tengo una pregunta simple: ¿debo usar algunos protocolos criptográficos, algoritmos u otras cosas adicionales para proteger el proceso de autenticación de usuarios y el proceso de paso de mensajes?

    
pregunta don-prog 13.04.2018 - 08:02
fuente

0 respuestas

Lea otras preguntas en las etiquetas