Разбих ключовете на Certificate Authority от 90-те — ето какво научих за Дивия Запад на уеб сигурността
Криптографското минало, което все още ни преследва
Когато сигурността остарява по-бързо от софтуера
Криптографията има един досаден навик — да се оказва, че онова, с което сме свикнали да се чувстваме защитени, вече не е достатъчно. Помните ли 128-битовото криптиране от 90-те? Изглеждаше непревземаемо. Днес е детска игра за всеки с лаптоп. Същото се случи и с RSA ключовете, които някога бяха обявени за практически неразбиваеми.
Наскоро стана публично достояние интересно проучване. Ситуацията: сигурност изследовател успя да разложи (factor) 512-битови RSA ключове от древни root certificate authorities — онези доверени „корени", от които браузърите зависят, за да проверят дали даден сайт е наистина този, за когото се представя.
Конкретно става дума за сертификати от Netscape 4.51, пуснат през март 1999 г. Тогавашният браузър се доставяше с удостоверения от канадска компания на име E-Certify. Тези корени останаха доверени за SSL връзки чак до 2003 г., когато общността най-накрая призна публично онова, което математиците знаеха отдавна — 512 бита никога не са били достатъчни.
Защо 512 бита винаги са били лоша идея
RSA-512 работи с 512-битов модул — произведение на две големи прости числа. През 90-те разлагането на такъв модул беше теоретически възможно, но практически много трудно. Проблемът е, че математиката не се е променила — променила се е нашата изчислителна мощ.
Един съвременен Ryzen 9 процесор може да разложи 512-битов RSA ключ за около 30 часа, използвайки отворени инструменти като CADO-NFS. През 1999 г. същият ключ би изисквал суперкомпютър или мащабна разпределена изчислителна операция.
Най-интересното е, че дори през 1999 г. ситуацията е била на ръба. RSA-155 (512-битово число със 155 десетични цифри) беше разложен през август 1999 — само месеци след като сертификатите на E-Certify бяха пуснати. Изследователят отбеляза, че тези ключове вероятно изобщо не е трябвало да бъдат издавани.
Историята на Web PKI
Web PKI — системата от certificate authorities, която защитава HTTPS — е изградена върху допускания за доверие, които днес изглеждат наивно. През 90-те браузърите се доставяха с десетки root сертификати от най-различни организации по света, с минимална стандартизация относно размерите на ключовете или оперативните практики.
Netscape, който по същество изобрети уеб търговията със SSL през 1994 г., беше особено либерален. Internet Explorer действаше по-консервативно — в IE никога не са били доставяни 512-битови RSA корени за SSL. Но подходът на Netscape създаде исторически артефакт: 512-битови CA сертификати, които останаха доверени на всяка система с стара версия на Netscape и неправилно настроен часовник.
Какво означава това за днешната сигурност
Изводът не е просто „никога не използвайте 512-битов RSA". Това е очевидно. По-важното е, че стандартите за сигурност са „живи документи". RSA ключ от 2048 бита, който днешните най-добри практики изискват, един ден също ще бъде сметнат за твърде малък. Проектът за стандартизация на пост-квантовата криптография на NIST вече е в ход, защото изследователите очакват, че квантовите компютри един ден ще разбият RSA изцяло.
За разработчиците и организациите днес това историческо напомняне подчертава няколко ключови принципа:
- Планирайте миграцията на алгоритми: Инфраструктурата ви ще се нуждае от актуализации, докато криптографските стандарти се развиват. Избягвайте hardcoding на конкретни алгоритми.
- Следете сроковете за deprecated: Certificate authorities и браузърите редовно обявяват дати за премахване на по-стари размери на ключове и хеш функции.
- Автоматизирайте подновяването на сертификати: Ръчните процеси водят до забравени сертификати и остарели конфигурации.
- Използвайте Certificate Transparency: Съвременните CA трябва да регистрират сертификатите публично, което затруднява злонамерени актьори да получат фалшиви удостоверения.
Забавната част
Отвъд сигурността, има нещо неоспоримо привлекателно в разбиването на криптографски ключове от отдавна несъществуващ certificate authority. Изследователят публикува както private ключовете на E-Certify, така и настрои тестов HTTPS сървър, който работи с Netscape Navigator 4.51. Това е капсула на времето — доказателство, че тези стари сертификати все още могат да удостоверяват връзки, поне към браузъри, по-стари от много днешни разработчици.
Ако ви е любопитно да разгледате стари архиви от сертификати, изследователят е публикувал инструменти и инструкции за извличане и анализ на исторически root сертификати. Може да откриете други забравени CA с по същество също толкова слаби ключове. Това е напомняне, че историята на интернет оставя следи — и не всички от тях са били сигурни.
Следващия път, когато конфигурирате TLS за вашето приложение, отделете момент да оцените колко далеч сме стигнали — и колко автоматично вашата хостинг платформа вероятно се грижи за подновяването на сертификати, размерите на ключовете и избора на cipher suites. Дивият запад на 512-битовите CA е зад нас, но уроците за криптографска хигиена остават толкова актуални, колкото винаги.