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

алгоритмы и практическая реализация

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

Как она работает? Основной набор методов стеганографии включает незначительную модификацию контейнера до степени, не вызывающих различимых отличий от оригинала. Скажем, что касается изображений, не использующих сжатие с потерей информации, здесь возможно непосредственное изменение составляющих цвета каждого пикселя. Такой подход называют еще методом наименьщего значащего бита (Least Significant Bit, LSB) и он широко распространен ввиду своей прозразночности. Этот метод наиболее прост и позволяет внедрить максимальное кол-во материала. При этом, сам контейнер может быть сжат стандартными методами компрессии, если речь идёт о PNG, TIFF и схожих по концепции контейнерах (ввиду наличия стего-шумов само сжатие будет менее эффективно). Заметим, что на самом деле, несмотря на своё наименование, речь в методе младщего значащего бита идёт ни о одном отельно взятом бите, а о наборе бит, которые можно отбросить без значительного ущерба для контейнера. Всё просто - человек не в силах заметить незначительное изменение цвето-насышенных характеристик изображения или наличие практически неразличимых шумов звукового потока (которые к тому же могут быть вызваны звукозаписывающим или воспроизводящим оборудованием).

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

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

Относительно текстовых - тут уже интереснее. Для простого текста подойдет алгоритм простой замены на символы псевдо-идентичные (метод знаков одинакового начертания). Каждая такая замена или её отсутствие будут флагом одного бита. Родственный алгоритм подойдет и для распространенных документов различных текстовых процессоров. Это может касаться как двоиных файлов, так и форматов, основанных на XML (Open Document). Список известных программных средств автоматизированной текстовой стеганографии невелик - это в большей степени отечественные разработки. Причиной является еще и тот факт, что широко известные методы либо неэффективны (изменение порядка следования маркеров конца строки), либо легко выявляемы (метод хвостовых пробелов), а наиболее оптимальные (вроде метода замены на символ одинакового начертания) не применимы в ряде случаев (для не UNICODE систем с ограниченным пространством отображаемых символов). Для стран к кириллистической языковой базой последний способ - интереснее всего.

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

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

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

Альтернативы? Есть ли альтернативы механизму ССР? Да, но не в полной мере. Что касается последовательной побитовой поточной модификации, её можно дополнить секретностью соответствия реального порядка бит и порядка внедряемого. Таким образом, секретным элементом будет является матрица из 8x8 элементов.

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

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

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

Какие выводы мы можем сделать из вышеперечисленного?

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

Да, и производительность. Для конечного пользователя она важна. Сами по себе алгоритмы цифровой стеганографии довольно производительны, но реальное её применение сталкивается с рядом затруднений. Если для компрессии можно использовать довольно быструю zlib вместо более эффективной lzma, то с выбором криптоалгоритма уже сложнее. Встаёт еще и вопрос о стойкости шифра. Ясное дело, в нашем случае наиболее удобен поточный шифр. Поскольку речь не идёт о массивном прозрачном шифровании или клиент-серверном решении, время инициализации ключа для нас не критично (по распространенному мнению сложная и массивная процедура его установки будет даже плюсом), поможет любой зарекомендовавший себя с лучшей стороны алгоритм в режиме CFB или непосредственно поточный шифр. Если не смущает запатентованность, то подойдет быстрый и надежный SEAL, иначе - однонаправленная функция VMPC или экспериментальный Г(П)СЧ amprng, либеральный по отношению к длине ключа и вектора инициализации. Естественно, если алгоритм не имеет собственной процедуры расширения ключа, потребуется определиться и с применяемой хеш-функцией для оного подходящей. Ввиду того, что уже утвержден SHA-3, а его носителем стал весьма гибкий Keccak, за выбором ходить далеко не придется.

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

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

Рассмотрим программные решения, рекомендуемые к применению согласно вышеописанных тезисов.

 

Название Версия Описание Поддержка типов Распространение Ссылка
ImageSpyer
2008

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

Поддерживает 40 алгоритмов шифрования, секретный заголовок и порядок бит, скрывает объем равный числу пикселей изображения. Продолжением утилиты является функционал DarkCrypt GUI, который имеет лучшие характеристики скорости и емкости.

