- •Основные этапы становления криптографии как науки
- •Простейшие шифры, их свойства. Шифры замены и перестановки.
- •3. Открытые сообщения и их характеристики.
- •4. Частотные характеристики открытых сообщений.
- •5. Критерии на открытые сообщения.
- •6. Основные понятия криптографии
- •7. Криптосистема, ключевая система шифра, основные требования к криптосистемам.
- •8. Шифр перестановки. Разновидности.
- •9. Криптоанализ шифров перестановки.
- •10. Шифр замены, одноалфавитные и многоалфавитные замены.
- •11. Вопросы криптоанализа простейших шифров замены.
- •12. Поточные шифры замены.
- •13. Табличное и модульное гаммирование. Случайные и псевдослучайные гаммы.
- •14. Криптограммы, полученные при повторном использовании ключа.
- •Вопрос 15. Математическая модель шифра. Опорный шифр.
- •Вопрос 16. Шифр с неограниченным ключом
- •Вопрос 17. Модель шифра с ограниченным ключом.
- •18. Шифры совершенные по Шенону.
- •19.Теоретическая стойкость шифра с позиции теории информации.
- •20. Безусловно и вычислительно стойкие шифры. Избыточность языка и расстояние единственности.
- •21. Имитостойкость шифра. Имитация и подмена сообщений.
- •22. Характеристики имитостойкости. Методы обеспечения имитостойкости.
- •23. Совершенная имитостойкость.
- •24. Линейные регистры сдвига
- •25. Помехоустойчивость шифров. Характеристики помехоустойчивых шифров.
- •26. Основные способы реализации криптографических алгоритмов и требования к ним.
- •27. Методы получения случайных и псевдослучайных последовательностей.
- •28. Методы анализа криптоалгоритмов. Понятие криптоатаки.
- •29. Методы анализа криптоалгоритмов. Перебор ключей
- •30. Методы анализа криптоалгоритмов. Метод встречи посередине.
- •31. Методы анализа криптоалгоритмов. Бесключевые методы.
- •32. Система шифрования с открытым ключом. Понятие односторонней функции с секретом.
- •33. Криптосистемы rsa.
- •34. Криптосистема Эль-Гамаля.
- •35. Проблема факторизации целых чисел и логарифмирование в конечных полях.
- •36. Американский стандарт шифрования des
- •37. Российский стандарт шифрования гост 28147-89
- •38. Шифр rc4
- •39. Шифр Rijndael. Математические основы работы.
- •40. Шифр Rijndael. Работа с байтами состояния.
- •41. Шифр Rijndael. Алгоритм выработки ключей.
- •43. Криптографические протоколы. Модели криптографических протоколов.
- •Классификация
- •44. Электронная цифровая подпись. Стандарты эцп.
- •45. Математические основы шифрсистем на эллиптических кривых.
- •46. Свойства множества точек эллиптической кривой.
- •47. Выбор параметров на эллиптической кривой. Шифр Эль-Гамаля на эллиптической кривой.
- •48.Эцп на базе эллиптической кривой.
- •49. Протоколы установления подлинности. Парольные системы разграничения доступа.Протокол рукопожатия.
- •50. Криптосистема на алгоритме а5
- •51. Протоколы сертификации ключей. Протоколы распределения ключей.
- •52. Протоколы выработки сеансовых ключей. Открытое распределение ключей Диффи-Хеллмана.
38. Шифр rc4
RC4 (англ. Rivest Cipher 4 или англ. Ron’s Code, также известен как ARCFOUR или ARC4 (англ. Alleged RC4)) — это потоковый шифр, широко применяющийся в различных системах защиты информации в компьютерных сетях (например, в протоколах SSL и TLS, алгоритме безопасности беспроводных сетей WEP, для шифрования паролей вWindows NT).
Шифр разработан компанией RSA Security и для его использования требуется лицензия.
Алгоритм RC4 строится как и любой потоковый шифр на основе параметризованного ключом генератора псевдослучайных битов с равномерным распределением. Длина ключа может составлять от 40 до 256 бит[1].
Основные преимущества шифра — высокая скорость работы и переменный размер ключа. RC4 довольно уязвим, если используются не случайные или связанные ключи, один ключевой поток используется дважды. Эти факторы, а также способ использования могут сделать криптосистему небезопасной (например WEP).
Описание алгоритма
Генератор ключевого потока RC4
Ядро алгоритма состоит из функции генерации ключевого потока. Эта функция генерирует последовательность битов ( ), которая затем объединяется с открытым текстом ( ) посредством суммирования по модулю два. Так получается шифрограмма ( ):
.
Расшифровка заключается в регенерации этого ключевого потока ( ) и сложении его и шифрограммы ( ) по модулю два. В силу свойств суммирования по модулю два на выходе мы получим исходный незашифрованный текст( ):
Другая главная часть алгоритма — функция инициализации, которая использует ключ переменной длины для создания начального состояния генератора ключевого потока.
RC4 — фактически класс алгоритмов, определяемых размером его блока. Этот параметр n является размером слова для алгоритма. Обычно, n = 8, но в целях анализа можно уменьшить его. Однако для повышения безопасности необходимо увеличить эту величину. Внутреннее состояние RC4 представляется в виде массива слов размером 2n и двух счетчиков, каждый размером в одно слово. Массив известен как S-бокс, и далее будет обозначаться как S. Он всегда содержит перестановку 2n возможных значений слова. Два счетчика обозначены через 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 ]