Андроид. Windows. Антивирусы. Гаджеты. Железо. Игры. Интернет. Операционные системы. Программы.

Стеганография в изображениях примеры. Двоичная тайнопись(по материалам открытой печати). Современные подходы к стеганографии

Стеганография

Классификация стеганографии

В конце 90-х годов выделилось несколько направлений стеганографии:

  • Классическая стеганография
  • Компьютерная стеганография
  • Цифровая стеганография

Классическая стеганография

Симпатические чернила

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

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

Другие стеганографические методы

  • запись на боковой стороне колоды карт, расположенных в условленном порядке;
  • запись внутри варёного яйца;
  • «жаргонные шифры», где слова имеют другое обусловленное значение;
  • трафареты , которые, будучи положенными на текст, оставляют видимыми только значащие буквы;
  • узелки на нитках и т. д.

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

Стеганографические модели

Стеганографические модели - используются для общего описания стеганографических систем.

Основные понятия

В 1983 году Симмонс предложил т. н. «проблему заключенных». Её суть состоит в том, что есть человек на свободе (Алиса), в заключении (Боб) и охранник Вилли. Алиса хочет передавать сообщения Бобу без вмешательства охранника. В этой модели сделаны некоторые допущения: предполагается, что перед заключением Алиса и Боб договариваются о кодовом символе, который отделит одну часть текста письма от другой, в которой скрыто сообщение. Вилли же имеет право читать и изменять сообщения. В 1996 году на конференции Information Hiding: First Information Workshop была принята единая терминология:

  • Стеганографическая система (стегосистема) - объединение методов и средств используемых для создания скрытого канала для передачи информации . При построении такой системы условились о том, что: 1) враг представляет работу стеганографической системы. Неизвестным для противника является ключ с помощью которого можно узнать о факте существования и содержания тайного сообщения. 2) При обнаружении противником наличия скрытого сообщения он не должен смочь извлечь сообщение до тех пор пока он не будет владеть ключом . 3) Противник не имеет технических и прочих преимуществ.
  • Сообщение - это термин , используемый для общего названия передаваемой скрытой информации, будь то лист с надписями молоком, голова раба или цифровой файл.
  • Контейнер - так называется любая информация , используемая для сокрытия тайного сообщения. Пустой контейнер - контейнер, не содержащий секретного послания. Заполненный контейнер (стегоконтейнер) - контейнер, содержащий секретное послание.
  • Стеганографический канал (стегоканал) - канал передачи стегоконтейнера.
  • Ключ (стегоключ) - секретный ключ , нужный для сокрытия стегоконтейнера. Ключи в стегосистемах бывают двух типов: секретные и открытые. Если стегосистема использует секретный ключ, то он должен быть создан или до начала обмена сообщениями, или передан по защищённому каналу. Стегосистема, использующая открытый ключ , должна быть устроена таким образом, чтобы было невозможно получить из него закрытый ключ . В этом случае открытый ключ мы можем передавать по незащищённому каналу.

Компьютерная стеганография

Компьютерная стеганография - направление классической стеганографии, основанное на особенностях компьютерной платформы. Примеры - стеганографическая файловая система StegFS для Linux , скрытие данных в неиспользуемых областях форматов файлов , подмена символов в названиях файлов , текстовая стеганография и т. д. Приведём некоторые примеры:

  • Использование зарезервированных полей компьютерных форматов файлов - суть метода состоит в том, что часть поля расширений , не заполненная информацией о расширении, по умолчанию заполняется нулями. Соответственно мы можем использовать эту «нулевую» часть для записи своих данных. Недостатком этого метода является низкая степень скрытности и малый объём передаваемой информации.
  • Метод скрытия информации в неиспользуемых местах гибких дисков - при использовании этого метода информация записывается в неиспользуемые части диска , к примеру, на нулевую дорожку. Недостатки: маленькая производительность, передача небольших по объёму сообщений.
  • Метод использования особых свойств полей форматов, которые не отображаются на экране - этот метод основан на специальных «невидимых» полях для получения сносок, указателей. К примеру, написание чёрным шрифтом на чёрном фоне. Недостатки: маленькая производительность, небольшой объём передаваемой информации.
  • Использование особенностей файловых систем - при хранении на жестком диске файл всегда (не считая некоторых ФС, например, ReiserFS) занимает целое число кластеров (минимальных адресуемых объёмов информации). К примеру, в ранее широко используемой файловой системе FAT32 (использовалась в Windows98 / /) стандартный размер кластера - 4 Кб . Соответственно для хранения 1 Кб информации на диске выделяется 4 Кб информации, из которых 1Кб нужен для хранения сохраняемого файла, а остальные 3 ни на что не используются - соответственно их можно использовать для хранения информации. Недостаток данного метода: лёгкость обнаружения.

Цифровая стеганография

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

Изображение кота, извлеченное из изображения дерева, расположенного выше

Цифровая стеганография - направление классической стеганографии, основанное на сокрытии или внедрении дополнительной информации в цифровые объекты, вызывая при этом некоторые искажения этих объектов. Но, как правило, данные объекты являются мультимедиа-объектами (изображения, видео, аудио, текстуры 3D-объектов) и внесение искажений, которые находятся ниже порога чувствительности среднестатистического человека, не приводит к заметным изменениям этих объектов. Кроме того, в оцифрованных объектах, изначально имеющих аналоговую природу, всегда присутствует шум квантования; далее, при воспроизведении этих объектов появляется дополнительный аналоговый шум и нелинейные искажения аппаратуры, все это способствует большей незаметности сокрытой информации.

