LSB Применительно к графическим файлам

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 12:39, 1 июня 2017.
Open book.svg Авторство
А. Стрекаловский
Согласовано: 2011

Руководство пользователя

В данной работе представлен достаточно распространенный прием сокрытия информации в файлах, содержащих графическую, акустическую и другую информацию. Использование данного метода базируется на невосприимчивости человеческих органов чувств к малозначительным изменениям в передаваемой информации. В нашем случае контейнером для сокрытия служит файл графического изображения, содержащий в себе покомпонентные значения уровней интенсивности свечения каждой точки изображения (пиксела). В случае, когда на каждый пиксел выделяется по 24 бита, мы имеем по 8 бит на каждый цветовой компонент. Благодаря тому, что человеческий глаз имеет высокую погрешность при восприятии цветов, мы легко можем изменить младшее значение (Least Significant Bit, наименьший значащий бит) каждого компонента. При этом важно заметить, что при палитре цветов мощностью в 16 миллионов, мы столь же легко можем изменять значения младших битов всех трех компонентов и не заметить никакой разницы. Программа написана в среде Mathcad, version 14.0.0.163

Входной файл: имя файла указывается в начале программы в переменной filename

К программе прилагаются тестовые файлы:

  • fbi.bmp
  • fbi_small.bmp
  • otdel-k.bmp
  • tux.bmp

Промежуточный файл: «container.bmp» Содержит в себе значение младших битов, увеличенное до максимального значении. То есть, если младший бит равен 1, то в промежуточном файле в значение данного цветового компонента данного пиксела записывается 255, и записывается 0, если значение младшего бита равно 0.

Итоговый файл со стегоблоком: «with_stego.bmp». Содержит в себе сокрытую информацию, указанную в начале файла в переменной info.

Каждый файл просматривается любым приложением, поддерживающим графические файлы в формате bmp.

Описание алгоритма

Здесь имеется набор заранее подготовленных файлов:

images.bmp

not_contains.bmp

fbi_small.bmp

otdel-k.bmp

Oirs1.png

Скрываемый текст

5LSB IMAGE.PNG

Зафиксируем размеры изображения в пикселях

Oirs2.png

Уберем из нашей матрицы изображения все младшие биты

13LSB IMAGE.PNG
14LSB IMAGE.PNG

Матрица младших битов- будет использоваться для представления контейнера в виде изображения

15LSB IMAGE.PNG
16LSB IMAGE.PNG
17LSB IMAGE.PNG
18LSB IMAGE.PNG

Данный прием нужен для того, чтобы можно было обойти непечаемые символы и сразу передать маткаду вектор для его делинеаризации в символьный блок, до этого вместо данной константы было rows(coded) -1

Далее - фунции линеаризации нашего текста в бинарный вид и обратно:

  • text2bin- отвечает за сериализацию и подготовку к экспорту в файл
  • bin2text- отвечает за десериализацию извлекаемых данных
Oirs3.png

Проверка работоспособности написаннных функций

Oirs4.png

Число байт, используемых в качестве контейнера (размер стегоблока)

24LSB IMAGE.PNG

Проверим, что текст не длинее, чем стегоблок

25LSB IMAGE.PNG

Вставляем закодированный блок в матрицу изображения

26LSB IMAGE.PNG
27LSB IMAGE.PNG

Проверим результат

28LSB IMAGE.PNG

Ниже представлен декодированный стегоблок

30LSB IMAGE.PNG

Запишем изображение со стегоблоком

31LSB IMAGE.PNG

И еще раз проверим работоспособность нашей фунции извлечения стегоблока

32LSB IMAGE.PNG
33LSB IMAGE.PNG

Покажем стегоблок в качестве картинки

34LSB IMAGE.PNG

Изменим имена переменных для подписей к изображениям

35LSB IMAGE.PNG
36LSB IMAGE.PNG
37LSB IMAGE.PNG
38LSB IMAGE.PNG
39LSB IMAGE.PNG

Попробуем получить фунций взаимной корелляции матриц изображения оригинала и изображения с контейнером.

Мат ожидание от оригинала и от стегоконтейнера

40LSB IMAGE.PNG
41LSB IMAGE.PNG

Видим, что они все же не совпадают

42LSB IMAGE.PNG

Нормализируем наши значения для дальнейшей работы с ними

43LSB IMAGE.PNG
44LSB IMAGE.PNG

Функция взаимной корреляции

 45LSB IMAGE.PNG
46LSB IMAGE.PNG

Разность между оригиналом и контейнер-содержащим изображением явно показывает стегоблок:

47LSB IMAGE.PNG

В данном примере используются младшие биты всех 3 цветов изображения. Для усложнения задачи стегоанализа можно использовать отдельные компоненты цветов. Также возможно псевдослучайное распределение значимых битов в массиве изображения. Помимо этого можно еще предварительно закодировать все наше сообщение каким-либо криптоалгоритмом, что значительно увеличит стойкость к стегоанализу

Примеры изображений

Изображение со стего

Oirs6.png