Устойчивые к атакам на контейнер стеганографические алгоритмы

Автор: Смагин Алексей Аркадьевич, Валишин Марат Фаритович

Журнал: Инфокоммуникационные технологии @ikt-psuti

Рубрика: Электромагнитная совместимость и безопасность оборудования

Статья в выпуске: 1 т.13, 2015 года.

Бесплатный доступ

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

Стеганография, стегоанализ, активная атака, робастность, стеганографический алгоритм, цифровая обработка изображений, jpeg компрессия

Короткий адрес: https://sciup.org/140191747

IDR: 140191747

Текст научной статьи Устойчивые к атакам на контейнер стеганографические алгоритмы

Стеганография – наука о скрытой передаче данных путем сохранения в тайне самого факта передачи данных. Современная стеганография имеет дело с цифровыми объектами, в основном изображениями, аудио- и видеоданными. Основным критерием стеганографических систем является устойчивость к обнаружению. Изначально рассматривалась устойчивость к визуальному обнаружению, однако по мере развития методов стеганографии появился особый раздел стеганографии: стегоанализ, наука о выявлении факта передачи скрытой информации. В настоящее время рассматривается устойчивость стеганографических алгоритмов к статистическим тестам, методам классификации и т.д.

Стеганография позволяет решать ряд прикладных задач, не связанных с «задачей заключенных» [1]. Чаще всего сокрытие дополнительной информации позволяет расширить функционал формата данных. Для решения прикладных задач критерий устойчивости к обнаружению не является приоритетным, так как наличие внедренных в цифровой объект данных не скрывается. Таким образом, одним из главных требований к прикладной стеганосистеме — это обеспечение устойчивости к случайным или умышленным атакам [2].

Постановка задачи

Этапы трансформации цифрового объекта могут быть представлены в виде диаграммы (см. рис. 1). Состояния нумеруются, причем нулевым состоянием будет объект до внедрения, первым – после него. Переход между двумя состояниями характеризует искажение, вносимое в исходный объект. Если искажение порождает множество различных объектов, соответствующее состояние на диаграмме помечается знаком бесконечности, символизирующим отношение «один ко многим».

ров. Для выбора вводится дополнительный критерий – условие минимизации вносимого в исходный контейнер искажения. Мерой искажения можно считать расстояние между парой контейнеров p(kx,k2).

Таким образом, стеганографический алгоритм имеет вид:

Gout^inp^.P^kouO

FinP

P^mP,kout)^ min.

где ^inp ’ ^ – входной и выходной контейнеры; s — внедряемый символ кодового алфавита. Для растровых изображений в качестве расстояния между контейнерами (цветами) целесообразно использовать следующую формулу:

p(kx, £2) = ^ 2' (kx xor k\), /=o

Рис. 1. Диаграмма этапов трансформации цифрового объекта

где к – это i-ый бит. Функции извлечения и внедрения вместе с правилом построения последовательности контейнеров из цифрового объекта образуют стеганографический алгоритм.

Атакой на цифровой объект будем называть преобразование вида

A(k) = k*.

Для решения прикладных задач необходима стеганографическая система, способная извлекать скрытую информацию из всех ненулевых состояний цифрового объекта. В процессе редактирования цифровых фотографий, например, могут быть применены различные приемы: цветокоррекция, ретушь, аффинные преобразования, фильтры, сжатие с потерями и т.д. Функцией извлечения будем называть любое отображение множества контейнеров K во множество кодовых символов S:

Fi„P(k) = s.                  (1)

Для цифровых изображений контейнером может быть цвет отдельного пикселя в формате RGB, то есть тройка неотрицательных целых чисел в диапазоне [0 … 255]. Функция извлечения может иметь следующий вид:

FisMg^ = LSB        (2)

где LSB(b) – функция извлечения младшего бита.

Отдельный символ стеганограммы может быть передан с помощью различных контейне-

Стеганографический алгоритм устойчив к атаке на контейнер, если выполняется условие:

Fllv(k) = Fmp(A(k)).            (6)

Метод редукции множества контейнеров

Пусть дан стеганографический алгоритм, такой, что для некоторого K^K выполняется

  • (6) . Тогда, выбирая для внедрения контейнер из

подмножества К , получается устойчивый к ата- ке стеганографический алгоритм:

G.JKp^pVk,,,,,;

F^k»,,,^8'.                (7)

Р^р^ОШ^Ш^

где кп,реК,к„,еГ.

Метод оценки искажения

Пусть дан стеганографический алгоритм над двоичным алфавитом, такой, что для некоторого I выполняется условие:

p(M(k^)            (8)

где PlMi) – расстояние между парой контейнеров, такое, что (К,р) образует метрическое пространство. Введем функции извлечения и внедрения в следующем виде:

