Atacul, pe care îl numim Logjam, este reprezentat în Figura 2
și se bazează pe un defect în modul în care TLS compune DHE și
DHE_EXPORT
. Când un server selectează DHE_EXPORT
Pentru o
strângere de mână, se procedează prin emiterea unui semnat ServerKeyExchange
mesaj care conține un mesaj pe 512 biți $p_{512}$, dar structura acestuia
mesajul este identic cu mesajul trimis în timpul DHE standard
ciphersuites. În mod critic, porțiunea semnată a serverului
mesajul nu reușește să includă nicio indicație a suitei de cifrare specifice
pe care serverul l-a ales. Cu condiția ca un client să ofere
DHE, un atacator activ poate rescrie clienții ClientSalut
la
oferi o corespondență DHE_EXPORT
ciphersuite acceptat de
server și eliminați alte suite de criptare care ar putea fi alese
in schimb. Atacatorul rescrie ServerSalut
raspuns catre
înlocuiți cel ales DHE_EXPORT
ciphersuite cu o potrivire
non-export ciphersuite și redirecționează ServerKeyExchange
mesaj către client așa cum este. Clientul va interpreta
tuplu cu grad de export $(p_{512}, g, g^b)$ ca parametri DHE validi aleși
de server și continuați cu strângerea de mână. The
clientul și serverul au transcrieri diferite de strângere de mână
stadiu, ci un atacator care poate calcula $b$ aproape de real
timpul poate obține apoi secretul principal și cheile de conexiune
pentru a finaliza strângerea de mână cu clientul și apoi liber
citiți și scrieți datele aplicației pretinzând a fi serverul.
Și întrebarea ta sună:
Citesc despre atacul de blocaj. Am fost întrebat dacă atacul poate fi prevenit prin verificarea integrității mesajului Server Hello.
Și bănuiesc că răspunsul este da, dar numai dacă ar semna/verifica setul de suite de criptare care este oferit în cadrul ServerSalut
, și se pare că cel puțin TLS până la 1.2 nu reușește să facă acest lucru. Cu alte cuvinte, ar trebui să modificați protocolul TLS pentru a include suitele de criptare oferite în generarea/verificarea semnăturii, făcându-l incompatibil cu orice alt software TLS.
Deci, în prezent, se pare că pur și simplu nu vă permiteți implementare a executa DHE_EXPORT
(sau DH efemer pe 1024 de biți) este calea de urmat pentru TLS până la 1.2.