THE METHOD OF EXTRACTING THE STEGANOGRAPHY WATERMARKS BY KEY USING HAAR WAVELETS

Abstract


This article describes a method for applying an encoded digital steganographic watermark to a digital image and its subsequent extraction using Haar wavelets. The method of applying a digital steganographic watermark by key, and highlighting this sign with a key, is considered. The relevance of this method of applying and highlighting a digital steganographic watermark is considered. A few words describe the method of splitting a signal into sub-signals using the Haar algorithm and how it is applicable in the context of digital images. The results of checking the application of a digital watermark for resistance to various transformations are presented, such as: blurring with a 3×3, 5×5 core, jpeg compression with a compression ratio of 50 and 70 %, deleting the 1 LSB, 2 and 4 LSBs. Corresponding images are presented that illustrate the results of tests for resistance to conversion of a digital steganographic watermark. A small, illustrative and easy to implement example of applying a digital steganographic watermark, as well as its extraction using a previously created key using simple coding, which consists in the fact that the columns of pixels of the original image are shifted by a certain number of positions, is presented. Also, the article provides a brief description of the LSB algorithm and considers the main advantages and disadvantages of the algorithm developed and presented in this article with the standard LSB algorithm. In conclusion, the corresponding conclusions were drawn about the applicability of the developed algorithm, about its shortcomings and advantages, described in this article.

Full Text

