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



    Специалиста по реверс-инжинирингу Анжа Альбертини (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. Соответствующие примеры файлов и код см. здесь.

    Support the author
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 20

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

      … — вы всё равно ничего не поймёте.» Похоже нужно смотреть видео целиком, в статье как то уж слишком всё упрощено.
        +2
        Неделю видел картинку, но поленился вводить ссылку с неё. Вот, не зря ленился — удобная статья появилась :)
        image
        +1
        … И что? Если сигнатура файла укладывается в размер IV (т.е. для AES-CBC — 16 байт)?
          –2
          Я правильно понял, принцип тот же, что и с всем известным RarJpeg?
            +12
            Нет
            +5
            Получается можно хранить шифрованный раздел, на котором будут валидные данные? Так может и без терморектального криптоанализа обойтись, если «шум» грамотно подбирать.
              +2
              Ну, так чтобы совсем обмануть пользователей терморектального криптоанализа — это данным методом недостижимо, но выиграть несколько часов, пока они разберутся, что к чему — вполне можно.
                +17
                Выиграть пару часов с паяльником ректально? Мсье знает толк…
                  0
                  Паяльник будет выключен, пока они будут выяснять, что содержится в «расшифрованных» данных.
            +25
            Специалиста по реверс-инжинирингу Анжа Альбертини (Ange Albertini) из компании Corkami в шутку спросили…
            Но на видно заметно, что спросил его об этом Слободан Мяузаебись. Извините.
              +10
              Слободан Мяузаебись мог спросить только серьёзно!
                +6
                /me собирается в паспортный стол менять фамилию
                +2
                По-моему, прикол, гугл на miaubiz иногда выдает Сатоши Мяу-ну-вы-поняли.
                +2
                Подобная статья была на хабре, если мне не изменяет память. Даже картинки те же самые.
                  0
                  С этими же картинками врядли.
                    0
                    Ну гугл это не показатель. Возможно статью удалили или скрыли, но картинка мне в память врезалась, это точно :-)
                  0
                  Мне казалось задача была такая:
                  ENC(linux)=freebsd
                  DEC(freebsd)=linux

                  Only users with full accounts can post comments. Log in, please.