È possibile implementare un nonce senza memorizzazione?

9

Sto cercando di implementare un modulo di autenticazione usando il client OAuth 2.0 e sto cercando di evitare di avere uno stato del server. Stavo approfondendo qualche altra domanda

Sembra che l'implementazione di un nonce richieda la memorizzazione di qualcosa sul server per garantire che gli attacchi di riproduzione non avvengano perché la richiesta non dovrebbe verificarsi due volte.

Tuttavia, questo è solo per l'autenticazione / l'autorizzazione non per i dati di invio del modulo, nel qual caso l'implementazione di un nonce è facile, in quanto avrei comunque bisogno dello stato del server per acquisire i dati.

Quindi, più lo guardo, non sembra che abbia senso utilizzare un nonce in questo caso d'uso (ad eccezione del login, ma questo è il problema del server di autorizzazione), il token (crittografato con una chiave segreta che è sul server basato sul client_secret di OAuth) Dovrei essere in grado di inviare (fino alla scadenza).

C'è qualcosa che potrebbe mancare?

    
posta Archimedes Trajano 03.07.2014 - 17:14
fonte

1 risposta

6

Dalla domanda: "perché la richiesta non dovrebbe verificarsi due volte."

Nessuna memoria significa nessun senso della storia che è necessario per il tuo requisito che qualcosa non dovrebbe accadere due volte. Quindi la risposta è no. Se vuoi che l'app del tuo server ricordi ciò che è successo in passato, deve essere in grado di memorizzarlo da qualche parte.

Potresti implementare un nonce limitato nel tempo e non limitato all'uso e che puoi fare senza l'archiviazione sul lato server. Basta allegare un timestamp al nonce (e firmarlo, in modo che il server possa verificare e gli autori degli attacchi non possano contraffare) e smettere di onorarlo dopo X secondi / minuti / ore. Gli attacchi di riproduzione sarebbero possibili ma solo in quella finestra temporale.

Il tuo server ha bisogno anche di una fonte di tempo attendibile. Se un utente malintenzionato può far credere al tuo server che è ieri, allora gli utenti di ieri riprenderanno a lavorare.

    
risposta data 08.07.2014 - 18:31
fonte

Leggi altre domande sui tag