Protezione passphrase su DB

1

Ho memorizzato le chiavi di crittografia nel database che sono crittografate con una passphrase. Per decrittografarlo, il proprietario / utente deve effettuare il login utilizzando la sua passphrase e verrà utilizzato per decrittografare le chiavi crittografate sul DB. La mia preoccupazione è, per verificare se la passphrase inserita dell'utente è quella giusta, dovrei memorizzare una versione hash della sua passphrase. Ci saranno problemi di sicurezza o sarà sufficiente fermare la maggior parte degli attacchi di base. Cordiali saluti, il sistema avrà solo 2-3 utenti, quindi sono davvero preoccupato che possano eseguire la forza bruta della passphrase con hash memorizzata.

    
posta Eldon Hipolito 09.04.2017 - 10:47
fonte

2 risposte

1

Possiamo utilizzare il MAC (Message Authentication Code) piuttosto che archiviare l'hash della passphrase nel DB.

Generazione MAC

Una volta crittografata la chiave, viene generato il MAC. Seguiamo il meccanismo Encrypt-then-MAC .

Puoi generare un tag = MAC(m, k) dove

  • m è la chiave crittografata
  • k è la chiave che utilizzi per crittografare la chiave dell'utente (passphrase)

Questo tag viene quindi memorizzato nel DB invece dell'hash della passphrase.

Verifica passphrase

Per verificare se la passphrase è corretta o meno, possiamo facilmente verificarla generando nuovamente il MAC in un modo simile, con la chiave come passphrase dell'utente. Ora, il tag generato e il tag memorizzato nel DB vengono controllati, se sono uguali.

Se uguale, è una passphrase valida e la decrittografia della chiave crittografata può procedere. Altrimenti, possiamo inviare un messaggio all'utente che la passphrase è errata.

Algoritmi MAC

Puoi usare HMAC (MAC basato su hash) da OpenSSL per la gestione delle attività di generazione di tag MAC. Apposizioni appropriate sarebbero disponibili per qualsiasi lingua utilizzata nella tua app.

modifica: assicurati che un algoritmo di hash strong come SHA256 o SHA512 sia scelto per la generazione HMAC (e non MD5 o SHA1 come mostrato negli esempi nel link precedente)

    
risposta data 14.04.2017 - 18:50
fonte
-1

Se questo è implementato come un servizio piuttosto un file accessibile agli utenti, il client non ha bisogno di vedere la password con hash: la verifica viene eseguita sul server. E puoi monitorare e rispondere a più tentativi di accesso falliti. Quindi ci sono pochi rischi dagli utenti.

    
risposta data 09.04.2017 - 23:11
fonte