În prezent, proiectăm un protocol simplu de mecanism de autentificare provocare-răspuns (CRAM) bazat pe criptografie simetrică, care ar fi utilizat pe dispozitivele încorporate constrânse care ar funcționa într-o rețea închisă cu rază scurtă de acțiune.
Se dorește autentificarea reciprocă. Capacitățile de securitate oferite de dispozitive sunt deocamdată necunoscute. Prin urmare, ne concentrăm în primul rând pe utilizarea protocolului AES în timpul autentificării. În cazul în care putem folosi, de exemplu, un protocol MAC, l-am extinde în timpul comunicării cu canalul securizat ulterior.
Presupunem că ambele dispozitive au cheile simetrice corespunzătoare. Provocările (chg_x) sunt destinate să fie de 16 octeți și generate aleatoriu folosind un RNG adevărat.
Fluxul de secvență al protocolului ar fi:
- $A \rightarrow B : id_A, chg_A $
- $A \leftarrow B : id_B, enc(chg_A), enc(chg_B)$
- $A \rightarrow B : dec(enc(chg_B))$
Dispozitivul $A$ ar verifica provocarea în timpul răspunsului și, de asemenea, decriptează și trimite provocarea de pe celălalt dispozitiv.Criptarea pe dispozitiv $B$ a provocării sale $chg_B$ se face pentru a evita atacurile de reflexie, așa cum este indicat în această întrebare.
Pentru canalul securizat ulterior, am plănui să folosim un $ KDF(K||chg_A) $ pentru a deriva cheile de sesiune.
Întrebările mele sunt:
- ar fi acest protocol suficient pentru scenariul propus sau este încă vulnerabil la alte atacuri?
- este încă de dorit să aveți și Hash sau MAC în timpul autentificării într-o anumită capacitate pentru a atenua potențialele amenințări?