Применение конечного автомата для одновременного поиска нескольких двоичных шаблонов в потоке данных

Результаты приведены в таблице (строки ШЗ-Ф), где представлены также результаты ПЛИС-реализации процедур шифрования и расшифрования шифра Закревского на основе перестраиваемого автомата, заданного таблицами переходов и выходов (строки ШЗ-Т), взятые из [1], и результаты реализации шифра AES [4]. Стоит отметить, что в работе [1] исследуется перестраиваемый автомат, у которого n =16, m = 8, а длина ключа 123 бита. В данной работе n = m = 16 и длина ключа увеличена до 244 бит.

Сравнение ПЛИС-реализаций шифра Закревского на основе перестраиваемого

автомата при табличном и формульном задании

Шифр Ресурсоёмкость, Slices (S) Производительность, Мбит/с (T) Коэффициент эффективности T/S

ШЗ-Т (шифрование) 370 298 0,805

ШЗ-Т (расшифрование) 365 269 0,737

ШЗ-Ф (шифрование) 397 349 0,879

ШЗ-Ф (расшифрование) 398 366 0,920

AES 163 208 1,276

Из таблицы видно, что несмотря на некоторое усложнение конструкции (большее число состояний, большая длина ключа), производительность шифра Закревского на основе перестраиваемого автомата возросла на 17-36 %, при этом ресурсоёмкость увеличилась незначительно. Коэффициент эффективности реализации также увеличился, хотя и не достиг значения этой величины для AES. Однако AES опережает шифр Закревского на основе перестраиваемого автомата только за счёт меньшей ресурсоём-кости, что является существенным только для ПЛИС с небольшой логической ёмкостью (количеством вентилей).

В целом, проведённые исследования показывают, что аппаратная реализация шифра Закревского на основе перестраиваемого автомата, заданного формулами, пригодна к использованию на практике.

ЛИТЕРАТУРА

1. Ковалев Д. С. Реализация на ПЛИС шифра Закревского на основе перестраиваемого автомата // Вестник Сибирского государственного аэрокосмического университета им. акад. М. Ф. Решетнёва. 2014. № 1 С. 16-18.

2. Закревский А. Д. Метод автоматической шифрации сообщений // Прикладная дискретная математика. 2009. №2. С. 127-137.

3. Тренькаев В. Н. Реализация шифра Закревского на основе перестраиваемого автомата // Прикладная дискретная математика. 2010. №3. С. 69-77.

4. Rouvroy G., Standaert F. X., Quisquater J. J., and Legat J. D. Compact and efficient encryption/decryption module for FPGA implementation of the AES Rijndael very well suited for small embedded applications // Proc. Intern. Conf. Inform. Technology: Coding and Computing. 2004. V.2. P. 583-587.

УДК 519.7

ПРИМЕНЕНИЕ КОНЕЧНОГО АВТОМАТА ДЛЯ ОДНОВРЕМЕННОГО ПОИСКА НЕСКОЛЬКИХ ДВОИЧНЫХ ШАБЛОНОВ В ПОТОКЕ ДАННЫХ

И. В. Панкратов

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

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

Ключевые слова: поиск битовых последовательностей, поиск подстроки.

Рассматриваемую задачу можно сформулировать так. Имеем двоичную последовательность (поток данных) и набор булевых векторов (далее называемых шаблонами) VI, У2, ... , Уп длин к1, к2, ... , кп соответственно. Необходимо найти вхождения всех шаблонов в последовательность.

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

Опишем алгоритм построения битового автомата.

Входной алфавит автомата — {0,1}.

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

Строится автомат по индукции. Сначала вводится нулевое состояние, соответствующее ситуации, когда не найден ни один префикс ни одного шаблона. Затем алгоритм поочерёдно обрабатывает все состояния условной подачей на вход автомата 0 и 1, попутно сохраняя новые полученные состояния и строя таблицы переходов и выходов автомата. Обработав таким образом все состояния автомата, получаем таблицы переходов и выходов, а также таблицу соответствия номеров состояний их описаниям: состоянию в сопоставляется набор Т, = (Т,д , Т,,2,... , Т,,п), где Т,- содержит множество длин найденных префиксов шаблона номер ].

Обозначим /-й бит вектора V через V[/], биты нумеруем с нуля. В выходном векторе Г бит Г [] — 1] соответствует ]-му шаблону.

Алгоритм построения битового поискового автомата

Вход: набор булевых векторов (шаблонов) VI, ^, ... , Vn, их длины к1, к2, ..., кп Выход: функции переходов ф и выходов (р поискового автомата

1. Запоминаем начальное состояние Т0 := (0, 0,... 0), в :=0.

2. Обрабатываем состояние в условной подачей нуля и единицы. Подаваемый бит обозначим Ь. Сначала зададим Ь := 0.

3. Строим новое состояние Т, в которое автомат должен перейти после подачи бита Ь в состоянии Т3, и соответствующий выходной символ — вектор Г; сначала полагаем Г := 00 ... 0 = 0п.

Для каждого ] от 1 до п:

3.1. Зададим А := Т^ и {0}, B^ := 0.

3.2. Для всех / € А если Ь = Vj[/], то Вj := В^- и {/ + 1}.

Теперь множество Bj содержит длины всех найденных префиксов вектора Vj после подачи бита Ь в состоянии Т,.

3.3. Если kj € Bj, то вектор Vj найден; полагаем Bj := Bj \ {/ + 1},

ГЦ — 1] :=1.

4. Получили набор Т := (Ві, В2,... , Вп), описывающий следующее состояние, и выходной символ автомата — вектор ^. Ищем набор Т среди имеющихся наборов То,... ,Т,.

Если нашли, что Т = Т^, то присваиваем в; := Л;

если такого состояния ещё нет, то добавляем его в таблицу в новую ячейку. Пусть номер этой ячейки в;. Тогда состояние Т, = Т.

5. Запоминаем ф(в,Ь) := в;, <^(в,Ь) := ^.

6. Если Ь = 0, то Ь := 1 и переход на шаг 3.

7. в := в + 1. Если в таблице есть состояние Т,, то переход на шаг 2.

8. Ответ: функции ф и <^.

Имея автомат, принимающий на вход биты, можно построить автомат, принима-ютттий на вход сразу пачки битов, например байты или полубайты. Будем называть такой автомат байтовым, а его входные векторы — байтами. Множество состояний у него такое же, как у битового автомата; входной алфавит {0,1}9, где д — число битов в байте; выходной алфавит сложнее, поскольку в байтовом автомате возможно нахождение сразу нескольких вхождений одного шаблона в различных позициях.

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

Оценим количество состояний автомата.

У автомата, который ищет п векторов с длинами к1, к2, ..., кп, количество состо-

п

яний ограничено сверху величиной У] kj — п + 1. Эта оценка достижима; в частности,

j=1

автомат, ищущий один шаблон длины к, всегда имеет ровно к состояний.

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

Полностью результаты представлены в [1].

ЛИТЕРАТУРА

1. Панкратов И. В. Одновременный поиск нескольких двоичных шаблонов в потоке с помощью конечного автомата // Прикладная дискретная математика. 2014. №2. С. 119-125.