Осталось показать, что, применяя функцию извлечения (9) к выходному контейнеру, мы получаем требуемый символ стеганограммы Ршр^ои,^8-

F*p(k) =

Р^ЬфЛр) 2/

mod 2,

^;(^J-/mod2 = (

Ж^Л)

2/

+ x xor (

^out^ki„p,s,р) kout <^>

P

mod 2) mod 2 =

P

+ 5 ХОГ

P

2/

pW^i

2/

mod 2 +/,

P^kout,k^

2/

P^kou„k0)

mod 2) xor s xor =

mod 2) = x.

где £q нер.

– произвольный фиксированный контей-

Покажем, что функции f;p^, с;илктр,5,р^

Для предложенной схемы построения стеганографического алгоритма оценка вносимого искажения имеет вид:

вместе с правилом построения последовательности контейнеров из цифрового объекта образуют устойчивый к атаке A стеганографический алго-

p(k ,k A <3!.

г \ vmp ? out /

ритм.

Доказательство. Так как (K,p) – метрическое пространство, то выполняется обратное неравенство треугольника:

Алгоритм может быть улучшен за счет небольшого изменения в функцию внедрения. Пусть такие, что:

Ж,2^'о) = 2/ X

P(k,np,M

\p(kout,k0VptALXk01

+ s xor

рЦЧфЛХ 21

mod 2

Введем обозначение:

P(kinp,k0)

+ s xor (

P(kinp,k0)

mod 2) . (12)

Тогда выходной контейнер выбирается следующим образом:

Подставляя (10) и (12) в (11), имеем:

kOut = kt\p(kt, kinp) -4- min,i = 1,2 .      (19)

21 xt< р(А(коШ),k0) <21 x(t +1) =>

Оценка искажения для данной схемы имеет вид:

PWom^k^

Последнее означает, что

pWoutVk^

то есть выполняется условие (6):

F *,№„„,) =

21 xt + /

mod 2 = t mod 2 =

P(kout,k0)

mod2 = ^;№„J).

Р^к{пр,коиа ~^ ■

Практическое применение

Рассмотрим представленные методы на практических примерах.

Построим устойчивый к преобразованию цветного изображения в градации серого стеганографический алгоритм. Градации серого – цветовой режим изображений, которые отображаются в оттенках серого цвета, размещенные в виде таблицы в качестве эталонов яркости цвета. Широко применяется в цветоведении и колори-стике, для оценки и измерений качества тонопе-редачи при фотографической съемке, сканирова-

нии, при копировальных и печатных процессах. В компьютерном представлении распространена серая шкала, которая использует на каждый пиксель изображения один байт информации. Таким образом, шкала передает 256 градаций серого цвета, или яркости. Для преобразования цветного изображения в режим градаций серого вычисляется яркость каждого пикселя. Яркость рассчитывается в виде взвешенной суммы красной, зеленой и голубой компонент исходного цвета. Согласно спецификации Rec. 709 (стандарт телевидения высокой четкости) формула имеет вид:

Y(r,g,b) = 0,2126 xr + + 0,7152 xg + 0,0722x6.

Диаграмма состояний изображения для данной задачи представлена на рис. 2.

C^x Внедрение^ z^x______Преобразование_____>62^)

ч_У в режим градаций серого \_v

Рис. 2. Трансформации цифрового изображения для задачи построения устойчивого к преобразованию в оттенки серого стеганографического алгоритма

Таким образом, задача сводится к построению стеганографического алгоритма, способного извлекать сообщение из цветного изображения и после его преобразования в градации серого.

Пусть в качестве функции извлечения используется метод наименьших бит (2). Оценим воздействие преобразования на младший бит изображения. Сравним по следовательно сти кодовых символов, полученные из оригинального изображения и преобразованного, и вычислим количе ство инвертированных битов. На серии из цифровых фотографий высокого разрешения (4912×3264 пикселей) было получено, что в результате приведения по формуле (21) исходного изображения в режим градаций серого изменяется ~48,9% битов. Последнее означает, что использование известных стеганографических алгоритмов, основанных на LSB методе, невозможно.

В то же время значительное число контейнеров сохраняет младший бит после преобразования. Это означает, что устойчивую стеганографическую систему можно построить с помощью метода редукции множества контейнеров (7).

Стеганографический алгоритм реализован на языке программирования Python 2.7 с использованием библиотеки PIL (версия 1.1.7):

def extract(img):

code = []

В = img else:

message = []

for i in range(len(code) / 7):

m =""

for b in range(7):

code = []

for m in message:

while (int(round(0.2126*r+\

к = (-1) ** (count % 2) * \ (count / 2)

r = max(0, min( r0+ \ int(0.2126*k+1e-5), 255)) g = max(0, min(g0+ \ int(0.7152*k+1e-5), 255))

b = max(0, min(b0+ \

2*int(0.0361*k+1e-5), 255))

count += 1

data[keys[key]] = (r, g, b)

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

Самым распространенным графическим на сегодняшний день форматом является JPEG. Сохранение в формат JPEG вносит искажение в исходное изображение ввиду дискретного преобразования Фурье и последующего сжатия. При этом сложность и нетривиальность алгоритма не позволяет математически построить модель вносимого искажения. Более того, одинаковые контейнеры могут быть искажены по-разному в зависимости от смежных с ними пикселей.

Рассмотрим этапы трансформаций цифрового изображения, которое, помимо преобразования в режим градаций серого, может быть сохранено в формат JPEG (см. рис. 3).

Внедрение

/у\______Преобразование_____>/2^_____Сохранение в режим градаций серого 'w в формате JPEG

Сохранение в формате JPEG

/ух______Преобразование_____>/'5'^)_____Сохранение >(^ в режим градаций серого          в формате JPEG    —'

Рис.3. Трансформации цифрового изображения для задачи построения устойчивого к преобразованию в оттенки серого стеганографического алгоритма и

JPEG-компрессии

Для данной диаграммы существует шесть возможных модификаций изображения со скрытой информацией. Кроме того, формат JPEG позволяет устанавливать качество сжатия. Будем полагать, что данный параметр не ниже 95%.

При сохранении в JPEG исходное растровое изображение из формата RGB преобразуется в формат YcbCr. Яркость пикселя (Y) сохраняется с наименьшими потерями. Последнее означает, что если ввести соответствующую метрику над множеством контейнером, то вносимое искажение будет удовлетворять неравенству (2) для некоторого значения l. В качестве метрики предложена следующая формула:

p(k1,k2) = \y(r1,gl,bl)-Y(r2,g2,b2)\.

Так как по изложенным выше причинам оценить вносимое искажение теоретически затруднительно, была проведена серия расчетов, при которых попиксельно сравнивалось расхождение яркости растрового изображения в формате BMP и сжатого в формат JPEG с качеством 95%.

Средняя величина разброса, равно как и максимальное значение, варьируется для разных исходных изображений, но в основном не превос- ходит четырех единиц, то есть р(к„к2)<4. Это означает, что устойчивую стеганографическую систему можно построить с помощью метода оценки искажения (9)-(10).

Стеганографический алгоритм реализован на языке программирования Python 2.7, библиотека PIL (версии 1.1.7). Код представлен в листинге 2. Последовательность контейнеров, как и в первом алгоритме, перемешивается псевдослучайным образом.

ALPHA = 2*1

def extract(img):

code = []

В = img else:

for i in range(len(code) / 7): m = "" for b in range(7):

message = map((lambda s: int(s, 2)),\ message)

return message def gray(r,g,b):

return int(round(0.2126 * r + \ 0.7152 * g + 0.0722 * b + 1e-5))

def embed(img, text):

for m in message:

for key, c in enumerate(code):

r, g, b = data[keys[key]] gr = gray(r,g,b) div = gr / ALPHA if (div % 2 != c):

div += 1

if div >= (255/ALPHA):

div -= 2

new_g = div * ALPHA + ALPHA / 2 rO, gO, bO = r, g, b count = 0

while gray(r,g,b) != new_g:

к = (-1) ** (count % 2) *\ (count / 2)

r = max(0, min(rO+\ int(0.2126*k+1e-5), 255))

g = max(0, min(gO+\ int(0.7152*k+1e-5), 255)) “ b = max(0, min(bO+\

2*int(0.0361*k+1e-5), 255))

Заключение

В данной статье представлен способ отображения этапов трансформации цифрового объекта с помощью диаграмм. Сформулированы определения для стеганографической системы, меры искажения, функций извлечения и внедрения. Рассмотрены два метода построения устойчивых стеганографических алгоритмов – метод редук- ции множества контейнеров и метод оценки искажения. Предложенные в статье методы построения стеганографических систем опробованы на практике. Разработаны две стеганографические системы, устойчивые к преобразованию цветного изображения в режим градаций серого. Для второй системы добавлена устойчивость к JPEG-компрессии.

Список литературы Устойчивые к атакам на контейнер стеганографические алгоритмы

  • Gustavus J. Simmons. The Prisoner’s Problem and the Subliminal Channel, Advances in Cryptology: Proceedings of Workshop on Communications Security (Crypto'83, David Chaum, ed.). Plenum Press. 1984. -P. 51-67.
  • Конахович Г.Ф., Пузыренко А.Ю. Компьютерная стеганография. Теория и практика. К.: МК-Пресс, 2006. -288 с.
Статья научная