Простые/Основные алгоритмы стеганографии и методы

Каковы основные и simpliest алгоритмы стеганографии и методы?

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

Как делает простую программу, которая скрывает данные к работе изображений? Что используются основные методы? Как программа распознает зашифрованное сообщение в изображении без исходного изображения?

12
задан Tom Pažourek 14 September 2016 в 11:44
поделиться

3 ответа

Каковы основные и самые простые алгоритмы и методы стеганографии? Я имею в виду стеганографию, примененную к изображениям.

Я уже давно написал для этого библиотеку, так что я могу описать процесс.

Обычно, если у вас есть формат файла, скажем, 24-битный формат BMP. Сначала вам нужен способ чтения и записи пикселей в этот формат файла. Либо вы можете использовать библиотеку, либо написать свою собственную, как только вы узнаете, что такое формат файла.

Изображение можно рассматривать как серию пикселей. Рассмотрим изображение размером 4x4 пикселя:

x x x x
х х х х
х х х х
x x x x

Пронумеруйте эти пиксели от 1 до 16:

01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16

Каждый пиксель, пронумерованный выше, имеет красный компонент, зеленый компонент и синий компонент. Каждый из этих компонентов имеет размер 1 байт, поэтому каждый компонент можно рассматривать как значение от 0 до 255 (24 бита = 8 бит для красного, 8 бит для зеленого, 8 бит для синего). Таким образом, каждое из приведенных выше чисел имеет 3 набора значений от 0 до 255.

Итак, в приведенном выше примере с изображением 4x4 у вас всего 16 пикселей * 3color_components = 48 байтов данных в вашем изображении. Обычно вы будете использовать только младший бит каждого цветового компонента для кодирования изображения.В этом случае у вас будет 48 бит данных, доступных для вас = 6 байтов, доступных вам для кодирования любого 6-байтового сообщения, которое вы хотите.

Чтобы упростить эту задачу, давайте просто посмотрим на кодирование простого 3-битного сообщения в один пиксель. Предположим, мы используем только 1 бит на компонент цвета. Предположим, мы хотим закодировать 3-битное сообщение: 111

Вот пример значения пикселя 1 выше, которое было перед кодированием данных:

R: 10101011
G: 11111010
B: 00011010

Вы заменяете только младший бит на новые данные:

R: 1010101 1
G: 1111101 1
B: 0001101 1

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

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

Обычно у вас будет намного больше, чем 3 бит данных, которые вы хотите закодировать. Чем больше данных вы хотите кодировать, вам придется либо иметь больше пикселей, либо использовать больше бит на пиксель для кодирования данных. Допустим, у вас есть 9 бит данных, которые вы хотите закодировать, ну, если вы используете только младший бит, вам нужно 3 пикселя для кодирования этой информации.Если вы хотите использовать только 1 пиксель, вы можете сделать это, используя 3 младших бита на компонент цвета для кодирования этих данных.

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

Техника будет различаться для разных форматов файлов, но концепция одна и та же. Стеганография также может относиться просто к сокрытию данных, например, даже в блоке расширения GIF. Обычно вы скрываете это, изменяя пиксели изображения или, в некоторых форматах файлов, таблицу поиска цвета.

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

Вам действительно нужно иметь представление о форматах файлов, чтобы выполнять такую ​​работу. Или, по крайней мере, использовать библиотеку, которая может управлять форматом файла и данными файла за вас. Если вас действительно интересует эта тема, я предлагаю начать с простого формата файла, такого как BMP, и изучить его. Вы всегда можете найти спецификации формата файлов на таких сайтах, как www.wotsit.org .

Как программа распознает зашифрованное сообщение в изображении без исходного изображения?

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

24
ответ дан 2 December 2019 в 05:03
поделиться

Существует буквально бесконечное количество способов скрыть информацию на изображениях.

Один простой способ - заметить, что изменение наименее значимого бита каждого значения RGB не оказывает заметного влияния, поэтому установка наименее значимого бита каждого байта в изображении дает нам (# - биты- in-image / 8) бит для хранения скрытых данных.

2
ответ дан 2 December 2019 в 05:03
поделиться

Изменение младших значащих битов пикселей растрового изображения.

Хороший обзор см. на этой странице

4
ответ дан 2 December 2019 в 05:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: