Криптоанализ зашифрованного текста с использованием Java

#java #cryptography #encryption

#java #криптография #шифрование

Вопрос:

Я ищу несколько идей по назначению.

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

До сих пор я проводил частотный анализ, атаку методом перебора для обнаружения шифра Цезаря, метод Красинского для обнаружения шифра Виженера, Ciphertext XOR для обнаружения простой версии потокового шифра. Я подозреваю, что файлы были зашифрованы с использованием некоторого сочетания шифров.

Кстати, расшифрованный открытый текст должен содержать просто обычное сообщение, но зашифрованный текст показывает использование более 97 различных символов ASCII!

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

Редактировать

Я ищу атаки на блочные или потоковые шифры. По крайней мере, это то, что я подозреваю…

Комментарии:

1. Просто наблюдение — но знаменитая машина Enigma использовала трехсимвольные симметричные алфавитные ключи. 97 символов ASCII? ASCII выполняется с 32 по 126, давая 94 символа. n и r добавляют еще два для 96, а затем маркер конца сообщения, такой как для 97. Другими словами, наивная копия ранних машин Engima (с фиксированным отражателем), шифрующая текстовые данные в стиле Windows, очень хорошо соответствовала бы подсказкам.

2. @Simon вау! это самое точное, что я слышал! то, что вы сказали, соответствует всему до сих пор! я впечатлен! возможно, вы можете написать это в качестве ответа, и я с радостью приму его. в качестве побочного запроса, знаете ли вы какие-либо методы для атаки на такое шифрование?

3. обращение только к образцам файлов довольно сложно. Разве вы не можете декомпилировать приложение, используя их?

Ответ №1:

Знаменитая машина Enigma использовала 3-символьные симметричные алфавитные ключи. 97 символов ASCII? ASCII выполняется с 32 по 126, давая 94 символа. n и r добавляют еще два для 96, а затем маркер конца сообщения, такой как для 97. Другими словами, наивная копия ранних машин Engima (с фиксированным отражателем), шифрующая текстовые данные в стиле Windows, очень хорошо соответствовала бы подсказкам.

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

Второй хорошо известный недостаток заключался в том, что символ никогда не сопоставляется сам с собой. Таким образом, если у вас есть потенциальный обычный текст, ни один символ не будет соответствовать.

Можно взломать Enigma методом перебора, если вы знаете, как выглядят роторы и отражатель. Не зная, что у вас есть около 10 ^ 15 возможностей для изучения в этом случае.

Ответ №2:

Почему бы не пойти дальше и не начать с перебора всех 26**3 возможностей для каждого из наиболее популярных алгоритмов с симметричным ключом:

И любые другие, которые вы можете найти.

Комментарии:

1. @Elalfer что заставляет тебя так думать? И даже если это маловероятно, существует относительно небольшое количество возможностей попробовать, так почему бы и нет?

2. @Daniel спасибо за вклад! но я пытался отвлечься от грубой силы и сосредоточиться на реальной криптографии. кроме того, поскольку шифрование выполнялось с использованием некоторого простого алгоритма, я сомневаюсь, что использовались twofish или rijndael .. вместо этого я ищу методы для потоковых и блочных шифров..

3. @Daniel: Смотрите предыдущий комментарий от Druv. И атака методом грубой силы на любой из этих шифров заняла бы годы и даже возрасты. Таким образом, эта домашняя задача не имела бы никакого смысла.

4. @Elalfer на самом деле, перебор не занял бы много времени в этом случае, поскольку мы знаем длину ключа (3 алфавита). но я не ищу грубой силы..

5. @Elalfer атака методом перебора всего лишь с использованием ключа из 3 альфа-символов не заняла бы вечность ни для одного из этих

Ответ №3:

Поскольку алгоритм прост и самодельный, вы можете попробовать эти наивные алгоритмы:

  • повторный ввод XOR с ключом шифрования через каждый третий символ
  • повторный ввод XOR с ключом шифрования через каждый 2-й или 1-й символ
  • XOR и поворот /сдвиг: ключ шифрования преобразуется в xor с зашифрованным текстом и поворачивается / сдвигается

Поскольку вы знаете, что обычный текст — это обычный текст, поищите шаблоны в первых нескольких символах зашифрованного текста и посмотрите, можно ли их объединить с ключом шифрования, чтобы получить ASCII-код для буквы / цифры.

Ответ №4:

Итак, вы сказали, что провели статистический анализ. Если алгоритм на самом деле наивный, частоты символов не будут распределены равномерно. Некоторые символы будут встречаться чаще. Так ли это? Если это так, я бы копал оттуда.

С таким же успехом я мог бы с вашей помощью доказать, что мой профессор ошибается

С «нашей помощью» мы могли бы доказать, что ваш профессор неправ.

Комментарии:

1. спасибо за вашу помощь! к сожалению, я не нашел никаких закономерностей. в любом случае, зашифрованный текст содержит около 97 различных символов. есть какие-нибудь идеи, почему, учитывая, что открытый текст написан простым английским языком (из 26 букв)? хм, кроме того, я мог бы особо упомянуть вас в своем отчете, если хотите 🙂

2. @Dhruv: Если открытый текст имеет верхний и нижний регистры, это уже 52 буквы. Добавьте пробелы, возврат каретки, запятые. Затем шифровальщик смешает их и, возможно, также распространит по всему репертуару ASCII, используя размер блока больше единицы.

3. @Paulo ах, да, это острое наблюдение.