Steganography algorithms robust to active attacs


Cite item

Full Text

Abstract

The aim of this work is to develop a steganographic algorithm, which is able to organize covert channel data in terms of a targeted attack on a container. Robust against an active attack on a steganographic algorithms is used to solve a number of applied problems. For example, the task of adding a new functionality to a fixed format. It is proposed to use the state diagram to describe the possible transformations of a digital object as a result of the attacks. The transition between the two states is characterized by the distortion introduced in the original object, and if the distortion produces a number of different objects, the corresponding state in the diagram is marked with infinity symbolizes sign which the attitude of "one-to-many". Thus, the problem of constructing robust against an active attack steganography is reduced to obtaining an algorithm that is able to extract hidden information from all the states in the diagram. There are two theoretical methods of construction robust against an active attack steganography: method of reducing a plurality of containers and method of assessing distortion. The first method is based on the assumption that among a plurality of containers. There can be such containers that the attack does not destroy embedded information. The second method allows you to build a robust embedding algorithm if the distortion introduced by the attack is limited by modulo in a metric space of containers. This paper gives a practical application of the proposed methods for the construction of steganography system that is robust against conversion of color images to grayscale. The program implementation in the programming language Python is given.

Full Text

Введение Стеганография - наука о скрытой передаче данных путем сохранения в тайне самого факта передачи данных. Современная стеганография имеет дело с цифровыми объектами, в основном изображениями, аудио и видео данными. Основным критерием стеганографических систем является устойчивость к обнаружению. Изначально рассматривалась устойчивость к визуальному обнаружению, однако по мере развития методов стеганографии появился особый раздел стеганографии: стегоанализ, наука о выявлении факта передачи скрытой информации. В настоящее время рассматривается устойчивость стеганографических алгоритмов к статистическим тестам, методам классификации и т.д. Стеганография позволяет решать ряд прикладных задач, не связанных с «задачей заключенных» [1]. Чаще всего сокрытие дополнительной информации позволяет расширить функционал формата данных. Для решения прикладных задач критерий устойчивости к обнаружению не является приоритетным, так как наличие внедренных в цифровой объект данных не скрывается. Таким образом, одним из главных требований к прикладной стеганосистеме - это обеспечение устойчивости к случайным или умышленным атакам [2]. Постановка задачи Этапы трансформации цифрового объекта могут быть представлены в виде диаграммы (см. рис. 1). Состояния нумеруются, причем нулевым состоянием будет объект до внедрения, первым - после него. Переход между двумя состояниями характеризует искажение, вносимое в исходный объект. Если искажение порождает множество различных объектов, соответствующее состояние на диаграмме помечается знаком бесконечности, символизирующим отношение «один ко многим». Рис. 1. Диаграмма этапов трансформации цифрового объекта Для решения прикладных задач необходима стеганографическая система, способная извлекать скрытую информацию из всех ненулевых состояний цифрового объекта. В процессе редактирования цифровых фотографий, например, могут быть применены различные приемы: цветокоррекция, ретушь, аффинные преобразования, фильтры, сжатие с потерями и т.д. Функцией извлечения будем называть любое отображение множества контейнеров K во множество кодовых символов S: . (1) Для цифровых изображений контейнером может быть цвет отдельного пикселя в формате RGB, то есть тройка неотрицательных целых чисел в диапазоне [0 … 255]. Функция извлечения может иметь следующий вид: , (2) где - функция извлечения младшего бита. Отдельный символ стеганограммы может быть передан с помощью различных контейнеров. Для выбора вводится дополнительный критерий - условие минимизации вносимого в исходный контейнер искажения. Мерой искажения можно считать расстояние между парой контейнеров . Таким образом, стеганографический алгоритм имеет вид: (3) где; - входной и выходной контейнеры; - внедряемый символ кодового алфавита. Для растровых изображений в качестве расстояния между контейнерами (цветами) целесообразно использовать следующую формулу: , (4) где - это i-ый бит. Функции извлечения и внедрения вместе с правилом построения последовательности контейнеров из цифрового объекта образуют стеганографический алгоритм. Атакой на цифровой объект будем называть преобразование вида . (5) Стеганографический алгоритм устойчив к атаке на контейнер, если выполняется условие: . (6) Метод редукции множества контейнеров Пусть дан стеганографический алгоритм, такой, что для некоторого выполняется (6). Тогда выбирая для внедрения контейнер из подмножества, получается устойчивый к атаке стеганографический алгоритм: (7) где Метод оценки искажения Пусть дан стеганографический алгоритм над двоичным алфавитом, такой, что для некоторого выполняется условие: , (8) где - расстояние между парой контейнеров, такое, что образует метрическое пространство. Введем функции извлечения и внедрения в следующем виде: , (9) (10) где - произвольный фиксированный контейнер. Покажем, что функции , вместе с правилом построения последовательности контейнеров из цифрового объекта образуют устойчивый к атаке стеганографический алгоритм. Доказательство. Так как - метрическое пространство, то выполняется обратное неравенство треугольника: (11) Введем обозначение: . (12) Подставляя (10) и (12) в (11), имеем: . (13) Последнее означает, что , (14) то есть выполняется условие (6): =. (15) Осталось показать, что, применяя функцию извлечения (9) к выходному контейнеру, мы получаем требуемый символ стеганограммы : (16) Для предложенной схемы построения стеганографического алгоритма оценка вносимого искажения имеет вид: . (17) Алгоритм может быть улучшен за счет небольшого изменения в функцию внедрения. Пусть такие, что: (18) Тогда выходной контейнер выбирается следующим образом: . (19) Оценка искажения для данной схемы имеет вид: . (20) Практическое применение Рассмотрим представленные методы на практических примерах. Построим устойчивый к преобразованию цветного изображения в градации серого стеганографический алгоритм. Градации серого - цветовой режим изображений, которые отображаются в оттенках серого цвета, размещенные в виде таблицы в качестве эталонов яркости цвета. Широко применяется в цветоведении и колористике, для оценки и измерений качества тонопередачи при фотографической съемке, сканировании, при копировальных и печатных процессах. В компьютерном представлении распространена серая шкала, которая использует на каждый пиксель изображения один байт информации. Таким образом, шкала передает 256 градаций серого цвета, или яркости. Для преобразования цветного изображения в режим градаций серого вычисляется яркость каждого пикселя. Яркость рассчитывается в виде взвешенной суммы красной, зеленой и голубой компонент исходного цвета. Согласно спецификации Rec. 709 (стандарт телевидения высокой четкости) формула имеет вид: (21) Диаграмма состояний изображения для данной задачи представлена на рис. 2. Рис. 2. Трансформации цифрового изображения для задачи построения устойчивого к преобразованию в оттенки серого стеганографического алгоритма Таким образом, задача сводится к построению стеганографического алгоритма, способный извлекать сообщение из цветного изображения и после его преобразования в градации серого. Пусть в качестве функции извлечения используется метод наименьших бит (2). Оценим воздействие преобразования на младший бит изображения. Сравним последовательности кодовых символов, полученные из оригинального изображения и преобразованного, и вычислим количество инвертированных битов. На серии из цифровых фотографии высокого разрешения (4912×3264 пикселей) было получено, что в результате приведения по формуле (21) исходного изображения в режим градаций серого изменяется ~48,9% битов. Последнее означает, что использование известных стеганографических алгоритмов, основанных на LSB методе, невозможно. В то же время, значительное число контейнеров сохраняет младший бит после преобразования. Это означает, что устойчивую стеганографическую систему можно построить с помощью метода редукции множества контейнеров (7). Стеганографический алгоритм реализован на языке программирования Python 2.7, с использованием библиотеки PIL (версия 1.1.7): def extract(img): code = [] if img.mode == "L": B = img else: R, G, B = img.split() rnd.seed(seed) data = B.getdata() keys = range(len(data)) rnd.shuffle(keys) for k in keys: code.append(data[k] & 0b0000001) message = [] for i in range(len(code) / 7): m = "" for b in range(7): m += str(code[b+7*i]) message.append(m) message = map((lambda s: int(s, 2)), \ message) message = message[:message.index(0)] message = "".join(map(chr, message)) return message def embed(img, text): message = map(ord, list(text)) message.append(0) code = [] for m in message: for c in map(int, \ list("{0:07b}".format(m))): code.append(c) data = list(img.getdata()) rnd.seed(seed) keys = range(len(data)) rnd.shuffle(keys) for key, c in enumerate(code): r, g, b = data[keys[key]] b = (b & 0b11111110) + c r0, g0, b0 = r, g, b count = 0 while (int(round(0.2126*r+\ 0.7152*g+0.0722*b+ \ 1e-5)) & 1) != c: k = (-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) out = Image.new(img.mode, img.size) out.putdata(data) return out Последовательность контейнеров в реализации стеганографического алгоритма перемешивается псевдослучайным образом на основании ключа, что позволяет распределить кодовую последовательность по всему изображению. Алгоритм внедряет текстовое сообщение в кодировке ASCII, урезанной до 7 бит. Самым распространенным графическим на сегодняшний день форматом является JPEG. Сохранение в формат JPEG вносит искажение в исходное изображение ввиду дискретного преобразования Фурье и последующего сжатия. При этом сложность и нетривиальность алгоритма не позволяет математически построить модель вносимого искажения. Более того, одинаковые контейнеры могут быть искажены по-разному в зависимости от смежных с ними пикселей. Рассмотрим этапы трансформаций цифрового изображения, которое, помимо преобразования в режим градаций серого, может быть сохранено в формат JPEG (см. рис. 3). Рис.3. Трансформации цифрового изображения для задачи построения устойчивого к преобразованию в оттенки серого стеганографического алгоритма и JPEG-компрессии Для данной диаграммы существует шесть возможных модификаций изображения со скрытой информацией. Кроме того, формат JPEG позволяет устанавливать качество сжатия. Будем полагать, что данный параметр не ниже 95%. При сохранении в JPEG исходное растровое изображение из формата RGB преобразуется в формат YcbCr. Яркость пикселя (Y) сохраняется с наименьшими потерями. Последнее означает, что если ввести соответствующую метрику над множеством контейнером, то вносимое искажение будет удовлетворять неравенству (2) для некоторого значения l. В качестве метрики предложена следующая формула: . Так как по изложенным выше причинам оценить вносимое искажение теоретически затруднительно, была проведена серия расчетов, при которых попиксельно сравнивалось расхождение яркости растрового изображения в формате BMP и сжатого в формат JPEG с качеством 95%. Средняя величина разброса, равно как и максимальное значение, варьируется для разных исходных изображений, но в основном не превосходит четырех единиц, то есть. Это означает, что устойчивую стеганографическую систему можно построить с помощью метода оценки искажения (9)-(10). Стеганографический алгоритм реализован на языке программирования Python 2.7, библиотеке PIL (версии 1.1.7). Код представлен в листинге 2. Последовательность контейнеров, как и в первом алгоритме, перемешивается псевдослучайным образом. ALPHA = 2 * l def extract(img): code = [] if img.mode == "L": B = img else: B = img.convert("L", (0.2126, \ 0.7152,0.0722,0)) rnd.seed(seed) data = B.getdata() keys = range(len(data)) rnd.shuffle(keys) for k in keys: code.append((data[k] / \ ALPHA) % 2) message = [] for i in range(len(code) / 7): m = "" for b in range(7): m += str(code[b+7*i]) message.append(m) message = map((lambda s: int(s, 2)),\ message) message = message[:message.index(0)] message = "".join(map(chr, 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): message = map(ord, list(text)) message.append(0) code = [] for m in message: for c in map(int, \ list("{0:07b}".format(m))): code.append(c) data = list(img.getdata()) rnd.seed(seed) keys = range(len(data)) rnd.shuffle(keys) 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 r0, g0, b0 = r, g, b count = 0 while gray(r,g,b) != new_g: k = (-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) out = Image.new(img.mode, img.size) out.putdata(data) return out Заключение В данной статье представлен способ отображения этапов трансформации цифрового объекта с помощью диаграмм. Сформулированы определения для стеганографической системы, меры искажения, функций извлечения и внедрения. Рассмотрены два метода построения устойчивых стеганографических алгоритмов - метод редукции множества контейнеров и метод оценки искажения. Предложенные в статье методы построения стеганографических систем опробованы на практике. Разработаны две стеганографические системы, устойчивые к преобразованию цветного изображения в режим градаций серого. Для второй системы добавлена устойчивость к JPEG-компрессии.
×

About the authors

Aleksei Arkadievich Smagin

Ulyanovsk State University

Email: smaginaa1@mail.ru

Marat Faritovich Valishin

State Scientific Center-Research Institute of Atomic Reactors

Email: valmar.ktn@gmail.com

References

  1. 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.
  2. Конахович Г.Ф., Пузыренко А.Ю. Компьютерная стеганография. Теория и практика. К.: МК-Пресс, 2006. - 288 с.

Supplementary files

Supplementary Files
Action
1. JATS XML

Copyright (c) 2015 Smagin A.A., Valishin M.F.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

This website uses cookies

You consent to our cookies if you continue to use our website.

About Cookies