Реферат: Схемы шифрования AES, RC4, RC5, RC6, Twofish, Mars
Создание ключа (иногда называют - расширение ключа).
Алгоритм шифрования.
Алгоритм расшифровки.
Создание ключа
Ключ в RC4 представляет собой последовательность байтов произвольной длинны, по которой строится начальное состояние шифра S - перестановка всех 256 байтов. Алгоритм получения начального состояния изображен на рис.3.1.
Рис 3.1 Алгоритм получения начального состояния шифра RC4
Первоначально S заполняется последовательными значениями от 0...255. Затем каждый очередной элемент S обменивается местами с элементом , номер которого определяется элементом ключа K, самим элементом и суммой номеров элементов, с которыми происходил об мен на предыдущих итерациях.
Значения счетчиков i и с изначально равны 0. Сплошные стрелки означают передачу значений между элементами схемы ( присваивание ), двусторонние стрелки - обмен значениями, пунктирные стрелки - индексацию в массиве.
Алгоритм шифрования.
Алгоритм схематически изображен на рис. 3.2.
Рис 3.2 Алгоритм шифрования RC4
Очередной элемент псевдослучайной перестановки S всех байтов обменивается с другим, номер которого равен сумме элементов, выбрнных на предыдущих шагах. В качестве очередного байта выдается значение третьего элемента S, номер которого равен сумме первых двух. Значение счетчика x первоначально равно 0, но оно увеличивается на 1 уже перед первой выборкой S(x). Значение y первоначально равно 0. Но затем высчитывается как элемент ключа по номеру x + предыдущее значение y и вся сумма по mod 256.
Некоторые полезные свойства алгоритма RC4.
Преобразование очередного состояния генератора (S,x,y) обратимо, так что все возможные состояния повторяются с одинаковой частотой с некоторым периодом.
Поскольку S содержит каждый байт ровно один раз, маловероятно, что одни байты будут выдаваться в качестве результата чаще, чем другие.
4. Алгоритм шифрования RC5
RC5 представляет собой блочный фильтр с большим числом параметров: размером блока, размером ключа и количеством этапов. Он был изобретен Роном Ривестом и проанализирован в RSA Laboratories [1324, 1325].
Используется три действия: XOR, сложение и циклические сдвиги. На большинстве процессоров операции циклического сдвига выполняются за постоянное время, переменные циклические сдвиги являются нелинейной функцией. Эти циклические сдвиги, зависящие и от ключа, и от данных, представляют собой интересную оп е-рацию.
RC5 использует блок переменной длины, но в приводимом примере мы остановимся на 64-битовом блоке данных. Шифрование использует 2r+2 зависящих от ключа 32-битовых слов - So, Si, S2, ... S2r+i – где r - число этапов. Эти слова мы сгенерируем позднее. Для шифрования сначала блок открытого текста делится на два 32-битовых слова: А и В. (RC5 предполагает следующее соглашение по упаковке байтов в слова: первый байт занимает младшие биты регистра А, и т.д.) Затем:
A=A + S0
B = B + S1
For i = 1 to r:
A = ((AÅ B) <« B) + S2i
В = ((В Å A) <« A) + S2i+1
Результат находится в регистрах А и В.
Дешифрирование также просто. Блок открытого текста разбивается на два слова, А и В, а затем:
For i = r down to 1: