Estoy desarrollando un sistema donde las aplicaciones móviles se comunican con el servidor a través de HTTPS. La comunicación consta de dos fases: al principio, la aplicación se "registra" en el servidor: entre otras cosas, el usuario elige su PIN y se envía al servidor y se almacena allí. Supongamos por ahora que esta fase es segura y que toda la información se ha intercambiado de forma segura y que no se filtró ninguna información.
La segunda fase de comunicación comienza después del registro. La aplicación envía las solicitudes al servidor, y con cada solicitud, se solicita al usuario que ingrese el PIN que se agrega a la solicitud para autenticar al usuario (en realidad, es solo uno de los pasos de autenticación, ya que también utilizamos la autenticación del certificado de cliente). Mi pregunta es la siguiente: ¿es posible evitar que este PIN se exponga en caso de que un atacante pueda descifrar nuestra comunicación HTTPS? Parece que la mayoría de las soluciones fallan porque el atacante puede enumerar los PIN, ya que generalmente tienen entre 4 y 6 caracteres (por ejemplo, al pasar por un hash de PIN fallan debido a esto).
Podemos intercambiar algunos datos adicionales en la fase de registro, según sea necesario.