Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коды и шифры.DOC
Скачиваний:
62
Добавлен:
18.08.2019
Размер:
2.07 Mб
Скачать

Криптоанализ линейной рекурренты

Если известны 2k последовательных бита гаммы, порожденной двоичной линейной рекуррентой степени k, то можно построить и решить систему из k линейных уравнений относительно k неизвестных коэффициентов при членах рекурренты.

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

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

  2. задать значение k, то есть степень линейной рекурренты;

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

Итак, если символы представлены 8-разрядными байтами, а последовательность знаков гаммы порождена с помощью двоичной линейной рекурренты степени 23, то для решения системы понадобится всего 46 двоичных разрядов гаммы . Так как в 6 знаках сообщения 48 битов, то система может быть легко решена, если, например, сообщения обычно начинаются с букв TO THE!

Примеры, в которых рассматриваются варианты решения системы, разобраны в приложении M12.

Повышение стойкости двоичной гаммы

Очевидно, что двоичную гамму, порожденную линейной рекуррентой, вскрыть слишком просто, чтобы подобная последовательность оказалась полезной с криптографической точки зрения. Существует ли какой-нибудь способ увеличения стойкости таких последовательностей? Поскольку их слабость заключается в том, что для рекурренты степени k каждый бит является фиксированной линейной комбинацией предыдущих k битов, даже использование рекурренты высокой степени (например, если взять k=103) не обеспечивает необходимой стойкости, потому что для решения системы уравнений достаточно совсем небольшого отрезка гаммы (для k=103 необходимо всего 26 знаков). Вдобавок, получать гамму с помощью рекурренты высокой степени вручную (как пришлось бы поступить шпиону) - занятие довольно утомительное, да и ошибок можно наделать. Очень жаль, ведь гамма, полученная при помощи такой рекурренты, может иметь очень большой период (для k=103 он превосходит 1030). Конечно, большой период весьма желателен, но может быть, этого можно добиться и без использования рекурренты высокой степени, повысив одновременно стойкость? Это действительно можно сделать, комбинируя гамму от двух или более линейных рекуррент, как показано в следующем простом примере.

Пример 8.2

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

Un = U(n-1) + U(n-2)U0=U1 =1

и

Un = U(n-1) + U(n-3)U0=U1=U2=1,

получить новую последовательность знаков гаммы. Проверить, что она имеет период 21.

Проверка

Первая рекуррента, как мы уже убедились, имеет период 3 и порождает последовательность знаков гаммы

110110110110...

Вторая рекуррента имеет период 7 и порождает последовательность знаков гаммы

111010011101001110100...

Подписав обе эти последовательности друг под другом и сложив их по модулю 2, получим

110110110110110110110110110...

111010011101001110100111010...

Сумма (по модулю 2) 001100101011111000010001100...

Как видно, гамма начинает повторяться после 21-го шага, но не ранее. Поскольку первая последовательность имеет период 3, а вторая имеет период 7, то период комбинированной гаммы не может быть больше 21, так как они обе повторяются через 21 шаг. С другой стороны, так как числа 3 и 7 не имеют общих делителей, то комбинированная гамма не может повториться раньше, чем через 21 шаг.

Нет никакой необходимости ограничиваться использованием только двух линейных рекуррент: можно использовать и три, и больше. Преимущество этого подхода в том, что чем больше рекуррент использовать, тем труднее криптоаналитику будет вскрыть систему. Недостатком же, если работать приходится вручную, является достаточно утомительный способ получения гаммы и высокая вероятность ошибок. Конечно, от этого недостатка можно избавиться, если у нас есть возможность выработать гамму с помощью механического или электронного устройства. Поэтому неудивительно, что появились машины, порождающие последовательности знаков гаммы большого периода, как двоичные (т.е. модуля 2), так и алфавитные (т.е. модуля 26), которые являются комбинациями нескольких более коротких последовательностей. Одной из таких машин была шифрмашина "Хагелин", широко использовавшаяся во время Второй мировой войны целым рядом стран; она вырабатывала последовательность знаков гаммы модуля 26. Другой пример - это "Lorenz SZ42", одна из шифрмашин, использовавшихся в Германии; она вырабатывала последовательность знаков гаммы модуля 2. О них рассказано в главах 10 и 11.