Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kody_i_shifry_yuliy_Cezar_Enigma_i_Internet_2007.pdf
Скачиваний:
260
Добавлен:
29.03.2016
Размер:
2.04 Mб
Скачать

120

Двоичные линейные последовательности как генераторы гаммы

При построении двоичной последовательности с помощью линейной рекурренты степени k получается последовательность нулей и единиц. Может ли она продолжаться до бесконечности, не повторяясь? Ответ будет "нет", поскольку каждый следующий элемент зависит только от значений k предыдущих элементов, а поскольку элементы принимают только значения 0 и 1, то всего существует только 2k различных вариантов. Следовательно, не более чем через 2k шагов какое-то множество из k последовательных двоичных элементов обязательно повторится. Например, последовательность чисел Фибоначчи, приведенная по модулю 2, выглядит так:

0, 1, 1, 0, 1, 1, 0, 1, 1, 0, ...

Видно, что эта двоичная последовательность состоит просто из тройки 011, повторенной бесконечное число раз. Поскольку последовательность чисел Фибоначчи порождена при помощи линейной рекурренты степени 2, то в данном случае имеем k=2, и поэтому двоичная форма этой последовательности обязана повториться не далее, чем через 22=4 шага. На самом деле она повторяется через 3 шага, и это, в действительности, максимально возможное число, поскольку одна из четырех возможных пар последовательных двоичных элементов равна 00, а эта пара порождает последовательность, состоящую из одних нулей. Наоборот, никакая другая двоичная последовательность не может содержать пары 00. Поэтому максимально возможное число двоичных элементов, которое может встретиться, прежде чем последовательность начнет повторяться, равно 3, а не 4. По этой же причине максимальное число элементов в линейной рекурренте степени k до начала ее повторения равно 2k-1, а не 2k. Поэтому, несмотря на свой скромный вид, двоичная последовательность Фибоначчи имеет максимальный период.

Ясно, что двоичная последовательность с максимальным периодом, равным 3, для криптографов интереса не представляет. А что можно сказать о двоичных последовательностях более высоких степеней? Для начала рассмотрим утверждение, которое легко проверить непосредственно: последовательность степени 4 может иметь период 15, то есть 24-1. Если отбросить тривиальный случай, когда все четыре коэффициента равны нулю, то всего существует 15 возможных вариантов линейных рекуррент степени 4. Даст ли какая-нибудь из них последовательность максимального периода 15? Таких последовательностей две, это

Un = U(n-3) + U(n-4)

121

и

Un = U(n-1) + U(n-4).

Пример 8.1 проверить. Что двоичная линейная рекуррента четвертой степени

Un = U(n-3) + U(n-4)

порождает последовательность максимального периода 15.

Проверка

Начиная с U0=U1=U2=U3=1, будем вычислять каждый следующий элемент, складывая между собой элементы, отстоящие от него на 3 и 4 позиции, и записывая 0 или 1 в зависимости от того, является ли сумма четной или нечетной. В результате получаем такую последовательность:

1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1...

Видно, что она начинает повторяться, начиная с элемента U15, но не ранее.

(Заметим, что если двоичная последовательность, порожденная линейной рекуррентой порядка k, имеет максимальный период, то она должна содержать все из 2k возможных двоичных последовательностей длины k, кроме той, которая состоит из одних нулей. Таким образом, в этом случае можно выбрать любые начальные значения, кроме 00..00, и период все равно останется максимальным в любом случае. Если же период не максимальный, то различные начальные значения могут дать различные последовательности.)

Задача 8.1 Проверить, что двоичная рекуррента

Un = U(n-1) + U(n-4)

также порождает последовательность периода 15, а рекуррента

Un = U(n-1) + U(n-2) + U(n-3) + U(n-4)

имеет другой период.

А что же будет для последовательностей более высоких степеней? Например,

122

последовательность степени 12 может иметь период, ни много ни мало, 212-1, то есть 4095. Существует ли линейная рекуррента степени 12, дающая двоичную последовательность такого (максимального) периода? В результате довольно изящного применения высшей математики была получена формула, позволяющая подсчитать, сколько именно двоичных линейных рекуррент степени k дают последовательности максимального периода. Для случая рекуррент степени 12 по этой формуле получаем, что 144 двоичных линейных рекурренты степени 12 порождают двоичные последовательности периода 4095. (То, что 144=12 12, в данном случае просто совпадение!) Для оставшихся 3952 рекуррент период будет меньше. Эти 144 рекурренты не могут быть получены непосредственно с помощью методов математического анализа, для этого необходимо применить алгоритм, схожий с методом поиска простых чисел. В качестве альтернативы можно протестировать все 4095 возможных рекуррент на компьютере, отсеивая все те, которые начинают повторяться ранее 4096-го знака. Если проделать все это, то первой обнаруженной последовательностью будет

Un = U(n-6) + U(n-8) + U(n-11) + U(n-12)

"Первой" она является в том смысле, что если выписать справа от рекурренты нулевые и единичные коэффициенты при всех 12-ти ее членах, то эта последовательность будет иметь 12-битовое представление

000001010011,

которое, если его интерпретировать как двоичную запись целого числа, равно

64 + 16 + 2 + 1 = 83.

Никакая другая последовательность с числовым представлением, меньшим 83, не имеет максимального периода 4095. Некоторые математические факты, лежащие в основе этой теории, содержатся в приложении M11.

Выбрав достаточно большую степень и найдя линейную рекурренту максимального периода, можно получить последовательность знаков гаммы, которая, по-видимому, будет псевдослучайной двоичной последовательностью и может быть использована для шифрования. Например, можно показать, что 356960 линейных рекуррент степени 23 дают последовательности знаков гаммы максимального периода, который превосходит 8000000 (см. M11). Можно было бы предположить, что, поскольку начальные значения также будут иметь более 8000000 вариантов, то такая гамма станет для криптоаналитика трудноразрешимой проблемой. Так и будет, но лишь поначалу. К несчастью для криптографов, полученная

123

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

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

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

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

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

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

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

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

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

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

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

124

способ увеличения стойкости таких последовательностей? Поскольку их слабость заключается в том, что для рекурренты степени 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, получим

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]