Comments 8
Мне кажется, что подмешивать что-то в сигнал в раскодированном виде - это бороться с кодеками. Надо не бороться, а возглавить. После того, как изображение уже пожато можно посмотреть на результаты сжатия и найти места, где можно "дописать" или "заменить", аналогичными блоками второго изображения. Т.е. вместо борьбы с кодированием остаётся борьба с перекодированием (которое, возможно, будет работать с удобным для себя представлением и сохранит большую часть модификаций).
Вы совершенно правы. Однако на пути к совершенно разумной и продуктивной идее стоит машина Youtube, которая презренно нарушает закон тождества между загружаемым файлом и тем, который размещается ею в хранилище. Видеофайл оказывается, мягко говоря, не тождественен самому себе. На практике это означает, что после безапелляционного перемалывания файла для условий хранилища от мест, где было что-то "дописано" или "поменяно" уже в пожатой фазе не остаётся битика на битике. Достаточно пару раз подряд выполнить операцию по загрузке и выкачиванию одного и того же файла с разными вкусовыми добавками, чтобы даже не пытаться использовать метаполя.
Не берусь говорить за сокрытие данных в видеопотоке, но на примере JPG алгоритмов данные можно легко и без потери качества оригинала сохранить в битах частотных коэффициентов. Алгоритм упаковки таких коэффициентов позволяет менять некоторые его биты, а для сохранения качества лучше всего делать это с младшими. По аналогу можно попробовать сохранить информацию и в видео потоке, но объем спрятанной информации при таком подходе не велик. Зато визуально не портит картинку, качество и размер изначальных файлов не меняется. Алгоритм сам по себе не требует полной реализации декодера, требуется только первоначальный (конечный) этап распаковки (сжатия).
После перекодирования, конечно же, все данные теряются.
Стеганографические эксперименты с видеофайлами и Youtube