Введение В современном мире с его огромными, тяжело поддающимися контролю информационными потоками проблема отслеживания и тем более доказательства своего авторского права на цифровые информационные ресурсы встает особо остро. Зачастую для этого используют СВЗ (стеганографические водяные знаки) [1-5], в данной статье сделана попытка осуществить один из таких алгоритмов СВЗ, а именно рассмотрен способ нанесения и последующего выделения стеганографического знака при помощи преобразований Хаара [6, 7], а также кодирование и декодирование знака по специально сгенерированному ключу [8] и различные проверки на попытки стереть СВЗ с исходного изображения. 1.1. Метод Хаара Метод Хаара для одномерного сигнала заключается в разбиении значений сигнала на полусумму и полуразность [1]. В контексте изображений эти значения представляют собой яркости пикселей в grayscale-формате. Полусумма представляет собой среднее значение яркости двух пикселей, а полуразность - их отличие. Чтобы посчитать новый вектор полусумм и полуразностей, следует просто умножить исходный вектор пикселей на матрицу преобразования: - a - первый пиксель, - b - второй пиксель. Для восстановления необходимо умножить полусумму и полуразность на обратную матрицу преобразования: 1.2. Нанесение и выделение стеганографического водяного знака Для начала необходимо проверить, насколько возможен сам факт использования такого СВЗ (без кодирования), для этого ниже приведен алгоритм нанесения и последующего выделения такого знака. Для примера попробуем нанести изображение буквы W. В данной работе мы называем изображение, которое наносится внутрь другого изображения, стегосообщением, а изображение, внутрь которого встраивается стегосообщение, - контейнером. Нанесение стеганографического водяного знака происходит следующим образом: 1. Считывается исходное изображение или кадр из видео, на которое необходимо нанести водяной знак. 2. Создается отдельная grayscale-копия исходного изображения. 3. На grayscale-изображении ищется область с похожей яркостью пикселей (в данном случае разность между максимальной и минимальной яркостью не больше 5). 4. Далее данная область на цветном изображении подвергается небольшому размытию. 5. К найденной области прикладывается маска водяного знака. Пример исходного изображения с нанесенным водяным знаком (рис. 1). Как можно заметить, водяного знака на картинке практически не видно. 6. Далее, при необходимости выделения знака, картинка с нанесенным водяным знаком подвергается прямому преобразования Хаара. В результате изображение будет разбито на две части, первая часть - приближенная версия исходного изображения, вторая - информация, которая содержит в себе детали для восстановления исходного изображения (далее - шумы). Рис. 1. Изображение с нанесенным СВЗ Выделим часть фотографии с шумами для лучшей видимости водяного знака (рис. 2): Рис. 2. Изображение с СВЗ, подвергнутое преобразованию Хаара 1.3. Кодирование по ключу Алгоритм выделения марки базируется на простом преобразовании Хаара, поэтому скрыть информацию в контейнере или доказать, что данное видео является вашей собственностью, при помощи простого нанесения знака довольно затруднительно. А значит, необходимо добавить метод, который позволил бы однозначно доказать принадлежность объекта авторского права автору. Самым очевидным и, скорее всего, простым методом является кодирование/декодирование по ключу. Действительно, при попытке выделить нанесенный СВЗ, закодированный при этом специальным ключом, мы получим лишь непонятный шум вместо водяного знака (рис. 3). Рис 3. Изображение с закодированной маркой, подвергнутое преобразованию Хаара На изображении выше представлена попытка выделения водяного знака без предварительного декодирования по специальному ключу. Для эксперимента в качестве ключа была использована простая строка символов, длина которой равна размеру СВЗ на изображении. Каждый i-й символ в данной строке декодируется по таблице ACII в число, которое представляет собой количество пикселей, на которое нужно сдвинуть i-й столбец стегосообщения (если количество пикселей, на которое нужно сдвинуть столбец, превышает количество пикселей столбца, то следует просто смещать пиксели по кругу, т.е. последний пиксель столбца становится первым и т.д.). После символов в строке выделено 3 байта под кодирование размера водяного знака. Алгоритм сдвига столбцов для кодирования марки: 1. Копируем значения столбца изображения OneVectorVaue[i] = WatermarkMatrix[j][i], где 2. Присваиваем эти значения обратно в матрицу, учитывая сдвиг и перенос: WatermarkMatrix[(j + Key[i]) % WatermarkRows][i] = OneVectorValue[i], где Key[i] - i-й элемент строки, содержащей ключ. Пусть имеется водяной знак, заданный матрицей, показанной ниже, элемент матрицы - координата i-го пикселя: Для данной матрицы будет использован ключ длиной 3 (так как высота и ширина матрицы равна трем). Ключ: Dos. Обратимся к таблице ASCII для того, чтобы представить сообщение соответствующими числами из этой таблицы: - D = 104, - o = 157, - s = 163. Данные десятичные значения указывают, на сколько элементов нужно сдвинуть каждый столбец: 1 - на 104, 2 - на 117, 3 - на 123. Для того чтобы не выполнять сдвиг вручную, можно воспользоваться формулой, приведенной выше, и узнать координаты нового места после сдвига (2-й пункт формулы сдвига столбцов). Матрица после сдвига: Данный алгоритм кодирования неэффективен, но вполне подойдет для описания процесса нанесения по ключу и заключения некоторых выводов, которые мы приведем позже. Алгоритм нанесения закодированного вотермарка почти ничем не отличается от алгоритма нанесения незакодированного, добавляется лишь шаг (между 3-м и 4-м шагом исходного алгоритма) с кодированием изображения марки и последующим наложением закодированной марки на исходное изображение. 1.4. Декодирование марки и ее выделение Допустим, мы получили изображение с нанесенной закодированной маркой. Для получения изображения водяного знака необходимо применить обратный сдвиг пикселей, но так как мы заранее не знаем, где расположен водяной знак, а знаем его размер, мы просто выделяем шумы с изображения, а затем делим изображение с шумами на области, размер которых равен размеру изображения водяного знака, и применяем к каждой такой области декодирование по ключу (выполняем обратный сдвиг пикселей). В результате должен получиться устойчивый образ водяного знака (рис. 4). Рис. 4. Изображение с декодированной маркой(*png) Алгоритм сдвига столбцов для декодирования марки: 1. Копируем значения столбца изображения: OneVectorVaue[i] = WatermarkMatrix[j][i], где 2. Считаем обратный сдвиг: Shift = WatermarkRows - (Key[i] % WatermarkRows), где Key[i] - i-й элемент строки, содержащей ключ. 3. Присваиваем эти значения обратно в матрицу, учитывая сдвиг и перенос (см. рис. 4): WatermarkMatrix[(j + Shift) % WatermarkRows][i] = OneVectorValue[i], 1.5. Проверка на устойчивость Все попытки нанесения СВЗ на контейнер для защиты авторского права не имеют смысла, если этот СВЗ можно будет без особых усилий стереть, а сам контейнер при этом никак не изменится (по изображению не будет понятно, подвергалось ли оно преобразованиям, которые характерны для попыток удалить стегосообщение). Проверим данный алгоритм на устойчивость к некоторым видам преобразования: 1. Jpeg-сжатие 50 % (рис. 5). 2. Jpeg-сжатие 70 % (см. рис. 5, б). 3. Размытие с ядром (3×3) (см. рис. 5, в). 4. Размытие с ядром (5×5) (см. рис. 5, г). 5. Удаление 1 младшего бита в каждом байте изображения (рис. 6). 6. Удаление 2 младших бит в каждом байте изображения (см. рис. 6). 7. Удаление 4 младших бит в каждом байте изображения (см. рис. 6). а б в г Рис. 5. Устойчивость стегосообщения к преобразованиям: а - jpeg-сжатие 50 %; б - jpeg-сжатие 70 %; в - размытие с ядром (3×3); г - размытие с ядром (5×5) Как можно заметить (рис. 6, 7), СВЗ устойчив к большинству видов преобразований, попытки удалять его дальше могу привести к сильной потере качества изображения. Далее следует упомянуть в выборе алгоритма кодирования водяного знака то, что так как все попытки стереть стегосообщения сводятся к различным манипуляциям с контейнером, то следует брать во внимание возможные варианты этих манипуляций, будь то jpeg-сжатие, размытие и т.д. Например, если предположить, что, скорее всего, контейнер будут пытаться «размыть», то алгоритм кодирования СВЗ следует подобрать такой, чтобы нанесенные впоследствии пиксели не находились рядом друг с другом. а б в Рис. 6. Устойчивость стегосообщения к удалению битов: а - удаление 1 младшего бита в каждом байте изображения; б - удаление 2 младших бит в каждом байте изображения; в - удаление 4 младших бит в каждом байте изображения Рис. 7. Пример изображения с 4 удаленными младшими байтами 1.6. Сравнение с LSB-алгоритмом Коротко скажем о LSB-алгоритме (Last Significant Bit) [9, 10]. Данный алгоритм позволяет записывать в каждый младший бит контейнера произвольную информацию, в том числе другое изображение. Если сравнивать алгоритм, описанный выше, с LSB-алгоритмом, то можно сказать, что первый намного более устойчив к попыткам стереть стегосообщение, но в то же время LSB-алгоритм прячет стегосообщение в чистом виде, т.е. никак его не изменяя, в то время как описанный нами алгоритм наносит стегосообщение на контейнер, увеличивая разницу между соседними пикселями в контейнере, что подразумевает, что от стегосообщения остается черно-белый силуэт. Но по очевидным причинам для защиты авторского права более значимым и важным является именно устойчивость: как можно убедиться, стегосообщение несмотря на преобразования хоть и теряет в качестве, но по-прежнему остается узнаваемым, в то время как при использовании LSB-алгоритма вся информация теряется даже при малейших преобразованиях. Вывод В данной статье был рассмотрен способ нанесения устойчивого СВЗ, а также выделение его при помощи преобразований Хаара, также был рассмотрен способ кодирования марки и выделения ее по ключу. Для примера был взят простой алгоритм кодирования, но в дальнейшем можно использовать другие, более подходящие алгоритмы. В статье были представлены результаты попыток различных преобразований с целью удаления СВЗ, также были сделаны выводы об устойчивости. Было приведено сравнение с LSB-алгоритмом. В результате можно заключить, что способ нанесения СВЗ, представленный в данной статье, обладает необходимым минимумом характеристик для использования его в целях защиты авторского права. Данный способ обладает приемлемой устойчивостью, практически незаметен на исходном изображении и весьма прост в реализации.

