memorizzando in modo sicuro le password che possono essere recuperate

0

Sto cercando di creare un'applicazione web in grado di memorizzare password di altri servizi come Facebook, Gmail, ecc.

Queste password possono essere successivamente recuperate e mostrate all'utente. Questa deve essere un'applicazione web e deve funzionare con browser moderni. L'applicazione non può avere il concetto di una password principale che può essere immessa dall'utente. Deve funzionare senza alcun input da parte dell'utente. Pertanto, la crittografia e decrittografia locale sul dispositivo con la password principale potrebbe non essere un'opzione, ad esempio la modalità con cui i servizi riportati di seguito lo eseguono.

C'è un modo sicuro per farlo con la crittografia come AES. Se il server è compromesso per esempio c'è un modo per proteggere le chiavi?

MODIFICA: nell'app l'utente ha l'autenticazione. Quindi l'utente può accedere e quindi inserire le sue credenziali su altre piattaforme. Ma questa password principale non può essere utilizzata per crittografare le chiavi perché nel sistema l'utente può condividere la password con altri utenti di questa scelta. In tal caso, l'altro utente può vedere la password senza la password principale. Spero che chiarisca il requisito

    
posta Prasanth 28.08.2015 - 17:45
fonte

3 risposte

1

In generale, memorizzare le password in un formato reversibile è una cattiva idea.

Detto questo, è possibile utilizzare AES, con la password dell'utente come chiave (applicare una politica di password complessa). In questo modo, gli utenti non sarebbero in grado di visualizzare i dati crittografati l'un l'altro, e una compromissione del server non rivelerà la chiave per i dati di tutti senza violare prima gli hash delle password degli utenti.

EDIT: Questo si applica solo se la tua app ha una sorta di autenticazione dell'utente. Se hai solo un'app a cui qualcuno può caricare dati, allora non sarà sicura. Un attacco SQLi non otterrà la chiave se la si mantiene al di fuori dello schema DB, ma un compromesso completo della casella consentirà a un utente malintenzionato di trovare e utilizzare la chiave.

    
risposta data 28.08.2015 - 17:56
fonte
0

È possibile generare una chiave a 128 bit protetta da crittografia e archiviarla nella memoria HTML5 sul browser.

Ciò crittograferebbe i dati senza alcun input da parte dell'utente.

Tuttavia, l'utente dovrebbe utilizzare sempre lo stesso browser e lo stesso computer. Puoi aggiungere l'opzione per esportare il valore, ad es. un'estensione del browser che estrae la chiave nell'archivio HTML5 e la scrive in una posizione locale a scelta dell'utente (ad esempio, una chiavetta USB). È possibile richiedere all'utente una password per crittografare la chiave estratta con, per proteggerla in transito verso un altro browser. Si consiglia di rafforzare questa chiave con bcrypt / pbdkdf2.

Per inviare determinate credenziali ad altri, puoi utilizzare la crittografia a chiave pubblica implementata in JavaScript per crittografare i dati con gli utenti di destinazione chiave pubblica e poi inviarlo a loro usando il tuo sistema.

    
risposta data 30.08.2015 - 16:06
fonte
0

Che ne dici di utilizzare le chiavi di crittografia genitore e figlio? Le password crittografate sono sicuramente la soluzione, ciò che deve essere raggiunto è garantire le chiavi di crittografia in modo tale che solo l'utente legittimo possa decodificare e utilizzare i dati (password qui). Potrebbe essere necessario qualcosa come il modello BYK (Bring Your Own Keys) della gestione delle chiavi di crittografia. Prova una crittografia come soluzione di servizio come SecureDB.

    
risposta data 01.09.2015 - 11:40
fonte

Leggi altre domande sui tag