Современные информационные технологии/ 4. Информационная безопасность

 

к.т.н. В.Г.Ткаченко, к.ф.-м.н. О.В.Синявский

Одесская национальная академия связи им. А.С.Попова, Украина

Построение корректирующего кода с использованием типов монотонных булевых функций

 

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

К настоящему времени разработано много различных помехоустойчивых кодов, отличающихся друг от друга основанием, расстоянием, избыточностью, структурой, функциональным назначением, энергетической эффективностью, корреляционными свойствами, алгоритмами кодирования и декодирования, формой частотного спектра ([1] … [4]). На основе максимальных типов [5] монотонных булевых функций (МБФ) построена криптосистема [6] с кодами, использующими деревья разложения типов МБФ.

Однако построенный код, используемый в [6], не предусматривает коррекцию ошибок.

Получены такие результаты.

ЛЕММА 1. Вектор  является кодовой последовательностью без ошибок тогда и только тогда, когда его правая (левая) максимальная часть и её дополнение являются максимальными типами.

ЛЕММА 2. Справедливо рекуррентное матричное уравнение:

                                 ,                                       (1)

где операция  - обычное умножение матриц.

Используя равенство, полученное в лемме 5 из [5]:

               ,                     (2)

выведем матричную формулу, для построения матрицы Мn ранга типа n на основе матрицы  Мn-1  ранга типа .

Введём две операции. Операция «звёздочка слева» обозначает операцию добавления строки сверху и столбца слева таких: , а операция «звёздочка справа» обозначает операцию добавления строки снизу и столбца справа. Обозначим через In – квадратную матрицу, порядка , которая получается из верхней треугольной матрицы порядка , состоящей из единиц, с помощью операции звёздочка слева. Обозначим через ** операцию транспонирования матрицы относительно побочной диагонали.

Обозначим через  верхнюю треугольную матрицу порядка  из единиц, тогда , а .

Следствие. Используя верхнюю треугольную матрицу из единиц  размерности , из (2) получим

                                .                                      (3)

ЛЕММА 3. Справедливо рекуррентное матричное уравнение:

                               .                                     (4)

Следствие 1. Для количества максимальных типов  справедливо выражение:

               ,                     (5)

Следствие 2. Используя верхнюю треугольную матрицу из единиц  размерности , из (4), получим

                                .                                      (6)

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

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

Для построения корректирующих кодов разработана программа, которая выводит максимальные типы определённого ранга для заданных границ, переводит их в двоичный код и вычисляет кодовое расстояние для этих кодов. В программе используются массив Т1, в котором содержатся максимальные типы ранга n – 1, и массив Т2, в котором содержатся максимальные типы ранга n. В обоих массивах типы упорядочены по возрастанию количества двоичных единиц, а типы с одинаковым количеством единиц упорядочены по возрастанию, как двоичные числа. Количества элементов массива Т2 с одинаковым количеством единиц представляет собой весовой спектр рассматриваемого кода. Имеются также дополнительные массивы Е1 и Е2, в которых содержатся индексы первых типов в массивах Т1 и Т2 с заданным количеством единиц. Максимальные типы обладают тем свойством, что типы с кодовым расстоянием 2 содержат одинаковое количество единиц. Таким образом, при нахождении типов с кодовым расстоянием не менее 3 необходимо просматривать только пары типов с одинаковым количеством единиц.

Кодирование происходит простым обращением к элементу массива Т2 с индексом равным блоку сообщения, т.е. элементы массива Т2 являются передаваемыми кодовыми словами. Рассмотрим алгоритм декодирования.

АЛГОРИТМ ДЕКОДИРОВАНИЯ:

Шаг 1. Находим в кодовом слове S количество k двоичных единиц.

Шаг 2. Выделяем из полученной последовательности максимальную правую часть S2 и её дополнение S1 (см. лемму 1). Этим уменьшается, по крайней мере, на порядок количество перебираемых типов [6]. Сдвиг-сумма . Находим количество единиц k1 в дополнении и k2 в максимальной правой части.

