it-swarm.dev

In che modo alcuni siti (ad es. Banche online) richiedono solo caratteri specifici da una password senza memorizzarli come testo normale?

Ho pensato Come può un sistema imporre un numero minimo di caratteri modificati ... risponderebbe alla mia domanda, ma sembra che questo sia un caso diverso.

Quando accedo al mio conto bancario online, sono richiesto tre cifre casuali da un PIN di quattro cifre e tre caratteri casuali dalla mia password (lunga, casuale).

Dalla mia comprensione limitata di tutto ciò, la banca non è in grado di creare l'hash della mia password da questo login perché non hanno la mia intera password. Quindi stanno memorizzando la mia password in chiaro e confrontando i singoli caratteri? È un discreto equilibrio tra convenienza/sicurezza?

Spinto a porre questa domanda da questo post del blog: Chi se ne frega della sicurezza della password? NatWest no

66
alexmuller

Mentre non so esplicitamente come le banche gestiscono questo requisito, un processo alternativo a quello che @rakhi menziona sarebbe quello di usare una crittografia reversibile HSM .

L'idea è che la password completa sarebbe archiviata nel database crittografato usando un codice simmetrico (ad es. AES). Quindi, quando i caratteri della password vengono passati all'applicazione, vengono inseriti nell'HSM insieme alla password crittografata.

