Обеспечение секретности передачи данных в беспроводных сетях с сетевым кодированием

УДК 519.72

М. А. Сергеев

Московский физико-технический институт

Обеспечение секретности передачи данных в беспроводных сетях с сетевым кодированием

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

Ключевые слова: анонимность, сетевое кодирование, секретность, защита информации.

M. A. Sergeev

Moscow Institute of Physics and Technology

Maintaining privacy during data transfer in wireless networks using network coding

The well-known COPE architecture is generally used to increase network throughput in multihop (все multi вместе) wireless networks by network coding. In this paper, three means for the parties to maintain anonymity during transmissions are proposed. These modifications exploit the idea of inability of eavesdropper to extract sender's address from the message unless he has successfully intercepts all parts of the message.

Key words: anonymity, network coding, privacy, information security.

1. Введение

Основным отличием беспроводных сетей от проводных является то, что среда передачи данных совершенно открыта любому желающему, поэтому заинтересованному злоумышленнику ничего не стоит получить необходимую информацию, имея доступ к среде, в частности, он может узнать, какие узлы сети общаются между собой. Для обеспечения безопасности передачи было предложено и реализовано много подходов. Одним из самых известных сейчас, например, является протокол WPA2, позволяющий ограничивать доступ злоумышленника в Wi-Fi сеть путём создания секретного ключа и распространением его между легитимными пользователями сети. Однако в случае, когда злоумышленник завладел этим секретным ключом, безопасность передачи остаётся под угрозой. Далее мы будем рассматривать более узкую задачу — не секретность передачи информации в целом, а лишь обеспечение анонимности передачи.

Существует несколько задач, объединяемых общим названием «обеспечением анонимности», среди них выделяют [1]:

• Обеспечение анонимности отправителя и получателя — данный вид анонимности не позволяет злоумышленнику определить, кто отправляет сообщение, а кто является конечным получателем, допуская, однако, видеть, как пакет перемещается от узла к узлу, а также видеть сам факт наличия пакета.

• Сокрытие маршрута передачи — данный вид анонимности не позволяет злоумышленнику определить маршрут конкретного пакета, т.е. список узлов, через которые он проходит, допуская тем не менее увидеть наличие такого пакета где-то в сети.

• Сокрытие факта передачи данных — данный вид анонимности не позволяет злоумышленнику определить наличие факта передачи, например, не давая отличить передачу реальных данных от белого шума.

В данной статье мы будем рассматривать подход к решению задачи первого типа. Для этого будем рассматривать метод COPE (Coding Opportunistically), центральной идеей которого является разбиение оригинального сообщения на части и передача его по частям через промежуточные узлы. В оригинальной статье этот метод применялся для достижения более плотного использования полосы пропускания и повышение скорости передачи. Мы же воспользуемся этим методом, модифицировав его таким образом, чтобы после разделения сообщения (включающего адрес получателя) на части, одна из частей была недоступна никому, кроме получателя. В этом случае сторонний наблюдатель (в том числе и злоумышленник) не сможет получить доступ к оригинальному сообщению (либо доступ будет значительно затруднён), а значит, и к указанию того, кому предназначался пакет. В данной работе рассматривается способ, в течение определённого времени обеспечивающий анонимность отправителя и получателя.

В следующем параграфе этой статьи кратко описан используемый метод COPE, а в следующих можно ознакомиться с предлагаемыми изменениями в нём.

2. Обзор метода COPE

Метод COPE [2] использует три механизма для повышения эффективности использования среды:

• гибкое прослушивание (Opportunistic Listening) — механизм, обеспечивающий сохранение всех пакетов, которые проходили через данный узел или были «услышаны» узлом на сети, даже если они не предназначены ему, в специальный буфер в течение некоторого времени (время хранения по умолчанию — 0.5 c). Также каждый узел широковещательно рассылает отчёты о получении, содержащие информацию о том, какие пакеты были сохранены и подслушаны;

• определение состояния соседних узлов (Learning Neighbour State) — метод, осуществляющий определение списка пакетов, которые есть в буферах соседних узлов. Механизм определения состояния основан на вычислении метрики EXT [5], которая назначается каждой паре узлов и характеризует вероятность успешной передачи данных между ними. Таким образом, каждый узел хранит таблицу для каждого соседнего узла и заполняет её, занося в неё пакеты и вероятность успешного получения этих пакетов;

• гибкое кодирование (Opportunistic Coding) — метод, отвечающий за правильный выбор линейной комбинации пакетов на основании данных, полученных при помощи остальных механизмов.

