Комбинирующие поточные шифры. Корреляционно-стойкий комбинирующий шифр.
Комбинирующие шифры строятся на основе нескольких ЛРС, объединяя нелинейной функцией биты, порождаемые каждым из них на очередном шаге:
Одной из основных проблем комбинирую шифров является возможность просачивания информации из одного или нескольких ЛРС в выходную гамму. Так, в простейшем примере итоговая шифрующая последовательность порождается по формуле g=аÅb(b&c) Несмотря на то что подобная гамма является сбалансированной, т.е. вероятности появления нулей и единиц в ней совпадают, в нее с неприемлемо большой вероятностью проходит поток бит, порождаемый первым ЛРС. Действительно, вероятность P(g=b)=4/8=1/2, P(g=c)=4/8=1/2, но Р(g=a)=6/8. Это позволяет при несколько большем объеме перехваченной информации, чем это требовалось ранее, проводит на первый ЛРС все те же атаки, что и на одиночный ЛРС. А получив всю необходимую информацию по первому ЛРС, можно либо непосредственно воспользоваться ею для чтения с «домысливанием» открытого текста, либо попытаться узнать больше информации о втором и третьем ЛРС.
Описанный метод называется корреляционной атакой на комбинирующий шифр. Комбинирующий шифр называется корреляционно стойким, если для любой комбинации ЛРС, входящих в его состав, значение коэффициента корреляции между битами этих ЛРС и результирующим битом шифра равно 1/2.
Комбинирующий поточный шифр с элементом памяти.
Однако после проведения математических исследований оказалось, что чем выше степень нелинейности объединяющей функции нелинейного фильтра, тем ниже его корреляционная стойкость и наоборот. Разработчики оказались между двумя криптоаналитическими атаками. Одним из методов выхода из данной ситуации оказалось использование в объединяющей функции элементов памяти. Подобные ячейки хранят несколько бит, характеризующих предыдущее состояние функции, и “подмешивают” его к ней же на этапе вычисления:
Динамический поточный шифр.
Динамические шифры строятся также на базе нескольких ЛРС, но объединяют их не на равноправных условиях, а по схеме «начальник-подчиненный». Так, например, бит, порождаемый управляющим регистром, определяет бит, какого из подчиненных ЛРС (первого или второго) будет подан на выход всего алгоритма. Бит от противоположного выбранному регистра просто отбрасывается.
По другой схеме, если на очередном своем шаге управляющий ЛРС генерирует “1”, то бит подчиненного ЛРС, полученный на этом же шаге, поступает на выход системы, а если же управляющий ЛРС выдал “0”, то бит подчиненного регистра просто отбрасывается. Разумеется, возможны и сложные схемы взаимодействия ЛРС и их комбинации с уже описанными методами.
При правильном построении закона объединения нескольких ЛРС как в комбинирующих, так и в динамических шифрах период результирующей последовательности будет равен произведению периодов или полупериодов каждого отдельно взятого ЛРС (в зависимости от схемы их объединения). Единственным необходимым условием для этого является то, чтобы разрядности всех ЛРС были попарно взаимно просты, т.е. не имели общих делителей кроме единицы. Чаще всего разрядности всех ЛРС, входящих в общий блок, выбираются как простые числа из подходящего диапазона.