...
Инструментарий и ловушки…
Реализация компанией Netscape оригинального протокола SSL: как избежать выбора случайных чисел
В этой секции попытаемся объяснить, почему иногда хороший криптографический алгоритм не обеспечивает необходимой безопасности. При неправильном использовании алгоритма возможны бреши в системе защиты. Это хорошо иллюстрирует некорректный выбор начального числа при генерации псевдослучайных чисел в реализации протокола защищенных сокетов SSL (SSL – Secure Sockets Layer) браузера Netscape версии 1.1 (SSL – протокол, гарантирующий безопасную передачу данных по сети. Комбинирует криптографическую систему с открытым ключом и блочное шифрование данных). Без всякого сомнения, читатель знает, что этому недостатку безопасности браузера несколько лет и поэтому сегодня его значение сильно ограничено. За внешним проявлением этого специфического недостатка скрывается классический пример того, как и поныне разработчики программ ухудшают криптографические алгоритмы. Поэтому его разбор уместен и в настоящее время. Несмотря на аналогичную уязвимость протокола SSL для PC и Macintosh, в книге будет рассмотрена найденная Ианом Голдбергом (Ian Goldberg) и Дэвидом Вагнером (David Wagner) уязвимость UNIX-версии протокола SSL компании Netscape.
Перед рассмотрением сути этой уязвимости следует осветить некоторые второстепенные вопросы технологии SSL и генерации случайных чисел. SSL – это сертифицированная система аутентификации и шифрования, разработанная Netscape во времена неоперившейся электронной коммерции. Она предназначалась для защиты коммуникаций, например транзакций сделок по кредитной карточке, от прослушивания потенциальными ворами. Более криптостойкая и практически не вскрываемая версия протокола со 128-битными ключами не получила широкого распространения в мире из-за экспортных ограничений США. Фактически даже внутри США большинство пользователей Netscape имели дело со слабой международной версией программы с 40-битовыми ключами.
В большинстве случаев для генерации ключей, включая генерацию ключей протокола SSL, применяется одна из разновидностей случайных процессов. Сгенерировать на компьютере последовательность случайных чисел сложнее, чем научить его говорить. Поэтому на практике обычно используются псевдослучайные числа, которые получают в результате обработки интервалов времени между нажатиями клавиш клавиатуры при вводе информации или координат курсора мыши при его перемещении на экране монитора.
Для версии браузера Netscape версии 1.1 для UNIX была использована следующая совокупность величин: текущее время, идентификаторы (PID) процесса и его родителя. Предположим, что злоумышленник и пользователь Netscape одновременно получили доступ к машине, что является нормой для многопользовательской архитектуры UNIX-систем. Для злоумышленника не составит особого труда просмотреть список процессов на машине и определить PID процесса Netscape и PID его родителя. Если злоумышленник сможет перехватить поступающие в компьютер пакеты TCP/IP и прочитать отметки времени в заголовках пакетов, то он сможет вполне точно узнать время генерации сертификата по протоколу SSL. Перечисленных сведений хватит для уменьшения ключевого пространства приблизительно до 10 6 комбинаций, среди которых найти ключ методом «грубой силы» достаточно просто даже в почти реальном масштабе времени. После определения начального числа генерации псевдослучайных чисел, используемых для построения сертификата по протоколу SSL компании Netscape, злоумышленник сможет сначала сгенерировать аналогичный сертификат для себя, а затем прослушать или похитить текущую сессию.
Очевидно, что рассмотренное – серьезная ошибка нарушения безопасности, которую Netscape обязана была исправить в последующих версиях, что и было сделано. Netscape выпустила патчи для браузеров версий 1.x и разработала совершенно новый генератор случайных чисел для браузеров версии 2.x. Детальнее об этом специфическом недостатке браузера можно узнать в архиве журнала доктора Добба по адресу www.ddj.com/documents/s=965/ddj9601h.
Если данные не защищены современным криптографическим алгоритмом, ранее рассмотренным в этой главе или ему аналогичным, то скорее всего данные в опасности. В этой секции будет показано, как простые методы шифрования могут быть взломаны в результате применения элементарных методов криптоанализа.