Să presupunem că dorim să creștem durata de viață a cheii principale.Putem face acest lucru adăugând un pas de derivare a cheii înainte de criptarea efectivă? Presupunând că folosim cheia principală ca material de introducere a cheii și un nonce aleatoriu în HKDF, putem prelungi durata de viață a cheii principale?
Da, cu siguranță oricum când vine vorba de cerințele GCM. Desigur, pot exista și alte considerații, deoarece aceeași cheie principală încă protejează o cantitate mare de mesaje.
Cu alte cuvinte, este AES-GCM(HKDF(MasterKey, ...)
, IV, ...) oferind orice avantaj în ceea ce privește numărul total de mesaje față de AES-GCM(MasterKey, IV, ...)
?
Potențial da, depinde desigur de celelalte intrări ale HKDF, dar atâta timp cât intrarea în HKDF este unică, aveți o funcție unidirecțională sigură care face cheile derivate independente unele de altele.
Mai exact, presupunând că HKDF are o sare fixă și un nonce aleatoriu de 128 de biți ca intrare, iar GCM utilizează un IV aleator de 96 de biți, atunci presupun că (WK, IV) au o probabilitate de coliziune mai mică decât (IV).
Nu există niciun „nonce” definit ca parametru de intrare pentru HKDF, dar puteți utiliza unul în cadrul Info
camp.
O „sare fixă” este de puțin sau deloc folos. Cu toate acestea, puteți utiliza un parametru de sare gol și utilizați un nonce ca parte a Info
parametru și să fie rezonabil de sigur.
Cu o sare nu trebuie să vă gândiți la separarea domeniului (de exemplu, folosiți cheia principală pentru orice altceva care ar putea interfera), extracția independentă de sursă (de exemplu, posibila repetare a nonceului sau a entropiei proaste a cheii principale) - dar dvs. se poate face fără.
De fapt, poți sari peste un pas dacă doriți și utilizați doar HKDF-Expand dacă cheia dvs. principală are suficientă entropie. În acest caz, nu există Sare
parametru necesar.
Aș recomanda să aveți un șir constant suplimentar în câmpul Info care poate fi folosit și pentru a obține chei de la master pentru cazuri de utilizare suplimentare. De exemplu, cel Info
câmpul ar putea folosi o etichetă numită „EncapKey”
. Acest lucru indică pur și simplu care este cazul de utilizare al subcheilor derivate - oferă o anumită separare a domeniilor.
Dacă această ipoteză este corectă, cum se poate calcula o limită pentru durata de viață a cheii principale?
Să presupunem că scoateți chei pe 256 de biți și folosiți cel puțin SHA-256 ca hash de bază. Atunci șansa suplimentară de coliziune poate fi considerată neglijabilă; depinde în întregime de proprietățile de coliziune ale nonce furnizate.
După cum sa indicat, pot exista și alte motive pentru care doriți să vă reîmprospătați cheia principală din când în când, deoarece securitatea mesajelor depinde în continuare de acea singură cheie.