About the authors

E. L Krotova

Perm National Research Polytechnic University

A. V Chekmenev

Perm National Research Polytechnic University

A. O Bolgov

Perm National Research Polytechnic University

References

  1. Стеганография в XXI веке. Цели. Практическое применение. Актуальность [Электронный ресурс]. - URL: https://habr.com/en/post/253045/ (дата обращения: 20.06.2019).
  2. Стеганография [Электронный ресурс]. - URL: https://photodb. illusdolphin.net/media/4781/stego.pdf (дата обращения: 20.06.2019).
  3. Steganography and digital watermarking. - URL: https://www.cs.bham. ac.uk/~mdr/teaching/modules03/security/students/SS5/Steganography.pdf (accessed 20.06.2019).
  4. Watermark. - URL: https://en.wikipedia.org/ wiki/Watermark (accessed 20.06.2019).
  5. Digital steganography: hidden data within data. - URL: https://ieeexplore. ieee.org/document/935180/keywords#keywords (accessed 20.06.2019).
  6. Haar wavelet. - URL: https://en.wikipedia.org/wiki/Haar_wavelet (accessed 20.06.2019).
  7. Вейвлет-сжатие «На пальцах» [Электронный ресурс]. - URL: https://habr.com/en/post/168517/ (дата обращения: 20.06.2019).
  8. Kernel image processing. - URL: https://en.wikipedia.org/wiki/Kernel_ (image_processing) (accessed 20.06.2019).
  9. Least significant bits insertion. - URL: http://www.lia.deis.unibo.it/ Courses/RetiDiCalcolatori/Progetti98/Fortini/lsb.html (accessed 20.06.2019).
  10. LSB-стеганография. - URL: https://habr.com/ ru/post/112976/ (accessed 20.06.2019).

Statistics

Views

Abstract - 46

PDF (Russian) - 17

Refbacks

  • There are currently no refbacks.

This website uses cookies

You consent to our cookies if you continue to use our website.

About Cookies