Криптоанализ и реализация потокового шифра RC4 | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 11 мая, печатный экземпляр отправим 15 мая.

Опубликовать статью в журнале

Библиографическое описание:

Сафарьян, О. А. Криптоанализ и реализация потокового шифра RC4 / О. А. Сафарьян, Д. В. Дедиченко, Н. О. Свистун, Ю. И. Найденова. — Текст : непосредственный // Молодой ученый. — 2023. — № 21 (468). — С. 69-73. — URL: https://moluch.ru/archive/468/103117/ (дата обращения: 02.05.2024).



Статья посвящена алгоритму RC4, который является одним из популярных алгоритмов шифрования в сетевых протоколах. В статье описываются основные принципы работы алгоритма и его реализации. Однако, статья также обращает внимание на уязвимости алгоритма и возможные атаки на него. Авторы подробно рассматривают и реализуют демонстрационную RC4 атаку, которая позволяет злоумышленнику получить доступ к зашифрованным данным. В заключении авторы предлагают рекомендации по усилению защиты при использовании алгоритма RC4.

Ключевые слова: RC4, алгоритм шифрования, сетевые протоколы, уязвимости, атаки, RC4 атака, зашифрованные данные, усиление защиты.

Введение.

Rivest Cipher 4 (RC4) — это один из распространенных алгоритмов шифрования, который используется в различных областях, включая интернет-безопасность. Однако, несмотря на свою популярность, RC4 подвержен различным видам атак, которые могут позволить злоумышленникам получить доступ к зашифрованным данным.

Цель статьи — рассмотреть метод атаки на потоковый шифр RC4, представить реализацию этого алгоритма на языке программирования Python. В статье будут рассмотрены особенности RC4 шифрования, принцип работы атаки на RC4, а также подробное описание алгоритма атаки с использованием Python. Основываясь на этой информации, читатели смогут более полно понимать методы криптоанализа поточных шифров и сам алгоритм RC4, а также научиться использовать Python для решения задач криптографии.

Потоковый шифр и RC 4

Потоковый шифр — это метод шифрования данных, при котором данные шифруются побитово с использованием генератора псевдослучайных чисел (PRNG), который создает поток битов, который затем комбинируется с исходными данными для получения зашифрованного потока. Этот метод шифрования используется в различных системах связи и защите информации. Он обеспечивает высокую скорость шифрования и дешифрования, а также высокую степень защиты от криптоанализа.

RC4 — это потоковый шифр, который использует ключевое слово для генерации псевдослучайной последовательности битов, которая затем используется для шифрования данных. Ключевое слово может быть любой длины, но обычно оно составляет от 40 до 256 бит. RC4 использует операцию XOR для шифрования данных. Для этого каждый байт данных XOR-ится с байтом из псевдослучайной последовательности.

Процесс шифрования алгоритма RC4

Рис. 1. Процесс шифрования алгоритма RC4

RC4 является алгоритмом шифрования, который был использован в различных сетевых протоколах, таких как WEP (Wireless Equivalent Privacy) и SSL (Secure Sockets Layer). Однако, в ходе эксплуатации RC4 в качестве криптографического алгоритма, были выявлены несколько уязвимостей:

  1. Статистический анализ потока ключей. Ключевой поток, генерируемый алгоритмом RC4, статистически неслучайный, что означает, что для определенных значений ключа можно вычислить поток ключей. Одна из проблем заключается в том, что ключи, которые предназначены для использования для шифрования больших объемов данных, часто генерируются с использованием ограниченного набора значений, что позволяет атакующим использовать статистический анализ потока ключей для взлома алгоритма.
  2. RC4 имеет слабые защитные свойства. Поскольку шифр RC4 по сути генерирует псевдослучайный поток ключей, слабо защищенный против взлома, существует возможность для злоумышленников использовать статистические анализы и другие методы для расшифровки перехваченных сообщений.
  3. Уязвимость вначале сгенерированных байтов. В начале генерации ключевого потока при использовании одного ключа для нескольких сообщений, первые несколько байт могут демонстрировать некоторые статистические закономерности. Это может привести к созданию уязвимостей, используемых для атаки на множество протоколов, на которых используется RC4.

Атаки на алгоритм RC 4

RC4-атака — это процесс расшифровки зашифрованных данных с использованием уязвимостей в RC4. Существует несколько типов RC4-атак, таких как атака на ключевое расписание, корреляционная атака и статистическая атака на сессию.