Алгоритмы

Все алгоритмы встраивания скрытой информации можно разделить на несколько подгрупп:

  • Работающие с самим цифровым сигналом. Например, метод LSB.
  • «Впаивание» скрытой информации. В данном случае происходит наложение скрываемого изображения (звука, иногда текста) поверх оригинала. Часто используется для встраивания ЦВЗ.
  • Использование особенностей форматов файлов . Сюда можно отнести запись информации в метаданные или в различные другие не используемые зарезервированные поля файла.

По способу встраивания информации стегоалгоритмы можно разделить на линейные (аддитивные), нелинейные и другие. Алгоритмы аддитивного внедрения информации заключаются в линейной модификации исходного изображения, а её извлечение в декодере производится корелляционными методами. При этом ЦВЗ обычно складывается с изображением-контейнером, либо «вплавляется» (fusion) в него. В нелинейных методах встраивания информации используется скалярное либо векторное квантование. Среди других методов определенный интерес представляют методы, использующие идеи фрактального кодирования изображений. К аддитивным алгоритмам можно отнести:

  • А17 (Cox)
  • А18 (Barni)
  • L18D (Lange)
  • А21 (J. Kim).
  • А25 (С. Podilchuk).

Метод LSB

LSB (Least Significant Bit, наименьший значащий бит) - суть этого метода заключается в замене последних значащих битов в контейнере (изображения, аудио или видеозаписи) на биты скрываемого сообщения. Разница между пустым и заполненным контейнерами должна быть не ощутима для органов восприятия человека.

Суть метода заключается в следующем: Допустим, имеется 8-битное изображение в градациях серого. 00h (00000000b) обозначает чёрный цвет, FFh (11111111b) - белый. Всего имеется 256 градаций (). Также предположим, что сообщение состоит из 1 байта - например, 01101011b. При использовании 2 младших бит в описаниях пикселей, нам потребуется 4 пикселя. Допустим, они чёрного цвета. Тогда пиксели, содержащие скрытое сообщение, будут выглядеть следующим образом: 00000001 00000010 00000010 00000011 . Тогда цвет пикселей изменится: первого - на 1/255, второго и третьего - на 2/255 и четвёртого - на 3/255. Такие градации, мало того что незаметны для человека, могут вообще не отобразиться при использовании низкокачественных устройств вывода.

Методы LSB являются неустойчивыми ко всем видам атак и могут быть использованы только при отсутствии шума в канале передачи данных.

Обнаружение LSB-кодированного стего осуществляется по аномальным характеристикам распределения значений диапазона младших битов отсчётов цифрового сигнала.

Все методы LSB являются, как правило, аддитивными (A17, L18D).

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

Эхо-методы

Эхо-методы применяются в цифровой аудиостеганографии и используют неравномерные промежутки между эхо-сигналами для кодирования последовательности значений. При наложении ряда ограничений соблюдается условие незаметности для человеческого восприятия. Эхо характеризуется тремя параметрами: начальной амплитудой, степенью затухания, задержкой. При достижении некоего порога между сигналом и эхом они смешиваются. В этой точке человеческое ухо не может уже отличить эти два сигнала. Наличие этой точки сложно определить, и она зависит от качества исходной записи, слушателя. Чаще всего используется задержка около 1/1000, что вполне приемлемо для большинства записей и слушателей. Для обозначения логического нуля и единицы используется две различных задержки. Они обе должны быть меньше, чем порог чувствительности уха слушателя к получаемому эху.

Эхо-методы устойчивы к амплитудным и частотным атакам, но неустойчивы к атакам по времени.

Фазовое кодирование

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

Метод расширенного спектра

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

Атаки на стегосистемы

Под атакой на стегосистему понимается попытка обнаружить, извлечь, изменить скрытое стеганографическое сообщение. Такие атаки называются стегоанализом по аналогии с криптоанализом для криптографии. Способность стеганографической системы противостоять атакам называется стеганографической стойкостью . Наиболее простая атака - субъективная. Внимательно рассматривается изображение, прослушивается звукозапись в попытках найти признаки существования в нём скрытого сообщения. Такая атака имеет успех лишь для совсем незащищенных стегосистем. Обычно это первый этап при вскрытии стегосистемы. Выделяются следующие типы атак.

  • Атака по известному заполненному контейнеру;
  • Атака по известному встроенному сообщению;
  • Атака на основе выбранного скрытого сообщения;
  • Адаптивная атака на основе выбранного скрытого сообщения;
  • Атака на основе выбранного заполненного контейнера;
  • Атака на основе известного пустого контейнера;
  • Атака на основе выбранного пустого контейнера;
  • Атака по известной математической модели контейнера.

Рассмотрим некоторые из них:

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

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

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

Стеганография и цифровые водяные знаки

