В настоящее время наиболее распространенным, но наименее стойким является метод замены наименьших значащих битов или LSB-метод

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

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

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

При скрытии информации в другом файле большое значение имеет тип файла, используемого в качестве контейнера. На сегодняшний день существуют алгоритмы для скрытия сообщения в gif, bmp, jpeg, mp3, wav, mpeg и многих других форматах. Все они используют более или менее схожие принципы, и у всех есть значительные ограничения. Не стоит думать, что можно спрятать всю Библию в фотографию своей семьи.

Рассмотрим простой пример включения сообщения в файл BMP формата, для чего нам понадобится чья-нибудь фотография и сообщение. Предполагаем, что фотография имеет размер 200х400 пикселей.

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

Мы можем представить, что часть матрицы выглядит следующим образом:

...

00010101 10100101 01010101 00110101 01110101 01000010 01010011 01101010

00001011 01010101 10100101 01010111 11010111 10000101 01010010 01010010

10101001 10101011 00001001 10100100 00010001 10100101 00010101 10100101

...

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

Хотя об этом не было сказано ранее, сообщение, которое мы будем включать в изображение – это «SET», поэтому для того, чтобы сделать задуманное нами, необходимо три октета, по одному на каждую букву. В шестнадцатеричной системе последние выглядят так – 73 65 74, а в двоичной так – 01001001 01000001 01001010.

Таким образом, изображение меняется следующим образом (изменяется последний бит каждого байта):

00010100 10100101 01010100 00110100 01110101 01000010 01010010 01101011

- - - - - - - -

00001010 01010101 10100100 01010110 11010110 10000100 01010010 01010011

- - - - - - - -

10101000 10101011 00001000 10100100 00010001 10100100 00010101 10100100

- - - - - - - -

...

Как можно видеть, несмотря на данные изменения, это не оказало значительного влияния на изображение.

Разумеется, рассмотренный выше пример очень базов, усложнения этого алгоритма призваны преодолеть неизбежные ограничения. А теперь допустим, что если в предыдущем примере нам надо было бы поместить не три буквы, а шесть? Можно использовать два самых младших бита, хотя это приведёт к тому, что в изображении будет больше искажений. Также можно было бы поместить сообщение в заголовок файла или после финальной отметки. Всё зависит от того, какое изображение используется, есть много способов вставки сообщений, и принцип, использованный в примере выше можно использовать для многих других форматов файлов.

Теперь необходимо рассмотреть аспекты метода НЗБ (Наименьшего Значащего Бита) и ошибки, связанных с использованием программ, базирующихся на нем. Следует сразу оговориться, что наблюдатель – промежуточное звено, задачей которого является определение, не передаётся ли от «Юстаса» «Алексу» скрытая информация, запрещённая в обычном их общении. Существует три типа наблюдателей: пассивный, активный и злонамеренный. Самый безопасный пассивный – он не может разрушить сообщение, или, скажем, заменить его ложным, все его возможности сконцентрированы на одном: смотреть, смотреть и еще раз смотреть и быть тревогу, если что-то высмотрено. Предположим, что у нашего канала связи появился пассивный наблюдатель (бороться с активным можно только с помощью полной замены применяемого алгоритма, метод НЗБ не выдерживает такой атаки). Допустим, от «Юстаса» «Алексу» непрерывно пересылаются невинные на первый взгляд файлы. Если наблюдатель обоснованно определит, что в этих файлах не всё чисто, то это явится основанием для приглашения в «гестапо».

Способов внедрения и защиты данных в контейнере может быть множество даже в рамках одного типа контейнеров. Первое и главное из требований к методам внедрения – незаметность. Это означает, что посторонний наблюдатель в канале связи не должен на глаз определить наличие или отсутствие внедрения. Это требование большая часть распространенных программ худо-бедно, но выполняет. Рассмотрим, как именно.

Надежность такого внедрения прямо пропорциональна соответствию характера распределения НЗБ в контейнере и сообщении. А распределения эти в подавляющем большинстве случаев совпадать и не будут. А еще в некоторых случаях это будет визуально заметно на картинке, построенной из одних только младших битов контейнера. Вот простейший пример – берём исходную картинку.

 

 

 

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

 

 

Результат работы анализирующей программы

 

Конечно, для большинства наблюдателей достаточно и того, что «на глаз не видно», но слабые места своей защиты надо знать.

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

 

 

Результат анализа сканированного изображения

 

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

 

 

Результат анализа компьютерного изображения

 

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

На следующем рисунке представлен анализ сканированного рисунка с внедренной информацией. Чётко видна граница между «своим» шумом и шумом, возникшим в результате внедрения сообщения. Отсюда вытекает еще одно необходимое правило – всегда нужно распределять биты сообщения по всем младшим битам контейнера (например, внедрять не последовательно, а в каждый 2-й, 3-й и т. д. НЗБ) или же дополнять чем-то (шумом с тем же законом распределения) длину сообщения так, чтобы она стала равна объему НЗБ контейнера.

 

 

Рисунок 2.5 – Анализ сканированного рисунка с информацией

 

Есть еще одно интересное решение – подбор картинки под сообщение: из множества имеющихся картинок подобрать ту, которая исказится менее всего при внедрении указанного сообщения.

Таким образом, можно сделать вывод, что скрывать данные нужно с умом. И применение простейших методов скрытия может быть достаточно надёжным только тогда, когда понимаешь и учитываешь ограничения и область применимости этих методов. В частности, не стоить доверять свои секреты «чистым» картинкам-контейнерам, а перед использованием той или иной стеганографической программы лучше все же проверить, дает ли она хотя бы какой-то минимум надежности.

 


3 ИСПОЛЬЗОВАНИЕ ПРОГРАММ И УТИЛИТ ДЛЯ СТЕГАНОГРАФИИ