Как факторизовать 512-битные ключи удостоверяющего центра из 90-х
Стойкость RSA держится на трудности разложения большого полупростого числа на множители, но слово «большого» со временем меняет смысл. Веб-инфраструктура открытых ключей отказалась от 1024-битных ключей больше десяти лет назад, сегодня стандартом считаются как минимум 2048 бит, а на горизонте — угроза квантовых компьютеров. Мэттью Макферрин задался вопросом попроще: остались ли где-то ключи настолько слабые, что их можно разложить на обычном настольном ПК? И, разумеется, ответ оказался утвердительным.
В ранние годы веб-PKI не было ни стандартов, ни минимальных требований: Netscape добавил поддержку SSL в 1994 году, в эпоху экспортных ограничений на криптографию. Корневые сертификаты тогда поставлялись прямо в установщиках браузеров, а их архивы (для Internet Explorer и Netscape) до сих пор лежат на archive.org. Автор скачал обе коллекции и, поручив извлечение корней инструменту Claude Code, собрал каталог старинных удостоверяющих центров.
Жертва — E-Certify
Цель нашлась быстро. В марте 1999 года Netscape 4.51 поставлялся с двумя 512-битными корневыми сертификатами ныне не существующего канадского центра E-Certify — один для SSL, другой для S/MIME. Ещё до конца того же года был публично разложен 512-битный ключ RSA-155, так что этот выбор длины был слабым уже по меркам своего времени. Корни E-Certify убрали из Netscape в 2002 году.
Чтобы восстановить закрытые ключи, достаточно разложить открытый ключ из сертификата на два простых множителя. Макферрин запустил CADO-NFS на своём десктопе с Ryzen 9 5950X: серверный сертификат факторизовался за 32 часа, клиентский — ещё за 29. Полученные ключи он выложил в открытый доступ.
Кому это грозит
Практическая опасность близка к нулю. Воспользоваться ключами можно, лишь запустив Netscape 4.51 с системными часами, переведёнными на дату до истечения корней (16 октября 2003 года) — под это описание не подходит ни один человек на планете, кроме специально поднятой автором виртуальной машины. Проверка того, что выпущенные сертификаты действительно работают, обернулась отдельным приключением: у Netscape 4.51 и любого современного TLS-стека нет ни одной общей возможности, так что пришлось (снова с помощью Claude Code) написать на Go старомодный TLS-сервер. Демонстрационный сайт e-certify.fly.dev доступен публично, но ни в одном современном браузере не откроется.
В качестве бонуса автор упоминает 512-битный центр подписи кода из Internet Explorer 3.02 — «Test VeriSign Commercial Software Publisher CA», который Стив Вайс разложил на GPU-кластере примерно за час. В репозитории проекта лежат и другие тестовые 512-битные ключи той эпохи, которые автор предлагает желающим факторизовать самостоятельно. Финальный штрих: SSL Labs, по словам автора, оценивает его архаичный тестовый сайт на отлично.
Источник: Hacker News
Комментарии
Войдите, чтобы комментировать.