Для повышения устойчивости к искажениям часто применяют помехоустойчивое кодирование или используют широкополосные сигналы. Начальную обработку скрытого сообщения делает прекодер . Важная предварительная обработка ЦВЗ - вычисление его обобщенного Фурье-преобразования . Это повышает помехоустойчивость. Первичную обработку часто производят с использованием ключа - для повышения секретности. Потом водяной знак «укладывается» в контейнер (например, путем изменения младших значащих бит). Здесь используются особенности восприятия изображений человеком. Широко известно, что изображения имеют огромную психовизуальную избыточность. Глаза человека подобны низкочастотному фильтру, который пропускает мелкие элементы изображения. Наименее заметны искажения в высокочастотной области изображений. Внедрение ЦВЗ также должно учитывать свойства восприятия человека.

Во многих стегосистемах для записи и считывания ЦВЗ используется ключ. Он может предназначаться для ограниченного круга пользователей или же быть секретным. Например, ключ нужен в DVD -плейерах для возможности прочтения ими содержащихся на дисках ЦВЗ. Как известно, не существует таких стегосистем, в которых бы при считывании водяного знака требовалась другая информация, нежели при его записи. В стегодетекторе происходит обнаружение ЦВЗ в защищённом им файле, который, возможно, мог быть изменён. Эти изменения могут быть связаны с воздействиями ошибок в канале связи, либо преднамеренными помехами. В большинстве моделей стегосистем сигнал-контейнер можно рассмотреть как аддитивный шум. При этом задача обнаружения и считывания стегосообщения уже не представляет сложности, но не учитывает двух факторов: неслучайности сигнала контейнера и запросов по сохранению его качества. Учет этих параметров позволит строить более качественные стегосистемы. Для обнаружения факта существования водяного знака и его считывания используются специальные устройства - стегодетекторы. Для вынесения решения о наличии или отсутствии водяного знака используют, к примеру, расстояние по Хэммингу , взаимокорреляцию между полученным сигналом и его оригиналом. В случае отсутствия исходного сигнала в дело вступают более изощренные статистические методы, которые основаны на построении моделей исследуемого класса сигналов.

Применение стеганографии

В современных принтерах

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

Применение цифровой стеганографии

Из рамок цифровой стеганографии вышло наиболее востребованное легальное направление - встраивание цифровых водяных знаков (ЦВЗ) (watermarking), являющееся основой для систем защиты авторских прав и DRM (Digital rights management) систем. Методы этого направления настроены на встраивание скрытых маркеров, устойчивых к различным преобразованиям контейнера (атакам).

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

Например, разработки Digimarc в виде плагинов к редактору Adobe Photoshop позволяют встроить в само изображение информацию об авторе. Однако такая метка неустойчива, впрочем как и абсолютное их большинство. Программа Stirmark, разработчиком которой является ученый Fabien Petitcolas, с успехом атакует подобные системы, разрушая стеговложения.

Предполагаемое использование террористами

Пример, показывающий то, как террористы могут использовать аватары для передачи скрытых сообщений. Эта картинка содержит в себе сообщение «Босс сказал, что мы должны взорвать мост в полночь.», зашифрованное с помощью http://mozaiq.org/encrypt с использованием сочетания символов «växjö» в качестве пароля.

Слухи о использовании стеганографии террористами появились с момента публикации в газете USA Today 5 февраля 2001 года двух статей - «Террористы прячут инструкции онлайн» и «Террористические группы прячутся за веб-шифрованием». 10 июля 2002 года в той же газете появилась статья «Боевики окутывают веб с помощью ссылок на джихад». В этой статье была опубликована информация о том, что террористы использовали фотографии на сайте eBay для передачи скрытых сообщений. Многие средства массовой информации перепечатывали данные сообщения, особенно после терактов 11 сентября , хотя подтверждения данной информации получено не было. Статьи в USA Today написал иностранный корреспондент Джек Келли, который был уволен в 2004 году после того, как выяснилось, что данная информация была сфабрикована. 30 октября 2001 года газета The New York Times опубликовала статью «Замаскированные сообщения террористов могут скрываться в киберпространстве». В статье было высказано предположение о том, что Аль-Каида использовала стеганографию для скрытия сообщений в изображениях, а затем передавала их по электронной почте и Usenet в целях подготовки терактов 11 сентября . В пособии по обучению террориста «Технологичный муджахид, учебное пособие для джихада » присутствует глава, посвященная использованию стеганографии.

Предполагаемое использование спецслужбами

  • Скандально известный греческий миллионер Аристотель Онассис несколько раз использовал при подписании контрактов ручку с симпатическими чернилами.
  • В фильме «Гений » главный герой - персонаж Александра Абдулова - обманывает милицию , написав признание симпатическими чернилами.

Ссылки

Программные реализации

  • OpenPuff: Двойная стеганография, Bmp , Jpeg , Png , Tga , Pcx , Aiff , Mp3 , Next, Wav , 3gp , Mp4 , Mpeg I , MPEG II , Vob , Flv , Pdf , Swf

Статьи

  • Обзор программ для поиска скрытых стеганографией материалов

Прочее

  • Стеганография (рус.) Иоганна Тритемия

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

Стеганогра́фия (от греч. στεγανός - скрытый + γράφω - пишу; буквально «тайнопись») - способ передачи или хранения информации с учётом сохранения в тайне самого факта такой передачи (хранения). Этот термин ввел в 1499 году Иоганн Тритемий в своем трактате «Стеганография» (Steganographia), зашифрованном под магическую книгу.

Постановка задачи

