Подтвердить что ты не робот

Хорошая библиотека для цифровых водяных знаков

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

Марк - это всего лишь 32 байта.

Я нашел хороший сайт, но алгоритм сделан для формата NetPBM, который мертв...

Я знаю, что существует метод LSB, но он не является стабильным для расширения. Есть что-то лучше?

Изменение метаданных не подходит, потому что видимые изменения.

4b9b3361

Ответ 1

Наверное, это не будет ответом, поскольку я не думаю, что было бы легко дать магический, точный ответ на этот вопрос. Водная метка сложна, и лучший способ сделать это - это сам: это сделает вещи более трудными для злоумышленника, пытающегося перепроектировать ваш код. Можно даже прочитать свой вопрос здесь, угадать, какую библиотеку вы использовали, и атаковать вашу систему более легко.

Превращение стеганографии в расширение изображений JPEG также очень сложно, потому что сжатие JPEG повторно применяется после расширения. На самом деле существует множество алгоритмов стеганографии JPEG. Какой из них вы должны использовать, зависит от того, что именно вам нужно:

  • Конфиденциальность данных?
  • Конфиденциальность присутствия сообщений?
  • Когерентность сообщений после изменения JPEG?
  • Устойчивость к атакам "Известная обложка" (когда злоумышленники пытаются найти сообщение на основе стеганографической системы)?
  • Устойчивость к атакам "Известные сообщения" (когда злоумышленники пытаются найти используемую стеганографическую систему на основе сообщения)?

Из того, что я знаю, как правило, алгоритм, который сопротивляется изменениям JPEG (рекомпрессии изображения), часто бывает намного проще атаковать, тогда как алгоритмы, которые запускают этап "кодировать" во время сжатия JPEG (после DCT (убыточное) преобразование и до преобразования Хаффмана (без потерь) более склонны сопротивляться.

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

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

Теперь я не могу сказать вам, какая стеганографическая система будет для вас самой лучшей, но я могу дать вам некоторые указания:

  • jSteg - Довольно старый, я не думаю, что он будет сопротивляться изменениям JPEG.
  • OutGuess - Довольно старый, но один из лучших алгоритмов
  • F5 (и F3/F4) - более свежий, хороший алгоритм, научные исследования.
  • stegHide

Я думаю, что все они основаны на LSB: кодирование выполняется во время сжатия JPEG после DCT и квантования. Единственное, на что я слышал, не стекалографическая система на основе LSB, о которой я слышал, упоминалась в этом, однако я еще не читал ее до конца, поэтому Я не могу сказать, удовлетворит ли это ваши потребности.

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

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

Ответ 2

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

Прежде чем объяснять вам алгоритмы, сначала я предполагаю, что необходимо провести различие между форматами JPG и PNG.

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

По сути, JPEG используется как атака схемы водяных знаков из-за его характеристики сжатия, которая может удалить водяной знак, если атакующий выполнил сжатие.

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

Что касается методов встраивания сообщения водяных знаков для файлов PNG, вы можете использовать метод встраивания гистограмм. Метод внедрения гистограммы меняет значения на гистограмме, изменяя значения соседних ячеек. Например, представьте, что у вас есть PNG-изображение в оттенках серого. Поэтому у вас будет только один канал для встраивания, а это значит, что у вас есть одна гистограмма с 256 ячейками. Выбирая соседние ячейки x и x + 1, вы меняете значения x и x + 1, перемещая пиксели с ярким x на x + 1 или наоборот, так что (x/(x + 1)) > T для вложения a '1' или ((x + 1)/x) > T для вложения a '0'.

Вы можете повторить ту же процедуру для всей длины гистограммы, и поэтому вы можете вставить в лучшем случае до 128 бит. Однако эта полезная нагрузка меньше того, что вы просили. Поэтому я предлагаю вам разделить изображение на части, например, блоки, и если вы разделите одно изображение на 4 компонента, вы сможете вставлять их в лучшем случае до 512 бит, что означает 64 байта. Этот метод, хотя и очень чувствителен к фильтрации и сжатию, если применяется прямо в пространственной области. Поэтому я предлагаю вам вычислить перед DWT изображения и использовать его низкочастотный поддиапазон. Это обеспечит вам лучшую прозрачность и надежность для искажения, изменения размеров и т.д., А также сжатия или фильтрации.

Существуют и другие подходы, такие как LPM (Log Polar Maps), но они очень сложны для реализации, и я думаю, что для вашего случая этот подход будет в порядке.

Я могу предложить вам две статьи, первая:

Водяные знаки цифровых изображений и видеоданных. Современный обзор

В этой статье вы найдете несколько основных понятий водяного знака и более подробно объясните алгоритм LSB. Вторая статья:

В режиме реального времени сжатое доменное видео с водяным знаком сопротивление геометрическим искажениям

В этой статье мы объясним алгоритм, который я только что объяснил сейчас.

Приветствия,

Ответ 3

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

Взгляните на структуру файлов JPEG на Wikipedia

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