Екип от академични изследователи от университети в Калифорния и Масачузетс демонстрира, че при определени условия е възможно пасивни мрежови атакуващи да извличат секретни ключове RSA от естествено възникнали грешки, водещи до неуспешни опити за SSH (secure shell) връзка.
SSH е криптографски мрежов протокол за сигурна комуникация, широко използван при отдалечен достъп до системата, прехвърляне на файлове и задачи по системно администриране.
RSA е криптосистема с публичен ключ, използвана в SSH за удостоверяване на потребителя. Тя използва частен, секретен ключ за декриптиране на комуникация, която е криптирана с публичен, споделен ключ.
Разкриване на хардуерни грешки
Статия, публикувана от университетските изследователи Киган Райън, Кайвен Хе, Надя Хенингер и Джордж Арнолд Съливан, показва, че е възможно пасивен мрежов нападател да получи частен RSA ключ от SSH сървъри, изпитващи грешки по време на изчисляването на подписа.
“Ако изпълнението на подписване, използващо CRT-RSA, има грешка по време на изчисляването на подписа, атакуващ, който наблюдава този подпис, може да бъде в състояние да изчисли частния ключ на подписващия”, казват изследователите в техническия документ.
Китайската теорема за остатъка (CRT) се използва заедно с алгоритъма RSA, за да се намали размерът на бита за публичния ключ и да се ускори времето за декриптиране.
“Тези атаки се възползват от факта, че ако се допусне грешка при изчислението на модула на едно просто число, да речем q, то полученият невалиден подпис “s” е еквивалентен на правилния подпис на модула на едно просто число p, но не и q”, обясняват още изследователите.
Въпреки че подобни грешки са рядкост, те са неизбежни поради хардуерни недостатъци. При наличие на достатъчно голям набор от данни, нападателят може да намери и използва много възможности за експлоатация.
Това е известен проблем, който засяга по-старите версии на TLS. Той беше решен в TLS 1.3 чрез криптиране на шейк хенда, което установява връзката, като по този начин се предотвратява възможността пасивни подслушвачи да прочетат подписите.
Досега се приемаше, че SSH е защитено от тази атака, но изследователите доказаха, че е възможно да се извлекат RSA тайните, като се използват атаки, базирани на решетки, които възстановяват частния ключ от частично известни нонси.
Изследователите отбелязват, че тестовете им не включват резултати “за RSA-1024,SHA512, тъй като броят на неизвестните битове в хеша е много по-голям от това, което можем да постигнем с груба сила или да решим с решетки”.
Въпреки това те добавят, че “атаката с решетка е доста ефективна” и че тестовете им са имали 100% успеваемост.
Време за възстановяване на секретен ключ при Intel Xeon E5-2699 (eprint.iacr.org)
С помощта на атаката с решетка изследователите успяват да открият 4962 невалидни подписа, които разкриват факторизацията на съответния публичен ключ RSA, като по този начин позволяват извличането на частни ключове, съответстващи на 189 уникални публични ключа RSA.
Много от извлечените тайни са от устройства с уязвими имплементации, като най-големият брой подписи идва от устройства на Zyxel.
Устройства, съответстващи на генерираните подписи (eprint.iacr.org)
Изследователите разкриха проблема на Cisco и Zyxel по-рано тази година и доставчиците разследваха причината.
Cisco установи, че миналата година е въведено подходящо смекчаване в Cisco ASA и FTD Software. Компанията съобщи на изследователите, че проучва възможностите за смекчаване в Cisco IOS и IOS XE Software.
Zyxel установи, че версията на фърмуера на ZLD, която изследователите са използвали в експеримента, е преминала към използване на OpenSSL, което елиминира риска.
Изследователите предупреждават, че ако реализациите за подписване, използващи алгоритъма на китайската теорема за остатъка (CRT) с RSA, имат грешка при изчисляването на подписа, атакуващ, който наблюдава подписа, може да успее да изчисли частния ключ на подписващия.
За да се противодейства на възможността на атакуващия да извлече тайния ключ, изследователите препоръчват реализации, които проверяват подписите преди изпращането им, като например пакета OpenSSH, който разчита на OpenSSL за генериране на подписи.
Източник: e-security.bg