Необходимо реализовать программу, которая размещает исходный текст в цифровом изображении либо получает текст из изображения, хранящего текст. Изображения рекомендуется использовать в формате хранения без потерь (напр., bmp). Один байт текста будет кодироваться в одном пикселе изображения. Так, один байт текста 10 101 010 будет расположен в пикселе изображения следующим образом:

R: 111100 10
G: 00001 101
B: 11001 010

Алгоритм кодирования информации:

  1. Загрузить изображение в память программы
  2. Определить количество доступных пикселей изображения
  3. Определить максимальную длину текста
  4. Загружаем текст в память программы из консоли или файла
  5. Если текст превышает максимально допустимую длину, сообщить об этом пользователю и завершить программу
  6. Организуем цикл по байтам текста и пикселям изображения, кодируем байт текста по схеме 2-3-3 битов на каждый из каналов пикселя
  7. Сохранить изображение на диск в исходном формате

Алгоритм декодирования разрабатывается похожим образом. Для чтения изображения в формате bmp используется бинарное чтение файлов, заголовок которого описан следующей структурой для 32-битной архитектуры:

#pragma pack(push, 1) typedef struct { unsigned char b1,b2; unsigned long bfSize; unsigned short bfReserved1; unsigned short bfReserved2; unsigned long bfOffBits; } BITMAPFILEHEADER; typedef struct { unsigned int biSize; int biWidth; int biHeight; unsigned short biPlanes; unsigned short biBitCount; unsigned int biCompression; unsigned int biSizeImage; int biXPelsPerMeter; int biYPelsPerMeter; unsigned int biClrUsed; unsigned int biClrImportant; } BITMAPINFOHEADER; #pragma pack(pop)

Требования к программе

Базово программа должна обеспечивать возможность кодирования текста из таблицы ASCII в изображении формата BMP без компрессии на стандартной палитре. В качестве усложнения программы могут быть реализованы:

  • Кодирование любого текста из заранее известных кодировок (UTF-16, CP-1251, UTF-8)
  • Использование других форматов изображения без потерь
  • Шифрование текста перед кодированием в изображение для большей защищённости передачи информации
  • Использование других схем записи байта текста в пиксель изображения, например, 1 бит текста в 1 пиксель, таким образом, кодировка является менее заметной, но существенно сокращается размер доступного для кодирования текста

Требования к отчёту

Отчёт выполняет в формате docx или odt вместе с копией на pdf . В отчёте должны присутствовать следующие части:

  1. Постановка задачи
  2. Теоретическое описание проблем стеганографии
  3. Выбранные методы кодирования информации в выполненной работе с подробным описанием алгоритма кодирования и декодирования
  4. Части программ, демонстрирующие основную моменты работы программы
  5. Описание программы в части работы пользователем: вызов, аргументы, скриншоты и прочее
  6. Заключение о проделанной работе

Вопросы для самопроверки

  • Зачем используется #pragma pack(push, 1) ?
  • Как осуществляется чтение и запись бинарных файлов?
  • Что такое формат хранение без потерь?
  • Что из себя представляет формат bmp ?
  • Что такое бит/байт текста?
  • Какие каналы используются для хранения информации о цвете пикселя?
  • Как в программу передаются аргументы при вызове?
  • Каким могут быть варианты хранения скрытого текста, кроме как в изображениях?
  • Какая информация может быть скрыта?

Вопросы, которые стоит гуглить

  • c++ read binary file to struct
  • why i need pragma push c++
  • bmp format structure
  • steganography to bmp

Какая еще стеганография?

За последние несколько лет активность спецслужб значительно возросла. Увеличились также их права относительно методов добычи информации, теперь они имеют право на чтение твоей личной переписки.
Хорошо если ты общаешься только с тетками или корешами из чата. А что будет, когда анализируя твою переписку они наткнутся на пароль от
какого-нибудь забугорного сервачка или прочитают как ты хвастаешься знакомому о последнем дефейсе? Эти письма могут стать уликой преступления и послужить
прекрасной причиной для возбуждения криминального дела… Ну как
перспектива? Не очень… Поэтому следует
тщательно прятать содержимое такой переписки. Именно этим и занимается стеганография, а если она используется с элементами криптографии, прочитать письмо сможет только адресат, знающий схему извлечения защищенного
текста.

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

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

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

Текстовый документ.txt

Использование стеганографии для передачи информации посредством текстовых данных достаточно затруднительно.
Реализовать это можно двумя способами (хотя идея одна для обеих случаев):

1. Использовать регистр букв.
2. Использовать пробелы.

Для первого варианта, процесс заключается в следующем: пускай нам необходимо спрятать букву «А» в тексте «stenography». Для этого берем двоичное представление кода символа «А» — «01000001». Пускай для обозначения бита содержащего единицу используется символ нижнего регистра, а для нуля — верхнего. Поэтому после накладывания маски «01000001» на текст «stenography», результат будет «sTenogrAphy». Окончание «phy» нами не использовано поскольку для сокрытия одного символа используется 8 байт (по биту на каждый символ), а длинна строки 11 символов, вот и получилось, что последние 3 символа «лишние». Исспользуя такую технологию можно спрятать в текст длинной N, сообщение из N/8 символов. Поскольку данное решение нелзя назвать наиболее удачным, часто используется технология передачи данных через пробелы. Дело в том, что пробел обозначен символом с кодом 32, но в тексте его можно заменить также символом имеющим код 255 или TAB’ом на худой конец. Также как и в прошлом примере, передаем биты шифруемого сообщения используя обычный текст. Но на этот раз 1 — это пробел, а 0 — это пробел с кодом 255.

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

