Небольшой экскурс в понятие стеганографии.
Наука о скрытой передаче информации путём сохранения в тайне самого факта передачи.
В отличие от криптографии, которая скрывает содержимое секретного сообщения, стеганография скрывает сам факт его существования. Как правило, сообщение будет выглядеть как что-либо иное, например, как изображение, статья, список покупок, письмо или судоку. Стеганографию обычно используют совместно с методами криптографии, таким образом, дополняя её.
wiki
До 20 века стеганография и криптография развивались в рамках единой науки. После формулирования Керкгоффса правила о том, что стойкость криптографического алгоритма должна определяется исключительно стойкостью ключа, криптография отделилась от стеганографии. Далее криптология из совокупности методов превратилась в науку, основанную на теор вере, дискретке, полях и прочих математических радостях.
Другими словами: криптография - делаем так, чтобы нашу информацию не смогли раскодировать, стеганография - делаем так, чтобы никто не узнал о том, что мы передаем информацию.
Кстати, некоторое время назад ФБР разоблачило СВР РФ в использовании стеганографии для обмена инфой со своими агентами. Доставляет тот факт, что в английской версии статьи об этом пишут, а в Рашинской - ноуп.
Стеганографию можно разделить на несколько классов и подклассов. Первоначальное деление идет на технологическую и информационную, не буду особенно на этом останавливаться, просто заострю внимание, на паре методов не компьютерной стеганографии для общего понимания. Первое, письмо скрытными чернилами (например, видимыми в ультрафиолете, или из специальных хим составов). Другой пример, печатные массивы микробов.
Меня, конечно, интересует компьютерная стеганография. В частности наиболее перспективные стеганографические контейнеры - изображения, видео и аудио, тк они имеют сравнительно немаленький вес (который, несомненно влияет на возможные размеры встраиваемой инфы), очень распространены в интернетах “котят и шуток”.
Классификация стеганосистем по способу доступа к иyформации аналогична криптографическим: безключевые стегосистемы, системы с секретным ключом, системы с открытым ключом и смешанные стегосистемы. Ключ в данном случае полностью повторяет функции ключа в криптографии, даже если копнуть глубже, то в стеганосистемах с ключем используются криптографические алгоритмы для ключей, сам же метод сокрытия информации далеко не всегда изменяется от наличия\отсутствия оного.
Для понимания самой стеганографии мудрить не будем, и будем копать в область открытого кодера-декодера (например, когда можно беспрепятственно раскодировать сообщение, имя картинку и алгоритм\прогу).
Далее, самое интересное и главное - методы сокрытия информации.
Выделяют два метода:
Первый состоит в том, что файлы, которые не требуют абсолютной точности (например, файлы с изображением, звуковой информацией и пр.), могут быть до определенной степени видоизменены без потери функциональности.
Второй принцип основан на отсутствии специального инструментария или неспособности органов чувств человека надежно различать незначительные изменения в таких исходных файлах.
Разделение достаточно абстрактное, но имеет место быть. сурс
Всё в той же книге очень хорошо (относительно других источников, которые я перебрал) описаны принципы классификации, я их просто перечислю:
Тип организации контейнера: систематические и не-//-
Доступ к информации: потоковый и произвольный
Тип инфо среды: текстовая, звуковая, видео\кадры
Используемые методы: избыточность, структурные методы
Предназначение: защита инфы\ защита прав на цифровое нечто
И, самое важное и главное: Способ выбора контейнера: Суррогатный, Селективный, Конструирующий.
Здесь остановимся подробнее.
Суррогатная (проще для понимания - безальтернативная) - выбирается первый попавшийся контейнер, не всегда подходящий.
Селективная - базируется на статистических характеристиках контейнера (в частности, шума).
Конструирующая - контейнер генерируется самой стегосистемой. Вот тут абсолютное большинство (да что там, вообще все источники, за исключением тех, в которых впринципе нет примеров) ссылаются на MandelSteg. Как я уже писал выше, заявление это довольно спорное, тк фрактал мандельброта генеритмся лишь в качестве основы -холста, а дальше опять же идет LSB. Для тех кто не в теме - LSB - наименьший значащий бит, технология замены последнего бита информации, при которой отличие от изначального состояния будет незаметно глазу.
Например:
Вот лого реборнчега в gif

