Modifica: inserirò questo più chiaramente.
Nella forma più semplice, sto chiedendo che se I AES criptasse in CTR di più con Mcrypt (usando PHP), posso creare "IV" semplicemente leggendo 16 byte da / dev / urandom? Fa il lavoro correttamente?
Ho letto la risposta precedente di D.W. e ha detto:
"Nella forma più semplice, per crittografare un messaggio di blocco n sotto IV v, utilizziamo v, v + 1, v + 2, .., v + n -1 come contatori quindi supponiamo che questo sia quello che stai facendo (altrimenti, per favore specifica). Generare un contatore casuale a 128 bit usando / dev / urandom va bene. "
Ora sto chiedendo che ho capito bene la risposta (la mia comprensione è che se si utilizza la modalità CTR, si può creare la "IV" semplicemente leggendo da / dev / urandom e quella su di essa)?
Ho diviso questa domanda da TCrypto - Commenti sulle decisioni di progettazione I fatta?
@ D.W. "Dipende dalla variante della modalità CTR che usi e da come viene formato il contatore Nella forma più semplice, per crittografare un messaggio di blocco n sotto IV v, utilizziamo v, v + 1, v + 2, .., v + _n_-1 come contatori, quindi supponiamo che sia quello che stai facendo (se no, per favore specifica). Generare un contatore casuale a 128 bit usando / dev / urandom va bene. "
Stavo guardando questo e non sono sicuro che Mcrypt faccia già quella "v + 1, v + 2 ..." nonce internamente (usando la IV fornita). Fondamentalmente Mcrypt prende una chiave e una IV ed esegue l'enciclopedia usando quei parametri.
O devo dividere manualmente il messaggio in blocchi ed eseguire la crittografia per il primo blocco usando IV, quindi cifrare il secondo blocco usando IV + 1 come IV etc?
Ecco la funzione di crittografia (in modalità CBC, l'interfaccia di Mcrypt per utilizzare la modalità CTR è simile):