Практическая работа №8
Тема. Создание программы шифрования и дешифрования данных на основе алгоритма шифрования RC4
Поточный или Потоковый шифр — это симметричный шифр, в котором каждый символ открытого текста преобразуется в символ шифрованного текста в зависимости не только от используемого ключа, но и от его расположения в потоке открытого текста. Поточный шифр реализует другой подход к симметричному шифрованию, нежели блочные шифры.
Потоковые шифры на базе сдвиговых регистров активно использовались в годы войны, ещё задолго до появления электроники. Они были просты в проектировании и реализации.
В 1965 году Эрнст Селмер, главный криптограф норвежского правительства, разработал теорию последовательности сдвиговых регистров. Позже Соломон Голомб, математик Агентства Национальной Безопасности США, написал книгу под названием «Shift Register Sequences» («Последовательности сдвиговых регистров»), в которой изложил свои основные достижения в этой области, а также достижения Селмера.
Большую популярность потоковым шифрам принесла работа Клода Шеннона, опубликованная в 1949 году, в которой Шеннон доказал абсолютную стойкость шифра Вернама (также известного, как одноразовый блокнот). В шифре Вернама ключ имеет длину, равную длине самого передаваемого сообщения. Ключ используется в качестве гаммы, и если каждый бит ключа выбирается случайно, то вскрыть шифр невозможно (т.к. все возможные открытые тексты будут равновероятны). К настоящему времени создано большое количество алгоритмов потокового шифрования, таких как: A3, A5, A8, MUGI, PIKE, RC4, SEAL, ORION, Decim, MICKEY, Rabbit, Salsa20, SOSEMANUK, Trivium, VMPC, KCipher-2.
Алгоритм RC4
RC4 – это потоковый шифр с переменным размером ключа, разработанный в 1987 году Роном Ривестом для RSA Data Security, Inc. В течении семи лет он являлся собственностью компании, и подробное описание алгоритма предоставлялось только после подписания соглашения о неразглашении.
В сентябре 1994 года кто-то анонимно опубликовал исходный код в списке рассылки шифропанков.
Описать RC4 несложно. Алгоритм работает в режиме OFB, т.е. гамма не зависит от открытого текста. Используется S-блок размером 8*8: S0,S1,...S255. Элементы представляют собой перестановку чисел от 0 до 255, а перестановка зависит от ключа переменной длины. В алгоритме применяются два счетчика i и j с нулевыми начальными значениями.
Чтобы сгенерировать случайный байт, выполните следующие операции:
• i=(i+1)mod256
• j=(j+Si)mod256
• Поменяйте местами Si и Sj.
• t=(Si+Sj)mod256
• K=St
Do'stlaringiz bilan baham: |