וואלה32 רקטות מוכנות לשיגור: צה"ל איתר בדרום לבנון - טרם הפסקת האשDaily MaverickWHAT’S COOKING: A trio of venison recipes from the heart of the KarooPunch2027: APC govs distance themselves from Wike-led rainbow coalition, deny allianceESPN59 points for the Bears? 41 for the Ravens? Let's size up four NFL offenses that erupted in Week 1Bollywood HungamaEXCLUSIVE: Himesh Reshammiya reunites with Vikram Bhatt after 13 years for 1920: Cold Winter; horror flick to be shot in MussoorieRTP DesportoI Liga. Braga Vence Estoril por 1-0 com Golo Decisivo de Jonas WindThe Jerusalem PostRussian frigate fires flares at NATO member Denmark's military helicopter in international watersInquirer Entertainment‘Forgotten Island’ introduces underrepresented Filipino culture to the worldUOLGoverno acredita que decisão firme do STF sobre Moraes reduz margem para intervenção dos EUANMEWatch Charli XCX bring out Kim Petras for ‘Unlock It’ in BrooklynIl Fatto QuotidianoIntossicazione dopo la festa dei soci di un istituto bancario: avviate le verifiche sul cateringNotJustOkFull list of winners at the 2026 AFRIMMA Awards
The Daily Newsstand · Free, Always
Tuesday, September 15, 2026

[Перевод] Как я факторизовал RSA‑ключи центра сертификации… из 90-х

Translate

В последнее время меня всерьез стала беспокоить безопасность RSA. Криптография RSA держится на сложности факторизации большого полупростого числа, но какое именно число можно считать достаточно «большим» — вопрос интересный. Web PKI отказалась от 1024-битного RSA больше десяти лет назад, и хотя я не знаю никого, кто факторизовал бы ключ такого размера, это вполне по силам какому‑нибудь правительству или другой организации с большим количеством машин. Буквально пару дней назад кто‑то факторизовал 862-битный ключ RSA-260 в рамках конкурса RSA Factoring Challenge. Это самая крупная факторизация, о которой я слышал. Сегодня во всем мире используют RSA с длиной ключа минимум 2048 бит, но и это скоро устареет из‑за риска, который представляют квантовые компьютеры в будущем.

И вот я подумал: небольшие ключи RSA можно факторизовать даже на скромном персональном компьютере. А в ранние годы Web PKI не было ни стандартов, ни минимальных требований. Netscape реализовала поддержку SSL в 1994 году, IE — вскоре после. Это все еще была эпоха экспортных ограничений на криптографию. Найдутся ли ключи, достаточно маленькие, чтобы я мог их факторизовать? Если что я не руководствуюсь ничем, кроме простого интереса.

Спойлер: конечно, да, но сначала нужно найти ключ, который мы будем взламывать.

К счастью, корневые сертификаты поставлялись вместе с установщиками браузеров, и на archive.org есть архивы и Internet Explorer, и Netscape. Архивы неполные, но должны дать неплохое покрытие старых корневых сертификатов. Я скачал обе коллекции и поручил Claude Code извлечь все корневые сертификаты. Я выложил сгенерированную Claude веб‑страницу со всеми этими старинными корневыми сертификатами здесь. Я не проводил тщательной проверки вывода LLM, но выглядит вполне правдоподобно.

С помощью фильтров на этом сайте мы можем найти маленькие ключи, которые использовались для SSL.

Ага! Цель найдена. В марте 1999 года Netscape 4.51 поставлялся с 512-битным RSA доверенным для SSL, и еще одним — для S/MIME. Оба корневых сертификата принадлежали давно почившему канадскому удостоверяющему центру E‑Certify.

Позже в том же году был факторизован 512-битный RSA-155, так что даже для своей эпохи он был слишком слабым и, вероятно, не должен был поставляться вообще.

512-битные корневые сертификаты от E‑Certify были удалены Netscape в 2002 году. К сожалению, Internet Explorer, судя по всему, никогда не поставлял 512-битные корневые сертификаты для SSL, так что веселье ограничится Netscape и относительно небольшим периодом времени.

Факторизация публичных ключей из корневых сертификатов даст мне два простых числа, необходимых для восстановления приватного ключа. Я запустил CADO‑NFS на своем персональном компьютере с Ryzen 9 5950X: факторизация E‑Certify RSA 512 Gold Server для SSL заняла 32 часа, а E‑Certify RSA 512 Gold Client — еще 29 часов. Полученные приватные ключи приведены ниже.

После того как вы установите CADO‑NFS по инструкции, запустить его несложно. Нужно извлечь из сертификата модуль, который будем факторизовать. Это делается с помощью пары строк на Python:

from cryptography import x509
f = open("gold-server.pem", "rb").read()
pubkey = x509.load_pem_x509_certificate(f).public_key()
print(pubkey.public_numbers().n)

