- •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-битных до RISC.
Тем не менее, остается огромная пропасть между уровнем стойкости и надежности существующего сейчас ПО, применяющего криптоалгоритмы, в котором до сих пор находятся "детские" дыры (последний пример - реализация PPTP от Microsoft) и тем уровнем криптостойкости, который демонстрируют последние, независимо проанализированные ведущими криптоаналитиками алгоритмы и протоколы, где серьезной уязвимостью считается, например, та, что требует 265 блоков шифрованного текста и затем 258 перебора вариантов или одного открытого текста, зашифрованного 233 разными, но зависимыми друг от друга ключами и затем сложности анализа, равного 257.
Хочется надеяться, что будущие реализации и применение этих алгоритмов сохранят столь высокую степень их надежности.
Можно выделить 4 основных группы причин ненадежности криптографических систем: применение нестойких алгоритмов, неправильная реализация или применение криптоалгоритмов, а также человеческий фактор. При этом видна четкая параллель между ними и причинами нарушения безопасности вычислительных систем.
Из-за описанных причин имелись или имеются проблемы в безопасности у всех классов программных продуктов, использующие криптоалгоритмы, будь то операционные системы; криптопротоколы; клиенты и сервера, их поддерживающие; офисные программы; пользовательские утилиты шифрования; популярные архиваторы.
Для того, чтобы грамотно реализовать собственную криптосистему, необходимо не только ознакомится с ошибками других и понять причины, по которым они произошли, но и, возможно, применять особые защитные приемы программирования и специализированные средства разработки.