Шаг 3. Находим в массиве Т1 элементы с количеством единиц k2 с помощью массива Е1, т.е. индекс Е1(k2). Поиск слова S2 в массиве Е1 проводим методом деления пополам. Сначала находим индекс i1 среднего элемента массива Т1 с количеством единиц k2. Он равен целой части от Е1(k2) + (Е1(k+ 1) – Е1(k2))/2. Если элемент Т1(i1) с индексом і1 равен S2, то устанавливаем флажок f2 и завершаем шаг 3. Если Т1(i1) больше S2, то копируем значение Е1(k2) в i2 и присваиваем i1 значение равное целой части от i2 + (i1i2)/2. Если Т1(i1) меньше S2, то копируем значение Е1(k2 + 1) в i2 и присваиваем i1 значение равное целой части от i1 + (i2i1)/2. Продолжаем аналогичные действия пока либо не найден элемент Т1(i1) = S2, либо не выполнится |i2i1| = 1. В первом случае флажок f2 будет установлен, а во втором нет.

Шаг 4. Находим в массиве Т1 элементы с количеством единиц k1 с помощью массива Е1, т.е. индекс Е1(k1). Если элемент Т1(i1) равен S1, то устанавливаем флажок f1. Поиск слова S1 в массиве Е1 проводим методом деления пополам как в шаге 3. Если элемент Т1(i1) с индексом і1 равен S1, то устанавливаем флажок f1, а если не найден, то не устанавливаем.

Шаг 5. Если флажки f1 и f2 установлены, то принятое кодовое слово представляется в виде сдвиг-суммы максимальных типов S1 и S2 ранга n – 1. Согласно лемме 1 в этом случае кодовое слово S принято без ошибок. В этом случае алгоритм заканчивается.

Шаг 6. Если флажок f1 или f2  не установлен, то находим в массиве Т2. элементы с количеством единиц k – 1 и k + 1 с помощью массива E2, т.е. индексы Е2(k – 1) и Е2(k + 1). Последовательно заменяем в кодовом слове S бит 0 на 1, а бит 1 на 0. После замены нуля на единицу ищем полученное слово S3 методом деления пополам начиная с индекса Е2(k + 1). После замены единицы на ноль ищем полученное слово S3 методом деления пополам начиная с индекса Е2(k – 1). При нахождении в массиве Т1 кодового слова S3 поиск прекращаем. В этом случае при передаче была одна ошибка и в действительности было передано кодовое слово S3, а не S2. Найденный индекс S3 равен блоку сообщений. Если в результате поиска кодовое слово S3 не найдено, то в принятом кодовом слове S имеется более одной ошибки.

 

Литература:

1.     Byers J. A Digital Fountain Approach to Reliable Sisttibuttion of Bulk Data. / J. Byers, M. Luby, M. Mitzenmacher, A. Rege // In SIGCOMM. - 1998.

2.     David J.C. Information Theory, Inference, and Learning Algorithms / J.C. David, MacKay - Cambridge University Press. - 2003.

3.     Luby M. LT Codes/ M. Luby // Of the 43rd Annual IEEE Symposium on Foundations of Computer Science (FOCS). - 2002. - Pp. 271-282.

4.     Варгаузин В.. Вблизи границы Шеннона / В. Варгаузин // ТелеМультиМедиа. - 2005. - №3. - C.3-10.

5.     Ткаченко В.Г. Перечисление типов монотонных булевых функций при синтезе цифровых схем / В.Г. Ткаченко // Наукові праці ОНАЗ ім. О.С. Попова. – 2008. – №2. – С. 54 – 69.

6.     Ткаченко В.Г. Деревья типов монотонных булевых функций и криптосистемы с блоками переменной длины / В.Г. Ткаченко, О.В. Синявский // Наукові праці ОНАЗ ім. О.С. Попова. – 2009. – №2. – С. 32 – 42.

7.     Ткаченко В.Г. Классификация монотонных булевых функций при синтезе цифровых схем / В.Г. Ткаченко // Наукові праці ОНАЗ ім. О.С. Попова. – 2008. – №1. – С. 35 – 43.