Sistema di accesso che utilizza la crittografia autenticata senza memorizzare la password dell'utente

2

Non sono un esperto di sicurezza, quindi potrei fare una domanda stupida, ma lascia che ti descriva cosa sto pensando.

In primo luogo, so che molti siti Web memorizzano le password hash / crittografate che potrebbero essere decifrate con un attacco di forza bruta una volta che la tabella su db viene violato. Gli hacker potrebbero persino essere in grado di utilizzare le password in altri siti Web e accedere ad altre informazioni riservate.

Dato che AES non può essere rotto perché può ' t usiamo solo una logica simile alla crittografia autenticata ? qui è un altro link pertinente. Ad esempio,

  1. Prepara file binario casuale da 1kb come file previsto.
  2. Cifra il file previsto utilizzando una password con hash
  3. Quando un utente accede al sistema, convalida la password decodificando il file crittografato e verificando il file previsto. Se fallisce, rifiuta il log-in. Suppongo che possiamo usare la stessa logica per domande e risposte segrete per reimpostare la password senza memorizzare effettivamente le risposte.

Se i file confidenziali vengono crittografati anche usando la password, suppongo che l'utente non sia in grado di reimpostare la password. C'è un modo per farlo?

Durante la scrittura di questo, ho trovato una domanda simile , ma stanno parlando della decrittazione lato client e sto parlando di lato server (o solo all'interno del sistema locale).

Apprezzerei molto qualsiasi commento e suggerimento.

    
posta niea 10.06.2013 - 14:04
fonte

2 risposte

5

In realtà la tua proposta è solo una variante di una password con hash. Solo in questo caso non è l'hash che viene verificato, blob piuttosto crittografato / decrittografato. Quindi ha in gran parte gli stessi vantaggi e svantaggi delle password hash (ragionevolmente implementate). Vedi PBKDF . Se correttamente progettato - come per es. bcrypt (cf Qualche esperto di sicurezza consiglia bcrypt per l'archiviazione delle password? ): offre una sicurezza piuttosto buona per la maggior parte degli scenari.

La domanda a cui ti stai riferendo ( autenticazione utente decifrando un a caso blob ) effettivamente lo copre piuttosto bene, direi.

Per quanto riguarda i dati dell'utente crittografati dalla password - la modifica della password richiederebbe ovviamente la ricriptazione di qualsiasi cosa criptata con quella vecchia (cioè decrittografare con una vecchia, criptare con una nuova), che è generalmente una cosa costosa da fare . Di solito questo viene aggirato in modo stratificato: i dati stessi vengono crittografati con una chiave generata casualmente, che a sua volta viene crittografata con una derivata da password. Se si decide di cambiare la password, è sufficiente ricodificare la chiave di crittografia reale. Consente inoltre di utilizzare più password per accedere agli stessi dati (un esempio di questo stesso metodo di crittografia dei dati è LUKS ) .

Detto questo, se hai intenzione di creare la tua soluzione di crittografia, leggi La sicurezza della password home-brew del mio sviluppatore è giusta o sbagliata, e perché? prima.

    
risposta data 10.06.2013 - 14:50
fonte
-3

Nello scenario proposto, prendiamo una password P, la cancelliamo per produrre una chiave K che sia H (P), e quindi criptiamo un file usando K.

Il server convalida il login decodificando il file con K.

Il tuo grosso problema qui è che per decifrare il file, il server deve sapere K. Il che significa che il server deve memorizzare P o K in chiaro, e hai perso tutta la complessità computazionale della memorizzazione degli hash delle password.

Ti stai confondendo essendo impreciso con la tua terminologia. Quello che stai descrivendo come password è in realtà solo un seme per la produzione della password di accesso, che è l'hash del tuo seme.

    
risposta data 10.06.2013 - 14:16
fonte

Leggi altre domande sui tag