Sto sviluppando un sistema in cui le applicazioni mobili comunicano con il server tramite HTTPS. La comunicazione consiste di due fasi: in un primo momento, l'app "registra" sul server: tra le altre cose, l'utente sceglie il suo PIN e viene inviato al server e archiviato lì. Supponiamo per ora che questa fase sia sicura e che tutte le informazioni siano state scambiate in modo sicuro e che nessuna informazione sia trapelata.
La seconda fase della comunicazione inizia dopo la registrazione. L'app invia richieste al server e, con ogni richiesta, all'utente viene richiesto di inserire il PIN che viene aggiunto alla richiesta per autenticare l'utente (in realtà è solo uno dei passaggi di autenticazione, poiché utilizziamo anche l'autenticazione del cert client). La mia domanda è la seguente: è possibile impedire che questo PIN venga esposto nel caso in cui un utente malintenzionato sia in grado di decodificare la nostra comunicazione HTTPS? La maggior parte delle soluzioni sembra fallire perché l'utente malintenzionato è in grado di enumerare i PIN poiché di solito sono lunghi circa 4-6 caratteri (ad esempio, il passaggio di un hash di PIN non riesce a causa di ciò).
Possiamo scambiare alcuni dati aggiuntivi nella fase di registrazione, se necessario.