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

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

C b a

A b c

 

Возьмем в качестве сообщения максимально возможное m=5 (т.е. примерно 2 бита). Остаток от деления 5 на 3 равен 2, т.е. в новой палитре a будет стоять на последней позиции. После деления 5 на 3 получаем 1. Остаток от деления 1 на 2 равен 1, и, следовательно, b останется на своем месте. Очевидно, что c вынужденно занять единственное , пустое первое место. Таким образом, после сокрытия палитра принимает вид:

 

 

Извлечение сообщения происходит в обратном порядке. Рассмотрим первый элемент единичной палитры a, он занимает последнее место, номер которого равен 2, следовательно, остаток от деления m на 3 равен 2 и m не равно 0. Вычеркнем a, второй элемент единичной палитры b занимает место с номером 1, значит, остаток от деления m на 2 равен 1. Таким образом, m=1+1*2+3=5.

 

 

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

 

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

 

000029D0:FF FF FF FF 52 00000048 65 6C 6C 6F 20 57 6F | R Hello Wo

000029E0:72 6C 64 21 │ | rld!

Листинг 6. Пример сокрытия данных в конце файла BMP (жирным шрифтом выделена сокрытая информация, подчеркнуты – нулевые байты, также пригодные для сокрытия)

 

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

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

 

00000000:42 4D D8 29 00 00 00 0000 00 36 04 00 00 28 00 | BM╪) 6♦ (

00000010:00 00 6E 00 00 00 56 00 │ 00 00 01 00 08 00 00 00 | n V ☺ ◘

00000020:00 00 00 00 00 00 12 0B │ 00 00 12 0B 00 00 00 00 | ↕♂ ↕♂

00000030:00 00 00 00 00 00 00 00 │ 00 00 01 01 01 00 02 02 | ☺☺☺ ☻☻

00000040:02 00 03 03 03 00 04 04 │ 04 00 05 05 05 00 06 06 | ☻ ♥♥♥ ♦♦♦ ♣♣♣ ♠♠

00000050:06 00 07 07 07 00 08 08 │ 08 00 09 09 09 00 0A 0A | ♠ ••• ◘◘◘ ○○○ ◙◙

00000060:0A 00 0B 0B 0B 00 0C 0C │ 0C 00 0D 0D 0D 00 0E 0E | ◙ ♂♂♂ ♀♀♀ ♪♪♪ ♫♫

00000070:0E 48 0F 0F 0F 45 10 10 │ 10 4C 11 11 11 4C 12 12 | ♫H☼☼☼E►►►L◄◄◄L↕↕

00000080:12 4F 13 13 13 20 14 14 │ 14 20 15 15 15 57 16 16 | ↕O‼‼‼¶¶¶§§§W▬▬

00000090:16 4F 17 17 17 52 18 18 │ 18 4C 19 19 19 44 1A 1A | ▬O↨↨↨R↑↑↑L↓↓↓D→→

000000A0:1A 21 1B 1B 1B 00 1C 1C │ 1C 00 1D 1D 1D 00 1E 1E | →!←←← ∟∟∟ ↔↔↔ ▲▲

Листинг 7. Пример сокрытия данных в палитре BMP файла (жирным шрифтом выделена сокрытая информация, подчеркнуты – нулевые байты, не используемого поля заголовка)

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