GIF, JPG и PNG

Более надежно можно прятать текст в изображении. Все происходит по принципу замены цвета в изображении, на близкий к нему. Программа заменяет некоторые пиксели, положение которых вычисляет сама. Этот подход очень хороший, потому что определить технологию скрытия текста более сложно чем в прошлом примере. Этот подход работает не только с текстовой информацией, но и с изображениями. Это значит, что можно без особых проблем в изображении nastya.gif можно поместить
pentаgon_shema.gif, естественно если этого позволяют их размеры.

Самый простой пример использования изображений в стеганоргафии — третье задание из « «. Решается оно достаточно просто и
без особых усилий можно получить спрятанное сообщение. Для начала необходимо скопировать его в буфер обмена, далее установите цвет заливки для правой клавиши в цвет фона изображения
(голубой). Следующим этапом должна стать очистка рисунка и его заливка в черный цвет. Для завершения данной операции просто
вставьте изображение из буфера обмена, не увидит надпись «WELL DONE!», только слепой 🙂

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

Достойным примером использования стеганографии может быть интернет браузер
Camera/Shy , от
известной хакерской команды Cult of Dead
Cow . С виду он напоминает обычный обозреватель интернета, но при входе на web-ресурс происходит автоматическое сканирование всех GIF изображений на наличие скрытых сообщений.

MP3 и все, что ты слышишь

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

Другие решения

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

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

У кого из вас, уважаемые читатели, нет секретов? А кому хоть раз в жизни не приходилось доверить кому-либо нечто важное, взяв с него слово сохранить тайну? Думаю, вы со мной согласитесь: защита информации - дело, касающееся всех и каждого.

Стеганография в далеком и недалеком прошлом

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

А что делать, если нужно не просто закрыть доступ к секретной информации, но и скрыть сам факт наличия какого бы то ни было секрета? Проблема эта не такая уж абстрактная, как может кому-то показаться на первый взгляд. Допустим, вы отправляете с рабочего места письма личного характера, а вся исходящая почта просматривается руководством. Конечно, такие письма можно зашифровать, но это, скорее всего, вызовет еще больший интерес у начальника: уж не передаете ли вы служебные тайны? В общем, задача эта весьма деликатная, и тут должна помочь стеганография.

Слово это в переводе с греческого буквально означает «тайнопись». Первые приемы стеганографии, как полагают историки, появились еще в Древнем Египте и затем использовались везде, где существовала письменность.

Что же представляла собой стеганография в докомпьютерную эру? Классифицировать все методы сокрытия информации практически невозможно - они многочисленны и разнообразны. Чтобы стало понятно, что весь спектр этих методов объединяется лишь одним - целью их применения, приведем несколько исторических примеров.

В античности, когда для письма использовались вощеные таблички, секретную информацию можно было написать непосредственно на подложке, потом нанести воск, а на нем написать какой-то безобидный текст. Попади такая табличка к врагам, они не догадались бы, что там имеются какие-то секреты. В средние века, да и позднее, большой популярностью пользовались особые чернила, не видимые постороннему глазу. Написанное с их помощью послание можно было прочесть лишь после особой обработки бумаги. Помните известный рассказ об умном Ленине и глупом жандарме? Так вот Владимир Ильич использовал как раз такой стеганографический инструмент - молочные чернила, которые после высыхания становились практически невидимыми, а при нагревании проявлялись четкими коричневыми буквами. Кроме таких незамысловатых способов, изобретались и сложные составы, для проявления которых нужно было провести химическую реакцию.

Нередко для передачи важных данных использовался посторонний текст (книга, заметка в газете, безобидное письмо о погоде и пр.), буквы и знаки которого кодировали конфиденциальную информацию. И здесь простор для фантазии просто огромен: скрытый текст может считываться по первым буквам слов (принцип акростиха) или определяться по заранее оговоренному правилу. После изобретения общепринятых кодов (например, азбуки Морзе) стало возможным распознавать секретный текст по длинам слов: 4-5 букв - тире, 5-6 букв - точка, 7 и более - пробел, меньше 4 букв - игнорируются). В рукописном тексте значение могли иметь особенности начертания букв - размеры, завитки и т.д. Всего и не перечислишь.

С появлением фотографии стали доступны новые способы - например в ничего не значащие снимки добавлялись микроточки. Подобные методы секретных сообщений активно использовались во время Второй мировой войны.

Широкое распространение вычислительной техники открыло новые горизонты для изобретателей методов тайнописи. С одной стороны, были адаптированы и доработаны некоторые из старых методов, а с другой - разработаны новые алгоритмы, применимые только в сфере компьютерных технологий.

Современные подходы к стеганографии

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

В зависимости от типа контейнера компьютерные стеганографические алгоритмы удобно разделить на три основные группы.

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

Фантазия разработчика может пригодиться в случае необходимости спрятать в тексте двоичные данные. Если в качестве стеганограммы выступает произвольный файл, он рассматривается в виде последовательности одиночных битов или короткой серии битов (группы по два-три бита). Для их кодирования используют пробелы (один пробел - 0, два - 1) или непечатаемые символы (например, нулевой символ). Для решения данной задачи вполне может подойти приведенный выше пример с азбукой Морзе: тогда для кодирования коротких серий битов будут использоваться длины слов или их первые буквы.

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

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

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

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

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

