Qual è la crittografia corretta da utilizzare per un "Portafoglio password", in cui è necessaria la decodifica del segreto?

4

Vorrei creare un "portafoglio di password" condiviso dove crittografo diverse istanze di un nome utente / password e lo memorizzo in una posizione comune.

Non mi aspetto che tutte le coppie chiave / valore abbiano la stessa chiave di crittografia; infatti preferirei che la maggior parte dei nomi utente e delle password fossero crittografati utilizzando una chiave diversa.

Qual è la tecnologia crittografica ideale da utilizzare in questo caso?

    
posta random65537 25.03.2011 - 18:47
fonte

2 risposte

3

Ci sono due semplici modi per farlo.

  1. Il più semplice è avere un portafoglio per individuo. Se sia Alice che Bob dovrebbero poter visualizzare una combinazione di nome utente / password, nessun problema, basta aggiungerlo a entrambi i loro portafogli. Il portafoglio di ogni individuo viene crittografato utilizzando la passphrase utilizzata individualmente per aprire il proprio portafoglio.

    Questo è uno schema molto semplice. Prima di obiettare che è necessario memorizzare più copie di alcune voci, voglio ricordare che lo spazio è economico. La memoria extra richiesta è assolutamente banale.

  2. Ecco una soluzione leggermente più intelligente e leggermente meno semplice. Per ogni combinazione di nome utente / password, si sceglie una nuova chiave simmetrica casuale K. Si cripta il nome utente e la password in K. Quindi, per ogni utente autorizzato a leggere questo nome utente / password, si aggiunge una crittografia di K sotto la passphrase dell'utente. .

    Ad esempio, supponiamo che Alice e Bob siano autorizzati a leggere il nome utente / password "bloggerdude / fye7wi". Supponiamo che la passphrase utilizzata da Alice per aprire il suo portafoglio sia PA, e la passphrase che Bob usa per aprire il suo portafoglio è PB. Quindi puoi memorizzare la seguente voce nel tuo portafoglio:

    Encrypt (K, "bloggerdude / fye7wi"), Encrypt (PA, K), Encrypt (PB, K).

    Non penso che questo abbia dei forti vantaggi rispetto al primo schema, ma ho pensato di parlarne per completezza.

Infine, vorrei menzionare alcune altre considerazioni che dovresti tenere a mente quando progetti il tuo portafoglio:

  • Ti suggerisco di utilizzare un meccanismo per rallentare gli attacchi di dizionario sulle password delle persone. Ad esempio, potresti utilizzare PBKDF o il bcrypt password hash .

  • Usa un sale casuale. Non memorizzare mai alcuna funzione deterministica di una sola password utente; che è vulnerabile ai compromessi della memoria temporale ("tavoli arcobaleno", nel popolare venacolo, sebbene sia più ampio di quello).

  • Potresti considerare di fornire un modo semplice per gli utenti di generare una nuova password complessa, da aggiungere al portafoglio, quando creano un account su un nuovo sito e hanno bisogno di una password per utilizzarlo.

risposta data 26.03.2011 - 07:56
fonte
1

Un'idea basata su slot chiave simili a LUKS :

Ogni persona può avere la sua passphrase che deriva da ciò che chiameremo la chiave della passphrase. Quindi, quando tentano di aprire una sezione, eseguono un'iterazione sugli slot delle chiavi di sezione (di cui può esistere un numero arbitrario) finché non si trova una chiave di passphrase in grado di decodificare la chiave della sezione. Il tasto sezione decrittografa le password in quella sezione.

    
risposta data 25.03.2011 - 19:48
fonte

Leggi altre domande sui tag