Puncte:2

Eticheta de autentificare AES-GCM poate fi utilizată ca funcție de derivare a cheilor?

drapel na

Vreau să construiesc un arbore de derivare a cheilor deterministă, în care rădăcina este stocată în siguranță într-un serviciu centralizat, iar frunzele sunt încorporate într-o multitudine de dispozitive. Când un dispozitiv dorește să comunice cu back-end-ul, dispozitivul furnizează ID-ul și sarea, iar serviciile centralizate derivă cheia specifică dispozitivului din cheia rădăcină și ID-ul dispozitivului și sare.

De obicei, aș prefera HKDF sau o altă funcție bine cunoscută de derivare a cheilor în acest scop. Dar, deoarece intenționăm să rulăm întregul serviciu pe un furnizor de cloud, alegerea noastră de stocare securizată a cheilor este mai limitată.

Azure Key Vault are suport experimental pentru AES-GCM pe HSM-urile gestionate. Ideea mea este să folosesc sarea dispozitivului ca intrare nonce (IV) a AES-GCM și ID-ul dispozitivului ca intrare de date asociată și nici un text simplu ca intrare. Ca rezultat al AES-GCM, aș folosi eticheta generată ca cheie pseudo-aleatorie deterministă:

$\text{KDF}(cheie, sare, id) := \text{AES-GCM-encryption}(cheie, \epsilon, sare, id)$

Unde $key$ este secretul rădăcină global stocat în seiful de chei, $\epsilon$ este șirul gol folosit ca intrare GCM text simplu, $sare$ este o valoare de 96 de biți folosită ca $nonce$ în GCM și $id$ este un șir de identificare a dispozitivului de lungime variabilă pe care niciun dispozitiv nu îl partajează cu altul și este utilizat ca intrare de date asociată în GCM.

Este sigură construcția...

  • presupunând că sare / nonce este unic la nivel global între întreaga durată de viață a cheii și peste toate ID-urile dispozitivelor?
  • presupunând că sare / „nonce” este unic doar pentru un anumit ID și pot exista mai multe dispozitive care împart aceeași sare din întâmplare (din cauza unei coliziuni de valori aleatorii)?

Intuitiv, sunt destul de sigur că, cu o sare unică la nivel global, această construcție ar trebui să fie o funcție sigură de derivare a cheilor. Dar acest lucru este greu de realizat pentru cazul de utilizare pe care îl avem în vedere.

Maarten Bodewes avatar
drapel in
Folosești nonce ca cheie? Nu ar trebui să aibă atunci dimensiunea de 128 de biți? Și de ce îi spui un nonce dacă este o cheie? Cum este creat/gestionat?
Perseids avatar
drapel na
Ah, rău, eram atât de preocupat de restul, încât am uitat introducerea importantă din formulă.Nonce este sarea din nomenclatura HKDF și există de fapt o cheie care este creată și susținută în afara seifului de chei și stocată neexportabilă în seiful de chei.
Perseids avatar
drapel na
Ah, și un alt efect secundar nefericit al acestei configurații este că al doilea nivel al arborelui (adică rezultatul primei derivări) părăsește deja mediul securizat. În mod ideal, doar informațiile de cale (ID-uri și sare pentru fiecare derivație) ar fi furnizate de serverul de aplicații, dar nu văd cum să fac asta fără suport special pentru derivarea cheii din mediul securizat. (Majoritatea HSM-urilor dedicate ar putea face acest lucru, dar nu interfața gestionată pe care o oferă furnizorii de cloud.)
Puncte:3
drapel us

În primul rând, pentru a defini construcția. AES-GCM atunci când este utilizat în modul sugerat este echivalent cu $$\operatorname{KDF}(K,S,I)=\operatorname{AES}_K(S\|0^{32})\oplus \operatorname{GHASH}_{\operatorname{AES}_K(0^{ 128})}(I)$$

Unde $\operatorname{GHASH}_H(M)\aprox \sum_i H^iM_i$ pentru blocurile de mesaje $M_i$ de dimensiunea de 128 de biți și înmulțirile și adunările făcându-se într-un câmp finit de 128 de biți cu reprezentare polinomială. Aceasta este o aproximare a GHASH care va funcționa pentru discuția noastră de mai jos.

Este sigură construcția...

Voi numi această construcție KDF sigură dacă se comportă ca un PRF în ambele intrări, sub rezerva constrângerilor numite, adică intrările unice produc ieșiri pseudo-aleatoare independente.

[Presupunând] că sarea/nonce este unică la nivel global pe întreaga durată de viață a cheii și peste toate ID-urile dispozitivelor?

După cum puteți vedea din expresia de mai sus, presupunând că sărurile dvs. sunt unice, operația AES va masca orice rezultat GHASH și rezultatul va arăta aleatoriu și imprevizibil. Având în vedere răspunsul la următoarea parte, este totuși îndoielnic dacă datele asociate oferă vreun beneficiu util, în afară de a ascunde ușor un eveniment de coliziune cu sare.

[Presupunând] sarea / „nonce” este unică doar pentru un anumit ID și pot exista mai multe dispozitive care împărtășesc aceeași sare din întâmplare (din cauza unei coliziuni de valori aleatoare)?

Din pacate, nu. Dacă două derivații folosesc același lucru $(K,S)$ pereche cu două diferite $ eu, eu $ interogări și un adversar învață cheile de ieșire corespunzătoare $k,k'$, atunci un adversar poate învăța $k\oplus k' = \operatorname{GHASH}_{\operatorname{AES}_K(0^{128})}(I) \oplus \operatorname{GHASH}_{\operatorname{AES}_K(0^{ 128})}(I')\aprox \sum_i H^i(I'_i\oplus I_i)$ care este o expresie din care un adversar se poate recupera $H=\operatorname{AES}_K(0^{128})$ permițându-le să-și revină $k\oplus \operatorname{GHASH}_{\operatorname{AES}_K(0^{128})}(I) = \operatorname{AES}_K(S\|0^{32})$ și de acolo preziceți cheia derivată pentru oricare $I$ pentru acest fix $(K,S)$ pereche.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.