03.04.2006

Построение стеганографической системы на базе протокола IPv4

image

В данной статье рассматриваются возможности стеганографии в Internet Protocol версии 4 (далее IP) и в Internet Control Message Protocol (ICMP), как части IP.

Елисей О. Саватеев

Введение

На сегодняшний день существует два основных направления в решении задачи защиты информации от несанкционированного доступа: криптография и стеганография. Целью криптографии является скрытие содержимого сообщения за счет шифрования. Стеганография скрывает сам факт существования и передачи тайного сообщения.

В связи с развитием аппаратных средств вычислительной техники и огромным количеством каналов передачи информации появились новые стеганографические методы, в основе которых лежат особенности представления информации в файлах, вычислительных сетях и т. п.

В данной статье рассматриваются возможности стеганографии в Internet Protocol версии 4 (далее IP) и в Internet Control Message Protocol (ICMP), как части IP. Поиск этих возможностей производится путем анализа структуры пакетов и устройства соответствующих протоколов. На основе найденных возможностей описаны средства и сформулированы методы, направленные на формирование скрытого канала передачи информации.

1. Основная часть

Стеганографическая система или стего-система – совокупность средств и методов, которые используются для формирования скрытого канала передачи информации [1].

Рассмотрим обобщенную модель стеганографической системы (Рис. 1).

Рис. 1. Обобщенная модель стеганографической системы

Определим основные понятия:

· Сообщение – данные любого типа.

· Контейнер – любая информация, пригодная для сокрытия в ней сообщений.

· Стего-контейнер – контейнер, содержащий скрытое сообщение.

· Ключ (стего-ключ) – секретный ключ, необходимый для шифрования (расшифровки) сообщения с целью усиления защиты.

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

1.1. Общие методы, положения и требования

При построении стего-системы следует учитывать следующие положения:

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

2) Если противник каким-то образом узнает о существовании скрытого сообщения, то это не должно позволить ему извлечь подобные сообщения из других контейнеров до тех пор, пока ключ хранится в тайне (обеспечивается средствами криптографии).

Кроме того, стего-система должна отвечать определенным требованиям:

1)Свойства контейнера должны быть модифицированы таким образом, чтобы стего-контейнер беспрепятственно проходил по каналу связи, никоим образом не привлекая внимание потенциального противника.

2) Стего-система должна быть надежной. А именно: предполагать защиту от потери, дублирования и нарушения очередности получения стего-контейнеров, и осуществлять контроль целостности сообщения.

Чтобы учесть положения и выполнить требования, определенные выше, необходимо из исходного сообщения сформировать последовательность блоков данных, пригодных для встраивания в контейнер (далее M-блоков). Каждый такой блок должен быть зашифрован, и помимо фрагмента сообщения содержать информацию, достаточную для обеспечения надежности стего-системы. Также должен быть определен M-блок содержащий информацию о размере сообщения и М-блок являющийся подтверждением получения стего-контейнера.

Определим общую структуру M-блока и алгоритмы отправки и получения стего-контейнера. Остальные средства и методы будут определены при описании стего-системы, базирующейся на конкретном протоколе.

Общая структура M-блока

Смещение фрагмента указывает на то, где в исходном сообщении находится данный фрагмент. Фрагмент ключа содержит старшие k бита ключа.

Рис. 2. Общая структура M-блока

Последовательность полей может быть произвольной, а для строгого описания структуры M-блока необходимо лишь определить значения m, n и k.

В связи с тем, что M-блоки могут передаваться по каналу связи в произвольном порядке, рекомендуется использовать блочный шифр, работающий в режиме Electronic Codebook (ECB) [2]. Длина блока при этом, очевидно, должна совпадать с длиной M-блока.

Отправка

  1. Сформировать последовательность M-блоков.

  2. Встроить M-блок в контейнер.

  3. Отправить стего-контейнер адресату.

    1. В течение определенного времени ожидать от адресата подтверждения получения. Если подтверждение не получено, прервать процесс отправки, иначе перейти к шагу

    2. 5.
  4. Выполнять шаги 2-4 для каждого M-блока сформированной последовательности до тех пор, пока не достигнут конец этой последовательности.

