Смекни!
smekni.com

по дисциплине «Информационная безопасность» Тема: «Стандарты для алгоритмов симметричного шифрования» (стр. 1 из 2)

Федеральное агентство по образованию РФ

Российский государственный университет инновационных технологий и предпринимательства (РГУИТП)

Северный филиал

Реферат по дисциплине

«Информационная безопасность»

Тема: «Стандарты для алгоритмов симметричного шифрования»

Выполнил студент группы И411 ______________ И.И. Попов "____"_________ 2008 г.

Великий Новгород

Алгоритм ГОСТ 28147

Алгоритм ГОСТ 28147 является отечественным стандартом для алгоритмов симметричного шифрования. ГОСТ 28147 разработан в 1989 году, является блочным алгоритмом шифрования, длина блока равна 64 битам, длина ключа равна 256 битам, количество раундов равно 32. Алгоритм представляет собой классическую сеть Фейштеля.

Li = Ri-1Ri = Li
f (Ri-1, Ki)

Функция F проста. Сначала правая половина и i-ый подключ складываются по модулю 232. Затем результат разбивается на восемь 4-битовых значений, каждое из которых подается на вход S-box. ГОСТ 28147 использует восемь различных S-boxes, каждый из которых имеет 4-битовый вход и 4-битовый выход. Выходы всех S-boxes объединяются в 32-битное слово, которое затем циклически сдвигается на 11 битов влево. Наконец, с помощью XOR результат объединяется с левой половиной, в результате чего получается новая правая половина.


Рис. 3.7. I-ый раунд ГОСТ 28147

Генерация ключей проста. 256-битный ключ разбивается на восемь 32-битных подключей. Алгоритм имеет 32 раунда, поэтому каждый подключ используется в четырех раундах по следующей схеме:

Раунд 1 2 3 4 5 6 7 8
Подключ 1 2 3 4 5 6 7 8
Раунд 9 10 11 12 13 14 15 16
Подключ 1 2 3 4 5 6 7 8
Раунд 17 18 19 20 21 22 23 24
Подключ 1 2 3 4 5 6 7 8
Раунд 25 26 27 28 29 30 31 32
Подключ 8 7 6 5 4 3 2 1

Считается, что стойкость алгоритма ГОСТ 28147 во многом определяется структурой S-boxes. Долгое время структура S-boxes в открытой печати не публиковалась. В настоящее время известны S-boxes, которые используются в приложениях Центрального Банка РФ и считаются достаточно сильными. Напомню, что входом и выходом S-box являются 4-битные числа, поэтому каждый S-box может быть представлен в виде строки чисел от 0 до 15, расположенных в некотором порядке. Тогда порядковый номер числа будет являться входным значением S-box, а само число - выходным значением S-box.

1-ый S-box 4 10 9 2 13 8 0 14
6 11 1 12 7 15 5 3
2-ой S-box 14 11 4 12 6 13 15 10
2 3 8 1 0 7 5 9
3-ий S-box 5 8 1 13 10 3 4 2
14 15 12 7 6 0 9 11
4-ый S-box 7 13 10 1 0 8 9 15
14 4 6 12 11 2 5 3
5-ый S-box 6 12 7 1 5 15 13 8
4 10 9 14 0 3 11 2
6-ой S-box 4 11 10 0 7 2 1 13
3 6 8 5 9 12 15 14
7-ой S-box 13 11 4 1 3 15 5 9
0 10 14 7 6 8 2 12
8-ой S-box 1 15 13 0 5 7 10 4
9 2 3 14 6 11 8 12

Основные различия между DES и ГОСТ 28147 следующие:

  • DES использует гораздо более сложную процедуру создания подключей, чем ГОСТ 28147. В ГОСТ эта процедура очень проста.
  • В DES применяется 56-битный ключ, а в ГОСТ 28147 - 256-битный. При выборе сильных S-boxes ГОСТ 28147 считается очень стойким.
  • У S-boxes DES 6-битовые входы и 4-битовые выходы, а у S-boxes ГОСТ 28147 4-битовые входы и выходы. В обоих алгоритмах используется по восемь S-boxes, но размер S-box ГОСТ 28147 существенно меньше размера S-box DES.
  • В DES применяются нерегулярные перестановки Р, в ГОСТ 28147 используется 11-битный циклический сдвиг влево. Перестановка DES увеличивает лавинный эффект. В ГОСТ 28147 изменение одного входного бита влияет на один S-box одного раунда, который затем влияет на два S-boxes следующего раунда, три S-boxes следующего и т.д. В ГОСТ 28147 требуется 8 раундов прежде, чем изменение одного входного бита повлияет на каждый бит результата; DES для этого нужно только 5 раундов.
  • В DES 16 раундов, в ГОСТ 28147 - 32 раунда, что делает его более стойким к дифференциальному и линейному криптоанализу.

