Die probleem kom direk in die TLS-spesifikasie voor en raak slegs verbindings met behulp van syfers gebaseer op die DH-sleuteluitruilprotokol (Diffie-Hellman, TLS_DH_*"). Met ECDH-syfers kom die probleem nie voor nie en hulle bly veilig. Slegs TLS-protokolle tot weergawe 1.2 is kwesbaar; TLS 1.3 word nie deur die probleem geraak nie. Die kwesbaarheid kom voor in TLS-implementerings wat die DH-geheime sleutel oor verskillende TLS-verbindings hergebruik (hierdie gedrag kom voor op ongeveer 4.4% van Alexa Top 1M-bedieners).
In OpenSSL 1.0.2e en vroeër vrystellings word die DH primêre sleutel hergebruik in alle bedienerverbindings, tensy die SSL_OP_SINGLE_DH_USE opsie uitdruklik gestel is. Sedert OpenSSL 1.0.2f, word die DH primêre sleutel slegs hergebruik wanneer statiese DH-syfers ("DH-*", bv. "DH-RSA-AES256-SHA") gebruik word. Die kwesbaarheid verskyn nie in OpenSSL 1.1.1 nie, aangesien hierdie tak nie 'n DH-primêre sleutel gebruik nie en nie statiese DH-syfers gebruik nie.
Wanneer die DH-sleuteluitruilmetode gebruik word, genereer beide kante van die verbinding ewekansige privaat sleutels (hierna sleutel "a" en sleutel "b"), gebaseer op watter publieke sleutels (ga mod p en gb mod p) bereken en gestuur word. Nadat elke party die publieke sleutels ontvang het, word 'n gemeenskaplike primêre sleutel (gab mod p) bereken, wat gebruik word om sessiesleutels te genereer. Die Raccoon-aanval laat jou toe om die primêre sleutel deur middel van sykanaalanalise te bepaal, gebaseer op die feit dat die TLS-spesifikasies tot weergawe 1.2 vereis dat alle voorste nulgrepe van die primêre sleutel weggegooi word voor berekeninge wat dit behels.
Insluitend die afgekapte primêre sleutel word oorgedra na die sessiesleutelgenereringsfunksie, wat gebaseer is op hash-funksies met verskillende vertragings wanneer verskillende data verwerk word. Deur die tydsberekening van sleutelbewerkings wat deur die bediener uitgevoer word, akkuraat te meet, kan die aanvaller leidrade (oracle) bepaal wat dit moontlik maak om te oordeel of die primêre sleutel van voor af begin of nie. Byvoorbeeld, 'n aanvaller kan die publieke sleutel (ga) wat deur die kliënt gestuur is, onderskep, dit weer na die bediener versend en bepaal
of die resulterende primêre sleutel vanaf nul begin.
Op sigself gee dit niks om een greep van die sleutel te definieer nie, maar deur die "ga"-waarde wat deur die kliënt oorgedra word tydens verbindingsonderhandeling te onderskep, kan die aanvaller 'n stel ander waardes genereer wat met "ga" geassosieer word en dit stuur na die bediener in afsonderlike verbindingsonderhandelingsessies. Deur “gri*ga”-waardes te genereer en te stuur, kan 'n aanvaller, deur veranderinge in vertragings in die bedienerrespons te ontleed, die waardes bepaal wat lei tot die ontvangs van primêre sleutels vanaf nul. Nadat sulke waardes bepaal is, kan die aanvaller 'n stel vergelykings vir skep
OpenSSL kwesbaarhede
Bykomende probleme word afsonderlik opgemerk (
Bron: opennet.ru