Получение

  1. Определить, содержит ли полученный контейнер встроенное сообщение. Если содержит, перейти к шагу 2, иначе ожидать получения следующего контейнера.

  2. Извлечь фрагмент сообщения.

  3. Подтвердить получение стего-контейнера.

  4. Выполнять шаги 1-3 до тех пор, пока не будет установлен факт получения всего сообщения 1 .

Удалив шаг 4 из алгоритма отправки и шаг 3 из алгоритма получения, можно увеличить скорость передачи сообщения, снизив при этом надежность стего-системы.

1. 2. Протокол IP

Internet Protocol обеспечивает передачу блоков данных, называемых датаграммами, от отправителя к получателю. Протокол IP обеспечивает при необходимости также фрагментацию и сборку датаграмм для передачи данных через сети с малым размером пакетов.

Табл. 1. Структура заголовка IP-датаграммы

Version (4 бита) – версия протокола,в данном случае рассматриваетсяверсия 4.IHL (4 бита) – длина заголовка.Type of Service (8 бит) – тип сервиса,определяет с помощью неких

абстрактных параметров тип обслуживания.Total Length (16 бит) – общая длина датаграммы.Identification (16 бит) – идентификатор, устанавливается отправителем для сборкифрагментов какой-либо датаграммы.Flags (3 бита) – управляющие флаги.Fragment Offset (13 бит) – смещение фрагмента.Time to Live (8 бит) – максимальное время, в течение которого датаграмме позволенонаходиться в сети Internet.Protocol (8 бит) -это поле показывает, какой протокол следующего уровня используетданные из Internet датаграммы.Header Checksum (16 бит) – контрольная сумма заголовка.Source Address (32 бита) – адрес отправителя.Destination Address (32 бита) – адрес получателя.Options (переменной длины) – дополнительные опции.

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

Padding (переменной длины) – выравнивание, используется для того, чтобы убедиться, что заголовок заканчивается на 32-битной границе.

Наибольший интерес представляют поля Identification (ID) и Options. Рассмотрим назначение этих полей подробнее.

В соответствии со спецификацией протокола IP [3], ID содержит уникальный идентификатор пакета, который используется для сборки фрагментированных датаграмм. Значение этого поля не зависит от значений других полей заголовка и сохраняется при фрагментации.

Опции должны поддерживаться всеми Internet модулями (хостами и шлюзами). Не обязательно каждая конкретная датаграмма несет опции, но нести их все же может. Существует 8 различных опций, из которых лишь одна пригодна для передачи тайного сообщения (убедиться в этом можно обратившись к спецификации [3]). Это опция Internet Timestamp.

Length (8 бит) -количество байт в опции, которое учитывает байты типа, длины, указателя и oflw/flg. Pointer (8 бит) -количество байт от начала этой опции до конца временных штампов, плюс единица.

Overflow (oflw, 4 бита) -количество IP модулей, которые не могут произвести регистрацию временных штампов по причине отсутствия свободного места. Flag (flg, 4 бита) - флаг, определяет способ регистрации временных штампов. Timestamp (32 бита) -временной штамп в миллисекундах (относительно полуночи по Единому Времени). Если время в миллисекундах неопределимо или не может быть отсчитано относительно полуночи по Единому Времени, то может быть внесено любое другое время при условии, что самый старший бит в поле временного штампа будет установлен в единицу (что указывает на использование нестандартного значения и дает некоторую свободу в заполнении данного поля).

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

Структура M-блока

Общая структура M-блока определена на стр. 2, необходимо лишь задать значения переменных m, n и k:

·m = 24·n = 16·k = 24

Размер сообщения

Информацию о размере сообщения несет M-блок, в котором: ·поле «фрагмент сообщения» содержит количество М-блоков в сформированной последовательности (включая данный); ·поле «смещение фрагмента» содержит некоторую случайную последовательность бит; ·поле «фрагмент ключа» содержит последовательность бит, соответствующую строке “siz”.

Очевидно, что максимальный размер сообщения при этом равен 3(224 – 2) байт (примерно 48 Мб).

