Читайте также: |
|
Ядро алгоритма состоит из функции генерации ключевого потока. Эта функция генерирует последовательность битов, которая затем объединяется с открытым текстом посредством суммирования по модулю два. Расшифровка состоит из регенерации этого ключевого потока и суммирования его с шифрограммой по модулю два, восстанавливая исходный текст. Другая главная часть алгоритма — функция инициализации, которая использует ключ переменной длины для создания начального состояния генератора ключевого потока.
Идеальным вариантом с точки зрения стойкости для потокового шифра, является размер ключа, сопоставимый с размером шифруемых данных. Тогда каждый бит открытого текста объединяется с соответствующим битом ключа посредством суммирования по модулю 2 (XOR), образуя зашифрованную последовательность. Для расшифровки требуется проделать ту же операцию еще раз на принимающей стороне.
При условии, что последовательность битов ключа выбирается произвольно и не имеет периодов, взломать шифр невозможно, но возникает проблема передачи длинного ключа. Поэтому на практике для генерации ключевого потока используется генератор псевдослучайных чисел на основе заданного ключа. То есть мы расширяем наш ключ до любого размера (динамически, во время обработки входных данных) и XOR'ом объединяем его с входными данными.
Другая главная часть алгоритма — функция инициализации, которая использует ключ переменной длины для создания начального состояния генератора ключевого потока.
RC4 — фактически класс алгоритмов, определяемых размером его блока. Этот параметр n является размером слова для алгоритма. Обычно, n = 8, но в целях анализа можно уменьшить его. Однако для повышения безопасности необходимо увеличить эту величину. Внутреннее состояние RC4 представляется в виде массива слов размером 2 n и двух счетчиков, каждый размером в одно слово. Массив известен как S-бокс, и далее будет обозначаться как S. Он всегда содержит перестановку 2 n возможных значений слова. Два счетчика обозначены через i и j.
Алгоритм инициализации RC4 приведен ниже. Этот алгоритм также называется алгоритмом ключевого расписания (англ. Key-Scheduling Algorithm or KSA). Этот алгоритм использует ключ, сохраненный в Key, и имеющий длину L байт. Инициализация начинается с заполнения массива S, далее этот массив перемешивается путем перестановок, определяемых ключом. Так как только одно действие выполняется над S, то должно выполняться утверждение, что S всегда содержит все значения кодового слова.
Начальное заполнение массива:
for i = 0 to 2n − 1
S[ i ] = i
Скремблирование:
j = 0
for i = 0 to 2n − 1
j = (j + S[ i ] + Key[ i mod L ]) mod 2n
Перестановка(S[ i ], S[ j ])
Генератор ключевого потока RC4 переставляет значения, хранящиеся в S, и каждый раз выбирает различное значение из S в качестве результата. В одном цикле RC4 определяется одно n -битное слово K из ключевого потока, которое в последующем суммируется с исходным текстом для получения зашифрованного текста. Эта часть алгоритма называется генератором псевдослучайной последовательности (англ. Pseudo-Random Generation Algorithm or PRGA).
Инициализация:
i = 0
j = 0
Цикл генерации:
i = (i + 1) mod 2n
j = (j + S[ i ]) mod 2n
Перестановка(S[ i ], S[ j ])
Результат: K = S[ (S[ i ] + S[ j ]) mod 2n ]
Некоторые полезные свойства алгоритма RC4.
· простой алгоритм, назначение каждого шага которого объяснимо и логично;
· возможность изменения разрядности; например, реализация 4-разрядного варианта RC4 позволяет провести исчерпывающее исследование алгоритма;
· оригинальная процедура разворачивания ключа, приводящая к созданию таблицы замен 5-блока приемлемого качества; процедура может использоваться в других приложениях отдельно от основного алгоритма.
· Преобразование очередного состояния генератора (S,x,y) обратимо, так что все возможные состояния повторяются с одинаковой частотой с некоторым периодом.
· Поскольку S содержит каждый байт ровно один раз, маловероятно, что одни байты будут выдаваться в качестве результата чаще, чем другие.
Дата добавления: 2015-10-28; просмотров: 161 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Современные потоковые шифры и их применение. | | | Идея криптосистемы с открытым ключом |