*.bmp *.jpg *.wmf *.emf *.tiff

*.bmp *.tiff - внедрение

свободное
скачать
ImageSpyer G2
2013-02-04

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

Поддерживает 30 алгоритмов шифрования, 25 хеш-функций для зашифрования контейнера, потоковое шифрование стего, секретный заголовок и порядок бит. Скрывает объем равный числу пикселей изображения. Опционально доступна компрессия скрываемых данных. Актуальный релиз. Работает на базе LZMA 9 и выше. Поддерживает режим случайного секретного распределения (ССР или RSD)
Совместимо с Windows 8

*.bmp *.jpg *.wmf *.emf *.tiff

*.bmp *.tiff - внедрение

свободное
скачать
StegoTC for TC
2012

Стеганографический архиваторный плагин (wcx) для TotalCommander, позволяет скрывать данные в любом изображении, включает симметричное шифрование одним из 40 криптоалгоритмов

Функциональность схожа с ImageSpyer, развитием проекта является стеганографическая подсистема проекта DarkCrypt (проект Заря)

*.bmp *.tiff - внедрение
свободное
скачать
StegoTC G2 for TC
2012

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

Второе поколение с поддержкой PNG. Функциональность схожа с ImageSpyer, развитием проекта является стеганографическая подсистема проекта DarkCrypt (проект Заря)

*.bmp *.tiff *.png
свободное
скачать
RedJPEG
2011

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

Использует открытые алгоритмы шифрования, поточный шифр AMPRNG и Cartman II DDP.4 в режиме хэш-функции, LZMA компрессию.

*.jpg
свободное
скачать
RedJPEG XT
2013

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

Использует открытые алгоритмы шифрования, поточный шифр AMPRNG и Cartman II DDP.4 в режиме хэш-функции, LZMA компрессию. Профессиональная расширенная версия с дополнительной маскировкой факта внедрения и усиленной процедурой инициализации поточного шифра на основе характеристик изображения. Поддерживает алгоритм случайного секретного распределения. Включены x86 и x86-64 сборки.

*.jpg
donateware (свободно для ЭКС-СССР)
скачать
RedJPEG XT for TC
2013

WCX плагин Total Commander для скрытия любых данных в JPEG изображении (фото, картинка) с помощью авторского стеганографического метода 

Использует открытые алгоритмы шифрования, поточный шифр AMPRNG и Cartman II DDP.4 в режиме хэш-функции, LZMA компрессию. Профессиональная расширенная версия с дополнительной маскировкой факта внедрения и усиленной процедурой инициализации поточного шифра на основе характеристик изображения. Поддерживает алгоритм случайного секретного распределения. Совместим с TC 7.5/8/x86-64

*.jpg
свободное
скачать
DarkCryptTC
Проект «Заря»
2011/2013

Наиболее мощный свобный программный криптографический и стеганографический комплекс с поддержкой более сотни симметричных и ассиметричных криптоалгоритмов

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

*.txt *.html *.xml *.docx *. odt *.bmp *.jpg *.tiff, *.png *.jp2 *.psd *.tga *.mng *.wav *.exe *.dll

свободное
скачать

скачать x86-64
DarkCrypt GUI
2011

Мощная утилита для криптографии и стеганографии на базе движка DarkCrypt

Включает все функции DarkCryptTC и дополнительно - шифрование буфера обмена с безопасным удалением файлов. Для обновления достаточно обновить ядро DarkCrypt или добавить модули BlockAPI

*.txt *.html *.xml *.docx *. odt *.bmp *.jpg *.tiff, *.png *.jp2 *.psd *.tga *.mng *.wav *.exe *.dll
свободное
скачать

Не так давно вышли свободная для жителей Экс-СССР версия RedJPEG XT и совместимая с UAC Windows7/8 версия ImageSpyer.

С вопросами и предложениями можно обращаться по адресу amsoftware на почте yandex.by

Несколько материалов по теме можно найти ниже.

Документация и схема работы алгоритма.

Пример генерации и использования ССР матрицы.

 

Hosted by uCoz