Стеганография в цифровых изображениях

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Стеганография в цифровых изображениях — раздел стеганографии, изучающий проблему сокрытия данных в цифровых изображениях. В отличие от криптографии, задача стеганографии — скрыть сам факт наличия скрытого сообщения. Основные методы сокрытия информации в цифровых изображениях можно разделить на пространственные и частотные[1][2].

Задача стеганографии в изображениях — встроить информацию в цифровое изображение так, чтобы и сообщение, и сам факт его наличия были скрыты[2]. Полученное изображение с дополнительной скрытой информацией не должно выглядеть аномальным. Это достигается путём внесения изменений, незаметных для человеческого зрения[1]. Многие методы стеганографии используют методики, схожие с методами сжатия изображений.

Цифровые изображения представляют особый интерес в качестве контейнеров для скрытых сообщений, поскольку они имеют большой объём и не вызывают подозрений при публикации в социальных сетях и пересылке по электронной почте. В JPEG изображение размером в 733 килобайта поместились все 272 страницы пьесы Шекспира «Макбет»[3].

Практическое применение[править | править код]

На практике методы стеганографии применяются для идентификации, защиты авторских прав[4] и сокрытия передаваемых сообщений[5].

Хранение изображений в цифровом формате упрощает их хранение и распространение, но так же увеличивает риск нарушения авторских прав, несанкционированного изменения и распространения. В целях защиты интеллектуальной собственности и определения изменений, разрабатываются и применяются цифровые водяные знаки[4]. К таким стеганографическим методикам предъявляются особые требования:

  • Качество исходного изображения не должно быть серьёзно затронуто, скрытые данные должны быть минимально заметны.
  • Скрытые данные должны сохраняться в разных форматах, то есть содержаться не только в заголовке, а во всем теле изображения.
  • Скрытые данные должны быть устойчивы к намеренным попыткам удаления.
  • Необходимо наличие избыточного кода для коррекции ошибок, так как деградация данных при передаче/модификации неизбежна[4].

В 2018 году сотрудник General Electric использовал фотографию заката чтобы украсть 40 файлов Excel и Matlab, содержащих данные, являющиеся коммерческой тайной[6].

Facebook манипулирует метаданными изображений, публикуемых на сайте, для отслеживания их дальнейшего распространения[7].

Цифровые стего-изображения так же встречаются в известной интернет-головоломке Цикада 3301, одним из основных фокусов которой является стегоанализ.

Пространственные методы[править | править код]

Пространственные методы манипулируют значениями в пространственной области (пикселями).

LSB (англ. Least Significant Bit — Наименее значимый бит)[править | править код]

Данный метод заключается в выделении наименее значимых бит изображения-контейнера с последующей их заменой на биты сообщения. Поскольку замене подвергаются лишь наименее значимые биты, разница между исходным изображением-контейнером и контейнером, содержащим скрытые данные невелика и обычно незаметна для человеческого глаза[1]. Метод LSB применим лишь к изображениям в форматах без сжатия (например, BMP) или со сжатием без потерь (например, GIF), так как для хранения скрытого сообщения используются наименее значимые биты значений пикселей, при сжатии с потерями эта информация может быть утеряна. Форматы без сжатия имеют очень большой размер и могут вызвать подозрение, поэтому для стеганографии чаще используют другие форматы[2].

Встраивание[править | править код]

Например, имеется чёрно-белое изображение, представленное в виде матрицы . Значения в этой матрице соответствуют яркостям пикселей, расположенных по координатам . Пусть эти значения представлены восьмибитными двоичными числами. Пусть скрываемое сообщение имеет размер 2 байта. Для хранения скрытого сообщения возьмём 2 младших бита изображения-контейнера. Тогда для сокрытия 2 байт, то есть 16 бит необходимо изображение размером минимум 8 пикселей. Если изображение содержит больше пикселей, чем необходимо для хранения сообщения, необходимо выбрать правило, по которому будут выбираться пиксели для встраивания данных. Этот закон должен быть заранее известен получателю, так как он будет необходим для извлечения данных. Для сокрытия факта встраивания данных, к неиспользованным пикселям изображения добавляется шум, чтобы шум, вносимый скрытыми данными, не выглядел аномальным. Например, имея изображение размером 4x2 пикселя запишем первые два бита сообщения 0001101100011011 в первый пиксель: пусть исходное значение пикселя 10100101, заменим младшие два бита на первые два бита сообщения 10100100. Следующие два бита записываются в следующий пиксель, и так далее[1][2].

Извлечение[править | править код]

