Криптоанализ


Криптоанализ - это процесс поиска слабых мест в криптографических алгоритмах и использование этих слабых мест для расшифровки зашифрованного текста без знания секретного ключа. Иногда слабость заключается не в самом криптографическом алгоритме, а скорее в том, как он применяется, что делает криптоанализ успешным. У взломщика могут быть и другие цели, такие как:

  • Полный взлом - поиск секретного ключа.
  • Глобальная дедукция - поиск функционально эквивалентного алгоритма шифрования и дешифрования, который не требует знания секретного ключа.
  • Вывод информации - получение некоторой информации об открытых текстах или зашифрованных текстах, которая ранее не была известна.
  • Алгоритм различения - возможность отличить вывод шифрования (зашифрованный текст) от случайной перестановки битов.


Цель хакера, выполняющего криптоанализ, будет зависеть от конкретных потребностей хакера в данном контексте атаки. В большинстве случаев, если криптоанализ вообще будет успешным, он не сможет пройти мимо возможности вывести некоторую информацию об открытом тексте (цель 3). Однако этого может быть достаточно, в зависимости от контекста.

Пример

Очень простым для понимания (но совершенно неприменимым к современным криптографическим шифрам) примером является метод криптоанализа, называемый частотным анализом, который может быть успешно применен к самым базовым классическим алгоритмам шифрования, которые выполняли одноалфавитную замену, заменяя каждую букву в открытом тексте на заранее определенную букву отображения из того же алфавита.

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

Таким образом, если буква “E” в английском языке встречается с определенной известной частотой (около 12,7%), то, чем бы “E” ни было заменено, чтобы попасть в зашифрованный текст, будет встречаться с аналогичной частотой. Наличие этой информации о частоте позволяет криптоаналитику быстро определять замены и расшифровывать зашифрованный текст. Методы частотного анализа неприменимы к современным шифрам, поскольку все они устойчивы к ним (если только это не очень плохой случай доморощенного алгоритма шифрования). Этот пример приведен здесь только для того, чтобы проиллюстрировать элементарный пример криптоанализа.

Как затруднить криптоанализ

Используйте проверенные криптографические алгоритмы с рекомендуемыми размерами ключей.

Убедитесь, что алгоритмы используются правильно. Это означает, что:

  • Не внедряйте собственную криптографию; используйте проверенные алгоритмы и реализации.
  • Выбирайте векторы инициализации с достаточно случайными числами.
  • Генерируйте ключевой материал с использованием надежных источников случайности и избегайте известных слабых ключей.
  • Используйте проверенные протокола и их реализации.
  • Выборайте наиболее подходящие криптографические алгоритмы для вашего контекста использования и данных.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, информационная безопасность, шифрование




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Поля и методы в Java: правила вызова методов
Расследование преступления онлайн
Реализация алгоритма Парето на C#