Полученное значение N передается в CADO‑NFS, примерно так:

./cado-nfs.py $N -t 32 --workdir /data/cert1

Если вы каким‑то чудом используете Netscape 4.51 с часами, выставленными до истечения срока действия корневых сертификатов E‑Certify (16 октября 2003 года), вы можете использовать эти приватные ключи для выпуска сертификатов. Под эту категорию подпадает ноль людей на планете… кроме виртуалки, которую я сам настроил.

Проверка того, что выпущенные сертификаты заработают в Netscape 4.51, сама по себе оказалась приключением: TLS‑функционал у Netscape 4.51 и любого современного TLS‑стека не пересекаются вообще. Так что пришлось снова звать на помощь Claude Code, чтобы тот написал нам ретро TLS‑сервер на Go. Сайт публично доступен по адресу e‑certify.fly.dev — можете посетить его с помощью своей копии Netscape. В любом другом современном браузере он просто не загрузится.

А если хотите попробовать поднять собственный сайт на этих старых ключах — все ключи и инструменты лежат в репозитории https://github.com/mcpherrinm/ancientroots. Или сделайте что‑нибудь похуже: например, MitM для SSL всех тех пользователей Netscape 4.51, у которых часы выставлены на 25 лет назад…

Скрытый текст
C=CA, O=E-Certify, OU=RSA Gold Server, CN=E-Certify RSA 512 Gold Server
-----BEGIN CERTIFICATE-----
MIIByjCCAXSgAwIBAgIBATANBgkqhkiG9w0BAQQFADBjMQswCQYDVQQGEwJDQTES
MBAGA1UEChMJRS1DZXJ0aWZ5MRgwFgYDVQQLEw9SU0EgR29sZCBTZXJ2ZXIxJjAk
BgNVBAMTHUUtQ2VydGlmeSBSU0EgNTEyIEdvbGQgU2VydmVyMB4XDTk4MTAxNjEz
Mzc1M1oXDTAzMTAxNjEzMzc1M1owYzELMAkGA1UEBhMCQ0ExEjAQBgNVBAoTCUUt
Q2VydGlmeTEYMBYGA1UECxMPUlNBIEdvbGQgU2VydmVyMSYwJAYDVQQDEx1FLUNl
cnRpZnkgUlNBIDUxMiBHb2xkIFNlcnZlcjBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC
QQDNVQ93Ev7zgNaJAR1Z7gCydU6mky1e/B4EbY1NsdtfsitU9cELqg5uRJDPA40n
CDPeOyil1lJ5N8hekcqJAkkXAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
KoZIhvcNAQEEBQADQQB09SV6OeeDEP8Je3DOLNZ24U98NHqIBTDyB4sRpDmNdHum
+3rm4AYtznBxG5hEShO89bcWi3yJtBITGuTRDnMq
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAM1VD3cS/vOA1okBHVnuALJ1TqaTLV78HgRtjU2x21+yK1T1wQuq
Dm5EkM8DjScIM947KKXWUnk3yF6RyokCSRcCAwEAAQJAWZ2FOWf+A9K4T2VAJS69
+SU/pW3YwHrysuYJZN56K0Iz+Hqd1hBhCeJ3/T+/cvXq+ctD0x3uOxU1rDSeCoMO
KQIhAPdbc1wTm3twWDYi1iXmRBXz97MYxRFld/KFr8x5+tK9AiEA1IG09a+oVg6j
NMDj6GD7spaD4q9t1wk/Nyq/MTLPkmMCIEzzYjvuzZvlI0wUIlLAA8Zgk1pgBk6X
Jm2IMVyHRgRxAiEAjZKgCTHuVu7HgiSjcTPzW0X1NTckWSc66zjaSR+Ns/sCICxT
yXoTXWQCWL6BMpf2no7IlvoEnBIrED2Frq3PxlEA
-----END RSA PRIVATE KEY-----
C=CA, O=E-Certify, OU=RSA Gold Client, CN=E-Certify RSA 512 Gold Client
-----BEGIN CERTIFICATE-----
MIIByjCCAXSgAwIBAgIBAjANBgkqhkiG9w0BAQQFADBjMQswCQYDVQQGEwJDQTES
MBAGA1UEChMJRS1DZXJ0aWZ5MRgwFgYDVQQLEw9SU0EgR29sZCBDbGllbnQxJjAk
BgNVBAMTHUUtQ2VydGlmeSBSU0EgNTEyIEdvbGQgQ2xpZW50MB4XDTk4MTAxNjEz
MzQwOFoXDTAzMTAxNjEzMzQwOFowYzELMAkGA1UEBhMCQ0ExEjAQBgNVBAoTCUUt
Q2VydGlmeTEYMBYGA1UECxMPUlNBIEdvbGQgQ2xpZW50MSYwJAYDVQQDEx1FLUNl
cnRpZnkgUlNBIDUxMiBHb2xkIENsaWVudDBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC
QQBwCcT1iYlNyKPywB/kffD8esiCzGYJxSnTXQjU6ej/XxnA+9yqjzAMPtqFd094
wM89Vsmz9YOWSO6Qn6wOAs45AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
KoZIhvcNAQEEBQADQQAdktdM5AzW+0o96eHCHwD3UfzxPvjKxPEjiI/QTn+njHt/
BEJb9yZatONRckglVc9v8P8Dy8HZGQD0+Pn0uxhW
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIBOQIBAAJAcAnE9YmJTcij8sAf5H3w/HrIgsxmCcUp010I1Ono/18ZwPvcqo8w
DD7ahXdPeMDPPVbJs/WDlkjukJ+sDgLOOQIDAQABAkASXZeaxFPsm0I8zb+snfR9
/saVolnrqhVEH5EODdXy3nSm6fpdrsDwQDDg52biXjIUizQYdd3OourOn0/PyyiB
AiEAyW4gFFgM0dJ+Y//vrIyQutLeH/5c/Vq3Lbcxv7R908kCIQCOZAAv8OCG/2oH
yKaYj/EoxcFZ9csVh/kjicO/JIX+8QIhAMEzAkvhBDLALYAmvDCJBkxa8rhHFdPf
jbCodGwGZ2WZAiB//XmBnlZkYl/PoVfGmNRgHun+0AZ9UxzqCeJvBQiBMQIgHWlr
0Sh1a8K2pQP2ktgmL3RH5+1Qd2wLx/hhGWtwPvU=
-----END RSA PRIVATE KEY-----

