Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

x x x x
x x x x
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.

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

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

Ответ 2

Изменение наименее значимых бит растровых пикселей.

Для получения хорошего обзора см. эта страница

Ответ 3

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

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