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

116

Шум от усилителей

Шум в электрических цепях обычно считается помехой, но ему также можно найти хорошее применение в криптографии. Он может быть преобразован в сигнал, который используется для запирания и отпирания электрического вентиля, а это, в свою очередь, трактуется как 0 и 1. Если параметры схемы подобраны правильно, то получаемая таким образом двоичная последовательность и в самом деле будет случайной. Если схема имеет остаточное отклонение, так что вероятности появления нуля и единицы слегка отличаются от 0.5, то отклонение может быть значительно уменьшено путем суммирования (по модулю 2) двух или более подобных последовательностей чисел. Например, из двух независимых последовательностей, каждая из которых имеет отклонение 0.51 : 0.49 в пользу нуля, в результате сложения получится поток с отклонением всего лишь 0.5002 : 0.4998 (см. приложение M9).

Псевдослучайные последовательности

В главе 6 мы уже встречались с последовательностью чисел Фибоначчи. Это бесконечная последовательность целых чисел, получаемая с помощью простого правила: каждый ее элемент является суммой двух предыдущих. Традиционно эта последовательность начинается с двух первых элементов, равных 0 и 1. К сожалению, последовательность чисел Фибоначчи, как уже упоминалось выше, имеет ряд арифметических свойств, делающих ее совсем не подходящей в качестве источника псевдослучайных чисел. Однако допустим, что мы изменили правило получения чисел на другое, например, такое: каждый элемент равен удвоенному предыдущему элементу, сложенному с элементом, стоящим перед ним. Будет ли такая последовательность лучше подходить для наших целей? Если начать с 0 и 1 в качестве двух первых элементов, то первые 10 элементов последовательности выглядят так:

0,1,2,5,12,29,70,169,408,985.

Несложно заметить, что элементы этой последовательности четные и нечетные попеременно, и это уже само по себе является достаточным основанием не рассматривать ее в качестве источника псевдослучайных чисел. Конечно, вовсе не обязательно начинать с 0 и 1, в качестве первых двух элементов можно выбрать любые числа, но данный недостаток является существенным, поэтому любая последовательность, полученная таким образом, нам не годится. После знакомства с массой свойств последовательности чисел Фибоначчи логично ожидать, что данная

117

последовательность также обладает целым рядом математических свойств: например, каждый третий ее элемент делится на 5, а отношение соседних элементов довольно быстро приближается к фиксированному числу:

2,41421356...

то есть

(1+ 2).

(Подробнее об этом см. приложением M10).

Линейные рекурренты

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

линейными рекуррентными последовательностями степени 2. И вообще, в линейной рекуррентной последовательности k-й степени каждый следующий элемент является суммой чисел, кратных k предыдущим элементам. Так, например, если через Un обозначить n элемент последовательности, то соотношение

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

является линейным рекуррентным соотношением степени 3, а

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

является линейным рекуррентным соотношением степени 5. То, что во втором случае некоторые из пяти предыдущих элементов в соотношение не входят, значения не имеет: для вычисления элемента последовательности требуется пять предыдущих элементов, но три из них, U(n-1), U(n-2) и U(n-4) входят в соотношение с коэффициентом 0. Однако, если бы элемент U(n-5) не входил в соотношение, то оно уже не было бы соотношением 5-й степени. В нашем случае все коэффициенты - целые числа, они могут быть и положительными, и отрицательными, и нулевыми. Предполагается, что в линейном рекуррентном соотношении степени k элемент U(n-k) всегда присутствует с положительным или отрицательным, но только не нулевым коэффициентом.

118

Порядок элементов линейных рекуррентных последовательностей, как правило, растет очень быстро, и хотя у них есть интересные арифметические свойства, использовать их для криптографических целей можно только после замены значений элементов на остатки от их деления по модулю 2. То есть, элемент заменяется на 0, если значение четное, и на 1, если оно нечетное. Таким образом, получается двоичная последовательность. Вычислять элементы линейной рекурренты по модулю 2 особенно просто. Совсем не нужно сначала вычислять действительное значение элементов, а затем уже заменять их нулем или единицей. Каждое слагаемое просто заменяется на 0 или 1 в момент вычисления; затем остается только сложить несколько нулей и единиц, что гораздо проще, нежели суммировать постоянно растущие целые числа. В результате получается та же самая двоичная последовательность, как если бы мы вычисляли значение каждого элемента, а уже затем заменяли его на 0 или на 1. Так, например, линейная рекуррента степени 2

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

с начальными значениями U0=0, U1=1 выглядит так:

0, 1, 3, 7, 15, 31, 63, 127, 255, 511,....

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

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

что, без сомнения, справедливо, так как

Un = 2n-1,

и поэтому все элементы последовательности, кроме U0, нечетные.

Ясно, что эта конкретная последовательность для криптографии бесполезна в силу своей исключительной неравновероятности. Допустим, однако, что какие-то линейные двоичные последовательности нам подходят. Как их можно было бы использовать? Сначала рассмотрим практическую задачу использования последовательности двоичных знаков гаммы для шифрования.

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

Криптографу вначале необходимо преобразовать текст сообщения из

119

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

A=65=01000001,

B=66=01000010

и т.д., и

a=97=01100001,

b=98=01100010,

а символ

$=36=00100100

и

e=136=10001000.

При зашифровании символы текста, преобразованные в восьмиразрядные байты, обычно складывают с двоичной гаммой поразрядно (по модулю 2), то есть суммируются отдельные биты, без "переноса". Пусть, например, в сообщении стоит буква E, а соответствующий знак гаммы равен $, то есть

E = 01000101 $ = 00100100.

Складывая их по модулю 2, получаем

01100001=97=a,

и таким образом, буква шифрованного текста равна a.

Кроме данного линейного ("побитового") способа сложения, существуют и другие методы. Например, в главе 13 описана очень важная и стойкая система под названием DES (Data Encryption Standard - Стандарт шифрования данных США), в которой часть битов преобразуется нелинейным образом.

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