3.2. Метод наименее значащих битов (Least Significant Bit, LSB) наиболее распространен в электронной стеганографии. Он основан на ограниченных возможностях человеческих органов чувств, в силу чего люди не способны различать незначительные вариации цветов или звуков. Для простоты описания покажем принцип работы этого метода на примере 24-битного растрового RGB-изображения. Одна точка изображения в этом формате кодируется тремя байтами, каждый из которых отвечает за интенсивность одного из трех составляющих цветов (рис. 1).

В результате смешения цветов из красного (R), зеленого (G) и синего (B) каналов пиксел получает нужный оттенок. Чтобы нагляднее увидеть принцип действия метода LSB, распишем каждый из трех байтов в битовом виде (рис. 2). Младшие разряды (на рисунке они расположены справа) в меньшей степени влияют на итоговое изображение, чем старшие. Из этого можно сделать вывод, что замена одного или двух младших, наименее значащих битов, на другие произвольные биты настолько незначительно исказит оттенок пиксела, что зритель просто не заметит изменения.

Допустим, нам нужно скрыть в данной точке изображения шесть бит: 101100. Для этого разобьем их на три пары (рис. 3) и заместим ими по два младших бита в каждом канале (рис. 4).

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

Рис. 5. Слева — оригинальный цвет, справа — цвет после модификации

Давайте теперь подсчитаем полезный объем такого RGB-контейнера. Занимая два бита из восьми на каждый канал, мы будем иметь возможность спрятать три байта полезной информации на каждые четыре пиксела изображения, что соответствует 25% объема картинки. Таким образом, имея файл изображения размером 200 Кбайт, мы можем скрыть в нем до 50 Кбайт произвольных данных так, что невооруженному глазу эти изменения не будут заметны.

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

Чем же объясняется лидерство метода LSB среди стеганографических алгоритмов? Во-первых, мультимедиаконтейнеры не вызывают подозрений: можно без проблем отправить другу свою фотографию или симпатичный пейзаж. Во-вторых, младшие биты оцифрованных изображений, звука или видео могут иметь различное распределение в зависимости от применявшихся параметров аналого-цифрового преобразования, от дополнительной компьютерной обработки и от прочих факторов. Эта особенность делает метод наименее значащих битов наиболее защищенным от обнаружения вложения. Наконец, в-третьих, реализации LSB для большинства стандартов файлов-контейнеров не требуют значительных затрат времени и сил - идея указанного метода проста, как все гениальное.

Обнаружение стеганограмм

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

Повышение надежности сокрытия данных и пресечение такового

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

Затем нужно приблизить статистические свойства сообщения к тому, что аналитик рассчитывает найти в неискаженном файле-контейнере. Если вы собираетесь использовать текстовые поля комментариев для передачи бинарных данных, то имеет смысл применить кодирование Base64 или аналогичное, чтобы двоичная последовательность была записана символьными знаками. Это хотя и не обманет профессионала, но позволит обойти некоторые программные фильтры.

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

Относительно использования метода LSB можно дать еще несколько простых советов, которые позволят вам обойти стеганографический контроль:

Не следует использовать для хранения сообщения более трех битов каждого байта контейнера, а лучше ограничиться двумя, разбив большое сообщение на несколько мелких или подобрав более емкий файл-носитель. Кроме того, не стоит забивать контейнер пользовательскими данными «под завязку» - чем меньше будет доля важной информации в общем объеме передаваемого файла, тем сложнее обнаружить факт закладки. На практике обычно рекомендуют скрывать сообщения так, чтобы их размер составлял не более 10% размера контейнера;

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

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

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

Примеры применения стеганографии

тобы теория стеганографии не показалась вам умозрительной, не имеющей никакого отношения к практике, приведем пример ее применения. Для демонстрации мы использовали одну из десятков бесплатных и условно-бесплатных программ, предоставляющих сервис стеганографического сокрытия информации и доступных для загрузки в Интернет. В качестве контейнера, согласно описанным выше правилам, была выбрана фотография в формате BMP 24-bit размером около 1 Мбайт, подобранная в личном фотоальбоме автора этой статьи по принципу отсутствия крупных однотонных заливок и наличия мелких деталей. Сообщением послужил случайный бинарный файл (некая динамическая библиотека) размером чуть более 100 Кбайт, что составило как раз примерно 10% от размера контейнера. Перед тем как вложение было упаковано в файл изображения, оно было автоматически зашифровано при помощи указанной программы с использованием алгоритма Blowfish. Итак, все требования безопасности соблюдены, и две картинки, в одной из которых десятая часть информации замещена произвольными данными, практически неразличимы - убедитесь сами (рис. 6).

Рис. 6. Справа — исходное изображение; слева — изображение с вложением

Кроме тайной пересылки и хранения информации, стеганография имеет еще одну область применения - это защита авторских прав. Поскольку к изображению, аудио- или видеофайлу можно добавить какое-либо сообщение таким образом, чтобы это не испортило впечатления от просмотра/прослушивания, и поскольку такое вложение практически невозможно обнаружить и изъять, то это сообщение можно использовать в качестве авторской подписи. Подобные «водяные знаки» помогут доказать, что, например, сделанная вами фотография была незаконно использована для оформления некоего известного Web-сайта. В настоящее время существует ряд программ, реализующих электронную подпись мультимедиаданных методами стеганографии, а также сканирующих Интернет с целью обнаружения работ, используемых без разрешения.

