Программы
PC Magazine/RE logo
©СК Пресс 1996
PC Magazine, April 23, 1996, p. 199

Алгоритм защиты информации фирмы Netscape

Джефф Просис


Схема шифрования программы Navigator раскрыта: что делать?

Наиболее громкой сенсацией в компьютерном мире за 1995 г. стало сообщение о раскрытии защитного механизма Netscape Navigator - одной из наиболее популярных программ просмотра Web. Все началось в августе прошлого года. Cначала это вызвало просто некоторый интерес - или, вероятно, недоумение, - не больше. Однако уже в сентябре появились сообщения о "взломе" внутреннего алгоритма защиты, используемого фирмой Netscape. Начиная с этого момента я не обходил вниманием ни одну новость из этой области.

К сожалению, в большинстве опубликованных материалов опущены многие подробности. Поэтому пришлось разбираться самому, чтобы понять, в чем дело. Большую часть сведений удалось почерпнуть непосредственно из World Wide Web. В итоге, вся эта история оказалась значительно увлекательнее любой другой сенсации, когда либо опубликованной в компьютерной прессе, и не только. Кроме того, это позволило сделать ряд полезных выводов в отношении систем защиты данных. Познакомиться с ними будет полезно всем, чьи коммерческие интересы предполагают использование Internet.

Что же конкретно нового мы узнали? Этим вопросам посвящена данная статья. Стоит ли верить в то, что Internet и используемая для работы в ней программа просмотра (браузер) смогут гарантировать безопасность сведений о номерах кредитных карточек и прочей конфиденциальной информации? Посмотрим.

Secure Sockets Layer

Защитные механизмы передачи информации программы Netscape Navigator базируются на использовании протокола, носящего название Secure Sockets Layer, или, коротко, SSL. Когда вы работаете в Web, используя, например, программу просмотра Netscape Navigator, взаимодействие с подключаемыми Web серверами организуется с помощью протокола HTTP (Hypertext Transport Protocol - протокол передачи гипертекстовых документов). Например, для загрузки отформатированного HTML файла (HTML - язык разметки гипертекста), соответствующего определенной Web странице, программа просмотра отправляет серверу запрос в виде HTTP команды - GET; в ответ сервер инициирует передачу содержимого требуемого файла. Передача и прием непосредственно текста команды GET и самого HTML файла производятс через соединения, именуемые гнездами (sockets), через которые организуется взаимодействие между двум удаленными друг от друга компьютерами в сети Internet.

Внедрение концепции SSL фирмой Netscape направлено на решение фундаментальной задачи защиты информации, в том числе передаваемой через Web. Поскольку циркулирующие в этой информационной сети данные не подвергаются централизованному шифрованию или маскированию, любой пользователь, перехватив некоторое Web сообщение, сможет получить неограниченный доступ к содержащимся в нем сведениям. А ведь там может оказаться очень ценная информация, особенно если это - номера кредитных карточек, PIN коды для банкоматов или какие либо другие конфиденциальные данные. Internet может стать платформой для проведения крупномасштабных торговых сделок только в том случае, если в ней будет обеспечена полная конфиденциальность передаваемой деловой информации. В случае если сообщение все же попадет в посторонние руки, должна существовать гарантия, что вся содержащаяся в нем информация - например, номер кредитной карточки - не будет прочитана кем то другим, кроме отправителя и получателя.

Для решения этой задачи в SSL производитс кодирование HTTP сообщений. Для тех, кто знаком с концепцией семиуровневой модели ISO/OSI взаимодействи в сети и ее взаимосвязи с протоколами TCP/IP: протокол SSL находится между протоколом HTTP прикладного уровн и протоколами TCP/IP транспортного уровня и сетевого управления. Перед отправкой вся информаци автоматически шифруется, а при получении - расшифровывается. В промежутке между этими двум событиями для всех, у кого нет специального ключа декодирования, она представляет собой бессмысленную последовательность нулей и единиц.

Степень защиты SSL напрямую зависит от того, насколько сложно расшифровать перехваченное сообщение, не имея в распоряжении нужного ключа. В SSL используется хорошо известный алгоритм блочного шифрования RC4. Он был разработан Роном Ривестом - легендарным творцом в области криптографии, одним из создателей популярной криптосистемы с открытым ключом - RSA. По всеобщему признанию, алгоритм RC4 обладает достаточной надежностью, хотя его подробное описание засекречено и он не был подвергнут независимой экспертизе.

Если предположить, что сам алгоритм обеспечивает защиту информации, тогда сложность "взлома" зашифрованного SSL сообщения всецело зависит от длины используемого ключа. Если для шифрования используетс ключ длиной, например, всего 8 двоичных разрядов, то раскрыть данное сообщение не составит особого труда, поскольку количество возможных ключей для этих 8 разрядов ограничено значением 2**8, или 256. При помощи компьютера можно очень быстро отыскать решение, просто перебрав все возможные 256 вариантов. Однако если длина ключа возрастет до 100 разрядов, то задача превратитс в трудноразрешимую. Даже если возложить эту задачу на плечи современного суперкомпьютера, способного просматривать около 1 миллиона ключей в секунду, то перебор всех 2**100 комбинаций единиц и нулей дл расшифровки конкретного сообщения займет несколько столетий, если не больше, прежде чем нужное значение будет найдено.

