Как стать автором
Обновить

Когда AES(☢) = ☠ — криптобинарный фокус

Время на прочтение2 мин
Количество просмотров36K


Специалиста по реверс-инжинирингу Анжа Альбертини (Ange Albertini) из компании Corkami в шутку спросили: можно ли сгенерировать картинку JPEG, которая после обработки шифром AES опять превратится в валидный JPEG. Анж принял вызов, а по результатам исследования опубликовал презентацию с объяснением, как это делается с разными форматами.

«Не нужно даже знать AES или JPEG, это слишком сложно, — пишет Альбертини. — мы просто поиграем с кубиками Lego».

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

Файл определённого формата обычно начинается с сигнатуры (для JPG используется сигнатура \xFF или \xD8), после которой следуют несколько разделов, среди них есть необходимые разделы, а есть необязательные, затем следует маркер окончания файла. После маркера можно добавлять произвольный контент (junk).

У блочного шифра есть несколько режимов (CBC, OFB, CFD и др.), для которых действует параметр IV, предусматривающий выбор внешних данных для использования в процессе шифрования. Хотя эти данные предполагаются как случайные, но на практике мы можем подсунуть такие данные, что фрагмент А в начале исходного текста всегда будет превращаться во фрагмент B в шифротексте. Таким образом, мы можем контролировать содержимое первого блока, то есть сигнатуру формата файла.

Также мы можем применить функцию decrypt для дешифрования произвольного текста. Если нам нужен шифротекст определённого вида (определённая картинка), то мы просто предварительно дешифруем его ключом X, а затем результат будем шифровать тем же самым ключом X, чтобы получить нужный текст. Эти данные внедрим в junk после маркера окончания файла.

Алгоритм действий выглядит примерно таким образом.



Альбертини сумел таким методом зашифровать PDF в PDF и JPG в JPG, PNG в PNG и FLV в FLV, а также ZIP в PNG. Соответствующие примеры файлов и код см. здесь.

Теги:
Хабы:
Всего голосов 66: ↑55 и ↓11+44
Комментарии20

Публикации

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань