Permiteți-mi să încerc să reformulez problema, deoarece ar putea ajuta puțin. Cerințele sunt următoarele:
- La începutul conexiunii lor, cele două puncte finale efectuează un Diffie-Hellman pentru a deriva cu o cheie comună $K$.
- Apoi EP1 trebuie să genereze o valoare aleatorie de 48 de biți $R$ și trimiteți-l la EP2. Această valoare aleatorie trebuie să aibă următoarele două proprietăți: (a) an
atacatorul nu este capabil să ghicească următoarele valori aleatorii pe care le generează EP1 și (b) EP2 este capabil să verifice că $R$ vine într-adevăr de la EP1.
- Cele două puncte finale împărtășesc, de asemenea, o valoare a informațiilor de sincronizare $T$, care este ca un contor de temporizare și este de 64 de biți. Nu știu mai multe, știu doar că această valoare este unică în fiecare asociație și este cunoscută de ambele PE.
- Prin asociere mă refer la succesiunea completă a pașilor 1-4 de mai sus. Dacă EP-urile se deconectează, rulează acele mesaje de la început, dar ambele EP-uri șterg cheia $K$ și să stabilească unul nou în următoarea asociație.
Deci, pentru a modifica puțin răspunsul meu de mai sus, mă gândeam la următoarea soluție:
EP1 EP2
------------------------------------------|
1.s1 = AES-CTR(K,T||contor,K) ---------->|
2.R1 = s1 XOR K-------------------------->|
| 3. s1' = AES-CTR(K,T||contor,K)
| 4. R1' = s1' XOR K
| Verificați R1' == R1
La pasul 1, EP1 folosește AES în modul CTR, cu cheie $K$, câmpul nonce/counter să fie o concatenare a $T||counter$, iar mesajul de criptat este din nou $K$.
La pasul 2, valoarea cu aspect aleatoriu $s_1$ de la pasul 1 se xorează cu aceeași cheie $K$ iar ultimii 48 de biți sunt trimiși la EP2. reutilizam $K$ ca mesaj de intrare pur și simplu pentru că este o valoare cunoscută pentru EP2 și astfel poate verifica valoarea criptată. Dar spuneți-mă dacă aceasta este o practică proastă.
În pașii 3 și 4, EP2 efectuează aceleași calcule, deoarece toate valorile sunt comune și în pasul 5 verifică dacă $R_1'==R_1$. Dacă da, aceasta înseamnă că EP1 este autentificat deoarece trebuie să folosească cheia corectă $K$, Si deasemenea $R_1$ valorile nu trebuie să fie previzibile.
Vedeți vreo defecte sau redundanțe în schema mea? Ar îndeplini cerințele menționate la începutul postării mele?