{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Стеганография. Методы сокрытия сообщения в контейнере изображения

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

Криптография – это совокупность методов для шифрования передаваемого сообщения. Однако, существует метод скрытия самого факта наличия, скрытого в отправляемом сообщении. Этим занимается стеганография.

Существует множество секретных средств связи, которые можно отнести к методам стенографии, от достаточно древних (невидимые чернила, особое расположение знаков в письме, узелки на нитках, надписи на боковой стороне колоды карт или внутри варёного яйца, тайные каналы передачи) до современных, используемых в, так называемой, компьютерной стеганографии (метод наименьшее значащего бита, метод Куттера-Джордана-Боссена, алгоритм Брайндокса или Коха и так далее). В этой статье мы рассмотрим метод наименьшее значащего бита или Least Significant Bit method (LSB).

Для понимания происходящего, нам понадобится ввести некоторые определения.

Контейнер в стеганографии – это не секретные данные, используемые для сокрытия сообщения. Например, изображения, аудиофайлы, видеофайлы, текстовые документы и прочие мультимедиа файлы.

Сообщение – это секретная информация, скрываемая внутри контейнера.

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

Пустой контейнер – контейнер, не содержащий записанной в него информации. Соответственно, стего контейнер (или заполненный контейнер) – это контейнер, внутри которого содержится сообщение.

Стегосистема – это совокупность средств и методов, осуществляющих внедрение сообщения внутрь контейнера, а также извлечение этого сообщения из контейнера.

Данный алгоритм заменяет наименее значимый бит в нескольких байтах файла-носителя, чтобы скрыть последовательность байтов, содержащих скрытые данные. Для человека подобные изменения визуально неотличимы, что позволяет передавать скрытые сообщения в безобидном, на первый взгляд, изображении.

Теперь, когда у нас есть базовое понимание принципов организации стегосистемы и работы алгоритма LSB, рассмотрим один из способов распознавания факта передачи информации в изображении. Основным инструментом будет Python, библиотеки numpy, matplotlib, pillow и openCV.

Для начала, импортируем необходимые библиотеки.

``` import numpy as np import matplotlib.image as img import matplotlib.pyplot as plt from PIL import Image import cv2 ```

Прочитаем тестовое изображение, скопируем его и сформируем изображение той же размерности, что исходное.

``` image_name = "test1" image = img.imread("images/" + image_name + ".jpg") image_check = np.copy(image) image[0, 0] ```

Далее приступим к написанию основной распознающей функции.

``` def check_lsb_channel(input_im, channel): output_im = np.copy(input_im) for x in range(0, input_im.shape[0]): for y in range(0, input_im.shape[1]): r = input_im[x,y][0] g = input_im[x,y][1] b = input_im[x,y][2] rgb = (r, g, b) binary = '{0:b}'.format(rgb[channel]) if(list(str(binary))[-1] == '1'): output_im[x,y] = (0, 0, 0) return output_im ```

Исходный код, написанный на языке python можно найти в открытом доступе [на GitHub](https://www.github.com/ekertn7/stego «Checking a stego container in an image»).

Происходит побитовая проверка каждого пикселя изображения в разделенных каналах (R, G, B). Проверка выполняется по наименьшему значащему биту. В случае, если он равен единице, осуществляется закраска пикселя изображения черным цветом. Таким образом, на каждом канале изображения формируется шум, в случае наличия скрытого сообщения в контейнере изображения, зашифрованные участки будут визуально выделяться в одном или нескольких каналах. На изображении появятся неравномерные области наложения шума.

Наглядно работа алгоритма видна на представленных примерах изображений — в первом случае изображение не содержит стего контейнер и виден лишь наложенный шум, во втором же случае, проявляются отличительные признаки стего контейнера – неравномерные области наложения шума в каждом из трех каналов.

Первый случай, стего контейнер отсутствует:

Второй случай, стего контейнер присутствует, видны неравномерные области наложения шума:

Данный метод не является универсальным, однако он с высокой эффективностью позволяет обнаруживать LSB стеганографию в изображениях, что может быть полезно для быстрой проверки на наличие заполненного контейнера в передаваемых файлах. Знание и применение данного метода проверки может помочь при улучшении уровня кибербезопасности и позволит предотвратить возможные случаи утечки данных.

0
Комментарии
-3 комментариев
Раскрывать всегда