Будут ли случайные данные, добавленные в JPG, сделать его непригодным для использования? - PullRequest
20 голосов
/ 09 сентября 2008

Итак, чтобы упростить свою жизнь, я хочу иметь возможность добавлять от 1 до 7 дополнительных символов в конце некоторых изображений JPG, которые обрабатывает моя программа *. Это фиктивные отступы (заполнители и т. Д. - вероятно, все 0x00), чтобы размер файла был кратен 8 байтам для блочного шифрования.

Попробовав это с несколькими программами, кажется, что они в порядке с дополнительными символами, которые появляются после FF D9, который определяет конец изображения - так что кажется, что формат файла достаточно четко определены, чтобы «коррупция», которую я добавляю в конце, не имела значения.

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

Я полагаю, что все разговоры о стеганографии хуллабалло лет назад, у кого-то есть некоторый вклад здесь ...

(обработка шифрования 8-байтовыми блоками, я не хочу сохранять предварительно зашифрованный размер файла, поэтому добавьте 0x00 к входным данным и оставьте их там после декодирования)

Ответы [ 4 ]

20 голосов
/ 09 сентября 2008

Нет, вы можете добавить биты в конец файла jpg, не делая его непригодным для использования. Заголовок файла jpg указывает, как его читать, поэтому чтение программы остановится в конце данных jpg.

Фактически, люди прячут zip-файлы внутри jpg-файлов, добавляя zip-данные в конец jpg-данных. Из-за того, как эти форматы структурированы, полученный файл действителен в любом формате.

7 голосов
/ 09 сентября 2008

Можно ... но результаты могут быть непредсказуемыми.

Несмотря на то, что в этом формате достаточно информации, чтобы сказать клиенту игнорировать дополнительные данные, скорее всего, это не тот случай, для которого программист проверял.

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

3 голосов
/ 09 сентября 2008

Вы можете встроить свои данные в тег XMP в формате JPEG (или в полях EXIF ​​или IPTC). XMP - это XML, поэтому у вас есть немного гибкости, чтобы вы могли создавать собственные вещи.

Вероятно, это не самая простая вещь, которую можно , но размещение ваших данных здесь сохранит целостность JPEG и не потребует "постобработки".

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

0 голосов
/ 09 сентября 2008

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

Однако здесь есть большая проблема. Судя по вашему вопросу, я делаю вывод, что вы практикуете «безопасность через мрак». Это широко считается очень плохой практикой. Используйте Google, чтобы найти множество статей по этой теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...