Memorizzazione password Hash in chiaro

3

Ho fatto qualche ricerca sull'hash password / salting. Ho capito che il sale non ha bisogno di essere segreto. Ma non ho letto nulla sull'hash che deve essere segreto.

Quanto oscurato deve essere il vero hash?

Supponiamo di avere questa semplice tabella di database:

utente
- nome utente
- sale
- hash

Scenario
Ho un database online ben protetto / nascosto. Posso memorizzare il sale e l'hash senza alcuna crittografia aggiuntiva, ecc ... Ma cosa succede se alcuni utenti di questo database sono archiviati in un database SQLite Android locale per l'accesso offline. La tabella ha lo stesso aspetto, ma ora il sale e l'hash sono protetti solo da un dispositivo non rootato ( link ). Il database SQLite reale può essere letto facilmente se qualcuno ha fatto una copia del file nascosto. È ancora sicuro archiviare il sale / hash dell'utente in questo database SQLite così com'è (ogni utente ha un sale diverso)?

    
posta Programmer001 25.07.2016 - 21:34
fonte

2 risposte

2

George ha una buona risposta con alcune ottime informazioni su questo, comunque una cosa a cui devi pensare tutto questo è la tua esperienza utente e attacco al teatro. Se è sul telefono di qualcuno, chi sarebbe quello a ottenere quei dati?

  • Locale: una persona con accesso fisico a quel dispositivo. Con l'accesso fisico al dispositivo possono aspettare di vedere la memoria per qualsiasi tipo di crittografia da caricare in memoria e tirare l'hash in quel modo. In tal caso hanno l'hash. Questo è uno dei problemi con l'accesso fisico al dispositivo.

  • exploit dati remoto: se tutto ciò che hanno è una copia del file che contiene l'hash (possibilmente attraverso un dump di DB), purché sia crittografato bene sopra hash ci vorrà molto tempo prima che possano decifrare l'hash e iniziare a provare a rimuovere la password da quell'hash.

Ci dovrebbero essere diversi modi per farlo. Scegli quello che si adatta meglio agli scenari di attacco di cui sei preoccupato e buona fortuna a tenerlo (il segreto di crittografia e l'hash) sicuro.

    
risposta data 25.07.2016 - 22:11
fonte
1

Supporrò che tu stia usando un hash di password strong (lento) come BCrypt con un fattore di lavoro sufficientemente alto. Se si utilizza un hash generale (veloce), il vantaggio di sicurezza è molto ridotto.

Nella maggior parte dei casi l'Hash dovrebbe essere tenuto segreto.

  • Potrebbe esserci una vulnerabilità scoperta qualche volta in futuro.
  • L'hash è un moltiplicatore della forza della password. Se la password è debole, l'hash risultante sarà facilmente crackato subito dopo il furto del valore hash.

Tuttavia, se hai Requisiti di sicurezza password sufficientemente ben orchestrati , ci sono alcuni casi in cui ha senso memorizzare una password localmente.

Ad esempio, il Chromebook di Google utilizza questa tecnica, consentendo a un utente di utilizzare la stessa password per sbloccare un Chromebook come account Google online.

Tuttavia, sarebbe più sicuro utilizzare una password separata per questo scopo. In questo modo, se la password del dispositivo mobile viene compromessa, l'account online è ancora sicuro e viceversa.

Per i Chromebook, Google deve aver deciso che il rapporto sicurezza-prezzo è accettabile per il suo pubblico.

Se decidi di archiviare l'hash su un dispositivo mobile Android, devi andare avanti e iniziare una nuova domanda per assicurarti di memorizzarla nella posizione più sicura disponibile. Android ha più posizioni di archiviazione possibili e impostazioni di sicurezza delle app disponibili.

E, soprattutto, salva il minor numero possibile di hash sul dispositivo mobile. Preferibilmente, devi memorizzare l'unico hash che corrisponde alla password del proprietario del dispositivo.

    
risposta data 25.07.2016 - 21:56
fonte

Leggi altre domande sui tag