Вместо заключения

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

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

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

Чтобы не загружать читателя, ограничусь в использовании формул и прочих строгих математических выкладок. В списке использованных источников приведены ссылки на книги, где подробно описана математическая модель стеганосистемы. Статья же делится на две части:
1. Теоретическая: схема типичной стеганосистемы;
2. Пример конкретной стеганосистемы (на основе изображений JPEG) и схема её реализации.

Описание стеганосистемы

Рассмотрим структурную схему типичной стеганосистемы. В общем случае стеганосистема может быть рассмотрена как система связи.

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

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

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

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

В фиксированном контейнере размеры и характеристики последнего заранее известны. Это позволяет выполнять вложение данных оптимальным (в определенном смысле) образом. Далее будем рассматривать фиксированные контейнеры.

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

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

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

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

В большинстве стеганосистем для упаковки и извлечения сообщений используется ключ, который предопределяет секретный алгоритм, определяющий порядок внесения сообщения в контейнер. По аналогии с криптографией, тип ключа обуславливает существование двух типов стеганосистем:

  • с секретным ключом – используется один ключ, который определяется до начала обмена стеганограммой или передается защищенным каналом;
  • с открытым ключом – для упаковки и распаковки сообщения используются разные ключи, которые отличаются таким образом, что с помощью вычислений невозможно получить один ключ из другого, поэтому один из ключей (открытый) может свободно передаваться по незащищенному каналу.

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

  • Криптографическая стойкость – отсутствие у нарушителя возможности предусмотреть следующий бит на основании известных ему предыдущих с вероятностью, отличной от 1/2. На практике криптографическая стойкость оценивается статистическими методами.
  • Хорошие статистические свойства – ПСП по своим статистическим свойствам не должна существенно отличаться от истинно случайной последовательности.
  • Большой период формированной последовательности.
  • Эффективная аппаратно-программная реализация.

Статистически (криптографически) безопасный генератор ПСП должен соответствовать следующим требованиям:

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

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

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

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

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

Итак, в стеганосистеме происходит объединение двух типов информации таким образом, чтобы они по-разному воспринимались принципиально разными детекторами. В качестве одного из детекторов выступает система выделения скрытого сообщения, в качестве другого – человек.

Алгоритм встраивания сообщения в простейшем случае состоит из двух основных этапов:

  1. Встраивание в стеганокодере секретного сообщения в контейнер-оригинал.
  2. Обнаружение (выделение) в стеганодетекторе (декодере) скрытого зашифрованного сообщения из контейнера-результата.

Про JPEG

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

Для начала кратко рассмотрим алгоритм JPEG, более подробное описание и примеры можно найти в книгах, указанных в источниках. Кодировщик 8-битных RGB-изображений можно описать семью пунктами (на вход подаётся массив компонент изображения):

  1. Преобразование цветового пространства. Цветное изображение преобразуется из RGB в представление светимость/цветность. Глаз чувствителен к малым изменениям яркости пикселов, но не цветности, поэтому из компоненты цветности можно удалить значительную долю информации для достижения высокого сжатия без заметного визуального ухудшения качества образа. Этот шаг не является обязательным, но он очень важен, так как остальная часть алгоритма будет независимо работать с каждым цветным компонентом. Без преобразования пространства цветов из компонентов RGB нельзя удалить существенную часть информации, что не позволяет сделать сильное сжатие.
  2. Субдискретизация. Для более эффективного сжатия цветное изображение разбивается на крупные пикселы. Укрупнение пикселов либо вообще не делается (укрупнение 1hv1 или «4:4:4»), либо же делается или в соотношении 2:1 по горизонтали и вертикали (укрупнение 2h2v или «4:1:1») или в пропорциях 2:1 по горизонтали и 1:1 по вертикали (укрупнение 2h1v или «4:2:2»).
  3. Соединение в блоки. Пикселы каждой цветной компоненты собираются в блоки 8x8, которые называются единицами данных (Minimum Coded Unit). Если число строк или столбцов изображения не кратно 8, то самая нижняя строка и самый правый столбец повторяются нужное число раз.
  4. Дискретное косинус-преобразование. К каждой единице данных применяется дискретное косинус-преобразование (DCT), в результате чего получаются блоки 8x8 частот единиц данных. Они содержат среднее значение пикселов единиц данных и следующие поправки для высоких частот. Это позволяет представить данные в виде, позволяющем более эффективное сжатие.
  5. Квантование. Каждая из 64 компонент частот единиц данных делится на специальное число, называемое коэффициентами квантования (QC), которая округляется до целого. Здесь информация невосполнимо теряется. Но в нашем кодировщике этот шаг опускается для увеличения количества записываемой информации (т.е. все коэффициенты квантования равны единице, качество JPEG – 100%).
  6. Сжатие без потерь. Все 64 квантованных частотных коэффициента каждой единицы данных кодируются с помощью комбинации RLE и метода Хаффмана.
  7. Добавление заголовков и запись в файл. На последнем шаге добавляется заголовок из использованных параметров JPEG и результат выводится в сжатый файл.

