Quanto è sicuro l'SRP che Blizzard usa per proteggere le password?

13

Blizzard ha recentemente annunciato che la sua rete è stata compromessa , ma assicurano agli utenti nella loro dichiarazione che il le informazioni sulla password a cui gli hacker hanno avuto accesso sono state salvate in modo sicuro:

We also know that cryptographically scrambled versions of Battle.net passwords (not actual passwords) for players on North American servers were taken. We use Secure Remote Password protocol (SRP) to protect these passwords, which is designed to make it extremely difficult to extract the actual password, and also means that each password would have to be deciphered individually.

Ho cercato SRP e sembra essere un metodo per scambiare le password in modo sicuro. Ho familiarità con l'utilizzo degli hash per memorizzare le password, ma non sono riuscito a scoprire come l'SRP Blizzard utilizza il confronto con altri metodi comuni di password di hashing come PKBDF2, bcrypt o scrypt?

Quanto sarebbe difficile per bruteforce (o usare un attacco dizionario) contro le password protette da SRP?

    
posta Mad Scientist 10.08.2012 - 09:25
fonte

4 risposte

11

SRP è progettato per proteggere la trasmissione della password dagli attacchi brute-force, anche nel caso in cui la password possa essere facilmente rinforzata.

Tuttavia, se alcuni server di autenticazione di Blizzard sono stati compromessi, i relativi vettori di attacco sono diversi. Oltre allo schema di archiviazione, l'avversario può anche ascoltare le transazioni in corso e, in parallelo, memorizzare i segreti temporanei DH generati dai server SRP. Quest'ultimo attacco è un po 'complicato e richiede una preparazione approfondita da parte degli aggressori, tuttavia, sicuramente verrebbe a mancare qualsiasi login utilizzato per autenticare il sistema compromesso.

Il vettore di attacco più tradizionale sono i valori di verifica. In SRP, i valori del verificatore sul lato server non sono gli hash tradizionali ma i risultati di un esponenziamento, come in Diffie-Hellmann.

A mia conoscenza non esiste un'analisi dettagliata di SRP vs. PBKDF2 o bcrypt. Da qualche parte sul sito SRP (srp.stanford.edu) Una volta ho visto una nota che le persone hanno implementato un bruteforcer e hanno scoperto che lo sforzo di bruteforcing richiesto era simile alla tradizionale bruteforcing degli hash.

Questo è come previsto: è noto che tali esponenziamenti sono difficili da invertire, proprio come una funzione hash. Supponendo che Blizzard abbia implementato un protocollo standardizzato come RFC2945 e non abbia tentato di inventare i dettagli da soli, questi valori di verifica conterranno anche un sale per rendere le tabelle arcobaleno poco pratiche.

La principale differenza è quindi nello sforzo di forzare la personalizzazione dei valori di verifica individuali. Qui, sistemi come bcrypt / PBKDF2 impiegano un fattore di scala per aumentare lo sforzo computazionale per ogni ipotesi di password. Gli schemi SRP che conosco non supportano esplicitamente questo. L'esponenziazione è in genere un calcolo un po 'più costoso rispetto a un hash, ma dipende dal gruppo (modulo) in cui stai operando. Penso che aumentare il modulo del valore di verifica in SRP sia facilmente possibile, ma aumenterà anche lo sforzo di calcolo per altri 2 esponenziamenti per peer che devono essere eseguiti in ogni esecuzione del protocollo.

Aggiornamento: guardando ancora una volta l'RFC2945, la password e il sale vengono prima sottoposti a hash e quindi esponenziati. Sarebbe facile usare PBKDF2 qui invece di limitarsi a implementare un fattore di scala per lo sforzo bruteforcing senza influire molto sul resto del protocollo. Inoltre, anche quando è stato scelto un esponente N piccolo / non idoneo, lo schema è ancora sicuro quanto una semplice autenticazione basata su challenge-response.

Nel complesso, Blizzard è probabilmente un po 'fortunato dato che il loro tipo di memorizzazione pw è molto raro e gli agenti brute appropriati non sono comunemente disponibili. Tuttavia, per un determinato attaccante il modo SRP di memorizzare i segreti non è più sicuro (forse un po 'meno sicuro) rispetto all'approccio allo stato dell'arte con un fattore di scalabilità decente anti-bruteforce. Detto questo, mi congratulo con Blizzard per l'utilizzo di una crittografia avanzata per la loro autenticazione con password, dal momento che la bruteforcing online è in genere molto più problematica.

    
risposta data 10.08.2012 - 11:00
fonte
5

Potresti trovare questa informazione: link

In breve, l'implementazione di SRP da parte di Blizzard usa SHA1 come hash, e c'è anche un'operazione di modexp, che è la parte 'slow'. Estrapolando da un white paper Intel , una modexp a 256 bit verrebbe eseguita a circa 400.000 operazioni / sec in un i7-2600. Sulla base di test effettivi con un'istanza c1.xlarge su EC2 ($ 0,66 / ora) è possibile controllare circa 100 miliardi di password per $ 100.

Poiché le password sono salate, ciascuna password deve essere attaccata individualmente. Quindi è possibile testare le prime 1.000.000 di password in un dizionario contro 100.000 utenti per $ 100 se il modulo è a 256 bit. Un modulo a 1024 bit aumenta il costo di 64x.

EDIT - Apparentemente, potrebbe essere possibile ridurre la complessità di un attacco fino a nient'altro che SHA1 salato: link . Questo non si applica a un modulo a 1024 bit (come in Battle.net v2).

    
risposta data 11.08.2012 - 01:02
fonte
1

SRP è un PAKE protocollo. È totalmente separato dall'hash utilizzato. SRP usa una funzione di hash come primitiva crittografica. È necessario utilizzare un vero hash, ad esempio PBKDF2 o bcrypt, per implementare questa primitiva in quanto non è nota alcuna funzione di hash perfetta. Poiché la password viene sempre sottoposta a hash e salata sia in transito che in archivio, essendo questo un requisito di SRP, l'elemento più debole è la password salata con hash. Ciò ovviamente presuppone che non ci siano difetti nel protocollo stesso, cioè cattiva scelta di numeri primi, numeri casuali o un attacco pass-the-hash.

    
risposta data 10.08.2012 - 12:29
fonte
0

Per Warcraft 3, il primo gioco Blizzard ha introdotto SRP (i vecchi giochi utilizzavano challenge-responce), non è affatto sicuro - devi solo trovare logarit discreto nel campo 256 bit prime per ottenere hash password x , che è sufficiente per accedere, oppure puoi usarlo per bruteforce password ad alta velocità.

The fundamental question remained, is this a practical attack vector, and how bad is it really? Algorithms which can efficiently perform discrete logarithms on large values are a subject of significant research, however, there aren’t exactly ‘script kiddie’ tools readily available to perform the computation. GDLOG is ‘an open source implementation of the General Number Field Sieve algorithm for discrete logarithm problem’. It’s actually overkill to use GNFS to compute the discrete log of a 256-bit number, and it took Sam only two hours on a single machine to complete the initial precomputation. At that point, individual discrete logs which recover x from v take variable time, “ranging from 15 seconds to several minutes depending on our luck.” Sam noted that there is significant potential to improve the performance here.

Per i giochi Battle.Net 2.0 come WOW e SC2, viene usato 1024 bit prime, il logaritmo discreto per quella dimensione dovrebbe essere irrisolvibile ora, ma bruteforce è ancora possibile. Ricorda che gli hash e i verificatori sono salati.

    
risposta data 22.05.2013 - 22:18
fonte

Leggi altre domande sui tag