BC/NW 2003г., №1(3)/ 13.4
Стеганографическое сокрытие информации в текстовом
файле при работе в вычислительных сетях
Колошеин Ю. А.
(Москва, МЭИ (ТУ), Российская Федерация)
Стеганография служит
для скрытия секретных сообщений в других сообщениях, причём скрывается даже
само существование секрета [1]. Как правило, отправитель пишет какое-нибудь
невинное сообщение (контейнер), а затем скрывает конфиденциальную
информацию на этом же листе бумаги [2]. Данное направление защиты информации
очень актуально в настоящее время, о чём свидетельствуют ресурсы, инвестируемые
в развитие стеганографии правительствами ведущих стран мира и террористическими
организациями.
В
процессе исследований были разработаны два метода, позволяющих встраивать
секретную информацию в обычные текстовые файлы. Первый метод основан на
незначительном изменении статистических свойств текста-контейнера, обладает
высоким качеством сокрытия информации [6], но довольно низким коэффициентом
встраивания; другой основан на использовании служебных символов; коэффициент
встраивания значительно выше, но низкое качество сокрытия встраиваемой
информации.
Методы,
упомянутые в данной статье, не позволяют восстановить информацию в случае её
случайной или намеренной порчи. В данной стегосистеме атака, в ходе которой злоумышленник
портит содержимое контейнера, считается невозможной. Надёжная доставка
сообщения по сети возложена на стандартные сетевые протоколы и приложения [3].
Описание
алгоритма. Требования к файлу-контейнеру
Рассмотрим
подробнее метод встраивания секретной информации с низким качеством сокрытия. В
основе метода лежит использование символов, отображаемых на экране точно так
же, как и пробелы. В ASCII-таблице
для Windows таких символов не встречается,
но эмпирическим путём было установлено, что такие символы есть. В ОС MS-DOS их
насчитывалось около пяти, в Windows остался только один – это служебный символ с кодом 0h, часто называемый ноль-терминатором [4]. Эксперимент
проводился с использованием текстового редактора «Блокнот» под управлением ОС Windows 98 SE English version.
Правило
встраивания битов скрываемой информации: ноль кодируется пробелом (служебный
символ с кодом 20h), а
единица – ноль-терминатором (служебный символ с кодом 0h) – правило №1.
Очевидно,
что, используя такое правило встраивания информации, можно скрыть информацию
практически в любом тексте, ведь для этого достаточно заменить соответствующие
пробелы ноль-терминаторами, но наиболее эффективно этот алгоритм работает в
случае, если контейнер удовлетворяет следующим требованиям [5]:
1. моноширинность, за
исключением строк, состоящих ровно из одного слова и последней строки абзаца,
если в ней не более двух слов;
2. переносы
фрагментов слов отсутствуют;
3. отсутствие
управляющих символов, за исключением пробелов (SP), символов перевода строки (CR) и
возврата каретки (LF).
Этот
метод максимально заполняет контейнер информацией, ведь каждый «пробел» несёт
один бит секретной информации, поэтому данный метод может быть использован для
нахождения максимального (проведения теоретической оценки качества контейнера)
количества скрываемой в контейнере информации для любого контейнера.
Полученные
с помощью этого метода результаты можно использовать и для количественной
оценки использования ёмкости контейнера другими стеганографическими методами,
позволяющими встраивать информацию в текст. Введём коэффициент К,
интерпретируемый как плотность заполнения контейнера с помощью
анализируемого метода от теоретического максимума (коэффициент может быть
выражен в процентах).
,
где QM –
количество информации, которое позволяет скрыть анализируемый метод в данном
контейнере, Q – количество информации,
которое можно скрыть с помощью эталонного метода. В качестве последнего
используется описанный алгоритм встраивания информации с низким качеством
сокрытия.
Возможность
использования ключа
Преобразуем
описанный алгоритм встраивания информации с низким качеством сокрытия в класс
однотипных алгоритмов. Правило №1 можно сформулировать и по-другому: единица
кодируется пробелом (служебный символ с кодом 20h), а ноль – ноль-терминатором (служебный символ
с кодом 0h) – правило №2.
Развивая
эту идею, используем сочетание правил 1 и 2 – в один абзац исходного текста
будем встраивать информацию, используя правило №1, а в другой – правило №2. Но
абзац – это в общем случае довольно большой фрагмент текста, а изложенный
только что способ слишком очевиден, поэтому вместо абзацев будем использовать
отдельные интервалы или строки. Правило встраивания информации можно менять
после каждой строки или интервала, а можно и через несколько строк или
интервалов, т.е. несколько строк объединяем в группу – текст в тексте, в
который встраиваем информацию по правилу 2 или 3. Размер группы можно
выбирать случайным образом, т.е. сформировать с помощью ГПСЧ; параметры
ГПСЧ – это фрагменты стеганографического ключа.
Наиболее
распространён такой ГПСЧ:
x = (ax + b) mod m
u = x / m
n = 1 + round[u(N – 1)],
где a и b –
маленькие числа (один или два байта каждое), m –
большое (четыре байта); x –
случайное число (СЧ) из целого ряда чисел, а и – СЧ из действительного
ряда чисел; n – размер группы.
Таким
образом, на основе правил 1 и 2 сформирован класс однотипных алгоритмов
встраивания информации с низким качеством сокрытия.
Оценка
качества файла-контейнера
Качеством
контейнера называется величина, равная отношению объёма
встраиваемой выбранным стеганографическим алгоритмом информации к размеру
оцениваемого контейнера, выраженная в процентах [5].
Количество
информации, которую можно скрыть в контейнере по изложенному алгоритму
встраивания определяется формулой (вытекает из метода встраивания):
C =
где N – число интервалов в i-ой
строке, а n – число непустых строк в
тексте.
Наиболее тяжёлыми для изложенного метода являются случаи, когда весь
текст состоит из строк, в которых не более одного слова. В такой текст нельзя
встроить информацию с помощью данного метода.
Сравнение
изложенных алгоритмов встраивания информации
Алгоритм
с высоким качеством сокрытия [5] позволяет встраивать в контейнер, по крайней
мере, в два раза меньше секретной информации, чем алгоритм с низким качеством
сокрытия, т.к. в первом длина интервала составляет минимум 2 пробела, а во
втором – один «пробел». На практике же разрыв более ощутим: алгоритм с высоким
качеством сокрытия позволяет встраивать в контейнер ~1,5%
секретной информации от размера контейнера, а алгоритм с низким качеством – до ~12%.
Приведённые цифры получены эмпирическим путём. Например, для тестового примера
получены такие данные: алгоритм с высоким качеством сокрытия позволяет встроить
61 байт секретной информации в контейнер, размер которого 4882 байта, а
алгоритм с низким качеством сокрытия – 565 байт!
Пользуясь
случаем, хочу выразить огромную признательность своему научному руководителю
Мельникову Юрию Николаевичу – профессору каф. ВМСС за методическую помощь.
ЛИТЕРАТУРА
1. Цифровая
стеганография / В.Г. Грибунин, И.Н. Оков, И.В. Туринцев – М.: СОЛОН-Пресс, 2002
– 272 с. (Серия «Аспекты защиты»)
2. Б.
Шнайер. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке
Си. – М.: Издательство ТРИУМФ, 2002 – 816с.: ил.
3. Компьютерные
сети. Принципы, технологии, протоколы / В.Г. Олифер, Н.А. Олифер. – СПб.:
Питер, 2001. – 672 с.: ил.
4. Фаронов
В.В. Delphi 5. Учебный курс. – М.: «Нолидж», 2000 – 608 с.
5. Колошеин
Ю. А. Разработка алгоритма стеганографического сокрытия защищаемой информации в
текстовом файле. Труды IX Международной научно-практической конференции
"Стратегия развития пищевой промышленности". Выпуск 8 (т. I, т. II),
Москва, 13-14 мая 2003 г.