Методы сокрытия информации в графических изображениях

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 00:14, 18 ноября 2016.


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

Форматные методы сокрытия (форматные стеганографические системы) — это такие методы (системы), которые основываются на особенностях формата хранения графических данных.

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

Неформатные методы — это методы, использующие непосредственно сами данные, которыми изображение представлено в этом формате.

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

Содержание

Неформатные методы сокрытия в графических изображениях

Неформатные методы сокрытия в JPEG

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

Метод сокрытия в исходных данных изображения

Стандарт JPEG позволяет производить сжатие изображений без потерь (режим Lossless JPEG), этот режим существенно отличается от режима с потерями, основанного на базе квантования коэффициентов дискретного косинусного преобразования (ДКП). Lossless JPEG представляет собой кодирование с предсказанием (использующего схему двумерной дифференциальной импульсно-кодовой модуляции — ДИКМ), когда значение каждого пикселя объединяется со значениями соседних с ним для формирования величины прогнозирующего параметра. Затем полученный результат вычитается из исходного значения. Сформированные после обработки подобным образом всех точек изображения результирующие величины сжимаются посредством арифметического кодирования или кодирования по методу Хаффмана.

Поэтому в случае использования Lossless JPEG можно говорить о сокрытии информации непосредственно в данных самого изображения. При этом сокрытие может осуществляться при помощи основного метода компьютерной стеганографии — метода сокрытия в младших битах и его модификаций.

Однако Lossless JPEG применяется крайне редко на практике, а использовать формат JPEG в режиме сжатия с потерями при сокрытии информации данным методом нельзя, так как она будет потеряна в силу особенностей используемого алгоритма, таких как субдискретизация, ДКП, квантование.

Метод сокрытия с использованием таблиц квантования

Данный метод является одним из часто используемых на сегодня методов сокрытия данных файлов JPEG. Идея состоит в использовании для сокрытия младших битов чисел, представляющих коэффициенты квантования. Достоинство метода состоит в том, что он не нарушает типичную структуру потока JPEG и, следовательно, является полностью неформатным. К недостаткам можно отнести то, что обычно файлы JPEG содержат одну или две таблицы квантования (размер одной таблицы квантования равен 64 байтам), поэтому объем скрываемых данных невелик (сокрытие во всех младших битах одной таблицы квантования позволяет скрыть всего лишь 8 байт). Помимо этого изменение младших бит коэффициентов квантования вносит изменения в статистические характеристики сжимаемых блоков, тем самым отрицательно влияя на эффективность последующего кодирования, и, как следствие, ведет к увеличению размеров файла.

Метод использования ложных таблиц квантования

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

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

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

Метод сокрытия в спектре изображения после квантования

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

Суть метода заключается в следующем. Пусть — биты скрываемого сообщения, — значения ненулевых элементов блоков квантованного спектра немодифицированного изображения, упорядоченные согласно порядку их кодирования в алгоритме JPEG, где — номер бита элемента, — номер элемента, — соответствующие блоки модифицированного изображения.

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

где

А соответствующее ему обратное стеганографическое преобразование имеет вид:

где такое, что .

Методы сокрытия в графических изображениях с палитрой цветов

Использование палитры (еще говорят — отображения цветов) в графических форматах связано с попыткой уменьшить размер хранимой информации. Вообще говоря, палитра впервые была применена в графических адаптерах для упрощения их устройства и обеспечения большего разрешения при меньшем объеме оперативной памяти графического адаптера. Вслед за этим появились форматы хранения растровых графических изображений, основанные на использовании палитры, некоторые из которых активно используются и в наши дни. Ярким примером такого формата может служить GIF, который получил широкое распространение в сети Интернет и является неотъемлемой частью дизайна современных веб-страниц и Интернет-рекламы. Количество передаваемых по сети файлов в формате GIF более чем в два раза превышает количество передаваемых страниц и писем (на смену устаревающего формата был разработан формат PNG, также позволяющий использовать палитру цветов, однако он еще не получил большого распространения).

Каждая точка обычного растрового графического изображения задает интенсивность цветовых составляющих в каком-либо фиксированном цветовом пространстве (RGB, CMY, CMYK и т.д.). Если же формат хранения изображений использует палитру, то точки изображения могут принимать лишь один цвет из имеющихся в палитре. Палитра цветов — это набор из элементов, каждый из которых задает (как и точка обычного изображения) интенсивность цветовых составляющих в каком-либо фиксированном цветовом пространстве (обычно RGB), при этом каждая точка изображения содержит лишь номер цвета из палитры, а не информацию о ее цвете в цветовом пространстве.

Ниже представлен пример 8-битного RGB-изображения размером 4x4 точки, состоящего из чередующихся в шахматном порядке точек зеленого и синего цвета. Изображение записано в виде матрицы с (R, G, В)-элементами:

(0,255,0) (0,0,255) (0,255,0) (0,0,255)
(0,0,255) (0,255,0) (0,0,255) (0,255,0)
(0,255,0) (0,0,255) (0,255,0) (0,0,255)
(0,0,255) (0,255,0) (0,0,255) (0,255,0)

Для хранения такой матрицы необходимо 384 бита памяти.

Если использовать изображение с палитрой, то для данного изображения потребуется палитра, состоящая из двух цветов:

0 (0,255,0); 1 (0,0,255)

