Prima di spendere qualsiasi sforzo cercando di farli cambiare, considera che potrebbero essere sotto un requisito di cui non sei a conoscenza. Ad esempio, se utilizzano queste password per accedere a un ambiente di carte di credito, PCI DSS richiede una modifica periodica della password. Questo potrebbe essere qualcosa di completamente fuori dal loro controllo.
Se non è questo il caso, puoi provare a riferirti agli ultimi consigli del NIST in SP 800-63B . Nella sezione 5.1.1.2 Verificatori segreti memorizzati (pseudonimi), dicono questo [enfasi mia]:
Verifiers SHOULD NOT require memorized secrets to be changed
arbitrarily (e.g., periodically). However, verifiers SHALL force a
change if there is evidence of compromise of the authenticator.
L'intera sezione sulle password deve essere letta e implementata nel suo insieme, naturalmente, ma questa raccomandazione è indipendente. L'unica lamentela che ho sul documento è che la loro lunghezza minima raccomandata è di soli 8 caratteri, il che non è chiaramente sufficiente per resistere a un attacco offline di forza bruta sugli hash delle password che potrebbero essere esposti in una violazione dei dati. Per attenuarlo, richiedono che gli hash delle password archiviati siano sufficientemente protetti dagli attacchi di forza bruta, come 10.000 round di PBKDF2.
Si consigliano 10.000 cicli di PBKDF2 per la verifica della password online, in quanto l'idea è di rendere computivamente costoso verificare una singola password, consentendo comunque l'elaborazione in tempo reale durante le frequenti occorrenze degli accessi degli utenti. Si noti tuttavia che le vecchie conferme della password si sarebbero verificate solo durante un'attività di modifica della password effettiva, che dovrebbe verificarsi molto meno frequentemente rispetto agli accessi regolari. E questo apre un'opportunità per migliorare la tua sicurezza.
Considera di consumare ulteriore potenza di elaborazione durante il processo di modifica della password. Calcola sia il PBKDF2 (password, 10000) che memorizzalo nella tabella "password quotidiana" e conserva un archivio di PBKDF2 (password, 50000) nella tabella "password precedente". Quando si collegano di nuovo, confrontarli solo con la tabella "password quotidiana". Quando cambiano le password, eseguire la ricerca su tutte le voci nella tabella delle password precedenti; questo sarà molto più lento di un normale login, ma poiché non è frequente, non dovrebbe interrompere la normale attività. Una volta verificato come unico, scartare e sostituire l'hash di tutti i giorni con il nuovo hash di tutti i giorni e aggiungere il nuovo hash strong alla tabella "password precedente", cancellando la precedente password precedente.
Se si finisce che non è possibile escluderli modificando periodicamente le password, provare ad attuare almeno la memorizzazione pratica più efficace delle "password precedenti".