Формирование последовательности M-блоков

  1. Из исходного сообщения создать последовательность M-блоков, добавив к ней блок, содержащий информацию о размере сообщения.

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

Пример (упорядочивание последовательности)
Рассмотрим последовательность, составленную из десятичных чисел, соответствующих старшим 16 битам M-блоков.

Исходная последовательность: 3 1 2 1 3 3 4 5 1 4 2 5Упорядоченная последовательность: 1 2 3 4 5 1 2 3 4 5 1 3

Следует отметить, что такое упорядочивание приводит к тому, что M-блок, содержащий размер сообщения оказывается в произвольном месте последовательности.

Встраивание

Встраивание осуществляется в поле Identification заголовка IP-датаграммы и в опцию временного штампа Internet. При этом необходимо учитывать следующие условия:

1) Спецификация протокола IP [3] требует, чтобы идентификатор был уникальным в течение времени жизни (Time To Live) датаграммы. На практике это часто реализуется увеличением значения поля ID на единицу для каждой следующей датаграммы.

2) Несмотря на возможность использования нестандартного временного штампа, для каждой следующей датаграммы значение этого поля должно увеличиваться. Увеличение должно происходить, по крайней мере, для определенного числа идущих друг за другом датаграмм.

3) В соответствии со спецификацией, отправитель должен создавать опцию Internet Timestamp так, чтобы поля для временных штампов были достаточны для размещения всей ожидаемой информации. Размер опции не изменяется при добавлении временных штампов. Если поле с временными штампами уже заполнено, то датаграмма передается без вставки временного штампа, а счетчик переполнения увеличивается на единицу.

Рассмотрим процесс встраивания подробнее. Процесс извлечения после этого станет очевиден и не будет требовать дополнительного описания.

  1. Старшие 16 бит встраиваемого M-блока поместить в поле ID заголовка IP-датаграммы. Упорядочивание последовательности M-блоков обеспечивает частичное выполнение первого из условий, определенных выше. Частичное, поскольку упорядочивание лишь обеспечит увеличение идентификатора на значение большее или равное единице для определенного числа идущих друг за другом IP-датаграмм (число таких датаграмм либо постоянно, либо постепенно уменьшается) 2 .

  2. В заголовке IP-датаграммы создать опцию Internet Timestamp, содержащую два временных штампа, размещенных в следующих друг за другом 32-битных словах (поля опции заполняются строго в соответствии со спецификацией протокола [3]). Биты 8-31 (нумерация с нуля, старший бит -нулевой) каждого временного штампа содержат оставшиеся 48 бит встраиваемого М-блока, старший бит устанавливается в 1, а биты 1-7 обеспечивают выполнение второго из определенных выше условий 3 .

2 Чтобы условие, наложенное на изменение значения поля ID, выполнялось полностью, наряду со стего-контейнерами можно отправлять IP-датаграммы не содержащие тайного сообщения, но обеспечивающие увеличение идентификатора на единицу. 3 Т. е. для каждой следующей IP-датаграммы значение бит 1-7 временного штампа изменяется таким образом, чтобы полученный 32-битный временной штамп был больше временного штампа, установленного в

3. Создать корректную IP-датаграмму, несущую в поле Data любые данные, не вызывающие подозрение у потенциального противника.

Подтверждение получения

Подтверждением получения данного стего-контейнера является M-блок, в котором значения полей «Фрагмент сообщения» и «Фрагмент ключа» совпадают со значениями идентичных полей М-блока, извлеченного из этого стего-контейнера, а поле «Смещение фрагмента» больше на единицу.

Т. к. отправку подтверждений получения следует осуществлять с учетом условий, изложенных в пункте «Встраивание» (стр. 5), целесообразно подтверждать получение не одного стего-контейнера, а их определенного числа. Это число выбирается произвольным образом и, например, может совпадать с числом стего-контейнеров, в которых значение поля Identification возрастает. Обобщенные алгоритмы отправки и получения (стр. 3) при этом должны быть незначительно модифицированы.

1. 3. Протокол ICMP

Internet Control Message Protocol – протокол контрольных сообщений Internet, использует основные свойства IP, как если бы он являлся протоколом более высокого уровня [4]. Однако фактически ICMP является составной частью протокола Internet.

