Стеганография изображения методом Patchwork.

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 12:41, 1 июня 2017.
Версия от 12:41, 1 июня 2017; timofey chernih (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Open book.svg Авторство
Н. Грозмани
Согласовано: 2011

Техническое задание

Назначение программы

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

Условия применения

Условия, необходимые для функционирования программы

Данный программный продукт функционирует на одном ПК с ОС семейства Windows. Система состоит из следующих компонентов:

  1. Модуль внесения данных в изображение
  2. Модуль получения данных из изображения
  3. Модуль внесения и получения данных реализованы в среде MathCAD 14.

Требования к техническим средствам

MathCAD 14, требует:

  • Pentium-совместимый 32-битный (x86) или 64-битный (x86-64, EM64T) процессор - 400 МГц или выше; рекомендуется 700+ МГц.
  • 256 МБ RAM; рекомендуется 512 MБ или более.
  • 550 МБ дискового пространства (250 МБ для Mathcad, 100 МБ для системных компонентов, и 200 МБ для временных файлов во время установки).

Требования к программному обеспечению

Требуется установленный программный продукт MathCAD 14, а так же сопутствующее программное обеспечение:

  • Windows XP Home или Professional, Windows XP Professional x64, или Windows Vista; рекомендуется Windows XP SP3, XP-x64 SP2, или Vista.
  • Windows Installer 3.0 или старше.
  • Microsoft .NET Framework® 3.5 или старше
  • MSXML 4.0 SP2 Parser and SDK
  • Microsoft Data Access Components (MDAC) 2.8 или старше
  • Internet Explorer 5.0 или старше.
  • Adobe Reader 5.0 или старше.

Описание задачи

Решаемые задачи

Сокрытие и извлечение информации в/из контейнера JPG – программа позволяет определить количество возможной скрытой информации в контейнере и позволяет подобрать оптимальное ее количество, а так же произвести ее извлечение из контейнера. Алгоритм ограничен тем, что для каждого бита шифруемой информации берется 10 тыс пар пикселов изображения.

Используемые решения

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

Входные и выходные данные

Входные данные

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

Выходные данные

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

Руководство пользователя

Введение

Область применения

Данная программа предназначена для осуществления скрытой передачи данных в контейнере JPG.

Краткое описание возможностей

Основными возможностями программы являются:

  • Сокрытие информации в контейнере JPG
  • Извлечение информации из контейнера JPG

Уровень подготовки пользователя

Для эксплуатации программы определена единственная роль Оператор. Оператор должен иметь опыт работы с ПК на базе ОС Windows и пакетом MathCAD 14. На достаточном уровне, для свободного осуществления базовых операций. В принципе для работы достаточно осуществить запуск пакета и выбрать контейнер, а так же данные для записи. Рекомендуемая численность для эксплуатации программы: оператор – 1 штатная единица.

Перечень эксплуатационной документации

Программа. «Руководство пользователя»

Назначение и условия применения

Виды деятельности, функции

Перечень автоматизированных функций:

  • Создание файла с данными для записи
  • Занесение данных в изображение
  • Извлечение данных из изображения

Программные и аппаратные требования к системе

Pentium-совместимый 32-битный (x86) или 64-битный (x86-64, EM64T) процессор - 400 МГц или выше; рекомендуется 700+ МГц. RAM; рекомендуется 512 MБ или более.

550 МБ дискового пространства (250 МБ для Mathcad, 100 МБ для системных компонентов, и 200 МБ для временных файлов во время установки).

MathCAD 14

ОС Microsoft® Windows® XP/Vista/7 x32 или x64

Подготовка к работе

Состав дистрибутива

PATCHWORK_in.xmcd

PATCHWORK_out.xmcd

Запуск системы

Запустить ПО MathCAD 14 и открыть оба файла дистрибутива

Проверка работоспособности системы

Если программный продукт появились на экране и оба файла дистрибутива открылись в среде MathCAD 14, то программное обеспечение работоспособно.

Описание операций

Операция генерации входной бинарной последовательности

Условия выполнения операции

Операция выполняется корректно, если длина входного сообщения не превосходит параметр Max_N , где Max_N – параметр из файла дистрибутива PATCHWORK_in.xmcd

Подготовительные действия

Создание файла data_for_write.txt

Выбор будущего контейнера для стего

Основные действия

Запись данных в созданный файл

Заключительные действия

Сохранение файла в папке с программой PATCHWORK_in.xmcd

Ресурсы, расходуемые на операцию

10 Мб ОЗУ

Операция внесения данных в изображение

Условия выполнения операции

Операция выполняется корректно, если длина входного сообщения не превосходит параметр Max_N , где Max_N – параметр из файла дистрибутива PATCHWORK_in.xmcd

Подготовительные действия

Операция генерации входной бинарной последовательности

Создание изображение с именем Jellyfish.jpg в формате JPG

Открытие файла PATCHWORK_in.xmcd в MathCAD 14

Основные действия

Дождаться выполнения всех вычислений в файле PATCHWORK_in.xmcd ====Заключительные действия Запись контейнера со стего Jellyfish_res.jpg

Запись выработанного ключа в Key.txt

Ресурсы, расходуемые на операцию

100 Мб ОЗУ

Операция извлечения данных из изображения

Условия выполнения операции

Операция выполняется корректно, если изображение было закодировано методом Patchwork, алгоритмом в файле PATCHWORK_in.xmcd

Подготовительные действия

Открытие файла PATCHWORK_out.xmcd в MathCAD 14

Открытие в файле MathCAD-а контейнера со стего Jellyfish_res.jpg

Основные действия

Дождаться выполнения всех вычислений в файле PATCHWORK_out.xmcd

Заключительные действия

Запись извлеченных данных в файл data_after_stego.txt

Ресурсы, расходуемые на операцию

100 Мб ОЗУ

Аварийные ситуации

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

Рекомендации по освоению

Для успешного освоения программы необходимо иметь навыки работы с ПК и изучить базовые операции ОС Windows, MathCAD 14.

Текст выполненной программы PATCHWORK in.html

Cоздадим изображение(контейнер) управляемого объема. Отдельно извлекаем из него голубую, красную и зеленую компоненты:

15MAGE PATCHWOR.PNG
57IMAGE PATCHWORK.PNG
58IMAGE PATCHWORK.PNG
59IMAGE PATCHWORK.PNG
60IMAGE PATCHWORK.PNG
62IMAGE PATCHWORK.PNG
61IMAGE PATCHWORK.PNG
63IMAGE PATCHWORK.PNG

Узнаем максимально возможное число блоков:

2IMAGE PATCHWO.PNG
13MAGE PATCHWO.PNG

Тогда максимально можно поместить 39 бит стего, т.к. для каждого бита необходимо минимум 10000 пар битов, в которых мы будем менять яркость. В начале ключа содержится число блоков, на которое делится файл, мы возьмем 32 блока по ширине и длине. Далее идут использующиеся для генерации выбора бит псевдослучайные числа и результаты нормировки. n_dlin:=8 n_shir:=4

46MAGE PATCHWO.PNG
2IMAGE PATCHWO.PNG
69IMAGE PATCHWORK.PNG
70IMAGE PATCHWORK.PNG


i:=0..n_dlin - 1 j:=0.. n_shir - 1 l:=0..dlin_block - 1 k:=0..shir_block - 1

75IMAGE PATCHWORK.PNG
76IMAGE PATCHWORK.PNG

Разбиваем блоки для работы с ними.

76IMAGE PATCHWORK.PNG

Выбираем пары точек для первого варианта (конгруентный генератор)

a:=13
b:=19
c:=7
d:=23

16IMAGE PATCHWO.PNG
12IMAGE PATCHWO.PNG

Выбираем пары точек для окончательного алгоритма.

14IMAGE PATCHWO.PNG
17IMAGE PATCHWO.PNG
18IMAGE PATCHWO.PNG
19IMAGE PATCHWO.PNG


Запишем стего:

20IMAGE PATCHWO.PNG
21IMAGE PATCHWO.PNG
22IMAGE PATCHWO.PNG
23IMAGE PATCHWO.PNG


25IMAGE PATCHWO.PNG
26IMAGE PATCHWO.PNG


Производим нормировку:

28IMAGE PATCHWO.PNG

qq:=10 tt:=4

33IMAGE PATCHWO.PNG
34IMAGE PATCHWO.PNG
31IMAGE PATCHWO.PNG
32IMAGE PATCHWO.PNG
38IMAGE PATCHWO.PNG


37IMAGE PATCHWO.PNG

41IMAGE PATCHWO.PNG
42IMAGE PATCHWO.PNG


Ключ будет иметь вид:

36IMAGE PATCHWO.PNG
40IMAGE PATCHWO.PNG


Запишем его в файл: 43IMAGE PATCHWO.PNG

Текст выполненной программы PATCHWORK out.html

Cоздадим изображение(контейнер) управляемого объема. Отдельно извлекаем из него голубую, красную и зеленую компоненты:

56IMAGE PATCHWORK.PNG
57IMAGE PATCHWORK.PNG
58IMAGE PATCHWORK.PNG
59IMAGE PATCHWORK.PNG
60IMAGE PATCHWORK.PNG
62IMAGE PATCHWORK.PNG
61IMAGE PATCHWORK.PNG
63IMAGE PATCHWORK.PNG


64IMAGE PATCHWORK.PNG
65IMAGE PATCHWORK.PNG


66IMAGE PATCHWORK.PNG
67IMAGE PATCHWORK.PNG
68IMAGE PATCHWORK.PNG


69IMAGE PATCHWORK.PNG
70IMAGE PATCHWORK.PNG

i:=0..n_dlin - 1 j:=0.. n_shir - 1 l:=0..dlin_block - 1 k:=0..shir_block - 1

75IMAGE PATCHWORK.PNG
76IMAGE PATCHWORK.PNG


Разбиваем на блоки, для работы.

77IMAGE PATCHWORK.PNG
78IMAGE PATCHWORK.PNG
79IMAGE PATCHWORK.PNG


Выполняем нормировку.

80IMAGE PATCHWORK.PNG
81IMAGE PATCHWORK.PNG
82IMAGE PATCHWORK.PNG
83IMAGE PATCHWORK.PNG
84IMAGE PATCHWORK.PNG


85IMAGE PATCHWORK.PNG

Краткое описание и результаты исследования

Для того чтобы расширить количество бит стего, которые помещаются в изображение, оно разбивалось на блоки, число блоков нужно брать из расчета как минимум 20000 точек на блок, т.к. алгоритм предполагает минимум 10000 пар точек. Стего вносится в синий слой изображения, количество стего может быть увеличено в 3 раза, если использовать все три цветовых слоя. Яркость одного пикселя из пары увеличивается на 2, другого уменьшалась на 2. Т.к. выбранное изображение может быть неоднородно, было принято решение о вычислении начального среднего значения соотношения пар точек по яркостям для каждого блока в отдельности, полученные значения стали частью ключа.

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

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

Пример изображений

Пример стегосообщений