Обзор некоторых стеганографических методик
В настоящее время существует достаточно много различных методик (и их вариантов) встраивания информации в контейнеры.
Текстовая стеганография
Стеганография, использующая текстовые контейнеры, называется текстовой.
Рассмотрим метод текстовой стеганографии, часто в переводах называемый интерпретацией слов. Вот пример его использования:
«Я тебя хочу, ты меня ненавидишь, ты меня хочешь, я тебя ненавижу. На самом деле ты не понимаешь, что я чувствую, и думаю, что я чувствую боль из-за того, что чувствуешь ты».
Как видно, представленный пример является текстом, напоминающим любовное послание. Если извлечь из текста все местоимения «я» и «ты», то получим последовательность:
«я ты ты я ты я я ты»
А, если считать «я» равным 1, а «ты» равным 0, то получится последовательность битов:
«1 0 0 1 0 1 1 0 0 1»
Это только часть передаваемого сообщения. Конечно, если письмо будет написано точно так же, как это сделано выше, то перехвативший его человек может подумать одну из двух вещей: либо отправитель сообщения душевно болен, либо в тексте скрывается другая информация. Поэтому текст должен быть гораздо больше и более сложен по контексту, чтобы не привлекать внимания.
Приведем пример другого метода:
«КОМПАНИЯ "ЛЮЦИФЕР" ИСПОЛЬЗУЕТ ЕДКИЙ НАТР, ТЯЖЕЛЫЕ ГРУЗИЛА, ОСТРОГУ ТРЕЗУБУЮ, ОБВЕТШАЛЫЙ ВАТНИК».
На первый взгляд информация представляет собой вполне безобидную фразу. Если же обратить внимание на первые буквы, то они складываются в предложение:
«Клиент готов».
Существуют и более экзотические методы. Например, пусть необходимо спрятать букву «А» в тексте «stenography». Для этого берем двоичное представление кода символа «А» – «01000001». Пускай для обозначения бита содержащего единицу используется символ нижнего регистра, а для нуля – верхнего. Так, после накладывания маски «01000001» на текст «stenography», результат будет «sTenogrAphy». Окончание «phy» не использовано, поскольку для сокрытия одного символа используется 8 байт (по биту на каждый символ), а длина слова 11 символов, вот и получилось, что последние 3 символа «лишние». Используя такую технологию можно спрятать в текст, длина которого N, сообщение из N/8 символов. Этот метод может быть использован, например, в чатах, в большинстве которых стиль сообщений не играет никакой роли, и подобное написание слов может быть воспринято за самовыражение.
Суть следующего метода состоит в раздвижке строки путем увеличения пробелов между словами, когда один пробел соответствует, например, биту 0, два пробела – биту 1. Однако прямое его применение хотя и возможно, но на практике порождает массу неудобств, в частности, оформление текста становится неряшливым, что позволяет легко заподозрить в нем наличие скрытой информации:
«Продам --автомобиль. –Дешево. --Звонить -вечером. --Спросить -Сергея.».
В этом примере дополнительные пробелы условно показаны знаком «-», а сам текст объявления прячет в себе 6 битов: 1 0 1 0 1 0.
Можно конечно программным путем решить подобную проблему. Например, перераспределять пробелы в пределах текущей длины строки, перенося по возможности длинные пробелы в ее конец. В результате строки выходного текста будут иметь аккуратный вид, затрудняющий выявление скрытой информации. Таким образом, одиночные пробелы и пробелы перед последним словом строки не будут нести информационной нагрузки. В остальных случаях же четное число пробелов кодирует 0, нечетное – 1. Скрываемую информацию при записи можно предварительно шифровать, а при чтении расшифровывать с использованием, например, операции исключающего «ИЛИ» и генератора случайных чисел.
Метод изменения порядка следования маркеров конца строки CR/LF использует индифферентность подавляющего числа средств отображения текстовой информации к порядку следования символов перевода строки (CR) и возврата каретки (LF), ограничивающих строку текста. Традиционный порядок следования CR/LF соответствует 0, а инвертированный LF/CR означает 1.
Метод хвостовых пробелов предполагает дописывание в конце коротких строк (менее 225 символов; значение 225 выбрано произвольно) от 0 до 15 пробелов, кодирующих значение полубайта.
Метод знаков одинакового начертания предполагает подмену (бит 1) или отказ от такой подмены (бит 0) русского символа латинским того же начертания.
Метод двоичных нулей является разновидностью метода знаков одинакового начертания и предполагает либо замену первого в группе из двух или более внутренних пробелов двоичным нулем (бит 1), либо отказ от нее (бит 0).
Цифровая стеганография