Алгоритм Blowfish

Blowfish является сетью Фейштеля, у которой количество итераций равно 16. Длина блока равна 64 битам, ключ может иметь любую длину в пределах 448 бит. Хотя перед началом любого шифрования выполняется сложная фаза инициализации, само шифрование данных выполняется достаточно быстро.

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

Алгоритм состоит из двух частей: расширение ключа и шифрование данных. Расширение ключа преобразует ключ длиной, по крайней мере, 448 бит в несколько массивов подключей общей длиной 4168 байт.

В основе алгоритма лежит сеть Фейштеля с 16 итерациями. Каждая итерация состоит из перестановки, зависящей от ключа, и подстановки, зависящей от ключа и данных. Операциями являются XOR и сложение 32-битных слов.

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

  1. Р - массив, состоящий из восемнадцати 32-битных подключей:
Р1, Р2, ..., Р18.
  1. Четыре 32-битных S-boxes c 256 входами каждый. Первый индекс означает номер S-box, второй индекс - номер входа.
3. S1,0, S1,1, … S1,255;4. S2,0, S2,1, … S2,255;5. S3,0, S3,1, … S3,255;6. S4,0, S4,1, … S4,255;

Метод, используемый для вычисления этих подключей, будет описан ниже.

Шифрование

Входом является 64-битный элемент данных X, который делится на две 32-битные половины, Xl и Xr.

Xl = Xl XOR PiXr = F (Xl) XOR XrSwap Xl and Xr

Функция F

Разделить Xl на четыре 8-битных элемента A, B, C, D.

F (Xl) = ((S1,А + S2,B mod 232) XOR S3,C) + S4,D mod 232

Дешифрование отличается от шифрования тем, что Pi используются в обратном порядке.

Генерация подключей

Подключи вычисляются с использованием самого алгоритма Blowfish.

  1. Инициализировать первый Р-массив и четыре S-boxes фиксированной строкой.
  2. Выполнить операцию XOR P1 с первыми 32 битами ключа, операцию XOR P2 со вторыми 32 битами ключа и т.д. Повторять цикл до тех пор, пока весь Р-массив не будет побитово сложен со всеми битами ключа. Для коротких ключей выполняется конкатенация ключа с самим собой.
  3. Зашифровать нулевую строку алгоритмом Blowfish, используя подключи, описанные в пунктах (1) и (2).
  4. Заменить Р1 и Р2 выходом, полученным на шаге (3).
  5. Зашифровать выход шага (3), используя алгоритм Blowfish с модифицированными подключами.
  6. Заменить Р3 и Р4 выходом, полученным на шаге (5).
  7. Продолжить процесс, заменяя все элементы Р-массива, а затем все четыре S-boxes, выходами соответствующим образом модифицированного алгоритма Blowfish.

Для создания всех подключей требуется 521 итерация.

Алгоритм IDEA

IDEA (International Data Encryption Algorithm) является блочным симметричным алгоритмом шифрования, разработанным Сюдзя Лай (Xuejia Lai) и Джеймсом Массей (James Massey) из швейцарского федерального института технологий. Первоначальная версия была опубликована в 1990 году. Пересмотренная версия алгоритма, усиленная средствами защиты от дифференциальных криптографических атак, была представлена в 1991 году и подробно описана в 1992 году.

IDEA является одним из нескольких симметричных криптографических алгоритмов, которыми первоначально предполагалось заменить DES.

Принципы разработки

IDEA является блочным алгоритмом, который использует 128-битовый ключ для шифрования данных блоками по 64 бита.

Целью разработки IDEA было создание относительно стойкого криптографического алгоритма с достаточно простой реализацией.