Утверждение 1. Узел-источник может переслать п пакетов Р\,... ,Рп п соседним узлам п,... ,гп — каждый пакет своему получателю — в рамках одной передачи объединив пакеты, тогда и только тогда, когда любой rj уже имеет все пакеты, кроме Pj. [3]

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

Рис. 1. Иллюстрация передачи пакетов по методу COPE: начальное состояние сети

Рассмотрим сеть, структура которой изображена на рис. 1.

На схеме изображен источник А и три получателя — В, С и D. На источнике содержится четыре пакета Р 1,Р2,Р3, Р4, подлежащих пересылке. Рассмотрим задачу, в которой цель А — передать все пакеты на узел В и D. Рассмотрим процедуру передачи по шагам.

На первом шаге, изображенном на рис. 1, узел A пытается передать пакет P1 узду В. При этом, несмотря на то, что основной получатель этого пакета — узел В, узлы С и D также находится в зоне передачи и способны подслушать передаваемые данные, используя гибкое прослушивание. Пусть в процессе передачи произошла ошибка, и узел С не смог корректно принять Р1. После окончания передачи пакета Р1, узлы В и D рассылают подтверждение получения пакета, что даёт А возможность понять, что до С пакет не дошел.

Согласно методике COPE, подверждения получения пакета рассылаются каждым узлом асинхронно либо в момент передачи им какого-то пакета, либо, если узел не передаёт информацию, регулярными отдельными пакетами. При этом для уменьшения избыточности передачи подтверждений используется следующий подход: в заголовок каждого пакета вставляются дополнительные поля, содержащие идентификатор последнего полученного пакета и битовую карту, содержащую информацию о предыдущих полученных пакетах. Так, например, заголовок {Р4, 011} содержит информацию о том, что последним был получен пакет Р4, до него были получены пакеты Р1 и Р2, а пакет Р3 получен не был. Такой подход обеспечивает возможность подтверждать пакеты несколько раз без больших накладных расходов, таким образом обеспечивая защиту от возможных потерь пакетов с подтверждениями.

Второй шаг передачи изображен на рис. 2а. Теперь узел А передаёт очередной пакет — Р2 узлу D. При этом, как и на первом шаге, узлы В и D находятся в зоне передачи и могут подслушать передаваемый пакет. На этот раз ошибка случается при приёме пакета узлом D — отправитель узнал об этом, не получив подтверждение получения за определённое время. Аналогичным образом происходит передача пакета Р3 узлу В на рис. 2б — за исключением того, что на этот раз узел В не смог принять пакет.

Далее, на четвёртом шаге (рис. 3а) отправитель А, воспользовавшись утвеждением 1, применяет гибкое кодирование, чтобы передать недостающие пакеты всем трём узлам одновременно. Действительно, для передачи 3 пакетов Р1, Р2, Р3 получателям B,C,D необ-

ходимо и достаточно, чтобы каждый из получателей имел ровно два пакета из списка передаваемых — что выполняется, поэтому, создав линейную комбинацию Р1 0 Р2 0 Р3, отправитель может за одну трансмиссию передать сразу три пакета трём получателям, каждый из которых сможем успешно декодировать нужный пакет. После получения пакета, каждый узел, как и ранее, передаёт подтверждение получения.

а) б)

Рис. 2. Иллюстрация передачи пакетов по методу COPE: продолжение

а) б)

Рис. 3. Иллюстрация передачи пакетов по методу COPE: окончание передачи

И, наконец, на последнем шаге (рис. 3б), передаёт пакет Р4 узлу И, который также будет услышан узлами И и С. На этот раз передача прошла успешно для каждого узла и после окончания этой передачи узлы В и И будут обладать пакетами Р 1,Р2,Р3,Р4, а значит, отправитель достиг своей цели.

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

3. Предлагаемые изменения

Теперь перейдём к изменениям, которые позволят нам воспользоваться рассмотренным методом для обеспечения анонимности. Для этого адрес получателя помещается внутрь сообщения, и оно разбивается на п частей, каждая из которых затем будет передаваться по отдельности, однако одна из частей не будет передаваться по сети. В дальнейшем будем называть эту часть «секретной частью» или «секретным пакетом».

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

Рассмотрим два способа разбиения сообщения на части.

3.1. Сетевое кодирование

В первом способе будем считать, что передаваемое сообщение есть подпространство в расширенном поле СР(рп). В таком случае это сообщение представимо как набор из к базисных векторов подпространства, а значит, представимо в матричном виде в простом поле СРр, где каждая строка является представлением базисного вектора. Далее отправитель транспонирует получившуюся матрицу Р [4]. Тогда мы можем записать её в следующем виде:

