Метод относительной замены величин коэффициентов ДКП (метод Коха и Жао)
Один из наиболее распространенных на сегодня методов скрытия конфиденциальной информации в частотной области изображения заключается в относительной замене величин коэффициентов ДКП, который в свое время описали Кох (Е. Koch) и Жао (J. Zhao) [86, 87].
На начальном этапе первичное изображение разбивается на блоки размерностью 8x8 пикселей. ДКП применяется к каждому блоку — формула (5.18 а), в результате чего получают матрицы 8x8 коэффициентов ДКП, которые зачастую обозначают , где b — номер блока контейнера С, a - позиция коэффициента в этом блоке. Каждый блок при этом предназначен для скрытия одного бита данных
Было предложено две реализации алгоритма: псевдослучайно могут выбираться два или три коэффициента ДКП. Рассмотрим первый вариант.
Во время организации секретного канала абоненты должны предварительно договориться о двух конкретных коэффициентах ДКП из каждого блока, которые будут использоваться для скрытия данных. Зададим данные коэффициенты их координатами в массивах коэффициентов ДКП: и . Кроме этого, указанные коэффициенты должны отвечать косинус-функциям со средними частотами, что обеспечит скрытость информации в существенных для ЗСЧ областях сигнала, к тому же информация не будет искажаться при JPEG-компрессии с малым коэффициентом сжатия.
Непосредственно процесс скрытия начинается со случайного выбора блока Сbизображения, предназначенного для кодирования b-го бита Сообщения. Встраивание информации осуществляется таким образом: для передачи бита "0" стремятся, чтобы разница абсолютных значений коэффициентов ДКП превышала некоторую положительную величину, а для передачи бита "1" эта разница делается меньшей по сравнению с некоторой отрицательной величиной:
(5.19)
Таким образом, первичное изображение искажается за счет внесения изменений в коэффициенты ДКП, если их относительная величина не отвечает скрываемому биту. Чем больше значение Р, тем стеганосистема, созданная на основе данного метода, является более стойкой к компрессии, однако качество изображения при этом значительно ухудшается.
После соответствующего внесения коррекции в значения коэффициентов, которые должны удовлетворять неравенству (5.19), проводится обратное ДКП.
Для извлечения данных, в декодере выполняется аналогичная процедура выбора коэффициентов, а решение о переданном бите принимается в соответствии со следующим правилом:
(5.20)
Промоделируем описанный метод в программе MathCAD.
Шаг 1
Выделяем массивы цветовых компонентов изображения:
R:=READ_RED("C.bmp"); G:=READ_GREEN("C.bmp"); В:=READ_BLUE("C.bmp").
В связи с низкой чувствительностью ЗСЧ к каналу синего цвета и возможным при определенных обстоятельствах довольно значительным искажением контейнера при встраивании, секретное сообщение будем встраивать в массив В.
Определим размерность массива В и зададим размерность сегментов (блоков), на которые он будет разбиваться: количество строк X:=rows(B), X=128; количество столбцов Y:= cols(B), Y=128; размерность сегментов N :=8 пикселей.
Общее количество сегментов, на которое разбивается контейнер: , NC=256сегментов.
Шаг 2
Разбивку массива В на сегменты С проводим с помощью модуля (М.45).
Каждый сегмент С предназначен для скрытия одного бита конфиденциального сообщения М. Поэтому предварительно необходимо проверить достаточность количества сегментов для этой операция.
Пусть, как и в предыдущим случаях, сообщение имеет вид М:= "© Пузыренко А.Ю., 2005 г." При этом количество бит вскрываемом сообщении (один символ сообщения кодируется одним байтом): Lм :=8 strlen(M) = 200 бит<NC =256. Итак, объем сообщения является приемлемым для встраивания.
Шаг 3
Применим к каждому из сегментов прямое дискретное косинусное преобразование — см. выражение (5.18 а). Программный модуль прямого ДКП состоит из. двух частей: первая (М.46) определяет значения коэффициентов для текущего значения аргумента вторая (М.47)проводит вычисление спектральных коэффициентов ДКП для каждого сегмента Сb, при этом возвращается соответствующая матрица размерностью NxN.
Рис. 5.27. Пример массива коэффициентов ДКП
Коэффициент в левом верхнем" углу матрицы (напомним, что в нашем случае нумерация элементов массивов начинается с единицы) —( )11 содержит информацию о яркости всего сегмента (его зачастую называют DC-коэффициентом). Другие коэффициенты называются АС-коэффициентами. Отметим также, что коэффициенты НЧ компонентов размещены ближе к левому верхнему углу, а ВЧ компонентов — ближе к правому нижнему углу (рис. 5.27).
Шаг 4
Как уже отмечалось выше, НЧ компоненты содержат преобладающую часть энергии изображения и, следовательно, носят шумовой характер. ВЧ компоненты больше поддаются влиянию со стороны различных алгоритмов обработки (см. рис. 5.25). Таким образом, для встраивания сообщения оптимальными являются среднечастотные компоненты спектра изображения. Зададим позиции двух коэффициентов ДКП в массиве , которые будут использоваться при встраивании и извлечении сообщения в/из контейнера. Для создания более защищенной от взлома стеганосистемы отмеченная пара коэффициентов ДКП должна выбираться псевдослучайно, конечно, из множества среднечастотных коэффициентов. Пусть, первый коэффициент определяется координатами , а второй — .Также установим значение порога, с которым будут сравниваться результаты разности модулей коэффициентов. Пусть Р:= 25.
Шаг 5
Встраивание информации проведем в соответствии с рекомендациями, которые даны перед выражением (5.19): для передачи нулевого бита необходимо, чтобы разность модулей коэффициентов ДКП превышала величину Р, а для передачи единичного бита эта разность должна быть меньше -Р. Данный принцип положен в основу модуля (М.48).
В начале модуля массиву присваивается значение массива .Строка символов М преобразуется в вектор их ASCII-кодов. В цикле изменения (перебор кодов символов) формат кода каждого символа преобразуется из десятичного в двоичный. Каждый из восьми полученных при этом бит скрывается в отдельном сегменте изображения путем модификации значений коэффициентов ДКП соответствующего сегмента. Для уменьшения заметности встраивания, вместо одностороннего изменения одного из двух коэффициентов ДКП для удовлетворения требований (5.19), можно изменять их одновременно в противоположных направлениях: например, при встраивании "0" — увеличивать модуль коэффициента с координатами и одновременно уменьшать модуль коэффициента с координатами .
Шаг 6
Выполним обратное ДКП (М.49) в соответствии с формулой (5.18 б).
Шаг 7
Проведем сборку сегментов в массив, используя программный модуль (М.50).
Поскольку модификация коэффициентов ДКП в некоторых случаях приводит к выходу значений интенсивностей пикселей изображения за пределы допустимого диапазона [0,255], в конце модуля (М.50) проводим нормирование указанных значений.
Воссоздаем массив восстановленного изображения графически (рис. 5.28 а). Также на рис. 5.28 изображен контейнер-результат, восстановленный по цветовым составляющим R-G-ВM Кроме того, представлено вид, который приобретают массив синего цвета и контейнер-результат в случае установления значения порога Р:=250 при неизменных значениях и (рис. 5.28 б).
Рис. 6.28. Результаты встраивания в контейнер секретного сообщения М путем модификации коэффициентов ДКП сегментов массива канала синего при различных значениях порога Р
Шаг 8
Рассмотрим процесс извлечения сообщения на принимающей стороне.
Получателю должны быть известны: алгоритм скрытия, цветовой массив-контейнер (В*) и его размерность (X* и Y*), размерность сегментов (N*) и матричные координаты коэффициентов косинусных функций, которые использовались для скрытия) и .
Выполним вычисление общего количества сегментов в изображении-контейнере: .
Разбивка массива В* на сегменты выполняется с помощью модуля, аналогичного программному модулю (М.45). В результате получаем массив С*, каждый сегмент которого представляет собой матрицу размерностью
К каждому сегменту применяем прямое ДКП (см. модули (М.46), (М.47)), при этом получаем массив коэффициентов ДКП каждого отдельного сегмента С*.
С помощью модуля (М.51) осуществляем извлечение скрытой информации. В основу модуля положена проверка соотношений (5.20), по результатам которой извлекаемому биту сообщения присваивается значение 0 или 1.
После извлечения каждого восьмого бита полученный вектор m* преобразуется из массива двоичных данных в соответствующее десятичное число, которое, в свою очередь, присваивается определенному переменнойjэлементу вектора М* Результат извлечения (вектор десятичных чисел) в конце модуля трансформируется из вектора ASCII-кодов в строку символов.
Результаты вычисления показателей визуального искажения графического контейнера при значениях порога встраивания Р=0.5 и Р=25 сведены в табл. 5.4 (стр. 179).