Алгоритм симметричный, так что кодировщик будет выполнять обратные действия.

Стеганография в JPEG

Приступим к рассмотрению стеганосистемы на основе изображений формата JPEG. В основе лежит простейший метод LSB (Least Significant Bit, наименее значащий бит).

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

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

На входе: цветное изображение, скрываемые данные, пароль.
На выходе: изображение в формате JPEG со скрытыми данными.

  1. Генерация ключей. Для работы кодировщика необходимы 2 ключа: стегано- и криптоключ. Возьмем хэш-сумму SHA-256 введённого пользователем пароля. Первые 16 байт будем использовать для стеганоключа, вторые – для криптоключа.
  2. Предварительная обработка текста (прекодер). Повторно берем хэш-сумму криптоключа и получаем новые 32 байта, которые уже будут использоваться для шифрования данных. Данные шифруем с помощью алгоритма AES-256.
  3. Начинаем кодировать изображение. Проводим первые 4 шага ранее рассмотренного алгоритма JPEG.
  4. Вместо пятого шага (квантование) алгоритма JPEG прячем наши данные.
    • Анализатор формата. Чтобы сделать вмешательство в изображение незаметным, будем проводить «визуальный» анализ. Каждый последний бит коэффициента блока инвертируется, и считается метрика PSNR для исходного и измененного блоков. Если значение метрики меньше 55 дБ, то в данный блок запись не производится. Т.к. при значениях метрики больше 40 дБ изображения считаются практически идентичными для человеческого глаза, то при 55 дБ разница точно будет незаметна для глаза.
    • Стеганопуть. Стеганоключ представляется в двоичном виде, и каждому блоку ставится в соответствие соответствующий бит двоичной последовательности (по модулю). Если бит равен единице, то блок используется для записи, если нулю – то отбрасывается.
    • Стеганокодер. Проводим стандартную процедуру LSB для каждого блока 8х8: записываем данные в каждый элемент, значение которого больше единицы.
  5. Продолжаем выполнение алгоритма JPEG (сжатие без потерь и запись в файл).

Выводы и заключение

По приведенной схеме стеганосистемы можно легко написать программу. Исходные коды моей реализации можно найти на GitHub . Программу нельзя назвать полноценной, скорее альфа-версией, но основной функционал в ней реализован. Четвертый пункт для кодировщика реализован , а для декодировщика . За основу взяты уже готовые реализации JPEG, SHA-256, AES-256.

Кодирование-декодирование

Void jpeg_encoder::code_block(int component_num) { DCT2D(m_sample_array); load_quantized_coefficients(component_num); double psnr = 0; for (int i = 0; i < 64; i++) { if (m_coefficient_array[i] > 1) { short t = m_sample_array[i]; bit_stream::write_bit(t, bit_stream::read_bit(t) == 1 ? 0: 1); psnr += (t - m_sample_array[i]) * (t - m_sample_array[i]); } } psnr /= 64; if (psnr != 0) psnr = 20 * log10(255 / sqrt(psnr)); else psnr = 70; if (psnr > 55) { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (m_coefficient_array > 1) { int bits = bitstr->get_next_bit(); if (bits != -1) { bit_stream::write_bit(m_coefficient_array, bits); } bitr++; } } } } if (m_pass_num == 1) code_coefficients_pass_one(component_num); else code_coefficients_pass_two(component_num); } void jpeg_decoder::transform_mcu(int mcu_row) { jpgd_block_t* pSrc_ptr = m_pMCU_coefficients; uint8* pDst_ptr = m_pSample_buf + mcu_row * m_blocks_per_mcu * 64; for (int mcu_block = 0; mcu_block < m_blocks_per_mcu; mcu_block++) { idct(pSrc_ptr, pDst_ptr, m_mcu_block_max_zag); double psnr = 0; for (int i = 0; i < 64; i++) { if (pSrc_ptr[i] > 1) { short t = pDst_ptr[i]; bit_stream::write_bit(t, bit_stream::read_bit(t) == 1 ? 0: 1); psnr += (t - pDst_ptr[i]) * (t - pDst_ptr[i]); } } psnr /= 64; if (psnr != 0) psnr = 20 * log10(255 / sqrt(psnr)); else psnr = 70; if (!done && psnr > 55) { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (pSrc_ptr] > 1) { int bits = bit_stream::read_bit(pSrc_ptr]); if (bitstr->set_next_bit(bits) == -1) { done = true; int size = bitstr->get_readed_size(); char* str = new char; bitstr->get_data(str); str = ""; m_stparams->stego_data = str; } } } } } pSrc_ptr += 64; pDst_ptr += 64; } }

В заключение приведем характеристики полученного продукта:

  • JPEG (DCT LSB) стеганография;
  • Двухуровневая защита информации;
  • Использование SHA-256 для генерации ключей;
  • Симметричное шифрование текста AES-256;
  • До 30% скрываемой информации от размера контейнера в зависимости от типа изображения;
  • Отсутствие помехозащищенности.

Источники и дополнительные ссылки

  1. Коханович Г.Ф., Пузыренко А.Ю. Компьютерная стеганография. Теория и практика. – К.: «МК-Пресс», 2006.
  2. Д.Сэломон. Сжатие данных, изображений и звука. Москва: Техно-сфера, 2004.
  3. Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео. - М.: ДИАЛОГ-МИФИ, 2003.

Похожие публикации