Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
стеганография.docx
Скачиваний:
16
Добавлен:
07.03.2016
Размер:
45.88 Кб
Скачать

Алгоритми

Існуючі алгоритми вбудовування таємної інформації можна поділити на декілька підгруп:

  • Працюючі з самим цифровим сигналом. Наприклад, метод LSB (Least Significant Bit);

  • «Впаювання» прихованої інформації. В даному випадку відбувається накладення приховуваного зображення (звуку, іноді тексту) поверх оригіналу. Часто використовується для вбудовування ЦВЗ (цифровий водяний знак).

  • Використання особливостей форматів файлів. Сюди можна віднести запис інформації в метадані або в різні інші не використовувані зарезервовані поля файлу.

LSB (Least Significant Bit, найменший значущий біт) — суть цього методу полягає в заміні останніх значущих бітів у контейнері (зображення[6], аудіо[7] або відеозапису) на біти приховуваного повідомлення. Різниця між порожнім і заповненим контейнерами повинна бути не відчутна для органів сприйняття людини.

Наиболее часто для сокрытия инфы используются графические файлы. Существует множество разных по своей сложности методов сокрытия, но наиболее простым является так называемый метод битовых плоскостей. Суть его заключается в следующем. Как известно, любое изображение представляет собой совокупность точек. Каждая точка цветного изображения кодируется комбинацией из 3-х байт, задающих уровень красного (R), зелёного (G) и голубого цветов (B) — RGB. Если в этой комбинации изменить самый последний бит, или пару — тройку битов, цвет хоть и получится отличным от исходного, но настолько незначительно, что даже самый острый глаз не заметит никакой разницы. Это и используется для того, чтобы путём изменения битов точек встроить в изображение любые данные, которые предварительно ещё и шифруются, после чего можно спокойно передавать такую картинку (стегофайл), не представляющую никакой ценности для ФСБ, ЦРУ, M6, Моссада (нужное подчеркнуть) через открытый канал. Cтегофайл нельзя обрабатывать в графическом редакторе как картинку, иначе скрытая информация может быть разрушена. С осторожностью их надо загружать на файловые хостинги, поскольку они тоже при загрузке могут обрабатывать изображения.

Підвиди lsb-алгоритмів для растрових зображень без палітри

BlindHide (приховування наосліп). Найпростіший алгоритм: дані записують, починаючи з верхнього лівого кута зображення до правого нижнього — піксел за пікселем. Приховані дані програма записує у наймолодших бітах кольорів пікселя. Приховані дані розподіляються у контейнері нерівномірно. Якщо приховані дані не заповнять повністю контейнер, то лише верхня частина зображення буде засміченою.

HideSeek (заховати-знайти). Цей алгоритм у псевдовипадковий спосіб розподіляє приховане повідомлення у контейнері. Для генерації випадкової послідовності використовує пароль.

FilterFirst (попередня фільтрація). Виконує фільтрацію зображення-контейнера — пошук пікселів, у які записуватиметься прихована інформація (для яких зміна наймолодших розрядів буде найменш помітною для ока людини).

BattleSteg (стеганографія морської битви). Найскладніший і найдосконаліший алгоритм. Спочатку виконує фільтрацію зображення-контейнера, після чого прихована інформація записується у «найкращі місця» контейнера у псевдовипадковий спосіб (подібно, як у HideSeek).

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

Попробовать взять какое-нибудь изображения в формате jpeg и дописать в конец него rar-архив. Мы увидим, что все действительно работает так, как нам хотелось бы – при просмотре файла, например с помощью ACDSee, нам открывается наше изображение. А при попытке его разархивировать – все тоже проходит гладко, и мы спокойно себе получаем наше сообщение. Естественно можно на архив наложить шифрование – и получить таким образом «спайку» возможностей криптографии и стеганографии. Ничего не подозревающий анонимус видит картинку, тот кто знает о скрытом содержимом, открывает архиватором. Такие стегоконтейнеры безразмерны, но при попытке засунуть слишком много такую конструкцию выдаст размер. Также существует множество скриптов для поиска.

Представляется очевидным, что в компьютерах все конечно и дискретно. В связи с этим мы храним лишь отдельные части изображений/звуков/… В простейшем варианте (формат bmp = bitmap picture) изображение хранится как матрица (таблица) значений оттенков цвета для каждой точки хранимого изображения. Ну и, разумеется, он хранится не как длина его волны (вспоминаем немного физику), а как комбинация из трех оттенков (красного, зеленого и синего цветов - это называется схема смешения RGB) которые необходимо "смешать" для того чтоб получить наш исходный цвет. Таким образом, каждая из трех компонент (их еще называют каналами цвета), хранясь в одном байте, может принимать значения от 0 до 255 включительно. Особенность нашего зрения заключается в том, что мы достаточно терпимо относимся к незначительным колебаниям цвета. Это значит, что мы не заметим разницы между цветами, соответствующими значениям, отстоящим друг от друга в пределах 3. Изменение каждого из трех наименее значимых бит (в трех каналах соответственно) приводит к изменению менее чем на 1% интенсивности данной точки. А это, в свою очередь означает, что наименее значащий бит мы можем изменять по своему усмотрению. Это называется принцип "наименее значащих битов" = Least Significant Bits. Если отбросить в расчетах, обычно незначительную относительно размера изображения, служебную информацию в начале файла, то получаем следующую картину. Мы имеем возможность дополнительно хранить сообщение размером в 1/8 размера контейнера ("размазанную" по последним битам в каждом байте матрицы цветов пикселей) или же размером в 1/4 контейнера (соответственно при использовании 2 последних битов в байтах).

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

Аудио:

