- •8. Криптоанализ
- •8.2 Понятие стойкости криптографического алгоритма
- •8.3 Необходимость криптоанализа
- •8.4 Обзор известных методов криптоанализа классических шифров
- •8.4.1 Метод встречи посередине
- •8.4.2 Метод Полларда
- •8.4.3 Дифференциальный метод криптоанализа
- •8.4.4 Линейный метод криптоанализа
- •8.5 Инструменты криптоанализа
- •8.6 Проблема надежности криптосистем
- •8.7 Невозможность применения стойких криптоалгоритмов
- •8.7.1 Малая скорость стойких криптоалгоритмов
- •8.7.2 Экспортные ограничения
- •8.7.3 Использование собственных криптоалгоритмов
- •8.8 Неправильная реализация криптоалгоритмов
- •8.8.1 Уменьшение криптостойкости при генерации ключа
- •8.8.2 Отсутствие проверки на слабые ключи
- •8.8.3 Недостаточная защищенность от рпс
- •8.8.4 Наличие зависимости во времени обработки ключей
- •8.8.5 Ошибки в программной реализации
- •8.8.6 Наличие люков
- •8.8.7 Недостатки датчика случайных чисел (дсч)
- •8.9 Неправильное применение криптоалгоритмов
- •8.9.1 Малая длина ключа
- •8.9.2 Ошибочный выбор класса алгоритма
- •8.9.3 Повторное наложение гаммы шифра
- •8.9.4 Хранение ключа вместе с данными
- •8.10 Человеческий фактор
- •Заключение
- •Назад | Оглавление | Вперед
8.8.4 Наличие зависимости во времени обработки ключей
Это сравнительно новый аспект недостаточно корректной реализации криптоалгоритмов. Было показано, что многие криптосистемы неодинаково быстро обрабатывают разные входные данные. Это происходит как из-за аппаратных (разное количество тактов на операцию, попадание в процессорный кэш и т.п.), так и программных причин (особенно при оптимизации программы по времени). Время может зависеть как от ключа шифрования, так и (рас) шифруемых данных.
Поэтому злоумышленник, обладая детальной информацией о реализации криптоалгоритма, имея зашифрованные данные, и будучи способным каким-то образом измерять время обработки этих данных (например, анализируя время отправки пакетов с данными), может попытаться подобрать секретный ключ. Были изданы работы, в которых подробно описывается тактика атак на системы, реализующие алгоритмы RSA, Диффи-Хеллмана и DSS, причем ключ можно получать, уточняя бит за битом, а количество необходимых измерений времени прямо пропорционально длине ключа.
И хотя пока не удалось довести эти исследования до конкретного результата (вычислить секретный ключ), примеры показывают, что программирование систем критического назначения (в т.ч. и криптосистем) должно быть особенно тщательным и, возможно, для этого необходимо применять особые защитные методы программирования и специализированные средства разработки (особенно компиляторы).
8.8.5 Ошибки в программной реализации
Ясно, что пока программы будут писаться людьми, этот фактор всегда будет иметь место. Хороший пример - ОС Novell Netware 3.12, где, несмотря на достаточно продуманную систему аутентификации, при которой, по заявлениям фирмы Novell, "нешифрованный пароль никогда не передается по сети", удалось найти ошибку в программе SYSCON v. 3.76, при которой пароль именно в открытом виде попадает в один из сетевых пакетов. Этого не наблюдается ни с более ранними, ни с более поздними версиями этой программы, что позволяет говорить именно о чисто программистской ошибке. Этот ошибка проявляется только если супервизор меняет пароль кому-либо (в том числе и себе). Видимо, каким-то образом в сетевой пакет попадает клавиатурный буфер.
8.8.6 Наличие люков
Причины наличия люков в криптосистемах очевидны: разработчик хочет иметь контроль над обрабатываемой в его системе информацией и оставляет для себя возможность расшифровывать ее, не зная ключа пользователя. Возможно также, что они используются для отладки и по какой-то причине не убираются из конечного продукта. Естественно, что это рано или поздно становится известным достаточно большому кругу лиц и ценность такой криптосистемы становится почти нулевой. Самыми известными примерами здесь являются AWARD BIOS (до версии 4.51PG) с его универсальным паролем "AWARD_SW" и СУБД Paradox фирмы Borland International, также имеющая "суперпароли" "jIGGAe" и "nx66ppx".
Вплотную к наличию люков в реализации (очевидно, что в этом случае они используют явно нестойкие алгоритмы или хранят ключ вместе с данными), примыкают алгоритмы, дающие возможность третьему лицу читать зашифрованное сообщение, как это сделано в нашумевшем проекте CLIPPER, где третьим лицом выступает государство, всегда любящее совать нос в тайны своих граждан.