Будут ли случайные данные, добавленные к JPG, сделать его непригодным для использования?

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

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

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

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

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


person Adam Davis    schedule 08.09.2008    source источник


Ответы (4)


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

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

person pkaeding    schedule 08.09.2008
comment
непригодный для использования (о чем был вопрос) - это не то же самое, что снижение удобства использования. Немного никпика, я соглашусь. Но важное различие, потому что это может быть жизнеспособным решением. - person Stu Thompson; 09.09.2008
comment
Хорошо, я не уверен, что сказать, не снижая удобства использования, можно сделать его непригодным для использования, но я отредактирую это, чтобы сделать его более понятным. - person pkaeding; 12.09.2008

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

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

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

person Rob Walker    schedule 08.09.2008

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

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

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

person Stuart Helwig    schedule 09.09.2008

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

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

person xanadont    schedule 09.09.2008
comment
Что указывает на это? Я использую алгоритм TEA для шифрования данных, но он шифрует по 8 байт за раз. Вместо того, чтобы включать метаданные в зашифрованный файл, чтобы сообщить мне, насколько большими были исходные данные, я дополняю оригинал до 8-байтовой границы и оставляю заполнение на месте. - person Adam Davis; 09.09.2008