Il codice di autenticazione OAuth2 è abbastanza lungo da essere sicuro?

1

Recentemente ho iniziato a lavorare con il flusso di autenticazione OAuth2. Nel suo utilizzo, vedo che nel flusso authcode, il client consente a AuthServer di autenticare un utente e quindi restituisce un codice di autenticazione al client, che il client scambierà per un token.

Il codice di autenticazione può essere piccolo: un minimo di 10 cifre esadecimali. È davvero sicuro? Se un client malintenzionato era in grado di sottrarre credenziali legittime ai client, non poteva fare un attacco di impersonificazione semplicemente con la forza bruta tentando molti codici di autenticazione fino a quando non ne trovava uno che funzionava? Si tratta di una debolezza nel flusso dell'autenticazione Oauth2?

O la lunghezza del codice di autenticazione è un dettaglio di implementazione lasciato al server di autenticazione?

    
posta Alejandro703 13.08.2018 - 23:48
fonte

1 risposta

1

Or is the length of the auth code an implementation detail left up to the authentication server?

Sì, il codice di autenticazione è un dettaglio di implementazione lasciato al server di autenticazione, ma la RFC OAuth 2 ha diversi requisiti di progettazione, in particolare:

  • Durata del codice breve.
  • Il codice è utilizzabile una volta. Il tentativo di usarlo più di una volta revoca i token associati a quel codice.

La caratteristica "utilizzabile una sola volta" significa che anche se un utente malintenzionato può ottenere / indovinare il codice, eventuali nuovi invii al server di autenticazione revocheranno (se possibile) i token associati a quel codice. Questo è sia bene che male. Bene perché limita la finestra di opportunità dell'attaccante. Cattivo perché potrebbe essere utilizzato come attacco denial of service.

The authentication code can be small: as little as 10 Hex digits. Is this really secure?

Sì. Per mitigare gli attacchi di forza bruta, l'entropia di generazione del codice deve tenere conto della frequenza delle chiamate all'endpoint del token (il limitatore di velocità può essere d'aiuto) durante la sua durata. Per esempio, se andiamo con le 10 cifre esadecimali, la durata del codice di 30 secondi e l'attaccante può inviare 1000 ipotesi al secondo: la probabilità di indovinare è nell'ordine di 1 su 270 milioni - puoi migliorare ulteriormente scegliendo un migliore set di caratteri di hex (16) come base 64 e riduce la durata del codice.

    
risposta data 14.09.2018 - 16:36
fonte

Leggi altre domande sui tag