Сообщения ICMP протокола, как правило, оповещают об ошибках, возникающих при обработке датаграмм, и посылаются с помощью стандартного IP заголовка. Структура сообщения зависит от его типа. Наибольший интерес представляют ICMP сообщения типа 8 (эхо-запрос), поскольку они применяются в программе ping– одном из главных и полезных инструментов отладки сетей.

Табл. 3. Структура эхо-сообщения и сообщения в ответ на эхо

Type (8 бит) – тип: 8 для эхо-запроса и 0 для эхо-ответа.

Code (8 бит) – код (влияет на заполнение полей Identifier и

Sequence Number).

Checksum (16 бит) – контрольная сумма. Identifier (16 бит) - идентификатор для соотнесения эхо-сообщений и ответов на них. Sequence Number (16 бит) -номер очереди, служащий для соотнесения эхо-сообщений и ответов на них. Data (переменной длины) – поле дополнительной информации.

Пакет, посылаемый ping, состоит из IP-заголовка длинной 20 байт и, собственно, ICMP-сообщения длинной 8 + n байт (8 байт на заголовок и n байт дополнительной информации) [5]. Обычно в качестве значения n выбирается 56 (для UNIX) или 32 (для Windows). Так как часто поле дополнительной информации содержит конкретные данные, полезные при отладке ошибок, от них зависящих, представляется возможным использовать его для передачи тайного сообщения.

В соответствии со спецификацией протокола ICMP [4], на каждый эхо-запрос должен быть отправлен эхо-ответ. Причем если эхо-сообщение содержало дополнительные данные, то эти же данные должны содержаться в сообщении в ответ на эхо. Т. о. задача контроля целостности сообщения и подтверждения получения стего-контейнера уже решена на уровне протокола.

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

предыдущей датаграмме. Выполнение этого условия следует обеспечить для обоих временных штампов внутри одной датаграммы , при этом оба полученных значения не зависят друг от друга. Очевидно, что увеличение временного штампа можно осуществить минимум для 128 идущих друг за другом IP-датаграмм.

Структура M-блока

· m = 64

· n = k = 32

Общая длина M-блока при этом равна 128 битам. Такое значение выбрано с целью имитации работы оригинальной программы ping 4 , позволяющей заполнить поле дополнительной информации заданным шаблоном, максимальная длина которого равна 16 байтам.

Размер сообщения

·Поле «фрагмент сообщения» содержит количество М-блоков в сформированной последовательности (включая данный). ·Поле «смещение фрагмента» содержит некоторую случайную последовательность бит. ·Поле «фрагмент ключа» содержит последовательность бит, соответствующую строке “size”.

Формирование последовательности M-блоков

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

Встраивание

Встраивание осуществляется в поле дополнительной информации ICMP эхо-сообщения. Опишем этот процесс.

  1. Создать ICMP эхо-сообщение, которое содержит поле дополнительной информации определенной длины. Длина выбирается из интервала от 24 до 65507 байт 6 . Однако, следует учесть, что фрагментированный ICMP пакет откровенно демаскирует факт передачи тайного сообщения.

  2. В старшие 8 байт поля дополнительной информации поместить временной штамп. Оставшиеся байты заполнить данными, соответствующими встраиваемому M-блоку. При этом если длина поля дополнительной информации превышает минимальную, то эти данные заполняют его циклически. Т. о. имитируется работа оригинальной программы ping.

  3. Сформировать корректную IP-датаграмму, поместив в поле данных созданное эхо-сообщение.

Отправка

Чтобы не привлекать внимание потенциального противника, каждый стего-контейнер необходимо отправлять определенное количество раз с заданным временным интервалом, имитируя таким образом работу программы ping. Перед отправкой нового стего-

4 В данной работе рассматривается программа ping, входящая в состав UNIX-подобных операционных систем.5 Вообще говоря, M-блок, содержащий информацию о размере сообщения, может располагаться впроизвольном месте последовательности. В начало он помещается лишь для того, чтобы размер сообщения былизвестен до начала передачи тайной информации.6 Рассчитано как разность максимальной длины IP-датаграммы (65535 байт) и суммы минимальной длинызаголовка IP (20 байт) и заголовка ICMP (8 байт): 65535 – (20 + 8) = 65507.

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

