Очень интересная статья для людей, интересующихся криптографией.
Краткий пересказ. Современная тайнопись зиждется на несимметричной и симметричной криптографии. Все данные внутри уже установленной сессии шифруются симметричной криптографией — она быстрее, ибо не так ресурсоёмка. Обычно это AES. Ключ для AES шифруется уже несимметричной криптографией, чаще всего RSA, у которой есть два ключа — один открытый (публичный), другой закрытый (приватный). То, что зашифровано закрытым ключом, может быть расшифровано ключом открытым, и наоборот.
При установке сессии клиент и сервер договариваются о ключе для AES, и эти договоры шифруется RSA (курить Diffie–Hellman). Штука в том, что RSA работает на основе очень больших простых чисел, вся его защищённость состоит в том, что надо подобрать два множителя из простых чисел, у которых более тысячи цифр в каждом. Работа с настолько большими числами на компьютере иногда приводит к математическим ошибкам, и может привести к разглашению закрытого ключа! Затронутыми оказываются реализации RSA с закрытым кодом, в том числе устройства Зиксел (тот самый Зухель, ага) и Циско (гы-гы-гы). Алгоритм RSA в OpenSSH такому разглашению, что интересно, не подвержен — там знают о том, что могут возникнуть ошибки в расчётах, и от них предохранились.
Очень, очень любопытно! Покамест практические проблемы малы — даже RSA в тех же Циськах уязвим только в одном устройстве на тысячу, а реализация эксплойта не видится мне простой. Но учитывая, что таких устройств миллионы, и на кону могут стоять большие бабки…
В-общем, запасаемся попкорном. Может быть исключительно интересно.
Статья в ArsTechnica:
Ссылка на Cryptography ePrint: