Криптоанализ
Криптоанализ - это процесс поиска слабых мест в криптографических алгоритмах и использование этих слабых мест для расшифровки зашифрованного текста без знания секретного ключа. Иногда слабость заключается не в самом криптографическом алгоритме, а скорее в том, как он применяется, что делает криптоанализ успешным. У взломщика могут быть и другие цели, такие как:
- Полный взлом - поиск секретного ключа.
- Глобальная дедукция - поиск функционально эквивалентного алгоритма шифрования и дешифрования, который не требует знания секретного ключа.
- Вывод информации - получение некоторой информации об открытых текстах или зашифрованных текстах, которая ранее не была известна.
- Алгоритм различения - возможность отличить вывод шифрования (зашифрованный текст) от случайной перестановки битов.
Цель хакера, выполняющего криптоанализ, будет зависеть от конкретных потребностей хакера в данном контексте атаки. В большинстве случаев, если криптоанализ вообще будет успешным, он не сможет пройти мимо возможности вывести некоторую информацию об открытом тексте (цель 3). Однако этого может быть достаточно, в зависимости от контекста.
Пример
Очень простым для понимания (но совершенно неприменимым к современным криптографическим шифрам) примером является метод криптоанализа, называемый частотным анализом, который может быть успешно применен к самым базовым классическим алгоритмам шифрования, которые выполняли одноалфавитную замену, заменяя каждую букву в открытом тексте на заранее определенную букву отображения из того же алфавита.
Это считалось улучшением по сравнению с более базовой техникой, которая просто сдвигала все буквы открытого текста на некоторое постоянное число позиций и заменяла исходные буквы новой буквой с результирующей позицией алфавита. Хотя шифры с одноалфавитной заменой устойчивы к слепой грубой силе, их можно легко взломать с помощью всего лишь ручки и бумаги. Частотный анализ криптоанализ использует тот факт, что естественный язык не является случайным, и одноалфавитная подстановка не скрывает статистических свойств естественного языка.
Таким образом, если буква “E” в английском языке встречается с определенной известной частотой (около 12,7%), то, чем бы “E” ни было заменено, чтобы попасть в зашифрованный текст, будет встречаться с аналогичной частотой. Наличие этой информации о частоте позволяет криптоаналитику быстро определять замены и расшифровывать зашифрованный текст. Методы частотного анализа неприменимы к современным шифрам, поскольку все они устойчивы к ним (если только это не очень плохой случай доморощенного алгоритма шифрования). Этот пример приведен здесь только для того, чтобы проиллюстрировать элементарный пример криптоанализа.
Как затруднить криптоанализ
Используйте проверенные криптографические алгоритмы с рекомендуемыми размерами ключей.
Убедитесь, что алгоритмы используются правильно. Это означает, что:
- Не внедряйте собственную криптографию; используйте проверенные алгоритмы и реализации.
- Выбирайте векторы инициализации с достаточно случайными числами.
- Генерируйте ключевой материал с использованием надежных источников случайности и избегайте известных слабых ключей.
- Используйте проверенные протокола и их реализации.
- Выборайте наиболее подходящие криптографические алгоритмы для вашего контекста использования и данных.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.