Token HMAC: verifica logica

1

Ho una situazione in cui ho bisogno di un token che fornisce l'autenticazione. La procedura HMAC comune che ho trovato è:

  1. Ottieni una chiave utilizzando le credenziali di accesso
  2. Crea messaggio, aggiungi la chiave e altri dati del messaggio (nell'ordine definito)
  3. Hash con un tasto segreto
  4. Trasmetti il messaggio e includi i valori presenti nel messaggio (non con hash)

Poi

  1. Ricevi il messaggio
  2. Utilizza i valori unhashed per ricostruire il messaggio
  3. Hash con chiave segreta
  4. Se gli hash corrispondono, il messaggio è buono.

Sto implementando qualcosa di simile - ma non penso di aver bisogno di fare alcuni di questi passi. Volevo sapere: La mia implementazione ha dei buchi di sicurezza nella logica ?

La mia implementazione:

  1. Il client chiede al server di generare un token - questo richiede le credenziali di accesso.
  2. Il server crea un token ma non lo restituisce (è conservato nel database) - restituisce un timestamp.
  3. Il client genera un messaggio basato su data e ora, utente e altri dati.
  4. Token hash del client con una chiave segreta, fornita al di fuori di questo processo.
  5. Il client invia token al server.

Quindi:

  1. Ricevi il messaggio
  2. Se quel token è nel database, è valido

Il mio ragionamento sull'eliminazione della ricostruzione del messaggio è: che è successo quando il token è stato generato e il client non poteva sapere del token nel database a meno che non sapesse come generarlo, il che significa che sono autenticati e hanno una chiave segreta.

    
posta Alzoid 21.03.2016 - 12:38
fonte

0 risposte

Leggi altre domande sui tag