Dacă nu ai un canal securizat, atunci nu poți avea încredere în IV-ul pe care ți-l trimite cealaltă parte, pentru că un atacator ar putea foarte bine să-l manipuleze. Chiar dacă aveți un canal securizat, cealaltă parte ar putea să nu fie considerată deosebit de demnă de încredere.
Dacă dispozitivul dvs. principal are un fel de CSPRNG, indiferent dacă este alimentat de un adevărat generator de numere aleatoare sau nu, îl puteți folosi. În caz contrar, dacă puteți avea un fel de contor persistent, o modalitate ușoară de a gestiona acest lucru este să utilizați o funcție de derivare a cheilor precum HKDF. Pur și simplu utilizați cheia partajată ca intrare de entropie în funcția de derivare a cheii, utilizați contorul ca sare și apoi generați ambii o cheie nouă și IV pentru fiecare mesaj. Trimiteți contorul în loc de IV-ul cu mesajul, iar cealaltă parte vă poate obține cheia.
Acest lucru poate funcționa chiar dacă nu aveți un contor persistent dacă dispozitivul principal are un ceas de încredere. Puteți utiliza un marcaj de timp plus un contor mai efemer sau orice alt tip de date care este garantat să nu se repete și să le utilizați în HKDF. Apoi, trimiteți asta împreună cu mesajul și ambele părți pot conveni asupra cheii secrete și IV.
După cum menționez pentru totdeauna, puteți utiliza și un protocol cu clichet dublu, deși acesta este mai complex. De asemenea, necesită ca ambele părți, cel puțin inițial, să aibă un CSPRNG, deoarece veți avea nevoie de unul pentru cheile Diffie-Hellman.