Password e login verse stringa molto lunga (token)

0

Sto costruendo un sistema di accesso PHP che utilizza inizialmente un nome utente e una password per concedere all'utente un token e usa quel token per concedere all'utente l'accesso al proprio account.

Il mio pensiero originale era quello di forzare l'access_token ad aggiornare spesso, chiudendo la finestra per potenziali attacchi di forza bruta.

Tuttavia, dopo averci pensato, mi rendo conto che access_token potrebbe essere più sicuro di un nome utente e una password ...

Se ho un nome utente di 24 caratteri e una password di 24 caratteri, un token di accesso di 128 caratteri non sarà ancora più sicuro? Supponiamo che tutti usino caratteri alfanumerici.

Modifica

Sembra che l'affermazione sopra fosse un po 'veg. Sarò un po 'più specifico.

Scenari

Esempio A

Ho un sistema con un nome utente alfanumerico di 24 caratteri e una password alfanumerica di 24 caratteri.

Esempio B

Ho un altro sistema con un token alfanumerico di 128 caratteri.

Domanda

Se due computer hanno impostato la forza bruta su entrambi i sistemi, quale sistema molto probabilmente impiegherà più tempo?

    
posta Jacob Henning 07.07.2017 - 22:19
fonte

2 risposte

1

Se dovessi giudicare esclusivamente sulla base della dimensione del personaggio e volessi confrontare un nome utente di 24 caratteri e un sistema di password di 24 caratteri con un sistema di token a 128 caratteri, direi che lo spazio di ricerca sarebbe più grande nel sistema basato su token.

Ovviamente, per forzare brute-force una combinazione nome utente / password, l'utente deve trovare una coppia in due n ^ 24 spazi di ricerca mentre ci sono diversi elementi nello spazio di ricerca token n ^ 128 che saranno validi token . Di conseguenza, può succedere che il tuo sistema forza bruta trovi un token prima di poter trovare una coppia nome utente / password valida. Ma trovare tutte le coppie di username / password valide impiegherà meno tempo rispetto a trovare tutti i token validi.

    
risposta data 08.07.2017 - 01:49
fonte
0

I token sono via per fornire l'accesso a una risorsa senza la necessità di avere una sessione gestita indefinitamente. Ciò consente di ridimensionare i server e limitare l'overhead in modo abbastanza efficace autorizzando un client ad accedere direttamente a una risorsa.

Il tuo nome utente / password è utilizzato per autenticare una persona. Una volta che puoi dimostrare che quella persona è chi dicono di essere, devi emettere il token di accesso.

I token di accesso sono di breve durata e utilizzati per accedere direttamente alle risorse o in termini di base Authorization .

Ci sono anche Aggiorna token , che sono di lunga durata e usati per richiedere un nuovo accesso gettone dopo che scade quello attuale.

In termini di sicurezza quando si discute ciò che si sta tentando di fare, non si tratta di Username / password vs Token. Si tratta di provare a costruire un sistema più stateless (utilizzando i token di accesso) o utilizzando un approccio più tradizionale e gestendo sessioni lunghe.

Inoltre, non è necessario ruotare il proprio sistema di token. JWT (Token Web JSON) implementa già lo standard RFC 7519 per l'accesso basato su token che consiglio.

Potresti avere persone della sicurezza che potrebbero favorire le sessioni basate sulla tradizione, ma personalmente il token based è molto più pragmatico. OAuth ha una breve descrizione qui .

    
risposta data 08.07.2017 - 00:13
fonte

Leggi altre domande sui tag