Потоковый метод шифрования 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.