Скачиваний:
184
Добавлен:
15.06.2014
Размер:
6.5 Mб
Скачать
    1. Описание работы класса lsbInjector

Класс LSBInjector реализует LSB метод внедрения ЦВЗ в изображение. Единственным параметром данного класса является путь к файлу, который будет внедрен. Первоначально при внедрении (метод Inject()) производится подсчёт байт, которые могут быть внедрены в изображение (т.е. объем стегоконтейнера) Предполагается, что на каждый пиксел можно внедрить 3 бита информации, для R, G и B компонентов, коэффициент прозрачности не затрагивается. Происходит чтение из файла данного количества байт в массив, после этого попиксельно производится модификация младших битов исходного растрового изображения, в соответствии с хранимой в массиве информацией. Возвращаемое изображение уже содержит в себе внедренный ЦВЗ.

Аналогично реализован и метод Assure(), цель которого – подтвердить подлинность файла. Из файла для проверки в данном случае также читается массив байт, который сравнивается с массивом, извлеченным из контейнера. Допустимое количество ошибок установлено в пределах 10%; если массивы отличаются более чем на это значение, ЦВЗ признается неподтвержденным.

Сохранение LSB–модифицированного растрового изображения следует производить только в несжатом формате (PNG или BMP), т.к. при сжатии файла погрешность дискретизации высока, и распределение младших битов цветовых компонентов растра стремится к вероятностному (50% true, 50% false).

Докажем это. Возьмём 24-битный растр с разрешением 1024х768. В таком случае вес файла равен 1024*768*3 =2359296 байт, и в нем можно поместить методом LSB 1024*768*3/8 = 294912 байт ЦВЗ. В случае несжатого формата это является возможным. Размер же сжатого изображения в формате JPG равен около 110000-120000 байт. Требование вместить в него 294912 байт ЦВЗ и обеспечить достоверность данной информации противоречит здравому смыслу. Именно поэтому ПС ImageSpyer и не поддерживает сохранение в сжатом формате LSB-стегоконтейнеров.

При разработке данного метода был проведен эксперимент по подсчёту процентного соотношения значений совпавших бит, извлеченных из сжатых файлов и бит, исходно записываемых в контейнер, к общему объёму контейнера. При большом количестве опытов это значение стремится к 0,5, это означает, что распределение младших бит в сжатом медиафайле произвольно, что подтверждает выдвинутое ранее утверждение. Такое же распределение получается и при проверке произвольного файла. Таким образом, использование JPG в качестве стегоконтейнера невозможно, что и требовалось доказать.

Исходный код класса LSBInjector находится в приложении Д.

Схема работы алгоритма внедрения LSB показана на рисунке 2.3.

Рисунок 2.3. Схема работы алгоритма внедрения ЦВЗ по методу LSB

    1. Описание работы класса PatchworkInjector

Данный класс реализует метод Patchwork внедрения ЦВЗ в изображение. Здесь файл ключа служит как «затравка» (salt) для генератора псевдослучайных чисел (Pseudorandom Number Generator, PNG). Исходными данными, как и для метода LSB, служит путь к файлу, содержащему ЦВЗ. Из данного файла считывается массив байт, которые предназначены для передачи в PNG, который, в свою очередь, возвращает 40000 байт. Каждая четверка этих байт представляет собой координаты одной точки изображения, таким образом, данный метод производит 5000 Patchwork-итераций, на каждой из которых получают значения двух точек изображения из результатов работы PNG; в первой из них увеличивают яркость изображения на δ, во второй уменьшают на столько же. Значение δ выбрано равным 5. Измененное изображение отображается на экране.

Для проверки осуществляются те же действия, что и для внедрения. Вводится переменная Ms, которая суммирует общее отклонение разности яркостей двух точек. После 5000 итераций в переменной остается отклонение, вызванное внедрением Patchwork-модификаций. Ошибка распределения принята равной 50; если существует большее отклонение, то водяной знак считается подтвержденным.

Поскольку данный ЦВЗ является полухрупким, на формат файла не накладывается ограничений.

Исходный код класса Patchwork Injector находится в приложении Е.

Схема работы алгоритма внедрения Patchwork показана на рисунке 2.4.

Рисунок 2.4. Схема работы алгоритма внедрения Patchwork