Тогда в этой палитре изображение примет вид

0 1 0 1
1 0 1 0
0 1 0 1
1 0 1 0

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

Метод сокрытия с использованием младших бит данных изображения

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

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

Однако количество пар элементов палитры, пригодных для сокрытия таким способом, как правило, не велико. Данный метод можно улучшить, добавив перед анализом палитры ее сортировку с сохранением старых номеров элементов по возрастанию веса, равного, к примеру, (65536R + 256G + В). Пары, пригодные для сокрытия, отбираются при помощи анализа отсортированной палитры, но сокрытие в данном случае производится несколько иным способом. Теперь для сокрытия бита сообщения необходимо изменить не младший бит точки изображения, а все ее значение на новое, которое получается путем изменения с младшего бита номера отсортированной палитры в том случае, если он пригоден для сокрытия. Говоря иначе, с каждым элементом палитры теперь связаны два числа , где — исходный номер элемента палитры, — номер -го элемента палитры, полученный в результате ее сортировки. Сокрытие состоит в том, что последовательно просматриваются все точки изображения, по значению точки определяется соответствующий номер . Если номер пригоден для сокрытия, то его младший бит заменяется на очередной бит сообщения. Затем по получившемуся номеру определяется связанный с ним исходный номер , который и присваивается текущей точке.

Метод сокрытия с использованием младших бит элементов палитры

Во всех форматах, использующих палитру цветов, сама палитра должна храниться вместе с изображением в его файле, а, следовательно, для сокрытия можно использовать метод сокрытия в младших битах элементов палитры (так как формат хранения элемента палитры аналогичен формату хранения точки обычного изображения без палитры). Однако размер палитры не превосходит 256 элементов, в каждый из которых можно скрыть не более 3 бит. То есть данным методом можно скрыть сообщение размером не больше 768 бит (что значительно меньше размера самого изображения). Кроме того, в результате сокрытия в палитре могут появиться элементы, кодирующие одинаковые цвета. Наличие таких «одинаковых» элементов в палитре изображения может использоваться в качестве критерия для определения факта наличия сообщения, сокрытого в младших битах палитры.

Метод сокрытия, основанный на наличии одинаковых элементов палитры

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

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

Ниже рассмотрен пример использования данного метода. Пусть сообщение , палитра состоит из двух цветов:

0 (0,255,0); 1 (0,0,255)

и изображение имеет вид

0 1 0 1
1 0 1 0
0 1 0 1
1 0 1 0

После добавления в палитру элемента 2 (0,255,0) в изображении можно скрыть сообщение (выделено жирным шрифтом):

2 1 0 1
1 0 1 2
0 1 2 1
1 2 1 0

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

Метод сокрытия путем перестановки элементов палитры

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

Далее приведен пример простейшего метода перестановки элементов палитры. Пусть сообщение — целое число от 0 до , где — число различных элементов палитры. Все элементы в палитре упорядочены по возрастанию веса, равного (65536R + 256G + В). Места в палитре, полученной в результате сокрытия, пусты и пронумерованы от 0 до . Место для первого элемента палитры определяется как остаток от деления на . Место для второго элемента единичной палитры вычисляется путем деления нацело на и нахождения остатка от деления полученного результата на . Таким же образом вычисляются позиции оставшихся элементов палитры, и получается новая палитра, отвечающая исходному сообщению . После получения новой палитры необходимо изменить соответствующим образом значения всех точек изображения.

Пусть палитра состоит из трех элементов, и они упорядочены в алфавитном порядке: . В качестве сообщения используется максимально возможное . Остаток от деления 5 на 3 равен 2, т.е. в новой палитре элемент будет стоять на последней позиции. Далее, , следовательно, останется на своем месте. Очевидно, что вынуждено занять единственное пустое первое место. Таким образом, после сокрытия палитра принимает вид: .

Извлечение сообщения происходит в обратном порядке. Первый элемент единичной палитры занимает последнее место, номер которого равен 2, следовательно, остаток от деления на 3 равен 2 и не равно 0. Второй элемент единичной палитры занимает место с номером 1, значит, остаток от деления на 2 равен 1. Таким образом, .

Форматные методы сокрытия в графических изображениях

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

Форматные методы сокрытия в файлах BMP

Метод дописывания данных в конец BMP-файла

Является простейшим форматным методом сокрытия, использующим тот факт, что все стандартные программы определяют конец данных изображения исходя из заголовка изображения, которое хранится построчно снизу-вверх. Его модификацией является метод сокрытия данных после палитры. Он основан на том, что начало данных определяется при помощи значения поля «смещение данных» (даже в изображениях без палитры), значение которого можно искусственным образом увеличить, а полученный таким образом участок BMP-файла использовать для сокрытия сообщения.

В случаях, когда в BMP-файле хранится 16-битное изображение без сжатия, для сокрытия можно воспользоваться фактом, что цветовые интенсивности RGB в этом режиме кодируются при помощи 5 бит на канал. В результате старший бит каждого 16-битного отсчета не содержит информацию о цвете и может быть использован для сокрытия.

Метод сокрытия в палитре

Данный метод основан на том, что каждый элемент палитры состоит из четырех байт, первые три из которых используются для кодирования цвета, а последний обычно равен 0 и не используется. Таким способом возможно скрыть не больше 256 байтов, не изменив размер исходного BMP-файла.

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

См. также