Penso che sia corretto usare SHA1 in SRP. SHA1 va bene per questi scopi. L'utilizzo di SHA1 non danneggerà la riservatezza della chiave.
Alcuni dicono che "SHA1 ha alcuni punti deboli". Tuttavia, queste debolezze sono relativamente minori e, in ogni caso, influenzano solo la resistenza di SHA1 agli attacchi di collisione. Questi attacchi non influenzano o mettono in pericolo l'SRP, dal momento che SHA1 non si basa sulla resistenza alle collisioni di SHA1. Il passaggio a una diversa funzione di hash non è in grado di migliorare la riservatezza della chiave. Per una discussione più dettagliata, vedi Sezione 3.4 di RFC 5054 , che tratta dell'uso di SHA1 nell'SRP protocollo.
Sono un po 'scettico sul fatto di apportare modifiche a un protocollo crittografico, su principi generali. I protocolli di crittografia sono complicati e pochi dettagli possono fare una grande differenza per la sicurezza, in particolare i protocolli di accordo sulle chiavi autenticati da password (dove il layout esatto dei bit di alcuni campi può essere importante per la sicurezza). Il mio suggerimento sarebbe quello di trovare una specifica esistente, ben controllata, che fornisca una specifica completa del protocollo SRP e la adotti esattamente. Apportare modifiche ha il potenziale per introdurre sottili punti deboli di sicurezza.
Tuttavia, se si desidera modificare la funzione di hash nel modo in cui si delinea, penso che sarebbe un cambiamento relativamente ragionevole, a basso rischio. Infatti, Sezione 3.2 di RFC 2945 (una specifica di SRP versione 3) dice che è OK cambia SHA1 in un'altra funzione hash crittograficamente strong, quindi cambiare l'hash utilizzato nel passaggio di conferma della chiave in SHA256 o SHA512 sarebbe probabilmente OK.