Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #74, ФЕВРАЛЬ 2005 г.

Воздушный дуршлаг

Антон Карпов

Хакер, номер #074, стр. 074-064-3


Но ситуация выглядит еще более плачевной, если учесть, что в протоколе не описан алгоритм изменения IV, а лишь указана необходимость изменения и многие беспроводные сетевые карты сбрасывают вектор инициализации в 0 при каждом включении и линейно увеличивают его на 1 для каждого последующего пакета. Это значит, что каждая беспроводная сессия начинается с повторного использования ключевого потока. Но даже в системах, где генерация IV происходит случайно, согласно парадоксу дней рождений (есть такой, часто применяется в криптоанализе), коллизия возникнет после передачи примерно 5000 пакетов. В реальной системе есть множество путей получения текста пакета. Многие поля, используемые в IP-трафике, можно предсказать как стандартные (адрес, порт, флаги). Также злоумышленник может специально отправлять пакеты пользователю беспроводной сети с заранее известным содержимым и отслеживать соответствующие зашифрованные пакеты.

Допустим, в результате атакующий знает шифртекст и открытый текст для некоторых пакетов, зашифрованных с использованием известного IV v. Тогда он с легкостью определит ключевой поток RC4(k,v) путем ксора шифртекста и открытого текста:

(RC4(k,v) xor P) xor P = RC4(k,v)

Определить ключ k у злоумышленника не получится, однако он может занести значение RC4(k,v) в таблицу (словарь) для заданного v. Тогда в следующий раз при перехвате пакета с таким же v он просто применит операцию XOR и прочтет данные:

(RC4(k,v) xor P) xor RC4(k,v) = P

Кроме того, в реализации WEP с ключом в 40 бит можно попытаться напрямую взломать ключ, применив современные вычислительные ресурсы. Очевидно, что расширенный вариант WEP с ключом в 104 бита хоть и усложняет эту задачу, но не выручает в случае атаки по словарю, так как размер словаря будет тот же - вектор инициализации в обоих вариантах имеет размер 24 бита.

Подмена пакета

Для проверки целостности сообщения используется контрольное суммирование. В WEP для этой цели применяется алгоритм CRC32. Но CRC32 нестоек к коллизиям, кроме того, он обладает еще двумя недостатками:

* он высчитывается независимо от вектора инициализации v;

* CRC(M xor D) = CRC(M) xor CRC(D).

Таким образом, есть возможность модифицировать сообщение, даже не зная его содержимого.

Допустим, есть сообщение M, соответствующий шифртекст C и вектор инициализации v. C и v были перехвачены злоумышленником, который хочет навязать получателю подложное сообщение F = M xor D, где D – некоторое значение, выбранное злоумышленником (M xor M1 = D, где M1 – измененное сообщение). Используя факт линейности CRC32 и линейности потокового шифра RC4, имеем:

Назад на стр. 074-064-2  Содержание  Вперед на стр. 074-064-4