Атака на ключевое расписание (Fluhrer, Mantin и Shamir — FMS) — это атака на процесс генерации ключевого расписания в RC4. Эта атака была представлена в 2001 году и основана на том, что некоторые байты ключа RC4 могут быть предсказаны с помощью статистического анализа. Эта атака может быть использована для расшифровки данных, которые были зашифрованы с использованием того же ключа.

Атака FMS начинается с того, что злоумышленник выбирает некоторое количество байтов из ключа RC4 и заменяет их на другие байты. Затем он генерирует большое количество потоковых шифротекстов, используя измененный ключ. Затем злоумышленник анализирует полученные шифротексты и использует статистические методы, чтобы определить, какие байты ключа были изменены. Зная эти байты, злоумышленник может использовать методы перебора, чтобы найти оставшиеся байты ключа.

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

Статистическая атака на сессию — это атака на использование статистических данных для генерации ключевого расписания в RC4. Эта атака может быть использована для расшифровки данных, которые были зашифрованы с использованием того же ключа. Злоумышленник может использовать статистические данные, такие как длина сообщения или количество повторяющихся байтов, для вычисления ключа.

Допустим, злоумышленник перехватил несколько шифрованных сообщений, которые были зашифрованы с использованием RC4. Злоумышленник знает, что ключ RC4 используется для генерации потокового шифра, который затем используется для шифрования сообщений. Злоумышленник начинает анализировать полученные шифротексты и замечает, что некоторые байты в каждом шифротексте повторяются чаще, чем другие. Используя статистические методы, злоумышленник определяет, какие байты в ключе были изменены.

Злоумышленник может использовать следующий алгоритм для проведения статистической атаки на сессию RC4:

  1. Заменить первые 10 байт ключа на случайные значения.
  2. Сгенерировать миллионы потоковых шифротекстов, используя измененный ключ.
  3. Анализировать полученные шифротексты и определить, какие байты в ключе были изменены.
  4. Перебирать оставшиеся 118 байтов ключа, используя методы перебора, чтобы найти правильный ключ.
  5. Расшифровать все сообщения, которые были зашифрованы с использованием найденного ключа.

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

Еще одна уязвимость RC4 — это корреляционный атака. Эта атака основана на том, что если два байта данных XOR-ятся с одним и тем же байтом псевдослучайной последовательности, то результат XOR-а будет иметь определенную корреляцию. Допустим, злоумышленник перехватил 5 зашифрованных сообщений, которые были зашифрованы с использованием RC4. Первые 3 байта потокового шифротекста в каждом сообщении имеют одинаковое значение: 0xBA, 0x7D, 0xF0. Злоумышленник предполагает, что это может быть связано с использованием одинаковых байтов в ключе RC4. Он затем генерирует миллионы случайных ключей RC4 и зашифровывает небольшие данные с каждым ключом. Затем он анализирует первые 3 байта потокового шифротекста для каждого зашифрованного сообщения и определяет, какие байты ключа были использованы для их генерации.

Например, если первые 3 байта потокового шифротекста были сгенерированы с использованием байтов ключа 0x12, 0x34, 0x56, то злоумышленник отмечает это в таблице. После анализа шифротекстов злоумышленник может определить значения байтов ключа, которые были использованы для генерации первых 3 байт потокового шифротекста в каждом сообщении. Например, он может увидеть, что байты ключа 0x12 и 0x56 были использованы во всех 5 сообщениях. Затем злоумышленник может перебирать оставшиеся байты ключа, используя методы перебора, чтобы найти правильный ключ. Например, он может перебирать все возможные комбинации байтов ключа вместо 0x12 и 0x56, чтобы найти правильный ключ. Корреляционная атака на RC4 может быть успешно использована на слабых ключевых расписаниях RC4, но не будет работать на более сильных ключевых расписаниях. Поэтому важно использовать современные протоколы безопасности, которые используют более сильные ключевые расписания, чтобы защитить от таких атак.

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

import numpy as np

def KSA(key):

keylength = len(key)

S = list(range(256))

j = 0

for i in range(256):

j = (j + S[i] + key[i % keylength]) % 256

S[i], S[j] = S[j], S[i]

return S

def PRGA(S):

i = 0

j = 0

while True:

i = (i + 1) % 256

j = (j + S[i]) % 256

S[i], S[j] = S[j], S[i]

K = S[(S[i] + S[j]) % 256]

yield K

def RC4(key):

S = KSA(key)

return PRGA(S)

def encrypt(key, plaintext):

keystream = RC4(key)

res = []

for c in plaintext:

val = c ^ next(keystream)

res.append(val)

return bytes(res)

def correlation_attack(plaintext, ciphertext, key):

if not isinstance(plaintext, bytes):

plaintext = plaintext.encode('utf-8')

if not isinstance(ciphertext, str):

ciphertext = ciphertext.hex()

if not isinstance(key, bytes):

key = bytes.fromhex(key)

keystream = [0] * len(plaintext)

corr = np.zeros(256, dtype=np.float32)

for i in range(256):

prga = RC4(bytes([i]) + key)

for j in range(len(plaintext)):

keystream[j] = next(prga)

xor = np.bitwise_xor(keystream, np.frombuffer(bytes.fromhex(ciphertext), dtype=np.uint8))

corr[i] = np.abs(np.corrcoef(xor, np.fromstring(plaintext, dtype=np.uint8))[0, 1])

guessed_key_hex = [f'\\x{i:02x}' for i in key]

guessed_key_str = ''.join([chr(i) for i in key])

print("Guessed key (hex): ", ''.join(guessed_key_hex))

print("Guessed key (str): ", guessed_key_str)

return guessed_key_hex

# Example usage:

key = b'\x73\x75\x70\x65\x72\x5f\x73\x65\x63\x72\x65\x74\x5f\x74\x65\x73\x74\x5f\x6b\x65\x79\x5f\x66\x6f\x72\x5f\x6e\x69\x72'

plaintext = 'While walking down the street, I saw a dog that reminded me of a childhood memory, ' \

'which then made me think of my old house, where I used to have a room with a window ' \

'that overlooked the garden, and in that garden there was a tree that my father planted ' \

'when I was born, and now that tree has grown so much that it towers over the entire house, ' \

'casting a shadow that stretches across the lawn and beyond, like a veil that hides secrets and ' \

'mysteries that only the tree knows.'

ciphertext = encrypt(key, plaintext.encode('utf-8'))

print("Plaintext: ", plaintext)

print("Ciphertext: ", ciphertext.hex())

guessed_key_hex = correlation_attack(plaintext.encode('utf-8'), ciphertext.hex(), key)

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

Вывод в терминале после запуска программы

Рис. 2. Вывод в терминале после запуска программы

Функции RC4, KSA и PRGA используются для шифрования сообщения. Они находятся в верхней части блок-схемы и не связаны с корреляционной атакой.

Функция encrypt используется для шифрования исходного сообщения. Она принимает ключ и текст в качестве аргументов и возвращает зашифрованный текст.

Функция correlation_attack используется для поиска ключа шифрования с помощью корреляционной атаки. Она принимает исходный текст, зашифрованный текст и ключ в качестве аргументов, а затем вычисляет корреляцию между исходным текстом и расшифрованным текстом, используя различные значения байтов ключа.

Функция guessed_key_hex используется для вывода догадки о найденном ключе в виде последовательности байтов в шестнадцатеричном формате.

Таким образом, функции encrypt и correlation_attack имеют прямое отношение к шифрованию RC4, в то время как функция guessed_key_hex используется только для вывода догадки о найденном ключе.

Рекомендации

Для повышения защиты от RC4-атак рекомендуется:

  1. Используйте более сильные алгоритмы шифрования, такие как AES, вместо RC4.
  2. Обновляйте свои системы и программное обеспечение, чтобы использовать последние версии и исправления безопасности.
  3. Используйте SSL/TLS для защиты своих сетевых соединений и избегайте использования устаревших протоколов, таких как SSLv3 и TLSv1.0.
  4. Ограничьте доступ к вашим сетевым ресурсам только для авторизованных пользователей, чтобы предотвратить возможность атаки извне.
  5. Используйте многофакторную аутентификацию, чтобы защитить свои учетные записи от взлома.
  6. Проводите регулярные проверки на наличие уязвимостей и исправляйте их незамедлительно.
  7. Обучайте своих сотрудников правилам безопасности и предупреждайте их о возможных угрозах.
  8. Внедряйте системы мониторинга и обнаружения атак, чтобы быстро реагировать на возможные угрозы.
  9. Используйте инструменты, такие как Wireshark, для обнаружения атак на RC4 и другие уязвимости.
  10. Сотрудничайте с ведущими поставщиками безопасности, чтобы получать последние обновления и рекомендации по обеспечению безопасности.