Например, можно замещать наименее значащие биты контейнера битами встраиваемого сообщения. Так же можно строить стегосистемы, основанные на особенностях системы слуха человека и на особенностях самих аудиосигналов. По своей сути система слуха человека – это анализатор частотного спектра, который воспринимает сигналы в диапазоне 10 – 20000 Гц. Систему слуха человека можно смоделировать, как 26 пропускающих фильтров, полоса пропускания, которых увеличивается с увеличением частоты. Изменение фазы сигнала улавливается системой человеческого слуха слабее, чем изменение амплитуды или частоты.  Следовательно, существуют три способа встраивания информации в аудиосигналы:

  • Встраивание с расширением спектра (незначительно модифицируются амплитуды отсчетов);

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

  • Встраивание за счет изменения времени задержки эхо-сигнала.

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

Программы для стеганографии в  JPEG

Более серьезным иструментом является OpenPuff, который имеет возможность работать с разными форматами контейнеров и позволяет использовать несколько ключей.

SecurEngine, которая прячет сообщение в большом текстовом файле и напоследок познакомимся с программкой, которая скрывает файлы в MP3 формате – так называемая - MP3Stego.

Сейчас наиболее распространены четыре программы стеганографии, работающие под управлениемWindows:

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

  • JPHide / JPSeek / JPHSWin  - существует начиная с 1999 года, исходный код доступен. Программа использует Blowfish, как генератор псевдо-случайных чисел.

  • JSteg – одна  из первых программ для  сокрытия данных в формате JPEG. Программа не поддерживает шифрование скрываемых данных.  Графический интерфейс, который называется JStegShell, был написан позднее и добавляет несколько дополнительных возможностей, такие как возможность шифрования. Исходные коды доступны.

  • StegHide новый относительно свежая программа с открытым исходным кодом, поддерживаемая разработчиками 

Принцип работы стеганографии (на примере программы JSteg).

Для демонстрации работы стеганографического алгоритма рассмотрим подробнее программу JSteg

Сначала программа JSteg преобразует скрываемый файл в байтовую последовательность очень простым способом. Он добавляет имя скрываемого файла (если вы выбрали эту опцию) в начало. Затем, после имени скрытого файла, он добавляет байт с длиной названия файла. И, наконец, в конце в качестве подписи, добавляется строка korejwa (имя автора).

Скрываемая информации имеет следующий формат (взято из файла README, и немного упрощенно):

A

BBB … B

CCCCCCCCCCCCCCCCCC. . .

где область:

  А – длиной в 5 бит. Он выражает длину (в битах) поля B;

B – некоторое количество бит, определенное значением, содержащимся в области А. Количество битов может варьироваться в диапазоне от 0 до 31. Он выражает длину (в байтах) скрываемого сообщения;

  С – содержит само скрываемое сообщение.

Для анализа работы программы JSteg скроем информацию в изображении обложки  "Планета историй", сборника научно фантастических рассказов. Это небольшое JPEG изображение, размером 15 Kb. На рисунке приведены изображения до и после сокрытия информации. Изображение слева не содержит никаких скрытых сообщений. Внутри правого изображения , скрыто стихотворение "If ", Редьярда Киплинга, на английском языке, размером 1,5 Kb: Цветом обозначены области формата данных JSteg, описанные выше: красный цвет для поля "А" - первого 5 битного блока, содержащего размер следующего поля размера; зеленый для блока "B", содержащий размер данных, и синий для поля "С", в котором находятся скрытые данные. Важно помнить, что если байт равен 0 или 1, он не принимаются во внимание..

Исходное изображение

Изображение со скрытым текстом

Квантованные коэффициенты DCT

Квантованные коэффициенты DCT

Младшие биты квантованных коэффициентов DCT

D6 69 13 05 03 15 F2 EB

FF 04 01 00 FA FB F9 FF

06 02 FE FF 00 00 00 FF

01 03 02 01 01 FF 00 00

01 00 00 00 00 00 00 00

00 FF FF 00 00 00 00 00

00 00 00 00 00 01 00 00

 00 00 00 00 00 00 00 00

D6 69 12 05 03 15 F3 ЕА

FE 04 01 00 FA FB F8 FE

06 03  FE FF 00 00 00 FE

01 02  03 01 01 FE 00 00

01 00 00 00 00 00 00 00

00 FE FF 00 00 00 00 00

00 00 00 00 00 01 00 00

00 00 00 00 00 00 00 00

00 01 00 01 01 01 01 00

00 00 01 00 00 01 00 00

00 01 01 00 00 00 00 00

01 00 01 01 01 00 00 01

00 00 00 00 00 00 00 00

00 00 01 00 00 00 00 00

00 00 00 00 00 01 00 00

00 00 00 00 00 00 00 00

Далее декодируем приведенный в таблице первый блок размером 8x8 вручную, чтобы понять, как работает алгоритм сокрытия данных. В результате: Поле А: всегда содержит 5 бит для декодирования. Из таблицы 5 видно , что это число равное 00 01 00 01 01 или 01011 в двоичной системе счисления или 11 в десятичной системе счисления. Это размер следующего поля, содержащего размер скрытых данных. Поле В: 11 бит для декодирования: 01 01 00 00 00 00 01 00 00 00 01 или 11000010001 в двоичной или 1553 в десятичной системе. Это точный размер скрываемого стихотворения. Поле C: 1553 x 8 бит для декодирования, начиная с: 00 01 00 00 01 00 00 01 или 01001001 в двоичном или 73 в десятичной системе, что в соответствии с таблицей ASCII является буквой «I» в верхнем регистре, и соответствует первой букве скрытого стихотворения.

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

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

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

Атака по известной математической модели контейнера — взломщик определяет отличие подозрительного послания от известной ему модели

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