Проблемот е присутен директно во спецификацијата TLS и влијае само на врските кои користат шифри засновани на протоколот за размена на клучеви DH (Diffie-Hellman, TLS_DH_*"). Со ECDH шифрите проблемот не се јавува и тие остануваат безбедни. Само протоколите TLS до верзијата 1.2 се ранливи; TLS 1.3 не е засегнат од проблемот. Ранливоста се јавува во имплементациите на TLS кои повторно го користат тајниот клуч DH преку различни TLS врски (ова однесување се јавува на приближно 4.4% од серверите Alexa Top 1M).
Во OpenSSL 1.0.2e и претходните изданија, примарниот клуч DH повторно се користи во сите серверски врски, освен ако опцијата SSL_OP_SINGLE_DH_USE не е експлицитно поставена. Од OpenSSL 1.0.2f, примарниот клуч DH повторно се користи само кога се користат статични DH шифри („DH-*“, на пр. „DH-RSA-AES256-SHA“). Ранливоста не се појавува во OpenSSL 1.1.1, бидејќи оваа гранка не користи примарен клуч DH и не користи статични DH шифри.
При користење на методот за размена на клучеви DH, двете страни на врската генерираат случајни приватни клучеви (во натамошниот текст клучот „а“ и клучот „б“), врз основа на кои се пресметуваат и испраќаат јавните клучеви (ga mod p и gb mod p). Откако секоја страна ќе ги добие јавните клучеви, се пресметува заеднички примарен клуч (gab mod p), кој се користи за генерирање на клучеви за сесија. Нападот Raccoon ви овозможува да го одредите примарниот клуч преку анализа на страничниот канал, врз основа на фактот дека спецификациите на TLS до верзијата 1.2 бараат сите водечки нула бајти на примарниот клуч да бидат отфрлени пред пресметките што го вклучуваат.
Вклучувајќи го скратениот примарен клуч се пренесува на функцијата за генерирање на клучот за сесија, која се заснова на хаш функции со различни доцнења при обработка на различни податоци. Прецизното мерење на тајмингот на клучните операции извршени од серверот му овозможува на напаѓачот да одреди индиции (оракл) кои овозможуваат да се процени дали примарниот клуч започнува од нула или не. На пример, напаѓачот може да го пресретне јавниот клуч (ga) испратен од клиентот, повторно да го пренесе на серверот и да утврди
дали добиениот примарен клуч започнува од нула.
Само по себе, дефинирањето на еден бајт од клучот не дава ништо, но со пресретнување на вредноста „ga“ што ја пренесува клиентот за време на преговорите за поврзување, напаѓачот може да генерира збир на други вредности поврзани со „ga“ и да ги испрати до серверот во посебни сесии за преговори за поврзување. Со генерирање и испраќање вредности „gri*ga“, напаѓачот може, преку анализа на промените во доцнењата во одговорот на серверот, да ги одреди вредностите што доведуваат до примање примарни клучеви почнувајќи од нула. Откако ќе ги одреди таквите вредности, напаѓачот може да создаде збир на равенки за
Пропусти на OpenSSL
Дополнителни проблеми се забележани посебно (
Извор: opennet.ru