В качестве бонуса Internet Explorer 3.02 поставлялся с удостоверяющим центром для подписи кода под названием OU=Test VeriSign Commercial Software Publisher CA. Точно не знаю, для чего он предназначен, но факторизуется так же легко. В репозитории ancient roots есть еще несколько похожих на тестовые 512-битных RSA‑ключей — попробуйте факторизовать что‑нибудь еще или придумать, как их можно применить!

Стив Вайс (Steve Weis) факторизовал этот ключ примерно за час на GPU‑кластере.

Скрытый текст

L=Internet, O=VeriSign, Inc., OU=Test VeriSign Commercial Software Publisher CA -----BEGIN CERTIFICATE----- MIIByDCCAXKgAwIBAgIQIsTi2AgEp+1OkpqVLROnazANBgkqhkiG9w0BAQQFADBl MREwDwYDVQQHEwhJbnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1 BgNVBAsTLlRlc3QgVmVyaVNpZ24gQ29tbWVyY2lhbCBTb2Z0d2FyZSBQdWJsaXNo ZXIgQ0EwHhcNOTYwNTAyMTcwMTUyWhcNOTcwNTAyMTcwMTUyWjBlMREwDwYDVQQH EwhJbnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLlRl c3QgVmVyaVNpZ24gQ29tbWVyY2lhbCBTb2Z0d2FyZSBQdWJsaXNoZXIgQ0EwXDAN BgkqhkiG9w0BAQEFAANLADBIAkEA1XqTpg1hQWq6IKvBXLor12GBTH6y4BHyOJjy MJISn0ZWBqkbZiEfoWgaWXhEwrvxMWonLA2vYFHijofFG4YIjwIDAQABMA0GCSqG SIb3DQEBBAUAA0EAKxuR/KPJPDNJgw0ORqqM7SlvIeqnVP71OEFytqPaZw/3TPEi 9oK6PzBvPdLBZlnjRd/hf58FW2+/PXxsFl78Mg== -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIIBOwIBAAJBANV6k6YNYUFquiCrwVy6K9dhgUx+suAR8jiY8jCSEp9GVgapG2Yh H6FoGll4RMK78TFqJywNr2BR4o6HxRuGCI8CAwEAAQJAYM8tlegLarcToS1CiuKC bzHwiNgMFkENL01sx0n21/MhmA6pBiSwVn3Pu6yvx6EMB1zbCsaBHs/VTyofMbRW QQIhAOqdAX3bVZwAlZ5FDWyfGwgE0FXEIQ85kjcihrFeDs49AiEA6PBfC0YuNMSa M135mH+MEY1GEmQe9xHcXpiYAPazCrsCIQDDtuw6oJEfDYHCwRn8xhGXs+RT18Q4 Xi9yXRP9vFgfhQIhAIYUTfD0XYZcIBIvJosj56D2u328iaJXcow0s1Hirp4fAiAG bza0Qcc27d/0OzKOqep3JrDl/L5HidTj2XEqEXmnXw== -----END RSA PRIVATE KEY-----

И напоследок: вот что SSL Labs думает о моем тестовом сайте:

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.