Forzare una nuova password con autenticazione a prova di conoscenza zero

7

Diciamo che viene utilizzato un ZKP (ad esempio SRP6a), per la verifica della password.

Diciamo che ho bisogno di forzare un utente a cambiare la sua password (così ho il salt e il verificatore per la password corrente). Per questo, il cliente dovrà inviarmi i nuovi valori di sale e verificatore. Ma non riesco a controllare se la password utilizzata è la stessa se il sale è casuale.

Il motivo per cui mi preoccupo è che una password iniziale può essere consegnata in un modo meno sicuro e non voglio che la password rimanga.

L'unico modo per garantire che le password siano diverse da quelle che ho trovato è di richiedere che il nuovo sale sia uguale a quello precedente.

Il meccanismo per cambiare la password è esposto come API al client e non posso necessariamente fidarmi del client per fare quella verifica.

Le domande sono:

  1. C'è un modo migliore?
  2. Se no, allora c'è qualche svantaggio nel richiedere lo stesso sale, cioè sto compromettendo qualcosa?
posta Pawel Veselov 23.07.2015 - 23:10
fonte

1 risposta

1

Prima di tutto, nota che se il server ha generato la prima password non sicura, allora è facile per lui controllare se il client ha cambiato la password o meno. Perché l'unico valore segreto in questo schema è la password stessa. Quindi il server può provare a generare la variabile v e verificare semplicemente se sono identici. Quindi il tuo problema originale è risolto in questo modo.

Per quanto ho capito, l'idea alla base del sale in questo schema è esattamente quella di impedire ad un avversario di capire quando viene utilizzata la stessa password. Mi sembra (non ho controllato, ma con una rapida occhiata) che lo schema sarà abbastanza sicuro se si sistemerà un sale casuale per ogni cliente. Sembra che l'unico vantaggio in questo caso sia che il server può rilevare i riutilizzi della password.

    
risposta data 21.10.2015 - 11:42
fonte

Leggi altre domande sui tag