Р

р{

Рп

к'

Р\

к Рп

, р) е СР (р).

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

"0" р[

рГ = Р1т + Р0 = р\ + р?

0 . Рк .

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

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

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

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

3.2. COPE подход

Упомянем также другой способ разбиения сообщения, который непосредственно следует из построений, использованных при разработке метода COPE. В данном случае сообщением является не подпространство, а двоичный вектор P. Он представим в виде двоичной суммы п слагаемых: P = P¿, а также, без ограничения общности,

P = ро  Е Рг>

п

где Ро — специально подобранная секретная часть (двоичный вектор), а Pi выбраны произвольно, но так, чтобы выполнялось равенство (1).

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

4. Работа с секретным пакетом

В предыдущем параграфе рассматривался метод передачи и сохранения пакета при условии наличия уже созданного секретного пакета. В этом параграфе мы изучим его более подробно и рассмотрим способы его конструирования.

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

В данной работе рассматривается способ создания секретного пакета без таких ограничений. Для этого используется код Рида-Соломона, в который искусственно внесены ошибки, предотвращающие нелегитимное декодирование секретного пакета. Входной точкой алгоритма является адрес получателя и случайное зерно. Для каждого сообщения создаётся своё случайное зерно, чтобы диверсифицировать секретные пакеты. Конкатенируя адрес получателя и выбранную последовательность, мы получаем секретный пакет:

Ро = ipr \R,

где ipr — адрес получателя пакета, а R — случайная последовательность фиксированной длины I = к — len (ipr).

Далее необходимо передать получателю достаточно информации для восстановления секретного пакета. Для этого мы кодируем получившееся секретный пакет Ро систематической формой кода Рида-Соломона с параметрами т, к, 2t = т — к, где т — длина кода, к — число информационных символов (равное длине одного пакета), а t — исправляемое кодом число ошибок, и допускаем t ошибок в проверочных символах. В результате получаем кодовое слово В = ipr\R\c\    ст-^, где Ci — проверочные символы. Далее из получившегося вектора В отрезается начальная часть, содержащая адрес получателя (т.к. кодирование систематическое, первые к символов кодового слова составляют информационные символы). Получившийся вектор (будем называть его «секретом») посылается в заголовке вместе с передаваемыми пакетами.

S = R\ci   ст-к,

После получения секрета Б легитимный получатель может дополнить его своим адресом и таким образом восстановить секретный пакет. Злоумышленнику же потребуется, во-первых, перебрать все возможные адреса в сети, а во-вторых, пытаться декодировать получившийся вектор, чтобы проверить догадку относительно конкретного узла. Несмотря на то, что в конце-концов злоумышленник может узнать получателя, это потребует от него порядка 0(Ы х 1п(т2)) большей вычислительной сложности, что при достаточном количестве узлов в сети и длине кода, приводит к значительным увеличениям затрат как временных, так и ресурсных, что позволяет обеспечить необходимое время отсутствия компрометации передачи.

5. Заключение

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

Работа выполнена при поддержке РФФИ, грант 15-07-18480-a Литература

1. Rang R. Brown S. Kiesler S. Why do people seek anonymity on the internet?: informing policy and design // Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. ACM, 2013. P. 2657-2666.

2. Katti S. [et al.]. XORs in the air: practical wireless network coding // IEEE/ACM Transactions on Networking (ToN). 2008. V. 16, N 3. P. 497-510.

3. Zhu X. [et al.]. A batched network coding scheme for wireless networks // Wireless Networks. 2009. V. 15, N 8. P. 1152-1164.

4. Adeli M. Security protocols for linear network coding. 2013.

5. De Couto D.S.J. [et al.]. A high-throughput path metric for multi-hop wireless routing // Wireless Networks. 2005. V. 11, N 4. P. 419-434.

References

1. Rang R. Brown S. Kiesler S. Why do people seek anonymity on the internet?: informing policy and design. Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. ACM, 2013. P. 2657-2666.

2. Katti S. [et al.]. XORs in the air: practical wireless network coding. IEEE/ACM Transactions on Networking (TON). 2008. V. 16, N 3. P. 497-510.

3. Zhu X. [et al.]. A batched network coding scheme for wireless networks. Wireless Networks. 2009. V. 15, N 8. P. 1152-1164.

4. Adeli M. Security protocols for linear network coding. 2013.

5. De Couto D.S.J. [et al.]. A high-throughput path metric for multi-hop wireless routing. Wireless Networks. 2005. V. 11, N 4. P. 419-434.

Поступила в редакцию 20.02.2016