Implementazione della password remota sicura: costruzione del verificatore

7

Il protocollo SRP come descritto in RFC 2945 genera il verificatore della password:

x = SHA(<salt> | SHA(<username> | ":" | <raw password>))'
v = g^x % N

Ho tre domande: perché usare SHA due volte, perché coinvolgere il nome utente e perché aggiungere un separatore? Questi aggiungono qualsiasi sicurezza pratica oltre x = SHA(<salt> | <raw password>) ?

    
posta jnm2 16.06.2011 - 00:07
fonte

2 risposte

8

SHA-1 non è una funzione di hash ideale (in realtà, nemmeno le funzioni SHA-2). La doppia invocazione di hash nasconde alcune delle carenze interne di SHA-1. Questo è simile a HMAC , che usa anche una doppia invocazione hash per quasi gli stessi motivi. Più in dettaglio, vogliamo che la funzione che mappa lo username-and-password in x (funzione selezionata da salt in una famiglia di funzioni) si comporti come un oracolo casuale e le normali proprietà di sicurezza di le funzioni di hash (resistenza di collisione, resistenza di preimage) non sono sufficienti a garantire tale comportamento.

Il nome utente è coinvolto in modo da rendere più semplici le prove di sicurezza: consente all'analisi di sicurezza di concentrarsi su un singolo utente, senza dover tenere conto di ciò che accade quando un determinato server accetta più utenti, ciascuno con la propria password. Il separatore partecipa allo stesso obiettivo: in caso contrario, "john" con la password "ny67dtzo" e "johnny" con la password "67dtzo" vivrebbero nello stesso mondo, per quanto riguarda la sicurezza.

    
risposta data 16.06.2011 - 14:55
fonte
2

Il separatore è una buona pratica di progettazione crittografica, ogni volta che si alimentano più stringhe in una funzione hash. Aiuta a prevenire la confusione tra, ad es., Username bob , password bydesign e username bobby , password design .

Il principio generale di progettazione è "Be attento quando concatenare più stringhe, prima dell'ashing ". Puoi trovare una spiegazione più dettagliata a questo link. Le violazioni di questo principio di progettazione hanno portato a difetti in passato, quindi è buona norma seguire sempre il principio di progettazione, anche quando non si può pensare ad un attacco evidente.

    
risposta data 16.06.2011 - 19:52
fonte

Leggi altre domande sui tag