Алгоритмы сокрытия данных в тексте

Лабораторная работа №1

 

Это направление стеганографии наиболее близко к некомпьютерной стеганографии. В качестве такого универсального примера можно указать, например, акростих, стихотворение, в котором некоторые (в норме — первые) буквы каждой строки составляют осмысленный текст (слово, словосочетание или предложение). Например:

Довольно именем известна я своим;

Равно клянётся плут и непорочный им,

Утехой в бедствиях всего бываю боле,

Жизнь сладостней при мне и в самой лучшей доле.

Блаженству чистых душ могу служить одна,

А меж злодеями — не быть я создана.

Юрий Нелединский-Мелецкий

 

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

Сокрытие данных в тексте это упражнение на поиск модификаций, которые не будут замечены читателями. Рассмотрим 4 основных метода сокрытия данных:

· «метод открытого пространства», который кодирует данные с помощью «белого пространства» (неиспользуемого пространства на печатаемой странице);

· синтаксический метод, который использует пунктуацию;

· семантический метод, который кодирует, используя сами слова.

 

1. «Метод открытого пространства»

Есть две причины, почему манипуляции с «белым пространством» в особенности дают полезные результаты. Во-первых, изменение числа завершающих пробелов имеет малую вероятность изменить значение фразы или предложения. Во-вторых, обычный читатель обычно не замечает небольшого изменения «белого пространства».

Опишем три метода использования «белого пространства» для кодирования данных: методы, использующие пробелы между предложениями, пробелы в конце строки и пространство между словами в выровненном тексте.

1.1. Первый метод скрывает двоичное сообщение в тексте, помещая 1 или 2 пробела после каждого завершающего символа, например точка в конце предложения, точка с запятой для программного кода и т.д. Один пробел кодируется как «0», а два пробела как «1». Этот метод обладает рядом неотъемлемых недостатков. Он неэффективен, требует большого объема текста для кодирования нескольких бит (приблизительно один бит данных на каждые 160 байт текста, при условии, что предложения занимают в среднем 2 80-ти символьные строки текста). Его возможности зависят от структуры текста. Многие обработчики текста автоматически устанавливают количество пробелов после завершающих символов один или два символа. И наконец, несоответствующее использование «белого пространства» не очевидно.

1.2. Второй метод использования «белого пространства» для сокрытия данных вставляет пробелы в конце строк. Данные кодируются в соответствии с предопределенным числом пробелов в конце каждой строки (рисунок 1).

Рисунок 1

Два пробела кодируют один бит для каждой строки, 4 – кодируют два, 8 – кодируют три и т.д., значительно увеличивая объем данных, который может быть скрыт по сравнению с предыдущим методом. На рисунке 1 текст был выборочно выровнен, а затем в конец строк были добавлены пробелы, чтобы скрыть больше данных. Были добавлены правила, чтобы обнаружить «белое пространство» в конце строк. Дополнительные преимущества этого метода то, что может быть использован любой текст, и что это будет не заметно для обычных читателей, т.к. это дополнительное «белое пространство» внешнее для текста. Также как в прошлом методе некоторые программы, например, “sendmail” могут непреднамеренно удалить дополнительные символы пробелов. Особая проблема этого метода, что скрытые данные не могут быть найдены в напечатанной версии текста.

1.3. Третий метод использования «белого пространства» для сокрытия данных в выровненном тексте. Данные кодируются регулированием того, где будет помещен дополнительный пробел. Один пробел между словами интерпретируется как «0», а два пробела как «1». В результате этот метод скрывает несколько бит на каждой строчке (рисунок 2)

Рисунок 2

Из-за ограничений на выравнивание, не всякое пространство между словами может быть использовано как данные. Чтобы определить какое пространство представляет скрытые данные, а какое является частью исходного текста, необходимо применить метод Манчестерского кодирования. Манчестерские кодовые группы по два бита интерпретируются следующим образом: «01» как «1» и «10» как «0». Битовые строки «00» и «11» игнорируются. Например, закодированное сообщение «1000101101» уменьшается до «001», тогда как «110011» является null-строкой.

 

Синтаксические методы

Хотя читатель может не заметить манипуляции с «белым пространством», обработчик текста может ненамеренно изменить количество пробелов, уничтожив скрытые данные. Живучесть в процессе обработки документа – одна из причин поиска других методов сокрытия данных в тексте.

Кроме того, синтаксические и семантические методы не влияют на «белое пространство», а значит, эти методы могут применяться параллельно.

Существует много обстоятельств, когда пунктуация неоднозначна или когда неверная пунктуация имеет незначительное влияние на значение текста. Например, фразы “bread, butter, and milk” и “bread, butter and milk” обе считаются примером верного использования запятых в списке. Можно использовать тот факт, что выбор формы случайный. Выбор между двумя формами может представлять двоичные данные, например, каждый раз, когда встречается структура из первой фразы (ставиться запятая перед “and”) подразумевается «1», а когда структура из второй фразы – подразумевается «0». Другие примеры включают регулированное использование сокращений и аббревиатур. При написании английский позволяет применять несколько вариантов синтаксического сокрытия данных. Подобные ситуации возникают не часто в обычных текстах. Ожидаемый объем данных для этих методов порядка нескольких бит на Кбайт текста.

Хотя многие пунктуационные правила неоднозначны или избыточны, противоречивое использование пунктуации заметно даже для обычных читателей. И наконец, существуют случаи когда изменение пунктуации значительно повлияет на понятность или даже значение текста. Этот метод должен использоваться с осторожностью.

Синтаксические методы включают изменение стиля и структуры текста без значительного изменения смысла или стиля. Например, предложение “Before the night is over, I will have nished” можно переформулировать как “I will have nished before the night is over”. Эти методы более понятны чем пунктуационные методы, но их применение ограничено.

 

Семантические методы

Данные методы включают изменение слов как таковых. Семантические методы схожи с синтаксическими. Вместо того чтобы использовать неоднозначность формы, эти методы определяю два одинаковых значения. Например, слово “big” – первое значение, его синоним “large” – второе. Имеет слово первое или второе значение не имеет влияние на то как часто оно будет использовано. А при декодировании первое значение будет интерпретировано как «1», а второе – как «0» (рисунок 3).

Рисунок 3

Такие приложения как WordNet может быть использованы для автоматической генерации таблиц синонимов. Когда таблица содержит больше синонимов (например, 4 синонима), больше данных может быть представлена (2 бита данных).

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