Для извлечения скрытых методом LSB данных, необходимо выбрать пиксели, содержащие полезную нагрузку по тому же закону, по которому они выбирались при встраивании. Далее, имея набор пар координат вида , по очереди, извлекаются наименее значимые биты: 10100100. Извлечённые биты данных объединяются, формируя скрытое сообщение[1].

PVD (англ. Pixel Value Difference — Разность значений пикселей)[править | править код]

Этот метод учитывает тот факт, что на гладких участках (где значение яркости меняется незначительно) изменение будет более заметно, нежели на участках, содержащих более значительные перепады яркости[8].

Встраивание[править | править код]

Исходное изображение разделяется на блоки по 2 пикселя, и скрытые данные кодируются как разность значений внутри этих блоков. Как и в случае с LSB, необходим закон, по которому будут выбираться блоки для встраивания. Для каждого используемого блока вычисляется модуль разности значений пикселей, по которому определяется диапазон допустимых значений. Чем больше перепад яркости внутри блока- тем шире выбранный диапазон[8]. Для удобства работы, ширина диапазона является степенью двух. Тогда, например, в блок с диапазоном шириной 4= можно записать 2 бита скрываемого сообщения (эти два бита, по сути, представляют собой выбор конкретного числа из диапазона). Блоки, изменение которых может привести к выходу за пределы допустимых значений яркости пикселей (от 0 до 255) не используются[8].

Извлечение[править | править код]

Для извлечения данных, изображение вновь делится на блоки по 2 пикселя. В соответствии с заранее известными правилом выбора блоков и последовательностью их обхода, для блоков рассчитывается разность значений пикселей и определяется диапазон, в который она попадает. Далее выполняется проверка на выход за пределы диапазона от 0 до 255: если при максимальной разности, входящий в диапазон, один из пикселей принимает значение больше 255 или меньше 0, то данный блок пропускается, так как он был отброшен аналогичной проверкой на стадии встраивания. Из оставшихся блоков извлекаются данные: по ширине диапазона определяется количество бит, встроенных в блок, которые потом извлекаются, начиная с наименее значимого. В общем же случае, когда ширина диапазона не является степенью 2, полезная нагрузка вычисляется как , где  — извлекаемые данные, - значения пикселей блока, - нижняя граница диапазона[8].

GLM (англ. Grey Level Modification — Изменение уровня серого)[править | править код]

Метод GLM заключается в изменении чётности значения яркости изображения в чёрно-белом представлении. В каждый пиксель изображения встраивается 1 бит скрываемого сообщения.

Встраивание[править | править код]

В начале значения яркости всех пикселей делаются чётными, путём изменения всех нечётных значений на 1. Далее чётность этих значений сравнивается с чётностью битов данных. Например, если первый бит данных чётный (то есть равен 0), то первый пиксель не изменяется, если же он нечётный (равен 1), то значение яркости изменяется на нечётное[9].

Извлечение[править | править код]

Для каждого пикселя, содержащего скрытое сообщение, определяется значение яркости. Если оно чётное- то соответствующий бит сообщения равен 0, если нечётное — то 1[9].

MPV (англ. Mid Position Value — Значение в средней позиции)[править | править код]

В данном методе к изображению-контейнеру сначала применяется преобразование Арнольда, затем для каждого пикселя вычисляется его позиция . Для каждого оценивается количество знаков и положение среднего знака . Далее берётся число из позиции в и вычисляется ключ . Если это число превышает количество пикселей изображения, то берётся его остаток от деления на количество пикселей . Далее берётся десятичное значение последних 4 бит пикселя номер и вычисляется . В -й пиксель встраивается 2 бита данных по правилу: если -чётное, то применяется прямое встраивание, если нечётное- то обратное. Если - чётное то встраиваются два бита сообщения, нечётное- встраиваются комплементарные 2 бита. К полученному изображению применяется обратное преобразование Арнольда[10].

Частотные методы[править | править код]

Частотные методы работают с коэффициентами в частотной области.

DCT (англ. Discrete Cosine Transform — Дискретное косинусное преобразование)[править | править код]

Данный метод использует DCT-преобразование для перехода в частотную область и представляет собой LSB в применении к коэффициентам DCT. Поскольку сжатие JPEG так же использует DCT преобразование, то данную методику возможно применить к сжатым JPEG-изображениям. При использовании формата JPEG, встраивание производится после сжатия с потерями, использующего DCT, но до применения кода Хаффмана для дальнейшего сжатия коэффициентов DCT без потерь[11].

Встраивание[править | править код]

