Risposta originale
Questa è una cattiva, cattiva politica. Esistono solo 10 6 o un milione di numeri a 6 cifre diversi. È troppo piccolo.
È quasi impossibile prevenire un attacco di forza bruta offline, non importa quanto sia lento un algoritmo di hash che usi. Se un tentativo richiede 1 secondo, crei una password in 11 giorni. Potrebbe anche essere troppo poco per fermare completamente un attacco di forza bruta online intelligente, se l'attaccante può usare più IP (per esempio, controllando una botnet) e ha molti numeri di carte differenti da provare.
Ciò è reso peggiore dal fatto che, proprio come con le password ordinarie, la maggior parte delle persone non li seleziona a caso . 123456
è destinato a mostrare molto, così come i numeri che rappresentano le date. In pratica, la maggior parte delle password avrà molto meno di 6 × log 2 (10) ≈ 20 bit di entropia.
Non vedo ragioni per cui non ti si dovrebbe permettere di scegliere una password più strong. Questa pratica invia il segnale che semplicemente non si preoccupano della sicurezza. Mi fa anche sospettare che da qualche parte nel loro database ci sia un NUMBER(6)
invece di un hash memorizzato.
Il fatto che i pagamenti non possano essere effettuati senza un altro fattore di autenticazione è un po 'confortante, ma non molto. Un utente malintenzionato potrebbe comunque visualizzare la cronologia dell'account, qualcosa che potrebbe contenere informazioni molto delicate e anche essere utilizzato per il phishing.
Anche se questo probabilmente non sarà mai usato contro di te, se fossi in te, prenderei in considerazione il passaggio a una nuova banca. Preferibilmente uno che richiede l'autenticazione a due fattori all'accesso.
Ulteriori commenti
C'è stata qualche discussione nei commenti e alcune buone risposte con un'altra vista è spuntata, quindi mi piacerebbe elaborare e rispondere ad alcune critiche.
Ma i nomi utente sono segreti!
Secondo la domanda, i numeri delle carte d'identità (da non confondere con i numeri delle carte di credito) sono "quasi pubblici", e OP ha chiarito nei commenti di averli visti come "risultati per i servizi del settore pubblico". In altre parole, i nomi utente non sono segreti . E non dovrebbero esserlo - se la sicurezza del tuo sistema si basa sul fatto che i nomi utente sono segreti, stai sbagliando.
Il limite di velocità per account e / o numero IP si occuperà di questo.
Un attacco di forza bruta distribuita, ad es. usando una botnet, avrebbe una buona possibilità di rompere alcuni account. Diciamo che hai 10.000 computer e ogni computer prova 3 password al giorno durante un mese su diversi account. Questo è circa 10 tentativi 6 . Questo ti darà un account in media se le password sono veramente casuali. Nel mondo reale, otterrai molto, molto di più.
Certo, la banca potrebbe teoricamente disporre di un sistema sofisticato per rilevare e difendersi da attacchi come questo. Forse sì forse no. Come cliente, non ho modo di saperlo, e di certo non mi fido di un'organizzazione che non può nemmeno ottenere la politica della password per fare qualcosa di più avanzato.
Un attacco offline è irrilevante. Se le password sono fuori, lo sono anche i dati sensibili che stanno proteggendo.
Forse, forse no. Ci sono un sacco di discariche di dati che circolano su Internet con dati incompleti. Affermare che le password saranno per sempre incollate alla cronologia del tuo account fa alcune ipotesi molto forti su come è avvenuta la violazione e su come sono stati gestiti i dati successivamente.
Il PIN della carta di credito ha solo quattro cifre, quindi cosa importa comunque?
Il PIN della carta di credito è un fattore debole in un'autenticazione a due fattori. L'altro fattore - il possesso della carta - rende il sistema più strong.
Questa password è un fattore debole ed è anche l'unico fattore che protegge le informazioni finanziarie.
Conclusione
Per essere chiari, non sto dicendo che sarebbe impossibile per una banca rendere questo sistema sicuro con altri mezzi. Non sto dicendo che un attacco di successo sull'account di qualcuno sia probabile, ancor meno sul tuo specifico. Quello che sto dicendo è che questo non è "abbastanza sicuro" per una banca.
La banca ha già attraversato il problema di impostare l'autenticazione a due fattori per i trasferimenti finanziari. Perché non utilizzarlo solo per i login?
La banca ha (si spera) già passato attraverso il problema di eseguire l'hashing di una password e archiviarla in un database. Perché non rimuovere solo la parte del codice che limita la password a sei cifre?