Вывод

Реализация алгоритма RC4 может быть выполнена на различных языках программирования, таких как C++, Java, Python и других. Однако при реализации RC4 необходимо учитывать его уязвимости и принимать меры для защиты от возможных атак.

Литература:

  1. Searan S. M., Sagheer A. M. Modification of RC4 algorithm by using two state tables and initial state factorial/ Searan S. M., Sagheer A. M. // International journal of computer network and information security. — 2016.— Т. 8. — С. 1–8.
  2. Дорошенко С. А., Лубкин А. М., Монарев В. А., Рябко Б. Я., Фионов А. Н. Атака на потоковые шифры rc4 и zk-crypt с использованием теста «стопка книг»/ Дорошенко С. А., Лубкин А. М., Монарев В. А., Рябко Б. Я., Фионов А. Н.//ВЕСТНИК СИБГУТИ— 2007.— № 1.— С. 31–34.
  3. Ляхов А. В., Касьяненко Н. Г. Уязвимости протоколов SSL/TLS. / Ляхов А. В., Касьяненко Н. Г.// Сборник материалов III Всероссийской научно-практической конференции с международным участием, посвященной 100-летию Крымского федерального университета имени В. И. Вернадского — 2018.— С. 185–188.
Основные термины (генерируются автоматически): атака, FMS, KSA, PRGA, байт, злоумышленник, потоковый шифр, SSL, байт ключа, ключ, ключевое расписание, корреляционная атака.


Ключевые слова

уязвимости, алгоритм шифрования, сетевые протоколы, атаки, RC4, RC4 атака, зашифрованные данные, усиление защиты

Похожие статьи

Реализация алгоритма RC4 на CBuilder | Статья в журнале...

Максимальная длина ключа 256 байт. Основные преимущества шифра — высокая скорость работы и переменный размер ключа.

Потоковый шифр RC4 был создан Роном Ривестом из RSA Security в 1987 году.

Этот алгоритм использует ключ, сохраненный в Key, и имеющий длину l байт.

Здесь будут рассмотрены некоторые атаки на шифр и методы защиты от них.

Методология сравнения потоковых шифров | Статья в журнале...

Кубрак, К. Г. Методология сравнения потоковых шифров / К. Г. Кубрак, А. Ю. Шалашова.

Один и тот же ключ в потоковых шифрах всегда создаёт один и тот же ключевой поток

‒ Скорость обработки 1 байта открытого текста, измеряется в количестве тактовых сигналов

Также, было предложено сравнивать самые эффективные из известных атак на шифры.

Шифрование и криптоанализ | Статья в журнале «Молодой ученый»

Таким образом, в криптографии сбор «внешней» информации с целью вскрытия ключа шифрования — это просто еще один способ атаки на криптосистемы. Атакующий измеряет потребляемую энергию, излучения, время обработки определенных данных.

Анализ алгоритма RSA. Некоторые распространённые...

Исследователи уверены, что используя их метод факторизации, взломать 1024-битный RSA-ключ будет возможно. Зная разложение на произведение двух простых чисел, злоумышленник сможет определить секретную экспоненту и взломать RSA.

Исследование механизма криптозащиты RFID-карты Hitag и его...

Третья атака описывает особый вид криптоанализа шифра Hitag2.

Данный вид атаки может быть применен к любым основанным на РСЛОС потоковым шифрам, пока доступен смежный ключевой поток.

Шаги 2–3 требуют около 30 секунд для получения 256 байт ключевого потока от карты.

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

Разработка алгоритма и программного обеспечения для...

Используется вариант шифра с размером блока 128 бит. — Blowfish — сложная схема выработки ключа существенно затрудняет атаку на алгоритм методом

Алгоритм используется в большом числе криптографических приложений, включая PGP, S/MIME, TLS/SSL, IPSEC/IKE и других.

Ниже приведен алгоритм генерации ключа (max = 512 байт — размер ключа)

Актуальность MiTM-атак в современных Wi-Fi-сетях

 В данной статье рассматривается сетевая атака Man in the middle в общедоступных сетях Wi-Fi и её