Ключ, используемый Netscape Navigator для шифровани SSL сообщений, выбирается автоматически для каждого сеанса работы на основе уникальной информации, полученной в процессе исполнения. В версиях Navigator, продаваемых на территории США, используются ключи длиной 128 разрядов, которые, по крайней мере теоретически, не поддаются раскрытию. За пределами США, используются ключи длиной 40 разрядов - максимальное значение этого параметра, разрешенное строгим американским законодательством, приравнивающим экспорт программного обеспечения для средств шифрования продаже вооружения другим государствам. Согласно имеющимс сведениям, в правительственных службах США раскрытие сообщения, зашифрованного с помощью 40-разрядного ключа, происходит всего за несколько дней или даже часов.

Надежен ли SSL?

14 июля 1995 года пользователь из США по имени Хэл Финни разослал сообщение, которое в сообществе Internet прозвали как "SSL Challenge". В послании содержалось двоичное представление некоторого SSL сообщения, зашифрованного программой Netscape Navigator с использованием 40-разрядного ключа. Финни предложил следующее: найти код и сообщить ему фамилию и адрес вымышленного лица, содержащиеся в этом зашифрованном двоичном сообщении.

Ответа пришлось ждать недолго. Он поступил 15 августа от аспиранта из Франции по имени Дамьен Долигес. Сообщалось, что для раскрытия кода он использовал 120 рабочих станций и два суперкомпьютера и простой перебор: выбор очередного значения ключа, попытка расшифровать с его помощью данное сообщение и повтор процесса заново в случае неудачи. Потратив 8 дней и перебрав свыше 500 миллиардов ключей, он наконец отыскал правильное значение ключа. Весть об этом быстро распространилась по Internet, а затем и по другим основным телекоммуникационным службам. Позднее обнаружилось, что трем исследователям из США удалось почти на 2 часа раньше Долигеса найти решение. Но именно Долигес первым сообщил об этом. Сообщество заволновалось и обратилось 17 августа к фирме Netscape за официальным ответом в отношении гарантий безопасности.

В ответ Netscape выразила благодарность Долигесу, но опровергла какую либо практическую значимость его достижения. Аргументы компании (достаточно убедительные) состояли в следующем: ключ длиной 40 разрядов - всего лишь завеса против обычного перебора вариантов; а вот, опираясь на текущий или перспективный уровень компьютерных технологий, раскрыть ключ длиной 128 разрядов, используемый для шифрования в американских версиях программы Navigator, практически невозможно. Фирма Netscape также привела расчеты затрат процессорного времени на вскрытие шифра - по ее оценкам, это будет стоить 10 тыс. долл. Вывод следующий:

"Алгоритм RC4 с 40-разрядным ключом достаточно надежно гарантирует на потребительском уровне безопасность передачи номеров кредитных карточек - стоимость расшифровки сообщений достаточно высока и не стоит затрачиваемого на осуществление этой операции процессорного времени; однако пользователям следует по возможности использовать алгоритмы с более высокой степенью защищенности, в частности RC4 с 128-разрядным ключом.

С апреля прошлого года такой уровень защиты обеспечивается в американских версиях нашего продукта. Учитывая ограничения на экспорт, пользователи за пределами США не имеют этой возможности. Мы будем вам признательны, если вы поддержите законопроект, снимающий столь строгие ограничения на экспорт технологий для шифрования... И наконец, мы хотели бы подчеркнуть еще раз, что единственное, что удалось сделать Долигесe - это расшифровать единственное сообщение, закодированное с помощью алгоритма RC4 с 40-разрядным ключом. Сам алгоритм RC4 и программные продукты, использующие его, сохраняют, как и раньше, необходимую степень надежности".

В сущности, все приведенные фирмой Netscape аргументы вполне состоятельны. Удачная находка Долигеса - это не обвинительный приговор в адрес алгоритма RC4, а просто свидетельство недостаточной надежности ключей с длиной 40 разрядов. Задание длины этого параметра не входит в компетенцию фирмы Netscape, а все пользователи в США могут сохранять спокойствие, поскольку в их программах используются ключи для шифрования длиной 128 разрядов. Реальная же заслуга Долигеса заключается в том, что он опроверг утверждение правительства США о том, что 40-разрядные ключи достаточно надежны, чтобы гарантировать американским компаниям, использующим в своих продуктах технологию шифрования, достаточный уровень конкурентоспособности за пределами США. Теперь ясно, что на это нельзя рассчитывать, если даже любой гражданин (хотя, конечно, используемый им набор вычислительных средств не характерен для рядовых граждан) в состоянии раскрыть сообщение, зашифрованное с помощью ключа длиной 40 разрядов менее чем за одну неделю.

"Умный гору обойдет"