2. Практическая часть

2. 1. Общие вопросы реализации

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

Формирование и отправка стего-контейнера (IP-датаграммы) может осуществляться через интерфейс «сырых» сокетов (raw sockets) [5], либо с использованием библиотеки, предоставляющей требуемые функции (например, libnet). Для получения стего-контейнера рекомендуется использовать платформенно-независимую библиотеку, позволяющую перехватывать пакеты на уровне ядра операционной системы. Такой библиотекой может быть libpcap [6].

2. 2. Стего-система на базе ICMP

В процессе написания данной статьи была разработана программа, реализующая стего-систему на базе ICMP. Результаты тестирования этой программы приведены в приложении.

Заключение

Краткая характеристика предложенных стего-систем

Табл.4. Краткая характеристика предложенных стего-систем

Протокол Встраивание Ограничения Достоинства Недостатки
IP В поле Identification и опцию Internet Timestamp заголовка IP-датаграммы. Шифр блочный (64 бита) в режиме ECB; Число маршрутизаторов, которые пройдет стего-контейнер, зависит от размера опции Internet Timestamp. Факт передачи сообщения хорошо скрыт. Можно использовать возможности, обнаруженные в протоколах более высокого уровня (в т. ч. ICMP). Сравнительно жесткие ограничения. 3 байта сообщения в контейнере. Относительная сложность реализации.
ICMP В поле Data ICMP-сообщения типа 8 (эхо-запрос). Шифр блочный (128 бит) в режиме ECB. 8 байт сообщения в контейнере. Простота реализации. Встраивание непосредственно в поле данных. Большие временные затраты.

Дальнейшие исследования

В будущем планируется реализовать стего-систему на базе Internet Protocol, а также рассмотреть возможности формирования скрытого канала передачи информации в протоколе Internet версии 6 и в Transmission Control Protocol.

Приложение

Табл. 1. Тестирование стего-системы на базе ICMP

Число маршрут изаторов Длина сообще ния (байт) Интер вал2 (сек) Число дубликат ов Подтвер ждение получен ия Длина поля Data (байт) Стего-контейнеров Время отправки (сек) Отправлено (байт)
всего уникал ьных
0 1024 3 да 32 516 4503 30960
6 512 нет 129 4013
0..7 да 56 499 4793 41916
нет 346 2147 29064
3 да 32 260 2427 15600
0..60 нет 65 2253
13 256 0..7 да 56 259 2283 21756
нет 276 2411 23184
3 да 32 132 33 1276 7920
нет 1023
0..7 да 56 161 1399 13524
нет 147 1140 12348

*Число маршрутизаторов – количество маршрутизаторов, которые прошел стего-контейнер от отправителя кполучателю.**Интервал2 – задержка между отправкой стего-контейнеров, не являющихся дубликатами.

Число маршрутизаторов определялось с помощью программы traceroute [5]. Задержка между отправкой дубликатов во всех тестах равнялась 1 сек.

Литература

  1. О. В. Генне, “Основные положения стеганографии”. Журнал “Защита информации. Конфидент”, №3, 2000.

  2. Брюс Шнайер, Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке C. – Триумф, 2002 – 816с.

  3. Marina del Rey, Request for Comments 791, Internet Protocol, September 1981.

  4. J. Postel, Request for Comments 792, Internet Control Message Protocol, September 1981.

  5. Йон Снейдер, Эффективное программирование TCP/IP. – СПб: Питер, 2001 – 320с.

  6. У. Р. Стивенс, UNIX: разработка сетевых приложений. – СПб: Питер, 2004 – 1086с.

Компания SoftKey – это уникальный сервис для покупателей, разработчиков, дилеров и аффилиат–партнеров. Кроме того, это один из лучших Интернет-магазинов ПО в России, Украине, Казахстане, который предлагает покупателям широкий ассортимент, множество способов оплаты, оперативную (часто мгновенную) обработку заказа, отслеживание процесса выполнения заказа в персональном разделе.

или введите имя

CAPTCHA