Sto pensando di passare alla memorizzazione dei dati di sessione in cookie crittografati piuttosto che da qualche parte sul mio server. Mentre ciò comporterà una maggiore larghezza di banda utilizzata per ogni richiesta, risparmierà il carico extra del server di database e lo spazio di archiviazione.La crittografia RIJNDAEL è sicura da utilizzare con piccole quantità di testo fornite agli utenti?
In ogni caso, ho intenzione di cifrare il contenuto dei cookie utilizzando RIJNDAEL 256.
function encrypt($text, $key)
{
return mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key,$text,MCRYPT_MODE_ECB,mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB),MCRYPT_RAND));
}
che nell'uso produrrebbe qualcosa come questo (base64 codifica per la visualizzazione)
print base64_encode(encrypt('text', 'key'));
7s6RyMaYd4yAibXZJ3C8EuBtB4F0qfJ31xu1tXm8Xvw=
io non sono preoccupato su un singolo cookie degli utenti che viene compromesso tanto quanto temo che un utente malintenzionato possa scoprire key
e sia in grado di costruire qualsiasi sessione per qualsiasi utente poiché sanno cosa Io uso per firmare i dati.
Esiste un modo per verificare i tempi di fessurazione stimati in relazione ai parametri utilizzati? O esiste una misura standard di tempo in relazione alla dimensione del testo o della chiave utilizzata?
Ho sentito qualcuno dire che i tasti necessari per superare 256 bit stessi sono abbastanza sicuri da essere utilizzati con RIJNDAEL. Mi chiedo anche se la lunghezza del testo crittografato deve essere una certa lunghezza in modo da non dare via la chiave.
I dati saranno generalmente di circa 200 caratteri
a:3{s:7:"user_id";i:345;s:5:"token";s:32:"0c4a14547ad221a5d877c2509b887ee6";s:4:"lang";s:2:"en";}
Quindi questo è sicuro?
Dopo aver generato una IV, l'ho aggiunta al testo crittografato. Quindi ho creato un HMAC SHA256 (dalla stessa chiave utilizzata per crittografare il testo + il testo crittografato). Quindi, quando ricevo i dati, ora controllo l'HMAC e, se valido, procedo alla decrittografia dei dati. Inoltre, all'interno dei dati ho un timestamp in modo da poter verificare che i dati non siano solo * corretti e inviati da me * - siano inviati tempestivamente. – Xeoncross