Существует старая поговорка: прочность цепи определяется ее самым слабым звеном. До сих пор все попытки раскрыть SSL сообщение программы Navigator опирались на простой перебор вариантов. Однако в компании Netscape не учли, насколько велика надежность SSL при попытках использования других методов.

17 сентября Йан Голдберг и Дэвид Уогнер, два выпускника университетского колледжа Беркли, опубликовали метод расшифровки SSL информации; дл получения результата с его помощью требуется всего несколько часов работы на одной рабочей станции. К удивлению многих, этот метод успешно справлялся как с 40-, так и 128-разрядными ключами. Если метод, предложенный Долигесом для поиска SSL кода, опиралс исключительно на простой перебор вариантов и служил примером эффективности параллельной обработки информации, то успех метода Голдберг/Уогнер стал реальным подтверждением "взлома" механизма защиты и крайне серьезным фактом. Рассмотрим, что же обнаружили Голдберг и Уогнер и как им удалось превратить маленький недочет алгоритма защиты программы Navigator в настоящую "пробоину", через которую "проедет целый грузовик", как охарактеризовал ситуацию один аналитик.

Считается, что сообщение, зашифрованное с помощью алгоритма RC4 с ключом длиной 128 разрядов, возможно раскрыть, если учесть настоящее количество попыток, необходимых для перебора значений ключа по методу проб и ошибок. Хотя число 128 не столь и велико, но если рассматривать "2 в степени 128", то результат - действительно огромное число, даже с точки зрени возможностей суперкомпьютера. Однако реальна эффективность длины ключа станет меньше, если его значение в действительности не является абсолютно случайным. Представьте ситуацию: кто то попросил вас зашифровать сообщение с помощью ключа длиной 128 разрядов, а затем сделал оговорку: "Да, между прочим, для этого ключа можно выбирать только одно из 256 различных значений". Реальная длина ключа теперь не имеет значения, поскольку эффективная его длина составляет всего 8 разрядов.

А оказалось следующее. Когда программа Navigator выбирает ключ для шифрования SSL сообщения, количество возможных значений для выбора жестко ограничено. Проблема заключается в том, что в действительности случайного распределения нет, поскольку эта характеристика всегда была иллюзорной для компьютеров, в самой концепции которых отсутствует понятие случайности. Компьютер неспособен сгенерировать абсолютно случайный ряд чисел, и для его моделировани программистам всегда приходилось искать обходные пути. Конечно, есть среди этих методов более надежные, но есть и менее.

Голдберг и Уогнер решили задачу, обратную той, которую выполняет генератор ключа шифра программы Navigator; они обнаружили, что ключ задается на базе "случайного" числа, в свою очередь производного от в достаточной степени предсказуемых чисел, таких, как идентификатор процесса рабочей программы и текущее время суток. Имея в арсенале эти сведения и проделав некоторую исследовательскую работу, им удалось сузить диапазон возможных ключей, среди которых следует искать. Отдельные сообщения им удавалось раскрыть за несколько секунд, и они подсчитали, что степень защиты, обеспечиваемая предлагаемыми в программе Navigator ключами длиной 128 разрядов, эквивалентна в реальности ключам с длиной всего 47 разрядов. В прекрасной статье для журнала Dr. Dobb's Journal ("Randomness and the Netscape Browser", January 1996) Голдберг и Уогнер подробно описали свой метод и дали заключение, что "сообщение, зашифрованное по предложенной Netscape схеме [128 разрядов], даже удаленный недоброжелатель сможет раскодировать всего за несколько минут".

Эта новость взволновала всех. Реакция была потрясающей. В тот момент, когда все сообщество собиралось приступить к обсуждению широкого спектра вопросов, связанных с защитой цифровой передачи информации, вдруг выясняется, что подобный механизм, используемый в наиболее популярной программе просмотра Web, несостоятелен. В течение считанных дней фирма Netscape признала существование такой проблемы и заявила о срочном начале работ по пересмотру алгоритма генерации ключей, используемого в программе Navigator, с тем чтобы значения ключей обладали более "случайным" характером и меньшей чувствительностью к возможным попыткам их вскрытия обходными методами. Новый алгоритм генерации ключей был обнародован для всеобщего обсуждения, так что теперь любой эксперт сможет подвергнуть его критическому анализу.

Какие выводы?

После такого урока с раскрытием защитного механизма, используемого фирмой Netscape, можно сделать по крайней мере два вывода. Первое - прочность любой схемы шифрования определяется прочностью ее наименее стойкого звена. В случае с программой Navigator все врем говорили об алгоритме шифрования и совсем не упоминали об алгоритме генерации ключа. Второе - секретность в действительности не означает защищенности. Нельзя дл защиты информации полагаться на секретность алгоритма защиты данных, потому что любой грамотный пользователь всегда сможет дисассемблировать код вашей программы.

То, что сделали Голдберг и Уогнер, стало важным уроком для всех нас. Алгоритм можно считать надежным лишь в том случае, если все его детали опубликованы в открытой печати, и он выдержал критику экспертов криптоаналитиков в течение нескольких лет.

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