Авторы: Егоров А.А., Чернышова А.В.
Источник: Информатика и кибернетика – 2016 – Донецк, ДонНТУ, Том 1, с. 65-71.
Егоров А.А., Чернышова А.В. Программная система встраивания информации в изображения с использованием стеганографических и криптографических алгоритмов. В статье описаны основные структуры и алгоритмы разработанной программной системы защиты информации с использованием стеганографических и криптографических алгоритмов. Приведен авторский алгоритм внедрения и извлечения данных при работе с изображением. Проанализированы характеристики популярных существующих программных средств.
Цель работы: исследование стеганографических и криптографических алгоритмов защиты информации, последующее проектирование и разработка программной системы встраивания информации в изображения с использованием стеганографических и криптографических алгоритмов.
Актуальность работы: защита авторского права в настоящий момент играет большую роль при рассмотрении вопросов информационной безопасности. Механизм цифровых водяных знаков популярен как для защиты различных изображений (фото, логотипы), так и для защиты видео-файлов и аудио-файлов. Предлагаемая программная система может использоваться как средство для защиты авторского права пользователя при работе с файлами в формате .bmp и .png. Предложенный программный продукт можно адаптировать для защиты авторского права в видео-файлах после создания дополнительного модуля работы с форматом .avi [1].
При использовании стеганографических алгоритмов передаваемая информация скрывается в файле. Данные, внутри которых размещаются скрытые сообщения, называются стегоконтейнером, а сами скрытые сообщения – стегосообщениями. Канал передачи стегоконтейнера называется стеганографическим каналом или стегоканалом. К стеганографии относятся множества различных методов: условные расположения знаков, микрофотоснимки, средства связи на плавающих частотах и тайные каналы. Стеганография является отличным дополнением, но никак не заменой криптографии [2].
Использование авторского алгоритма вместе с существующими криптографическими алгоритмами шифрования позволит более надежно защитить встраиваемую в графические изображения информацию и дальнейшую ее передачу по каналам связи.
На сегодняшний день существует огромное количество открыто распространяемых программных продуктов, использующих стеганографическую технику. Наиболее популярны инструменты размещаются в Github-репозиториях.
В рамках проекта DarkJPEG разработан стеганографический веб-сервис нового поколения, позволяющий скрывать конфиденциальную информацию в виде незаметного шума в JPEG-изображениях, при этом выделить данную информацию можно только зная заданный при кодировании секретный ключ-пароль. Сервис использует стойкие методы стеганографии для сокрытия самого факта сокрытия информации вместе со стойкими методами криптографии для защиты данных, передаваемых по открытым каналам [3].
Основные особенности:
OpenStego – это стеганографическое приложение, которое предоставляет две возможности:
Данная программа предоставляет возможность надежного встраивания водяных знаков при незначительном изменении размера или кадрирования изображения [4]. Отличительной особенностью OpenStego является то, что можно расширить ее возможности с помощью своих плагинов, написанных на Java.
LSB-Steganography – стеганографическая программа для скрытия данных в изображениях, реализована в виде скрипта на языке Python, использующая методы наименьшего значащего бита. Модуль LSBSteg основан на OpenCV (библиотека для работы с изображениями). Он использует незначащий бит каждого пикселя и каждого цвета изображения для скрытия данных [5]. Программа не выполняет никаких дополнительных криптографических преобразований для защиты внедренных данных.
При разработке системы прежде всего необходимо определить требования к программе. На рисунке 1 показана диаграмма использования разрабатываемой системы.
При проектировании авторской стегосистемы можно выделить три этапа:
На первом этапе некоторый цифровой объект должен быть представлен в виде потока байт. Если это файл, то его можно открыть в бинарном режиме. Если текстовое сообщение, то представить его в виде байтов, заданной кодировкой [7].
На втором этапе, на вход подаются байты, полученные на первом этапе. Прежде всего необходимо вычислить контрольную хеш-сумму [8] исходных байт. После этого сжать исходные байты, выбранным пользователем алгоритмом сжатия [9]. К сжатым байтам в начало добавляется заголовок (метаданные). После чего эти байты шифруются симметричным алгоритмом шифрования [10].
Последний этап состоит в том, что зашифрованные байты внедряются в изображение.
На рисунке 2 схематически показаны три этапа работы программной системы.
Для представления пользовательских данных в виде байтов был разработан интерфейс IData, реализующие этот интерфейс классы должны иметь следующие методы:
В данной системе уже есть два класса, реализующих данный интерфейс: File, Text.
Метаданные – это данные описывающие пользовательские данные. Для представления метаданных был создан интерфейс IHeader. Аналогично реализованы два класса: FileHeader и TextHeader.
UML-диаграмма классов представлена на рисунке 3. Размеры структур и описание полей FileHeader указаны в таблице 1.
Имя поля | Кол-во байт | Описание |
---|---|---|
typeFile | 1 | Тип внедряемого документа |
offsetData | 1 | Смещение начала данных (размер заголовка) |
sizeFile | 4 | Размер файла (кол-во байт) |
compressMode | 1 | Режим сжатия (GZip, Deflate) |
typeHashSum | 1 | Тип хеш-суммы (MD5, SHA-1, …) |
valueHashSum | n | Значение хеш-суммы (размер определяется по типу хеш-суммы) |
Класс TextHeader имеет такие же поля как FileHeader и дополнительное поле typeTextEncoding, представляющее кодировку внедряемого текста. Данное поле занимает 1 байт (т. е. в системе может быть до 256 различных кодировок текста). В данной системе текст можно представить такими кодировками: ASCII, UTF-8, WINDOWS-1251, CP866.
После представления данных в виде байтов, они проходят ряд преобразований (конвейер трансформации – pipeline transform). Сначала вычисляется контрольная хеш-сумма пользовательских данных, после этого байты сжимаются и шифруются. UML-диаграмма классов второго этапа показана на рисунке 4.
Последний этап системы – это внедрение зашифрованных байтов в изображение.
В данной системе создано два интерфейса IStegoTransformEmbed (для внедрения данных в изображение) и IStegoTransformExtract (для извлечения данных из изображения). Интерфейс IStegoTransformEmbed имеет два метода:
Метод EmbedFromBytes принимает следующие аргументы:
UML-диаграмма классов заключительного этапа показана на рисунке 5. На рисунке 6 показана схема внедрения данных в изображение. На рисунках 7-8 показаны алгоритмы внедрения/извлечения данных.
Имя поля | Кол-во байт | Описание |
---|---|---|
Offset | 4 | Первое смещение начала чтения (кол-во пикселей от начала) |
EmbededMode | 1 | Режим встраивания данных в изображение |
TypeEncryption | 1 | Тип симметричного алгоритма шифрования |
SizeEncryptionIV | 2 | Размер вектора инициализации |
SizeEncryptionKey | 2 | Размер ключа шифрования |
IV | Указано в SizeEncryptionIV | Вектор инициализации |
Key | Указано в SizeEncryptionKey | Ключ шифрования |
Из преимуществ стоит отметить, что данная система является расширяемой, например, можно добавить свой алгоритм сжатия или шифрования. Из недостатков – система не является быстродействующей.
В статье проведен анализ существующих стегосистем, представлена структура разработанной программной системы, диаграммы классов, некоторые алгоритмы работы программной системы.
Система предоставляет возможность выбирать доступные алгоритмы обработки, которые затем будут записаны в стегоключ. Программную систему можно использовать для различных пользователей. При этом для каждого пользователя настройки программы будут собственными (используемый алгоритм сжатия, используемая кодировка, симметричный алгоритм шифрования, однонаправленная хеш-функция), каждый будет работать со своим стегоключем.
1. Использование стеганографических и криптографических средств для защиты видеофайлов. А.В. Чернишова, Б.С. Маркин, Наукові праці ДонНТУ Серія Інформатика, кібернетика та обчислювальна техніка
, №1(19), 2014, стр.46-49
2. Стеганография – актуальность в XXI веке // SeoCyber [Электронный ресурс]. – Режим доступа: http://seocyber.net/steganografiya-aktualnost-v-xxi-veke
3. DarkJPEG: cтеганография для всех // Хабрахабр. [Электронный ресурс]. – Режим доступа: https://habrahabr.ru/post/187402/
4. OpenStego // Github [Электронный ресурс]. – Режим доступа: https://github.com/syvaidya/openstego
5. LSB-Steganography // Github [Электронный ресурс]. – Режим доступа: https://github.com/RobinDavid/LSB-Steganography
6. LSB стеганография // Хабрахабр. [Электронный ресурс]. – Режим доступа: https://habrahabr.ru/post/112976/
7. Краткая история кодировок от ASCII до UTF-8 // Popel-studio [Электронный ресурс]. – Режим доступа: http://popel-studio.com/blog/article/kratkaya-istoriya-kodirovok-ot-ascii-do-utf-8.html
8. Контрольные суммы MD5 и SHA. // Desktoplinux [Электронный ресурс]. – Режим доступа: http://desktoplinux.ru/unix_guide/proverka_khesh_summy_md5_v_linux_md5sum
9. Алгоритмы сжатия данных без потерь // Хабрахабр [Электронный ресурс]. – Режим доступа: https://habrahabr.ru/post/231177/
10. Обзор алгоритмов Шифрования // Rohos [Электронный ресурс]. – Режим доступа: http://www.rohos.com/help/crypto_algorithms.htm