3) Для расшифрования 10-байтового блока:
а) Выполнить XOR для десятого байта блока данных и десятого байта M2. Выбрать ключ из таблицы ключей, рассчитанной на 1 этапе, используя вычисленное значение в качестве индекса таблицы. Выполнить XOR каждого, кроме десятого, байта блока данных с соответствующим байтом выбранного ключа.
б) Выполнить XOR для девятого байта блока данных и девятого байта M2. Выбрать ключ из таблицы ключей, рассчитанной на 1 этапе, используя вычисленное значение в качестве индекса таблицы. Выполнить XOR каждого, кроме девятого, байта блока данных с соответствующим байтом выбранного ключа.
в) Продолжать для всего блока данных (для байтов с 8 по 1), пока каждый байт не будет использован для выбора ключа из таблицы после выполнения для него XOR с соответствующим значением M2. Затем выполнить XOR с ключом для каждого, кроме использованного для выбора ключа, байта.
г) Повторить для M1 этапы (а) – (в).
Задание:
Используя алгоритм шифрования данных REDOC, написать программу шифрования и дешифрования произвольного набора символов на любом языке программирования.
Порядок выполнения работы:
написать на языке программирования функцию шифрования, в которую в качестве параметров передается ключ и символ (или строка символов) исходного текста.
написать функцию дешифрования, в которую в качестве параметров передается ключ и символ (или строка символов) зашифрованного текста.
4
Оформление отчета:
В отчете следует привести краткие теоретические сведения. Кроме того, должны быть представлены: краткая блок-схема, текст программы, шифруемый набор символов, результаты выполнения программы.
Контрольные вопросы:
1.В чем заключается суть метода шифрования
REDOC?
2.Какой характерной особенностью обладает
REDOC III?
3.Что используется в качестве таблицы ключей?
4.Поясните общую схему симметричного шифрования.
5.Что общего имеют все методы шифрования с закрытым ключом?
6.Назовите основные группы методов шифрования с закрытым ключом.
7.Приведите примеры шифров перестановки.
8.Сформулируйте общие принципы для методов шифрования подстановкой.
5
Практическая работа № 2 Шифрование данных с помощью генератора Геффе
Цель работы: изучить методы шифрования данных в алгоритме Геффе и освоить их практическое применение.
Теоретическ ое введение
В этом генераторе потока ключей используются три LFSR, объединенные нелинейным образом. Два LFSR являются входами мультиплексора, а третий LFSR управляет выходом мультиплексора. Если а1, а2 и а3 - выходы трех LFSR, выход генератора Геффе можно описать как:
b = (a1 ^ a2) XOR ((¬a1) ^ a3)
Если длины LFSR равны n1, n2 и n3, соответственно, то линейная сложность генератора равна
(n1 + 1)n2 + n1n3
Период генератора равен наименьшему общему кратному периодов трех генераторов. При условии, что степени трех примитивных многочленов обратной связи взаимно просты, период этого генератора будет равен произведению периодов трех LFSR. Этот генератор криптографически слаб и не может устоять против корреляционного вскрытия. В 75 процентах времени выход генератора равен выходу LFSR-2.
Поэтому, если известны отводные последовательности обратной связи, можно догадаться о начальном значении LFSR-2 и сгенерировать выходную последовательность этого регистра. Тогда можно подсчитать, сколько раз выход LFSR совпадает с выходом генератора. Если начальное значение определено неверно, две последовательности будут согласовываться в 50 процентах времени, а если правильно, то в 75 процентах времени.
6
С такими корреляциями генератор потока ключей может быть легко взломан. Например, если примитивные многочлены состоят только из трех членов, и длина самого большого LFSR равна n, для восстановления внутренних состояний всех трех LFSR нужен фрагмент выходной последовательности длиной 37n битов.
Обобщенный генератор Геффе
Вместо выбора между двумя LFSR в этой схеме выбирается один из n LFSR, где n является степенью 2. Всего используется n + 1 LFSR (рис. 1). Тактовая частота LFSR-1 должна быть в log2 n раз выше, чем у остальных n LFSR.
Рис. 1. Обобщенный генератор Геффе.
Несмотря на то, что эта схема сложнее генератора Геффе, для взлома можно использовать то же корреляционное вскрытие.
7
Описание алгоритма решения задачи
Решение данной задачи можно разбить на следующие
этапы.
На первом этапе задаются входные условия, а именно:
первоначальные состояния для трех регистров сдвига;
примитивные многочлены, на основе которых будут формироваться последовательности LFSR;
необходимая длина генерируемой последовательности;
список возможных используемых примитивных многочленов.
На следующем этапе рассчитываются линейная сложность и период генерируемой последовательности. Сложность рассчитывается по линейной формуле
(n1 + 1)n2 + n1n3.
Для нахождения периода генерируемой последовательности, рассчитываются периоды трех последовательностей LFSR, а потом находится их наименьшее общее кратное.
На третьем этапе реализуется сам алгоритм Геффе. Генерируются выходные биты следующего состояния LFSRпоследовательностей. Для этого согласно выбранным примитивным многочленам складываются биты текущего состояния LFSR, получившийся результат записывается старшим битом, а младший бит является результатом генерации нового состояния для данной LFSR. Полученные результаты трех LFSR подставляются в формулу
b = (a1 ^ a2) XOR ((¬a1) ^ a3),
8