Quanto sono deterministici i SessionID dai GUID SHA'd?

0

Supponiamo che sto usando il seguente codice per generare sessionID pseudo-casuali:

sessionID = SHA-512(GENERATE-GUID())

I GUID sono piuttosto deterministici, cioè vedo molti GUID con molti degli stessi esadecimali.

La mia semplice domanda è: quanto sono deterministici i miei sessionID?

Gli algoritmi per SHA dovrebbero creare degli hash molto diversi anche se un piccolo numero di bit è diverso a causa del suo effetto a cascata, quindi con quanta facilità potresti "indovinare" (entro un tempo ragionevole) un altro sessionID dagli hash risultanti?

    
posta Davio 22.11.2013 - 13:27
fonte

2 risposte

1

Suggerirei di utilizzare un'implementazione dell'ID di sessione, che è noto per essere sicuro. Inoltre c'è RFC su UUID / GUID link dove puoi scoprire che esistono diverse versioni di GUID. Ti suggerisco di passare alla crittografia su numeri casuali sicuri.

    
risposta data 06.12.2013 - 13:59
fonte
0

Sono completamente casuali (un UUID è composto da 16 ottetti, alcuni bit dei quali sono fissi e alcuni completamente casuali), quindi non sono deterministici - e non garantiti per essere unici (specialmente se il tuo casuale la fonte è difettosa)

Un modo migliore per generare ID di sessione univoci (che è quello che presumo tu voglia / bisogno) è usare un contatore (come il PRINCIPALE KEY SERIAL di PostgreSQL della tabella di sessione che usi) e l'hash che con una installazione -del tuo-app-segreto. (Ricorda di proteggere i tuoi cookie con un MAC, ad esempio un HMAC, e di usare un diverso (!) Segreto per quello.)

Inoltre: gli UUID sono 16 byte, ovvero 128 bit, quindi non c'è motivo di eseguirli in qualcosa di più lungo di 128 bit.

Chiarimento: intendo qualcosa del genere:

$handle = db_query_params('INSERT INTO session (remote_ip, begin, …) VALUES ($1, $2, …)',
    array($remote_ip, now(), …));
$seqnumber = db_insertid($handle);  /* find out which SERIAL PostgreSQL assigned to the session */
$session_id = sha512($somesecret . $seqnumber);
    
risposta data 06.12.2013 - 12:35
fonte

Leggi altre domande sui tag