Recentemente mi sono imbattuto in un'applicazione che più o meno fa questo:
- inizia da un tasto (apparentemente sconosciuto agli altri)
- genera un IV casuale
- crittografa alcuni payload di dimensioni ridotte (~ 160 byte) con la chiave e genera IV utilizzando AES256 in modalità CBC
- [> = il 60% del carico utile è composto da due o tre parole ASCII, scelti da un elenco apparentemente sconosciuto ma più o meno facilmente ipotizzabile di alcune dozzine di elementi]
- ottiene un'altra IV semplicemente facendo qualche calcolo matematico sulla chiave. Questo IV sarà lo stesso per ogni pacchetto, in assoluto, e il codice per generarlo dalla chiave è pubblicamente noto.
- crittografa un'intestazione piccola (32 byte) con la chiave e IV derivata utilizzando AES256 in modalità CBC
- [la maggior parte di questa intestazione è costituita da dati fissi come "versione di protocollo" che dovrebbero essere considerati pubblicamente noti, quindi contiene un timestamp unix (dati noti se si conosce quando il pacchetto è stato trasmesso) e l'IV casuale utilizzato prima per la parte del payload]
- trasmette l'intestazione e il carico utile crittografati risultanti sul filo
La parte ricevente conosce la chiave (pre-condivisa), rigenera la "intestazione IV" da quella, decrittografa l'intestazione, ottiene il carico utile IV da lì, decrittografa il carico utile.
L'intera roba si ripete per ogni pacchetto, e l'applicazione tipica avrebbe da 5 a 50 pacchetti al secondo sul filo, e dal momento che molti di loro sono solo "informazioni sullo stato", l'unica differenza tra il loro testo chiaro sarebbe unix timestamp e il (pseudo) carico utile generato a caso IV.
Non sono sicuramente un esperto di crittografia, ma per quanto ne so "l'IV derivato dalla chiave utilizzata per crittografare 32 byte, 28 dei quali sono fissi e / o facilmente ipotizzabili" dovrebbe almeno suonare un allarme.
Come potrebbe essere considerata la sicurezza di tale approccio? - "sicurezza" definita come mantenere la chiave e / o il payload segreto anche se qualcuno potesse intercettare pacchetti dal filo.