Для этого злоумышленнику необходимо получить SSL сертификат от одного из лицензиатов.

Возможно, но есть и другие видны атак, а фантазия злоумышленников безгранична.

Это защищает сертификат и приватный ключ от переноса на другие компьютеры.

Системы сбора информации в аспекте кибербезопасности

Ключевые слова: системы обработки журналов, системы обнаружения атак,системы

– внутренних атак в корпоративной сети со стороны вредоносного ПО (вирусы, ботнеты).

Ключи реестра, значения, типы значений и контент с дополнительной рекурсией.

– Артефакты злоумышленника: запущенные ключи, элементы меню Пуск, WMI постоянные и т. д.

Генераторы случайных и псевдослучайных чисел

Сложности также вызывают грубые атаки на подобные устройства.

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

‒ Генерация ключей, ‒ Одноразовые случайные числа

Таким образом, разработка потоковых шифров и КСГПСЧ тесно связаны.

Похожие статьи

Реализация алгоритма RC4 на CBuilder | Статья в журнале...

Максимальная длина ключа 256 байт. Основные преимущества шифра — высокая скорость работы и переменный размер ключа.

Потоковый шифр RC4 был создан Роном Ривестом из RSA Security в 1987 году.

Этот алгоритм использует ключ, сохраненный в Key, и имеющий длину l байт.

Здесь будут рассмотрены некоторые атаки на шифр и методы защиты от них.

Методология сравнения потоковых шифров | Статья в журнале...

Кубрак, К. Г. Методология сравнения потоковых шифров / К. Г. Кубрак, А. Ю. Шалашова.

Один и тот же ключ в потоковых шифрах всегда создаёт один и тот же ключевой поток

‒ Скорость обработки 1 байта открытого текста, измеряется в количестве тактовых сигналов

Также, было предложено сравнивать самые эффективные из известных атак на шифры.

Шифрование и криптоанализ | Статья в журнале «Молодой ученый»

Таким образом, в криптографии сбор «внешней» информации с целью вскрытия ключа шифрования — это просто еще один способ атаки на криптосистемы. Атакующий измеряет потребляемую энергию, излучения, время обработки определенных данных.

Анализ алгоритма RSA. Некоторые распространённые...

Исследователи уверены, что используя их метод факторизации, взломать 1024-битный RSA-ключ будет возможно. Зная разложение на произведение двух простых чисел, злоумышленник сможет определить секретную экспоненту и взломать RSA.

Исследование механизма криптозащиты RFID-карты Hitag и его...

Третья атака описывает особый вид криптоанализа шифра Hitag2.

Данный вид атаки может быть применен к любым основанным на РСЛОС потоковым шифрам, пока доступен смежный ключевой поток.

Шаги 2–3 требуют около 30 секунд для получения 256 байт ключевого потока от карты.

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

Разработка алгоритма и программного обеспечения для...

Используется вариант шифра с размером блока 128 бит. — Blowfish — сложная схема выработки ключа существенно затрудняет атаку на алгоритм методом

Алгоритм используется в большом числе криптографических приложений, включая PGP, S/MIME, TLS/SSL, IPSEC/IKE и других.

Ниже приведен алгоритм генерации ключа (max = 512 байт — размер ключа)

Актуальность MiTM-атак в современных Wi-Fi-сетях

 В данной статье рассматривается сетевая атака Man in the middle в общедоступных сетях Wi-Fi и её

Для этого злоумышленнику необходимо получить SSL сертификат от одного из лицензиатов.

Возможно, но есть и другие видны атак, а фантазия злоумышленников безгранична.

Это защищает сертификат и приватный ключ от переноса на другие компьютеры.

Системы сбора информации в аспекте кибербезопасности

Ключевые слова: системы обработки журналов, системы обнаружения атак,системы

– внутренних атак в корпоративной сети со стороны вредоносного ПО (вирусы, ботнеты).

Ключи реестра, значения, типы значений и контент с дополнительной рекурсией.

– Артефакты злоумышленника: запущенные ключи, элементы меню Пуск, WMI постоянные и т. д.

Генераторы случайных и псевдослучайных чисел

Сложности также вызывают грубые атаки на подобные устройства.

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

‒ Генерация ключей, ‒ Одноразовые случайные числа

Таким образом, разработка потоковых шифров и КСГПСЧ тесно связаны.

Задать вопрос