Come si può rilevare un token non sicuro e non casuale?

3

So che alcune delle funzioni casuali di PHP non sono sicure perché non sono completamente casuali e sono considerate una cattiva pratica. La mia domanda è in che modo un utente malintenzionato scopre che lo sviluppatore ha utilizzato una funzione non sicura per creare un token, ad esempio un token password dimenticato o un token CSRF?

    
posta Michael Blake 18.04.2014 - 06:18
fonte

2 risposte

1

In realtà non puoi determinare quanto sia casuale un numero, perché è la natura della casualità. Tuttavia, se disponi di una serie di valori, puoi eseguire test statistici casuali sui valori e, eventualmente, trovare schemi / punti deboli in il generatore di numeri casuali. Alcuni modelli possono dare via quale generatore casuale è stato utilizzato. Ma anche supponendo che i numeri fossero casuali in senso statistico, il problema che rimane in seguito è la sicurezza. Qualcosa che supera i test di casualità potrebbe non essere effettivamente sicuro!

In breve:

  • true randomness = security
  • casualità statistica ≠ casualità reale
risposta data 18.04.2014 - 13:29
fonte
1

In aggiunta alla risposta di Kevin Li, il test degli ID di sessione per casualità è coperto qui: Come testare la forza dell'identificatore di sessione con OWASP WebScarab

Devi richiedere un sacco di token di sessione ed eseguire un'analisi statistica su di essi per determinare se sembrano mostrare il livello desiderato di casualità. Gli ID di sessione 10 ^ 4 rappresenterebbero un buon punto di partenza IMHO, ma sarebbe meglio analizzarne altri, se possibile.

C'è anche uno strumento automatizzato nel proxy Burp di PortSwigger per fare la stessa cosa che uso ma il rutto è piuttosto costoso.

(commenterebbe l'altra risposta ma non ho la risposta)

    
risposta data 18.04.2014 - 17:01
fonte

Leggi altre domande sui tag