среда, 25 июля 2012 г.

Замена наименее значащего бита или LSB

Суть метода замена наименее значащего бита ( Least Significant Bits - LSB)  заключается в сокрытии информации путем изменения последних битов изображения, кодирующих цвет на биты скрываемого сообщения. Разница между пустым и заполненным контейнерами должна быть не ощутима для органов восприятия человека.

Принцип сокрытия информации

Преобразование текста в байтовую последовательность
Как уже описано ранее, в формате BMP  изображение хранится как матрица значений оттенков цвета для каждой точки хранимого изображения. Если каждая из компонент пространства RGB  (их еще называют каналами цвета) хранится в одном байте, она может принимать значения от 0 до 255 включительно, что соответствует 24-х битной глубине цвета. Особенность зрения человека заключается в том, что оно слабо различает незначительные колебания цвета. Для 24-х битного цвета изменение в каждом из трех каналов одного наименее значимого бита (то есть крайнего правого) приводит к изменению менее чем на 1% интенсивности данной точки, что позволяет изменять их незаметно для глаза по своему усмотрению
Рассчитаем пропускную способность метода. Если отбросить в расчетах, обычно незначительную относительно размера изображения, служебную информацию в начале файла, то мы имеем возможность скрытно передать сообщение размером в 1/8 размера контейнера ("размазанную" по последним битам в каждом байте матрицы цветов пикселей) или же размером в 1/4 контейнера (соответственно при использовании 2 последних битов в байтах). 
Сокрытие информации в изображении


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

Приведенный ниже пример показывает, как сообщение может быть скрыто в первых восьми байтах, относящихся к трем пикселей в 24-битного изображения



Pixels: (00100111 11101001 11001000) 
        (00100111 11001000 11101001) 
        (11001000 00100111 11101001) 
A: 01000001 
Result: (00100110 11101001 11001000
        (00100110 11001000 11101000
        (11001000 00100111 11101001


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

Достоинства и недостатки метода

Методы LSB являются неустойчивыми ко всем видам атак и могут быть использованы только при отсутствии шума в канале передачи данных. Обнаружение LSB-кодированного стего осуществляется по аномальным характеристикам распределения значений диапазона младших битов отсчётов цифрового сигнала.

Программные реализации

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

Код на Perl, буржуйский привлек меня своей простотой
Код на Perl с Хабры, можно скачать собранный под Win файл
Код на С. Пост про вносимые им изменения в файл-контейнер можно прочитать здесь

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

  1. Анонимный25 июля 2012 г., 12:06

    Агонь!!! Пешиесчо!

    ОтветитьУдалить
  2. Спасибо! Замечательная статья! Весь метод описан весьма доступным языком.

    ОтветитьУдалить
  3. Ошибочка в предпоследнем бите?

    ОтветитьУдалить
    Ответы
    1. Тоже показалось что опечатка

      Удалить