Исходное изображение-контейнер разделяется на блоки по 8x8 пикселей, к которым применяется DCT: . Из каждого коэффициента матрицы выделяются наименее значимые биты и заменяются на биты скрываемого сообщения[12].

Извлечение[править | править код]

Изображение-контейнер разделяется на блоки по 8x8 пикселей, к которым применяется DCT: . Из каждого коэффициента матрицы выделяются наименее значимые биты и объединяются, восстанавливая скрытое сообщение[12].

DWT (англ. Discrete Wavelet Transform — Дискретное вейвлет-преобразование)[править | править код]

По своей сути данная методика схожа с основанной на DCT, но вместо DCT-преобразования для перехода в частотную область используется DWT-преобразование. Один из предложенных методов, основанных на DWT-преобразовании предполагает определение областей изображения, содержащих цвет человеческой кожи в пространстве HSV, затем применяется DWT-преобразование и данные встраиваются только в эти области[13].

Примечания[править | править код]

  1. 1 2 3 4 5 Bhallamudi, Savitha. Image Steganography., (2015).
  2. 1 2 3 4 Сейеди С. А., Садыхов Р. Х. СРАВНЕНИЕ МЕТОДОВ СТЕГАНОГРАФИИ В ИЗОБРАЖЕНИЯХ Архивная копия от 19 декабря 2019 на Wayback Machine. Информатика. 2013;(1):66-75.
  3. Steganography and Stock Photos: Are These "Cheesy" Images a Security Risk? (англ.). Computer Business Review (20 июня 2019). Дата обращения: 18 декабря 2019. Архивировано 18 декабря 2019 года.
  4. 1 2 3 Alaa A. Jabbar Altaay, Shahrin bin Sahib, Mazdak Zamani. An Introduction to Image Steganography Techniques (англ.) // International Conference on Advanced Computer Science Applications and Technologies, At Kuala Lumpur, Malaysia. — 2012. — Vol. ACSAT’12.
  5. Osama Hosam. Attacking Image Watermarking and Steganography - A Survey (англ.) // International Journal of Information Technology and Computer Science. — 2019.
  6. Danny Bradbury (2019-04-24). "GE Engineer Charged for Novel Data Theft". Infosecurity Magazine. Архивировано 17 декабря 2019. Дата обращения: 18 декабря 2019.
  7. Zak Doffman. Facebook Embeds 'Hidden Codes' To Track Who Sees And Shares Your Photos (англ.). Forbes. Дата обращения: 18 декабря 2019. Архивировано 17 декабря 2019 года.
  8. 1 2 3 4 Da-Chun Wu, Wen-Hsiang Tsai. [https://people.cs.nctu.edu.tw/~whtsai/Journal%20Paper%20PDFs/Wu_%26_Tsai_PRL_2003.pdf A steganographic method for images by pixel-value differencing] (англ.) // Pattern Recognition Letters. — 2003. — No. 24. Архивировано 9 августа 2017 года.
  9. 1 2 V.M. Potdar, E. Chang. Grey Level Modification Steganography for Secret Communication (англ.) // IEEE International Conference on Industrial Informatics. — 2004. — No. 2.
  10. Srilekha Mukherjee, Subhajit Roy, Goutam Sanyal. Image Steganography Using Mid Position Value Technique (англ.) // Procedia Computer Science. — 2018. — Vol. 132. Архивировано 17 декабря 2019 года.
  11. Falesh M. Shelke, Ashwini A. Dongre, Pravin D. Soni. [https://pdfs.semanticscholar.org/5dca/0ff2d8aeebc5a1889efa0a1a03c6c2faf972.pdf Comparison of different techniques for Steganography in images] (англ.) // International Journal of Application or Innovation in Engineering & Management. — 2014. — February (vol. 3, no. 2). — ISSN - 4847 2319 - 4847. Архивировано 25 декабря 2019 года.
  12. 1 2 Monika Gunjal, Jasmine Jha. Image Steganography Using Discrete Cosine Transform (DCT) and Blowfish Algorithm // International Journal of Computer Trends and Technology. — 2014-05-25. — Т. 11, вып. 4. — С. 144—150. — ISSN 2231-2803. — doi:10.14445/22312803/ijctt-v11p131.
  13. Swapnali Zagade, Smita Bhosale. [https://www.ijeat.org/wp-content/uploads/papers/v3i5/E3215063514.pdf Secret Data Hiding in Images by using DWT Technique’s] (англ.) // International Journal of Engineering and Advanced Technology (IJEAT). — 2014. — Vol. 3, no. 5. — ISSN – 8958 2249 – 8958. Архивировано 17 декабря 2019 года.