Come scegliere tra la derivazione della password o la crittografia?

3

Supponiamo che tu utilizzi un gestore di password con tutte le possibili funzionalità dei moderni gestori di password: crittografia con una chiave derivata dalla tua password principale, auto-riempimento, cloud o archiviazione locale, estensione browser, applicazioni web e locali, generatore di password casuale, password auto-cambio, ecc.

Ora, supponiamo che tu abbia la scelta tra queste due opzioni:

  • memorizzare una password complessa generata in modo casuale direttamente nel deposito crittografato ( KeePass -like, con la possibilità di scegliere per quanto tempo il vault può rimanere in chiaro, o quando chiedere nuovamente la password principale: prima di ogni utilizzo, ecc.)
  • memorizza solo il pattern utilizzato per ricavare una password complessa dalla tua password principale ( LessPass -like, con la possibilità di scegliere quando viene derivata la password : subito dopo la decodifica, prima di ogni utilizzo, ecc.)

Infine, supponiamo che i numeri tondi usati dalle funzioni di derivazione (per la chiave di crittografia e la password complessa) siano abbastanza alti perché la derivazione impieghi circa un secondo sulla maggior parte dei dispositivi.

Come scegliere tra questi due?
Quali sono i loro pro e contro?
Quale è il più sicuro in tal caso (riguardante sia la crittografia che l'usabilità)?
Ci sono altri parametri da prendere in considerazione per fare questa scelta (funzionalità, closed o open source, ecc.)?

    
posta CidTori 13.11.2018 - 12:32
fonte

2 risposte

7

Ho usato per molto tempo gestori di password deterministiche (pwdhash, ciò che chiamate derivazione di password) e non consiglierei a nessuno di usare un gestore di password deterministico. Ho anche scritto un post sul blog a questo proposito, ma riassumerò i miei principali problemi qui:

  • È difficile determinare l'account per cui ottenere la password. Forse vuoi usare la stessa password per wikipedia.org e per wiktionary.org, o live.com e microsoft.com. Determinare l'account da utilizzare in base al nome del dominio è piuttosto difficile.
  • È difficile conformarsi ai requisiti della password. Alcuni siti non consentono password di 20 caratteri e alcuni siti richiedono che la tua password sia di 20 caratteri. Come gestirà la tua funzione di derivazione?
  • È difficile cambiare la funzione di derivazione. Una volta che si utilizza la funzione di derivazione, si dipende da essa per tutte le password. Non è possibile aumentare la complessità o aumentare la lunghezza delle password derivate o altro, perché non è possibile accedere più a tutti i siti.
  • Se utilizzi un sito per ricavare la password, ad esempio lesspass.com o pwdhash.com , fornisci a quel sito la tua password principale ogni volta e quel sito genera la password del tuo account. Questo crea un enorme singolo punto di errore. Se quel sito è compromesso tutti i tuoi account sono compromessi.

Il "vantaggio" principale è che un gestore di password deterministico non mantiene lo stato. Tuttavia, diventa sempre più facile archiviare lo stato da qualche parte su Internet, in un file in Dropbox o tramite un servizio cloud.

    
risposta data 13.11.2018 - 14:41
fonte
1

Non ci sono vantaggi pratici nell'usare il gestore delle chiavi basato sulla funzione derivata.

Se non ci si può fidare del vault per usare correttamente AES e PBKDF2 per proteggere un database di password, non ci si può fidare di esso per proteggere anche i parametri dell'algoritmo di derivazione. Non vi è alcuna differenza di sicurezza nella memorizzazione di una password principale o di un algoritmo di derivazione (presupponendo ovviamente un gestore di chiavi progettato correttamente).

Diversi siti e applicazioni hanno esigenze reciprocamente differenti, come la lunghezza della password, i requisiti dei caratteri speciali, ecc., quindi ogni sito ha ancora bisogno di informazioni extra memorizzate. Potrebbe non essere dati segreti, ma deve ancora essere gestito in entrambi i sistemi.

I criteri di rotazione della password variano e possono essere un problema (o almeno richiedono ancora più informazioni memorizzate per sito). Se si utilizzano più client (laptop e telefoni cellulari, ad esempio), è comunque necessario sincronizzarli dati aggiuntivi proprio come si farebbe con una password memorizzata.

Un sistema di derivazione non può memorizzare password assegnate. Se gestisci sistemi esterni come un gestore di password aziendale, il responsabile esterno potrebbe essere responsabile della rotazione e della generazione di nuove password.

Il ritardo per-key che hai menzionato per la funzione di derivazione non ha molto senso. Un gestore di password utilizza un algoritmo come PBKDF2 per impedire di indovinare la password principale alla decrittografia iniziale della chiave master; ogni password decodificata dopo richiede microsecondi. Si noti che lo stesso ritardo potrebbe essere aggiunto a un gestore di password tradizionale. Tuttavia, non c'è alcun vantaggio nel rallentare il tuo sistema quando non ha alcun impatto sugli aggressori.

Le funzioni di derivazione sono state popolari con gli umani perché possono essere memorizzate: è facile capire nella tua testa che la tua password per Google è Cid123! @ # googlE, ecc. Ma un computer moderno può altrettanto facilmente generare e memorizzare un stringa casuale di alta qualità per ogni sito. In questa età di 64 GB con chip flash in telefoni cellulari e terabyte di storage nei computer, la dozzina di megabyte di storage richiesti per migliaia di password di siti Web non è un problema pratico. Inoltre, con lo storage basato su cloud e la copertura di dati cellulari ubiquitari, la condivisione di password su più dispositivi non è un problema.

    
risposta data 14.11.2018 - 07:34
fonte