L'HSM potrebbe quindi decrittografare la password e confermare che i 3 caratteri sono come previsto, restituendo una risposta pass/fail all'applicazione. Quindi la password non viene mai mantenuta in chiaro (a parte l'HSM che è considerata sicura).

Ciò si collegherebbe al modo in cui PIN può essere gestita dalle reti ATM (ad es. Crittografia simmetrica e HSM)

30
Rory McCune

Ogni volta che si verifica un caso in cui è necessario conoscere qualcosa sulla propria password diverso dall'hash della password completa, si può presumere che la password non sia hash. Sebbene sia stato menzionato PCI-DSS, non sono a conoscenza di regolamenti che si applichino alle informazioni sulla password di crittografia o hashing delle banche. PCI-DSS non copre i dati del tuo conto bancario, incluso l'accesso con il tuo PIN o una sua variante.

Se sono validi, la password viene archiviata utilizzando la crittografia. Se non sono così buoni, potrebbero davvero essere memorizzati in testo normale.

Ammetto che preferisco il compromesso qui. L'intero database di password potrebbe essere esposto a un rischio maggiore di attacco se è compromesso, ma io contrasterei che la sicurezza delle banche dovrebbe essere alla fine. Se si sospettasse un compromesso del database, ogni cosa dovrebbe essere cambiata, sia l'hash che la crittografia comunque. Entrambe le istanze Con questo particolare metodo, ci vuole molto più tempo e un maggior grado di complessità per un attaccante per ottenere abbastanza informazioni utili per effettuare un attacco con un keylogger.

Qualcosa di tangenzialmente correlato: http://projecteuler.net/index.php?section=problems&id=79

17
Jeff Ferland

Lo schema di NatWest mi sembra di dubbia utilità. Nello schema di NatWest, un attacco di phishing può probabilmente rubare l'intera PIN e tutta o la maggior parte della password. Ecco come funzionerebbe l'attacco di phishing.

  1. Il sito di phishing presenta una schermata di accesso falsa, che richiede 3 cifre del PIN e 3 caratteri della password.

  2. L'utente digiterebbe la risposta.

  3. Il sito di phishing ora presentava una risposta indicando che la voce era errata e chiedeva nuovamente all'utente.

  4. Molti utenti probabilmente presumono di aver inserito qualcosa di sbagliato e riprovano.

Se il phisher è intelligente, il secondo prompt dal sito di phishing chiederà un diverso set di cifre e caratteri. Se l'utente prova una seconda volta, il sito di phishing può apprendere tutte e 4 le cifre del PIN e 6 caratteri della password dell'utente. (Nota che NatWest richiede agli utenti di scegliere una password contenente 6- 8 caratteri, quindi è garantito che 6 caratteri della password siano tutti o quasi.) A quel punto, il gioco è finito.

Di conseguenza, non mi è chiaro che lo schema di NatWest ti compri qualcosa.

13
D.W.

In un domanda simile , un commento di @captaincomic è collegato a questo articolo: Password parziali - Come? (Da Archive.org) Spiega come consentire questa funzionalità senza memorizzare la password in una forma recuperabile o eseguire l'hashing di ogni personaggio separatamente - usando lo schema di condivisione segreta di Shamir.

È solo tangenzialmente correlato, ma David Aspinall (Università di Edimburgo) e Mike Just (Glasgow Caledonian University) hanno pubblicato un documento sulle password parziali nel 2013: "Give Me Letters 2, 3 and 6!": Implementazioni parziali di password e attacchi .

Il loro documento esamina gli attacchi online per i quali il meccanismo di archiviazione back-end è irrilevante, ma fa un'osservazione passeggera che è pertinente alla tua domanda:

Per supportare il protocollo parziale, l'implementazione dovrà archiviare il testo in chiaro per la password o escogitare un meccanismo per eseguire controlli unidirezionali su tutte le combinazioni che potrebbero essere interrogate (che può essere un numero elevato per password lunghe). Non esaminiamo questa modalità di attacco qui.

6
sampablokuper

No, ciò che stanno facendo è eseguire l'hashing di ciascun personaggio e archiviarlo o archiviare la password in modo chiaro in un dispositivo sicuro, ad es. HSM.

Non è un cattivo approccio; la banca richiede all'utente di inserire un numero di caratteri (ad es. HSBC è 3 da posizioni casuali). Significa che se un trojan, un key logger o un sito di phishing ha catturato quei 3 caratteri, non hanno la password completa.

Inoltre, consente alla banca di utilizzare la password parziale per autenticare gli utenti al telefono, ecc. Senza fare affidamento su domande segrete o una password diversa, sempre senza che la persona del call center conosca la password completa

Alcuni problemi che è probabilmente il motivo per cui non è più ampiamente utilizzato:

  • Il principale è che non si desidera archiviare la password in chiaro (in realtà regolamenti come PCI-DSS lo vietano). Quindi l'approccio è quello di creare un hash unidirezionale della password e memorizzarlo. Quando l'utente immette la password, questa viene hash e confrontata con l'hash memorizzata, se corrispondono l'utente viene autenticato. Con una password parziale devi archiviare la password con crittografia reversibile che non è la migliore pratica o memorizzare un gran numero di hash, ad es. per HSBC con un compleanno più ogni carattere della password richiede un hash separato. Devi anche imporre una lunghezza massima della password in modo da poter allocare i campi nel database per archiviare tutti gli hash (anche se ora ci sono probabilmente tecnologie di database e applicazioni più intelligenti che potrebbero aggirare questo)

  • Incoraggia gli utenti a selezionare password deboli, ad es. se ho una password complessa di 8 caratteri: tpEz% e2S. Cercare di ricordare quanto sia difficile il 2 °, 4 ° e 5 ° carattere, il che incoraggia gli utenti a selezionare una semplice parola del dizionario.

  • Inoltre, se non ci sono funzionalità di tipo blocco account, è esponenzialmente più facile indovinare o forzare 3 caratteri di forza bruta rispetto a 8 caratteri.

  • La fiducia che non si conosca la password completa potrebbe essere fuori luogo, ad es. se la password è Fulham e conosci F, l, h, potresti probabilmente fare un'ipotesi decente sulla password completa

  • Un sito di phishing che ha semplicemente richiesto il 1 °, 3 °, 5 ° poi ha detto che la password non è corretta e che è cambiata per chiedere il 2 °, 4 °, 6 ° potrebbe anche ottenere la password completa poiché l'utente probabilmente la inserirà prima di pensarci due volte

  • Dal punto di vista della praticità dell'utente significa che non possono usare i browser per ricordare la password o un gestore password come Lastpass o 1Password

La maggior parte delle banche si sta allontanando dal fare affidamento su un nome utente e una password, ad es. HSBC offre un token RSA per i clienti aziendali, Barclays ha un lettore di smart card EMV, quasi tutti usano la tecnologia di rilevamento come l'autenticazione adattiva RSA per stabilire una base di browser, posizione, profilo di utilizzo, velocità ecc. Per l'autenticazione passiva e il rilevamento di usi non autorizzati.

2
Rakkhi