а вот то же лого, содержащие в себе сообщение Reborn is alive

Заюзал gif, тк поступило такое тз от препода по безопасности ос (только с поступлением в магистратуру стали давать интересные задачи).
Отвлекусь на пару слов о gif - формат очень удачный, с позиции понимания алгоритма, не нужно первоначально мудрить, тк вся палитра содержится в массиве из N цветов, у каждого из которых есть 3 компоненты (как обычно, RGB) с интенсивностью 255 (естественно в бинарной форме, т.е. максимальное значение 11111111)
Итого, опуская лишние тех подробности имеем массив вида
11111111
11111111
11111111
00000000
00000000
00000000
соответственно белый и черный цвет, при изменении даже всех 3х компонент цвета, результат “на глаз” практически не заметен: в двух левых квадратах цвета 255.255.255 и 0.0.0, в правых 254.254.254 и 1.1.1 соответственно (если сбоку на ТН матрицах смотреть, то, вероятно, отличие будет заметно сильнее)
пример

В свою очередь нужно отметить, что далеко не всегда меняются три наименьших значащих бита всех трех компонент цвета, возможно даже полное отсутствие изменения. Сейчас пойдет сумбур, сказать хочется много, а пишется это все долго. Метод LSB довольно прост, а в купе с криптографией дает хороший и быстрый стеганографический результат. К сожалению он совсем не устойчив к стеганоатакам. Например, если бы я был наблюдателем за каналом передачи данных, и я подозревал возможную передачу стеганограф. инф-ю, я мог бы запросто накладывать какие-то маски\фильтры\ замену цветов, что полностью бы разрушило сообщение. Тем не менее, способ кодирования палитры хорош, тк сервисы заливки изображений, берут инфу о цвете из этой же палитры и при 100% качестве (т.е. без потерь) даже после перекодировки имеем стеганографический обьект (пример - всё то же лолго рябы с текстом, залитое на имгур).
В gif, при наилучшем варианте кодирования цветов (256) на один кадр можно записать соответственно 256*3=768 бит инфы. Ascii таблица оперирует 7 битами на символ, т.е. 109 символов полезной инфы или 96 байт бинарной инфы. Для анимированных изображений количество инфы умножается на число кадров.
В бмп аналогично, в жипеге по-другому, но там вообще можно оперировать сразу с цветовым представлением пикселя и наворотить дел.
Однако, я углубился не туда. Дальнейший этап тз - конструирующая стеганография. Инфы о ней в инете я особо не нашел, прямо скажем вообще не нашел ничего толкового. Основная идея - в генерировании контейнера (т.е. оболочки, будь то изображение или что бы то ни было еще) на основе сообщения, которое нужно скрытым образом передать. Вот тут и начинается веселуха. Нужно создать что-то, что будет контейнером для инфы. Т.е. нужно автоматически (без участия человека) сгенерировать то, что не привлечет внимания наблюдателя, да еще и впихнуть в это секретное сообщение. Сначала думал на генераторы аватарок (кстати, кто еще не видел статью на хабре с генератором котов, советую потыкать, вроде и ничего особенного, а КОТЫ ^_^ ). Потом думал про создание эффектов, вроде эффектов инстаграмма для любых случайных изображений. Но как-то все опять же скатывается в область LSB или около того. Потом пришла в голову идея генерации абстракций. Нашел на хабре (удивительно, но пусть и не долгое гугление, других аналогов не дало). Успешно генерит абстрактные изображения на си. Изображения бывают вполне себе достойными. Можно генерить гифки с математическими рисунками. Например, автоавки на этом форуме, или вот пример
(http://vk.com/doc11136586_234324366)
На основе кода, из книги Тима Конверса Пэхапэ и Мускул для самых маленьких Библия пользователя (странцы где-то 950е, про фракталы).
Собственно вот, кратенько о найденном и задуманном. Лучшим, на данный момент, кажется генератор абстракций. И контейнер сам генеришь и пихай в него все что хошь.
Кстати, пока занимаюсь раскапыванием инфы, подумал, каким мощным инструментом стеганографии являются хостинги картинок. Никто ведь даже и не подумает, что хостер кодирует и хранит инфу в Ваших изображениях, на которых изображены коты и которые вы свободно кидаете подруге вконтактик.
Сумбурно и сжато, получилось так.