La historia:
Actualmente estoy escribiendo un servicio web que permite que las comunicaciones se realicen de forma remota a través de TCP / IP.
Primero pensé en firmar cada paquete con HMAC-SHA1 con una contraseña, adjuntar la firma al inicio del paquete y luego hacer que el servidor (que también conoce la contraseña) verifique el paquete enviado.
Sin embargo, esto significa que el servidor almacenaría las contraseñas tal como están (sin incluirlas), por lo que es muy peligroso de hecho para cualquier persona que obtenga acceso no autorizado a la base de datos. Además, cualquier información confidencial (como la nueva contraseña del paquete 'cambiar contraseña') puede ser secuestrada a través de un ataque de intermediario.
Luego leí sobre TLS / SSL y decidí usarlo para evitar ataques de intermediario.
The TL; DR:
¿Sigo necesitando firmar mis paquetes cuando lo envío por TLS? ¿O puedo simplemente enviar mis paquetes como están? Leí que no es una buena idea enviar contraseñas simples (o sus hashes) a través de las redes. Como tal, no estoy seguro de que con TLS, es mejor simplemente enviar las contraseñas al servidor para la autenticación, o firmar cada paquete con las contraseñas en lugar de enviarlas.