15 января 2011 г.

Встраивание в НЗБ (LSB embedding). Просто и доступно.

Внедрение в наименее значимый бит (НЗБ или LSB - Least Significant Bit) - один из наиболее используемых и исследуемых способов стеганографического сокрытия. Сущность этого метода отображена в самом его названии и заключается в замене НЗБ контейнера - файла в который будет встраиваться скрытая информация. В качестве контейнера могут выступать несжатые изображения и аудио. Прежде всего разберемся, что какие же биты наименее значимы и что это вообще такое. Для примера возьмем изображение формата BMP глубиной в 8*3=24 бита. В такой картинке цвет представлен сочетанием трех цветовых компонент: красной, зеленой и синей
(см.рис.).
Цветовые компоненты изображения

Каждая цветовая компонента кодируется 1байтом (8-ю битами. Бит - это наименьшая единица измерения в двоичной системе исчисления равняется "0" или "1"). Биты в байте имеют неодинаковый вес. Если самый правый бит принимает значение 0 или 1 то это и означает 0 и 1. Значение второго (справа налево) бита будут означать в десятичной системе - 0 или 2, третьего - 0 или 4,..., восьмого - 0 или 128. Наименьшее число, которое можно представить одним байтом будет, конечно 0 - 0000 0000, а наибольшее - 255 - 1111 1111.

Трехмерное представление цветовой компоненты

Для наглядности представим яркость зеленой компоненты в 3D формате. Яркие точки изображения представлены пиками, а темные - впадинами. Из рисунка выделим одну строку и посмотрим на нее как бы сбоку (для наглядности взята лишь часть строки).
Вес НЗБ в строке пикселей
8,7,6,5 (считая справа) - биты обозначены красным, оранжевым, желтым, и зеленым цветами. 4,3,2,1 - всеми оттенками голубого и синего.
Из гистограммы наглядно видно видно насколько малый вклад вносят темно-синие биты. Вот они то и называются наименее значимыми и именно в них обычно происходит встраивание информации.
Рассчитаем максимальный объем стеганографического встраивания в BMP-изображение разрешением 1024х768 пикселей и с глубиной цвета 24 бита. Будем считать, что встраивание происходит лишь в 1-й бит цветовых компонент. Умножаем высоту на ширину и получаем количество бит, которые можно спрятать в одной цветовой компоненте.

1024*768=786 432 Бит

Для трех цветовых компонент объем встраивания будет равен.

786 432*3 = 2 359 296 Бит = 294 912 Байт = 288 килоБайт.

Эта величина приблизительно равна 20% от емкости дискеты. (Если кто-то еще помнит как они выглядели :-)

2 комментария:

  1. Скажите пожалуйста, с помощью чего сделана картинка зеленой компоненты в 3D?

    ОтветитьУдалить
  2. С помощью команд Matlab для построения графиков.

    ОтветитьУдалить