Condivisione file applicazione Web - best practice per l'inserimento del codice PIN della cartella

0

Sto sviluppando un'applicazione web per la condivisione interna di file e uno dei requisiti è avere cartelle protette con codice PIN.

Quello che ho scoperto ora è una struttura simile a una cartella con il seguente:

  • Cartella senza immissione del codice PIN - solo Apri pulsante che passa direttamente alla cartella
  • Cartella con immissione del codice PIN - campo di testo con il pulsante Verifica che inoltra solo quando il PIN è corretto

Ciò di cui non sono sicuro è quale sarebbe la migliore pratica nel caso della cartella con codice PIN in termini di verifica del PIN e di inoltro dell'utente alla cartella. Al momento dispongo di un servizio Web al quale inoltro il PIN, l'ID della cartella e l'ID utente, il tutto in formato testo chiaro e sto aspettando la risposta al servizio che può essere vera o falsa.

Suppongo che questa non sia la migliore pratica in quanto l'utente intelligente ma malizioso potrebbe scorrere tutte le possibili combinazioni del codice PIN e aspettare quale gli darà true come risposta. Devo aggiungere che solo gli utenti autenticati possono accedere alle cartelle, quindi nel peggiore dei casi saprei con chi è stata effettuata la violazione.

Cosa dovrei fare per migliorare la sicurezza e c'è qualcosa che potrei fare meglio?

    
posta wegelagerer 22.07.2015 - 10:28
fonte

1 risposta

1

I'm assuming that this isn't the best practice as the smart but naughty user could loop through all the possible combinations of the PIN code and wait which one will give him true as a response.

Questo è chiamato un attacco "forza bruta". In linea di principio, è impossibile prevenire attacchi di forza bruta. Semplicemente non c'è modo di impostare uno schema di password che non permetta alle persone di provare a inserire password casuali e vedere cosa succede. Ma puoi rendere incredibilmente difficile per qualcuno capire qual è la password di qualcun altro.

Questa risposta Security.SE è l'ultima introduzione su come memorizzare le password utente e questi numeri PIN sono essenzialmente password per cartella. Cercherò di fornirti un breve riepilogo dei punti chiave qui.

Quando parliamo di memorizzare le password degli utenti in un modo "crittograficamente sicuro", gli obiettivi che solitamente abbiamo in mente sono:

  1. Esecuzione di un attacco di forza bruta il più difficile possibile senza causare inutili inconvenienti agli utenti legittimi.
  2. Assicurandosi che non ci sia una "scorciatoia", ovvero nessun attacco più efficace della forza bruta.

Non so fino a che punto si vuole andare con sicurezza per i PIN per cartella, ma le misure concrete che si possono prendere in pratica sono:

  • Se un utente inserisce troppi numeri PIN non validi in una riga, non consentire ulteriori tentativi per un po '. Questo è un modo molto semplice per prevenire i più semplici attacchi di forza bruta.
  • Richiedi numeri PIN più lunghi. Ovviamente, se hai solo PIN a quattro cifre, semplicemente non ci sono molti numeri diversi da provare, ed è improbabile che il resto delle misure su questo elenco possa essere di grande aiuto.
  • Quindi, non memorizzare i numeri PIN effettivi ovunque. Invece, ogni volta che l'utente inserisce un PIN, eseguirlo attraverso una funzione di hashing della password provata e autentica (PBKDF2, bcrypt o scrypt) sul server e memorizzare solo l'hash. Se qualcuno ottiene l'accesso al tuo database, questo assicura che non possono semplicemente cercare i numeri PIN di tutti, o facilmente ricavare i numeri PIN dagli hash del PIN.
  • Quindi, configurare la funzione di hashing in modo che sia il più lento possibile senza creare problemi agli utenti. L'idea è che provare una singola password dovrebbe impiegare mezzo secondo anziché un millisecondo. Quindi, se qualcuno riesce a scaricare il tuo database e prova un attacco di forza bruta direttamente sui dati (dove non hai modo di bloccarli dopo troppi guasti), impiegherà un tempo incredibilmente lungo per provare ogni password.
  • Infine, aggiungi "sali" nel processo per combattere le tavole arcobaleno. Dubito strongmente che tu voglia arrivare così lontano, quindi non mi preoccuperò di spiegarlo.

Ho il sospetto che per i numeri PIN, i primi due passaggi potrebbero essere sufficienti per te, ma il resto migliorerebbe ancora la sicurezza. E per le password degli account degli utenti reali, ti preghiamo di andare fino in fondo.

Naturalmente, questo riguarda solo le minacce più comuni a cui vogliamo proteggere le password. Per esempio, non fa nulla sull'uomo negli attacchi di mezzo o nell'ingegneria sociale. Ma probabilmente copre i casi di cui sei preoccupato.

    
risposta data 22.07.2015 - 11:50
fonte