Потоковый метод шифрования RC4

Автор: Анисимова Э.С.

Журнал: Экономика и социум @ekonomika-socium

Статья в выпуске: 1-2 (14), 2015 года.

Бесплатный доступ

В статье приводится классификация криптографических методов, описание алгоритма потокового шифрования RC4.

Шифрование, потоковые методы шифрования

Короткий адрес: https://sciup.org/140110791

IDR: 140110791

Текст научной статьи Потоковый метод шифрования RC4

В свою очередь классические (одноключевые) методы шифрования делятся на две основные группы – потоковые и блочные. Потоковые методы шифруют входной поток данных посимвольно (или побитово). Шифрование каждого символа (бита) текста производится независимо от результата шифрования соседних символов (битов). Потоковые методы являются наиболее быстрыми, дешевыми и достаточно надежными методами шифрования.

Типичным представителем потокового метода шифрования является метод RC4 с переменной длиной ключа, разработанный в 1987 году Роном Ривестом из корпорации RSA Data Security, Inc. Этот метод широко используется в разных приложениях, например, в протоколе WEP для шифрования данных, передаваемым по беспроводным сетям Wi-Fi между точкой доступом (Access Point) и беспроводным адаптером на компьютере клиента. Ключом в методе RC4 является любая символьная последовательность длины до 256 байт, например, условная фраза или произвольный набор чисел. До 1994 года алгоритм RC4 держался в секрете и распространялся среди производителей под подписку о неразглашении, однако в 1994 году анонимный хакер опубликовал алгоритм метода в сети Usenet, после чего метод перестал быть секретным. Однако это не ослабило его стойкость по отношению к атакам, и по настоящее время не найдено методов взлома RC4, которые были бы значительно лучше, чем полный перебор.

Этот метод имел ограничения по экспорту для использования с ключом более 40 байт, однако, нет никаких оснований предполагать, что ключ длины 40 байт является ненадежным, поскольку 40 байт=320 бит, а полный перебор 320-битового ключа лежит далеко за пределами сегодняшних возможностей и маловероятно, что когда-нибудь окажется возможным.

Сам метод RC4 является чрезвычайно простым и легко программируется. Он состоит из начальной подготовки параметров шифрования - инициализации и собственно процесса шифрования. В ходе инициализации подготавливаются два числовых массива K и S длины 256 байт. При этом символьный ключ Key длины 64 или 128 символов кодируется в массиве S (в действительно, длина ключа здесь совершенно не влияет на работу алгоритма, и может быть принимать любое значение от 2 до 256). После этого связь между ключом Key и массивом S разрывается и в дальнейшем ключ Key не используется. Если взломщик узнает каким-нибудь образом массив S или его часть, он способен восстановить весь текст или его часть, но не сможет найти исходный ключ Key. Это позволяет использовать один и тот ключ Key многократно с разными исходными параметрами i, j, влияющими на сдвиг гаммирующей последовательности.

Инициализация

  • 1.    Определяются два массива К и S длины 256 типа Byte.

  • 2.    Выбирается ключ Key, представляющий набор символов длины не более 256 байт.

  • 3.    Заполняем массив К кодами символом из ключа Key. Если длина ключа Key меньше 256, то используем ключ несколько раз (заполняя массив K полностью).

  • 4.    Инициализация S-блока. Сначала заполним его линейно:

  • 5.    В цикле выполняем перестановку S-блока:

S(0)=0, S(1)=1, … , S(255)=255

for i = 0 to 255:

j=(j + S(i) + K(i)) mod 256

'поменять местами S(i) и S(j)

temp=S(i): S(i)=S(j): S(j)=temp

Next i

Шифрование

Организуем цикл, в котором считываем посимвольно текст, который надо закодировать, и одновременно генерируем ключевую последовательность, которая используется для сдвига символов текста:

  • ‘ инициализируем начальные значения i,j произвольными значения от 0 до 255

i=i0: j=j0

Do while not eof(1)

i = (i +1) mod 256j j=(j + Si) mod 256

‘меняем местами S(i) и S(j)

temp=S(i): S(i)=S(j): S(j)=temp t = (S(i) + S(j) mod 256

k=S(t)

‘ Считываем очередной символ из текста m = Input(1, #1)

  • ‘к ASCII-коду полученного символа m добавляет по модулю 256 элемент ключевой

‘последовательности k=S(t)

enc=(Asc(m)+k) mod 256

‘записываем в выходной поток закодированный символ write #2, enc

End Do

Отметим, что ключевую последовательность метода RC4, называют также гамма-последовательностью, а процедуру шифрования – гаммированием.

Список литературы Потоковый метод шифрования RC4

  • Anisimova E.S., Ibatullin R.R. About One Method of On-Line Signature Verification Using Radial Basis Function//Modern Applied Science. -2015. -Vol. 9, No. 1. -pp. 137-148 DOI: 10.5539/mas.v9n1p137
  • Ansimova E.S. Fractals and digital steganography//Сборник научных трудов SWorld. -Выпуск 1. Том 6. -Одесса, 2014. -ЦИТ:114-575. -С. 69-71.
  • Анисимова Э.С. Сжатие изображений с помощью квадратичных кривых Безье//Естественные и математические науки в современном мире. №1 (13). Новосибирск: Изд. "СибАК", 2014. -С. 42-46.
  • Анисимова Э.С. Формирование математической компетентности студентов психолого-педагогического направления//Сборник научных трудов SWorld. -Выпуск 4. Том 19. -Одесса, 2013. -ЦИТ:413-0295. -С. 56-58.
  • Анисимова Э.С. Фрактальное кодирование изображений//Сборник научных трудов SWorld. -Выпуск 3. Том 4. -Одесса, 2013. -ЦИТ:313-0589. -С. 79-81.
  • Анисимова Э.С. Определение кредитоспособности физического лица в аналитическом пакете Deductor (BaseGroup)//Сборник научных трудов Sworld, 2014. -Т. 23. № 2. С. -78-81.
  • Филипов А.Ф., Анисимова Э.С. Калькулятор для работы с комплексными числами//Сборник научных трудов Sworld, 2014. -Т. 29. №2. -С. 47-50.
  • Тимофеев Д.С., Анисимова Э.С. Разработка электронного образовательного ресурса на площадке «Тулпар» системы дистанционного обучения КФУ//Сборник научных трудов Sworld, 2014. -Т.7. №2. -С.80-83.
  • Анисимова Э.С. Идентификация онлайн-подписи с помощью оконного преобразования Фурье и радиального базиса//Компьютерные исследования и моделирование, 2014. -Т. 6. № 3. -С. 357-364.
  • Анисимова Э.С. Идентификация подписи с использованием радиального базиса//Фундаментальные исследования, 2014. № 9-6. -С. 1185-1189.
  • Кобелев И.А., Иванова Л.В., Чекушина В.Е. Два типа языков программирования//Современные проблемы науки и образования. 2014. № 4. С. 56.
Еще
Статья научная