La crittografia di una chiave (memorizzata nel cookie) aumenta la sicurezza?

3

Scenario

  • La chiave master viene immessa al momento dell'accesso, quindi crittografata con $server_key
  • La chiave master è ora memorizzata come variabile $_COOKIE['encrypted_key'] per la persistenza (quindi l'utente non deve inserirla ogni caricamento di pagina)
  • $server_key è memorizzato all'interno di un file di configurazione nel server dell'app
  • I dati vengono decodificati decifrando prima $_COOKIE['encrypted_key'] (utilizzando $server_key ), quindi rivelando la chiave principale
  • $_COOKIE['encrypted_key'] viene distrutto all'uscita del browser

Minaccia

Attaccante che ottiene l'accesso al dispositivo dell'utente / cookie e dati crittografati (ma non i file di configurazione del server delle app).

Domanda

Ha senso crittografare la chiave master con $server_key e quindi memorizzare $server_key all'interno di un file di configurazione nel server dell'app?

Ragionamento

Guadagnare solo $server_key o solo $_COOKIE['encrypted_key'] non comprometterà nulla. L'attaccante deve ottenere entrambi.

Aggiorna

  • Questo è in HTTPS
  • Il dirottamento della sessione sarebbe difficile quando controlliamo l'impronta digitale della sessione per richiesta
posta IMB 12.09.2016 - 00:54
fonte

2 risposte

6

Il tuo modello di minaccia è incompleto. Ecco alcune delle cose che ti sei perso:

1) La chiave master e la chiave del server sembrano valori statici. Ciò significa che il valore del cookie è costante e chiunque abbia il valore del cookie può riprodurlo sul server per rubare (spider) tutti i dati in chiaro per quell'utente.

1a) I cookie vengono memorizzati anche in altre posizioni come i proxy.

2) Se il server viene compromesso, un utente malintenzionato può forzare lo spazio della chiave master per decrittografare i dati dell'utente in base all'utente. La possibilità di successo dipende interamente dalla lunghezza della chiave master e dall'algoritmo di crittografia.

3) Un utente può derivare la chiave del server. Poiché conoscono la chiave master e possono visualizzare il cookie, possono forzare la chiave del server offline. Ancora una volta il fattore di successo dipende dalla lunghezza della chiave e dall'algoritmo.

4) Non è chiaro se il servizio viene consegnato tramite una connessione crittografata di testo normale. Nel secondo caso sia la chiave master che il valore del cookie possono essere osservati da un utente malintenzionato sulla stessa rete. Se il primo può essere declassato o potrebbero esistere altre vulnerabilità.

5) Se l'attaccante ha hackerato il server, può modificare il codice di accesso per conservare una copia di tutte le chiavi master ricevute. È normale che le violazioni passino inosservate per mesi / anni.

    
risposta data 12.09.2016 - 05:39
fonte
1

The purpose of the $server_key is to defeat cookie replays, they can replay but they don't know the $server_key

La crittografia della chiave principale con la chiave del server non sconfigge l'attacco di riproduzione. L'utente malintenzionato può semplicemente inviare l'invio della chiave master crittografata al server e fare in modo che decifri i dati desiderati dall'attore. Il tuo server diventa un vice confuso . L'autore dell'attacco non deve compromettere il server o ottenere la chiave del server per farlo.

Per limitare questo attacco, puoi aggiungere una data di scadenza e l'indirizzo IP all'interno della chiave master crittografata, ovvero Encrypt (MasterKey + Expiry + IP address), il tuo server dovrebbe usare il token crittografato solo se non è scaduto e la richiesta proviene dall'indirizzo IP specificato.

    
risposta data 13.09.2016 - 04:38
fonte

Leggi altre domande sui tag