Puncte:0

Cum sunt criptate datele aplicației TLS 1.3 cu AES-GCM trimise „prin cablu”?

drapel mx

Am încercat să decriptez manual o parte din traficul TLS 1.3 din motive educaționale și am dat peste un obstacol. Până acum, am reușit să finalizez cea mai mare parte a programului de chei, inclusiv să obțin secretele corecte de trafic de strângere de mână din cheile ECDHE. Cu toate acestea, nu am reușit să găsesc multe informații despre modul în care textul cifrat și eticheta de autentificare sunt formatate în mesajele de date ale aplicației.

Iată înregistrarea completă.

1703030017bf687d10e2f209661418d92aaf3626dfe5670f3127d6ed

Și iată secretul de trafic al serverului de strângere de mână:

475a0f3b5a86d4797e24545c2eb6388de9507e5e0bc367c74c3e78e0d8033f34b721a2e3a1d89ec5990287954402fc43

Wireshark îmi spune că prin decriptarea acestui mesaj se obține textul simplu 08 00 00 02 00 00, corespunzătoare mesajului Extensii criptate.

Din câte îmi pot da seama, „datele asociate” ar trebui să fie octeții 17 03 03 00 17, iar restul înregistrării este text cifrat + etichetă de autentificare.RFC 8446 spune că suita de criptare TLS_AES_256_GCM_SHA384 este definită în RFC 5116, dar RFC 5116 spune:

Acest document nu specifică nicio codificare specială pentru AEAD intrări și ieșiri, deoarece codificarea nu afectează securitatea servicii furnizate de un algoritm AEAD.

Cu toate acestea, toate încercările mele de a decripta datele nu au reușit să se autentifice, ceea ce mă duce la două posibilități:

  • Obțin greșit cheile de trafic. Știu că rutina mea HKDF-Expand-Label funcționează, deoarece toate celelalte secrete sunt derivate corect și se potrivesc cu valorile înregistrate de OpenSSL. Cu toate acestea, desigur, nu sunt 100% sigur care sunt cheia corectă și lungimea IV. În prezent, folosesc o cheie de 32 de octeți și IV de 12 octeți. Nu știu dacă asta folosește TLS 1.3.
  • Citesc greșit eticheta de autentificare/text cifrat. Nu am reușit să găsesc referințe despre formatul potrivit, așa că toate încercările mele în acest domeniu au fost doar presupuneri. În special, nu sunt sigur cât de lungă este eticheta de autentificare pentru această suită de criptare, deși căutarea pe Google sugerează că este de 12 octeți.

ce fac greșit?

adrian avatar
drapel mx
Tocmai mi-am dat seama că am trecut complet peste partea din specificații menționând că IV-ul este XOR-ul de numărul de secvență de înregistrare. Problema nu a fost rezolvată, dar acum se închide atrăgător.
dave_thompson_085 avatar
drapel cn
5116 definește doar primitivele AEAD, utilizabile în toate tipurile de aplicații cripto, inclusiv, dar nu specific, suitelor de criptare TLS. Formatul și construirea înregistrării criptate este în 8446 5.2, iar generarea nonce (pe care se pare că ați găsit-o) în 5.3.
Puncte:0
drapel mx

Se pare că am făcut nu una, ci două greșeli!

  • Nu am citit secțiunea din RFC care explică că nonceul per înregistrare a fost calculat prin XORing numărul de secvență față de IV.
  • Am folosit o lungime de etichetă incorectă de 12 în loc de 16.

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.