Рейтинг:1

Получение открытого текста, шифрующего зашифрованный текст

флаг cn

Контекст: шифровальная игра от overthewire (ссылка на нее: https://overthewire.org/wargames/krypton/krypton6.html, также полезно для получения дополнительной информации), где, имея зашифрованный текст, необходимо получить открытый текст.

На этом уровне у нас есть доступ к бинарнику, который шифрует любой файл поточным шифром, используя ключ из файла, к которому у нас нет доступа (keyfile.dat) и случайное число. У нас также есть подсказка: 8-битный LFSR.

Мой вопрос заключается в следующем. Почему я не могу вернуть открытый текст, зашифровав зашифрованный текст?

Мои два предположения для этого утверждения:

1) Мы имеем дело с потоковым шифрованием, поэтому шифрование зашифрованного текста всегда должно давать открытый текст, если ключевой поток одинаков в обоих случаях, что приводит меня ко второму пункту;

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

Я знаю, что ошибаюсь, так как шифрование зашифрованного текста дает мне не открытый текст, а скорее какой-то бессмысленный случайный еще более зашифрованный файл. Можете ли вы помочь мне понять, что не так с моими рассуждениями?

Заранее благодарю за любую помощь.

Рейтинг:1
флаг ng

В потоковом шифре шифрование зашифрованного текста всегда должно давать открытый текст.

Это верно для соответствующего определения «зашифрованного текста», которое подразумевает, что он имеет тот же размер, что и открытый текст; и используется тот же вектор инициализации (я думаю, «случайное число», далее IV).

Я подозреваю, что эксперимент, который пытается снова зашифровать зашифрованный текст, фактически шифрует вывод программы шифрования, а не зашифрованный текст, как определено выше. Вывод программы шифрования должен несколько включать зашифрованный текст, но есть общие практики, которые могут объяснить, почему попытка опыта не удалась, в том числе

  • IV обычно включается в выходные данные шифрования для облегчения расшифровки. Самый простой - это в начале, а затем следует фактический зашифрованный текст.
  • Зашифрованный текст может быть перекодирован, например. используя Base64, заголовки/трейлеры..

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

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

arpg avatar
флаг cn
_Я подозреваю, что эксперимент, который пытается снова зашифровать зашифрованный текст, на самом деле шифрует выходные данные программы шифрования, а не зашифрованный текст, как определено выше._ - Я не уверен, понял ли я это, не могли бы вы объяснить немного лучше?
fgrieu avatar
флаг ng
@arpg: возможно, программа шифрования выводит больше, чем зашифрованный текст. Как IV и зашифрованный текст. Чтобы вы не перешифровывали только зашифрованный текст и не получали ожидаемого результата.

Ответить или комментировать

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